From 7f8cacebdcaf55279d0163ecebe2fdec87b34ef3 Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Thu, 13 Feb 2025 16:00:17 -0500 Subject: [PATCH 01/15] alloy bindings --- crates/bindings-uniswapx/Cargo.lock | 2812 ------ crates/bindings-uniswapx/Cargo.toml | 7 +- crates/bindings-uniswapx/src/array_builder.rs | 125 - crates/bindings-uniswapx/src/arraybuilder.rs | 218 + crates/bindings-uniswapx/src/base_reactor.rs | 1374 --- crates/bindings-uniswapx/src/basereactor.rs | 3459 ++++++++ .../bindings-uniswapx/src/block_numberish.rs | 127 - .../bindings-uniswapx/src/blocknumberish.rs | 284 + crates/bindings-uniswapx/src/bytes_lib.rs | 123 - crates/bindings-uniswapx/src/byteslib.rs | 218 + crates/bindings-uniswapx/src/cosigner_lib.rs | 150 - crates/bindings-uniswapx/src/cosignerlib.rs | 377 + .../bindings-uniswapx/src/currency_library.rs | 152 - .../bindings-uniswapx/src/currencylibrary.rs | 377 + crates/bindings-uniswapx/src/curve_builder.rs | 125 - crates/bindings-uniswapx/src/curvebuilder.rs | 218 + crates/bindings-uniswapx/src/deploy_dutch.rs | 371 - .../bindings-uniswapx/src/deploy_dutch_v2.rs | 371 - .../bindings-uniswapx/src/deploy_dutch_v3.rs | 371 - .../src/deploy_exclusive_dutch.rs | 373 - .../bindings-uniswapx/src/deploy_permit_2.rs | 181 - .../src/deploy_priority_order_reactor.rs | 376 - .../src/deploy_swap_router_02_executor.rs | 352 - crates/bindings-uniswapx/src/deploydutch.rs | 997 +++ crates/bindings-uniswapx/src/deploydutchv2.rs | 973 +++ crates/bindings-uniswapx/src/deploydutchv3.rs | 973 +++ .../src/deployexclusivedutch.rs | 1003 +++ .../src/deploymultifillerexecutor.rs | 749 ++ crates/bindings-uniswapx/src/deploypermit2.rs | 443 + .../src/deploypriorityorderreactor.rs | 1008 +++ .../src/deployswaprouter02executor.rs | 751 ++ .../bindings-uniswapx/src/dutch_decay_lib.rs | 272 - .../bindings-uniswapx/src/dutch_order_lib.rs | 125 - .../src/dutch_order_reactor.rs | 1629 ---- crates/bindings-uniswapx/src/dutchdecaylib.rs | 473 + crates/bindings-uniswapx/src/dutchorderlib.rs | 218 + .../src/dutchorderreactor.rs | 3967 +++++++++ crates/bindings-uniswapx/src/ecdsa.rs | 303 +- crates/bindings-uniswapx/src/eip712.rs | 1316 ++- crates/bindings-uniswapx/src/erc20.rs | 4065 ++++++--- .../src/exclusive_dutch_order_lib.rs | 125 - .../src/exclusive_dutch_order_reactor.rs | 1691 ---- .../src/exclusive_filler_validation.rs | 253 - .../src/exclusivedutchorderlib.rs | 222 + .../src/exclusivedutchorderreactor.rs | 4075 +++++++++ .../src/exclusivefillervalidation.rs | 1819 ++++ .../bindings-uniswapx/src/exclusivity_lib.rs | 152 - .../bindings-uniswapx/src/exclusivitylib.rs | 377 + .../src/fixed_point_math_lib.rs | 125 - .../src/fixedpointmathlib.rs | 218 + crates/bindings-uniswapx/src/gas_snapshot.rs | 420 - .../src/i_allowance_transfer.rs | 1484 ---- crates/bindings-uniswapx/src/i_arb_sys.rs | 132 - crates/bindings-uniswapx/src/i_permit_2.rs | 2384 ----- .../src/i_protocol_fee_controller.rs | 193 - crates/bindings-uniswapx/src/i_reactor.rs | 409 - .../src/i_reactor_callback.rs | 171 - .../src/i_signature_transfer.rs | 1144 --- .../bindings-uniswapx/src/i_swap_router_02.rs | 699 -- .../src/i_validation_callback.rs | 167 - .../src/iallowancetransfer.rs | 4880 +++++++++++ crates/bindings-uniswapx/src/iarbsys.rs | 447 + crates/bindings-uniswapx/src/ieip712.rs | 545 +- crates/bindings-uniswapx/src/ierc165.rs | 571 +- crates/bindings-uniswapx/src/ierc20.rs | 3214 +++++-- crates/bindings-uniswapx/src/ierc5267.rs | 947 +- crates/bindings-uniswapx/src/ierc721.rs | 3898 ++++++--- .../src/ierc721_enumerable.rs | 1447 --- .../bindings-uniswapx/src/ierc721_metadata.rs | 1412 --- .../src/ierc721_token_receiver.rs | 177 - .../src/ierc721enumerable.rs | 3438 ++++++++ .../bindings-uniswapx/src/ierc721metadata.rs | 3372 +++++++ .../src/ierc721tokenreceiver.rs | 523 ++ crates/bindings-uniswapx/src/ipermit2.rs | 7784 +++++++++++++++++ .../src/iprotocolfeecontroller.rs | 1658 ++++ crates/bindings-uniswapx/src/ireactor.rs | 1281 +++ .../bindings-uniswapx/src/ireactorcallback.rs | 1658 ++++ .../src/isignaturetransfer.rs | 3472 ++++++++ crates/bindings-uniswapx/src/iswaprouter02.rs | 2058 +++++ .../src/ivalidationcallback.rs | 1643 ++++ crates/bindings-uniswapx/src/lib.rs | 175 +- .../bindings-uniswapx/src/limit_order_lib.rs | 125 - .../src/limit_order_reactor.rs | 1445 --- crates/bindings-uniswapx/src/limitorderlib.rs | 218 + .../src/limitorderreactor.rs | 3591 ++++++++ crates/bindings-uniswapx/src/math.rs | 300 +- crates/bindings-uniswapx/src/math_ext.rs | 123 - crates/bindings-uniswapx/src/mathext.rs | 218 + crates/bindings-uniswapx/src/mock_arb_sys.rs | 294 - .../src/mock_block_numberish.rs | 185 - .../src/mock_cosigner_lib_contract.rs | 217 - .../src/mock_dutch_order_reactor.rs | 1757 ---- crates/bindings-uniswapx/src/mock_erc20.rs | 1443 --- crates/bindings-uniswapx/src/mock_erc721.rs | 1529 ---- .../src/mock_exclusivity_lib.rs | 703 -- .../src/mock_fee_controller.rs | 750 -- .../src/mock_fee_controller_duplicates.rs | 751 -- ...ck_fee_controller_input_and_output_fees.rs | 735 -- .../src/mock_fee_controller_input_fees.rs | 733 -- .../src/mock_fee_controller_zero_fee.rs | 748 -- .../src/mock_fill_contract.rs | 441 - .../mock_fill_contract_double_execution.rs | 393 - ...mock_fill_contract_with_output_override.rs | 507 -- .../src/mock_protocol_fees.rs | 1052 --- .../src/mock_resolved_order_lib.rs | 243 - .../bindings-uniswapx/src/mock_swap_router.rs | 659 -- crates/bindings-uniswapx/src/mock_swapper.rs | 192 - .../src/mock_validation_contract.rs | 419 - crates/bindings-uniswapx/src/mockarbsys.rs | 618 ++ .../src/mockblocknumberish.rs | 449 + .../src/mockcosignerlibcontract.rs | 649 ++ .../src/mockdutchorderreactor.rs | 5330 +++++++++++ crates/bindings-uniswapx/src/mockerc20.rs | 3475 ++++++++ crates/bindings-uniswapx/src/mockerc721.rs | 3553 ++++++++ .../src/mockexclusivitylib.rs | 2625 ++++++ .../src/mockfeecontroller.rs | 2871 ++++++ .../src/mockfeecontrollerduplicates.rs | 2883 ++++++ .../mockfeecontrollerinputandoutputfees.rs | 2870 ++++++ .../src/mockfeecontrollerinputfees.rs | 2841 ++++++ .../src/mockfeecontrollerzerofee.rs | 2881 ++++++ .../bindings-uniswapx/src/mockfillcontract.rs | 2484 ++++++ .../src/mockfillcontractdoubleexecution.rs | 2372 +++++ .../src/mockfillcontractwithoutputoverride.rs | 2690 ++++++ .../bindings-uniswapx/src/mockprotocolfees.rs | 3425 ++++++++ .../src/mockresolvedorderlib.rs | 1805 ++++ crates/bindings-uniswapx/src/mockswapper.rs | 479 + .../bindings-uniswapx/src/mockswaprouter.rs | 1676 ++++ .../src/mockvalidationcontract.rs | 2113 +++++ .../src/multifillerswaprouter02executor.rs | 4638 ++++++++++ .../src/nonlinear_dutch_decay_lib.rs | 150 - .../src/nonlineardutchdecaylib.rs | 381 + .../src/order_info_builder.rs | 125 - .../bindings-uniswapx/src/order_info_lib.rs | 125 - crates/bindings-uniswapx/src/order_quoter.rs | 510 -- .../bindings-uniswapx/src/orderinfobuilder.rs | 218 + crates/bindings-uniswapx/src/orderinfolib.rs | 218 + crates/bindings-uniswapx/src/orderquoter.rs | 2276 +++++ .../bindings-uniswapx/src/outputs_builder.rs | 125 - .../bindings-uniswapx/src/outputsbuilder.rs | 218 + crates/bindings-uniswapx/src/owned.rs | 1098 ++- crates/bindings-uniswapx/src/path.rs | 300 +- crates/bindings-uniswapx/src/path_builder.rs | 125 - crates/bindings-uniswapx/src/pathbuilder.rs | 218 + crates/bindings-uniswapx/src/permit2lib.rs | 218 + crates/bindings-uniswapx/src/permit_2_lib.rs | 123 - .../bindings-uniswapx/src/permit_signature.rs | 2643 ------ .../bindings-uniswapx/src/permitsignature.rs | 7483 ++++++++++++++++ .../bindings-uniswapx/src/priority_fee_lib.rs | 125 - .../src/priority_order_lib.rs | 125 - .../src/priority_order_reactor.rs | 1714 ---- .../bindings-uniswapx/src/priorityfeelib.rs | 218 + .../bindings-uniswapx/src/priorityorderlib.rs | 218 + .../src/priorityorderreactor.rs | 4159 +++++++++ crates/bindings-uniswapx/src/protocol_fees.rs | 835 -- crates/bindings-uniswapx/src/protocolfees.rs | 1894 ++++ .../bindings-uniswapx/src/reactor_events.rs | 144 - crates/bindings-uniswapx/src/reactorevents.rs | 491 ++ .../bindings-uniswapx/src/reentrancy_guard.rs | 74 - .../bindings-uniswapx/src/reentrancyguard.rs | 218 + .../src/resolved_order_lib.rs | 150 - .../bindings-uniswapx/src/resolvedorderlib.rs | 377 + crates/bindings-uniswapx/src/safe_cast.rs | 123 - .../src/safe_transfer_lib.rs | 125 - crates/bindings-uniswapx/src/safecast.rs | 218 + .../bindings-uniswapx/src/safetransferlib.rs | 218 + crates/bindings-uniswapx/src/shared_types.rs | 274 - crates/bindings-uniswapx/src/short_strings.rs | 280 - crates/bindings-uniswapx/src/shortstrings.rs | 483 + crates/bindings-uniswapx/src/signed_math.rs | 123 - crates/bindings-uniswapx/src/signedmath.rs | 218 + crates/bindings-uniswapx/src/solarray.rs | 303 +- crates/bindings-uniswapx/src/storage_slot.rs | 125 - crates/bindings-uniswapx/src/storageslot.rs | 218 + crates/bindings-uniswapx/src/strings.rs | 303 +- .../src/swap_router_02_executor.rs | 1347 --- .../src/swaprouter02executor.rs | 3910 +++++++++ .../src/uint16arraylibrary.rs | 218 + .../src/uint_16_array_library.rs | 125 - crates/bindings-uniswapx/src/uint_string.rs | 160 - .../src/v2_dutch_order_lib.rs | 125 - .../src/v2_dutch_order_reactor.rs | 1773 ---- .../bindings-uniswapx/src/v2dutchorderlib.rs | 218 + .../src/v2dutchorderreactor.rs | 4249 +++++++++ .../src/v3_dutch_order_lib.rs | 125 - .../src/v3_dutch_order_reactor.rs | 1765 ---- .../bindings-uniswapx/src/v3dutchorderlib.rs | 218 + .../src/v3dutchorderreactor.rs | 4249 +++++++++ crates/bindings-uniswapx/src/weth.rs | 5020 +++++++---- 188 files changed, 161510 insertions(+), 57463 deletions(-) delete mode 100644 crates/bindings-uniswapx/Cargo.lock delete mode 100644 crates/bindings-uniswapx/src/array_builder.rs create mode 100644 crates/bindings-uniswapx/src/arraybuilder.rs delete mode 100644 crates/bindings-uniswapx/src/base_reactor.rs create mode 100644 crates/bindings-uniswapx/src/basereactor.rs delete mode 100644 crates/bindings-uniswapx/src/block_numberish.rs create mode 100644 crates/bindings-uniswapx/src/blocknumberish.rs delete mode 100644 crates/bindings-uniswapx/src/bytes_lib.rs create mode 100644 crates/bindings-uniswapx/src/byteslib.rs delete mode 100644 crates/bindings-uniswapx/src/cosigner_lib.rs create mode 100644 crates/bindings-uniswapx/src/cosignerlib.rs delete mode 100644 crates/bindings-uniswapx/src/currency_library.rs create mode 100644 crates/bindings-uniswapx/src/currencylibrary.rs delete mode 100644 crates/bindings-uniswapx/src/curve_builder.rs create mode 100644 crates/bindings-uniswapx/src/curvebuilder.rs delete mode 100644 crates/bindings-uniswapx/src/deploy_dutch.rs delete mode 100644 crates/bindings-uniswapx/src/deploy_dutch_v2.rs delete mode 100644 crates/bindings-uniswapx/src/deploy_dutch_v3.rs delete mode 100644 crates/bindings-uniswapx/src/deploy_exclusive_dutch.rs delete mode 100644 crates/bindings-uniswapx/src/deploy_permit_2.rs delete mode 100644 crates/bindings-uniswapx/src/deploy_priority_order_reactor.rs delete mode 100644 crates/bindings-uniswapx/src/deploy_swap_router_02_executor.rs create mode 100644 crates/bindings-uniswapx/src/deploydutch.rs create mode 100644 crates/bindings-uniswapx/src/deploydutchv2.rs create mode 100644 crates/bindings-uniswapx/src/deploydutchv3.rs create mode 100644 crates/bindings-uniswapx/src/deployexclusivedutch.rs create mode 100644 crates/bindings-uniswapx/src/deploymultifillerexecutor.rs create mode 100644 crates/bindings-uniswapx/src/deploypermit2.rs create mode 100644 crates/bindings-uniswapx/src/deploypriorityorderreactor.rs create mode 100644 crates/bindings-uniswapx/src/deployswaprouter02executor.rs delete mode 100644 crates/bindings-uniswapx/src/dutch_decay_lib.rs delete mode 100644 crates/bindings-uniswapx/src/dutch_order_lib.rs delete mode 100644 crates/bindings-uniswapx/src/dutch_order_reactor.rs create mode 100644 crates/bindings-uniswapx/src/dutchdecaylib.rs create mode 100644 crates/bindings-uniswapx/src/dutchorderlib.rs create mode 100644 crates/bindings-uniswapx/src/dutchorderreactor.rs delete mode 100644 crates/bindings-uniswapx/src/exclusive_dutch_order_lib.rs delete mode 100644 crates/bindings-uniswapx/src/exclusive_dutch_order_reactor.rs delete mode 100644 crates/bindings-uniswapx/src/exclusive_filler_validation.rs create mode 100644 crates/bindings-uniswapx/src/exclusivedutchorderlib.rs create mode 100644 crates/bindings-uniswapx/src/exclusivedutchorderreactor.rs create mode 100644 crates/bindings-uniswapx/src/exclusivefillervalidation.rs delete mode 100644 crates/bindings-uniswapx/src/exclusivity_lib.rs create mode 100644 crates/bindings-uniswapx/src/exclusivitylib.rs delete mode 100644 crates/bindings-uniswapx/src/fixed_point_math_lib.rs create mode 100644 crates/bindings-uniswapx/src/fixedpointmathlib.rs delete mode 100644 crates/bindings-uniswapx/src/gas_snapshot.rs delete mode 100644 crates/bindings-uniswapx/src/i_allowance_transfer.rs delete mode 100644 crates/bindings-uniswapx/src/i_arb_sys.rs delete mode 100644 crates/bindings-uniswapx/src/i_permit_2.rs delete mode 100644 crates/bindings-uniswapx/src/i_protocol_fee_controller.rs delete mode 100644 crates/bindings-uniswapx/src/i_reactor.rs delete mode 100644 crates/bindings-uniswapx/src/i_reactor_callback.rs delete mode 100644 crates/bindings-uniswapx/src/i_signature_transfer.rs delete mode 100644 crates/bindings-uniswapx/src/i_swap_router_02.rs delete mode 100644 crates/bindings-uniswapx/src/i_validation_callback.rs create mode 100644 crates/bindings-uniswapx/src/iallowancetransfer.rs create mode 100644 crates/bindings-uniswapx/src/iarbsys.rs delete mode 100644 crates/bindings-uniswapx/src/ierc721_enumerable.rs delete mode 100644 crates/bindings-uniswapx/src/ierc721_metadata.rs delete mode 100644 crates/bindings-uniswapx/src/ierc721_token_receiver.rs create mode 100644 crates/bindings-uniswapx/src/ierc721enumerable.rs create mode 100644 crates/bindings-uniswapx/src/ierc721metadata.rs create mode 100644 crates/bindings-uniswapx/src/ierc721tokenreceiver.rs create mode 100644 crates/bindings-uniswapx/src/ipermit2.rs create mode 100644 crates/bindings-uniswapx/src/iprotocolfeecontroller.rs create mode 100644 crates/bindings-uniswapx/src/ireactor.rs create mode 100644 crates/bindings-uniswapx/src/ireactorcallback.rs create mode 100644 crates/bindings-uniswapx/src/isignaturetransfer.rs create mode 100644 crates/bindings-uniswapx/src/iswaprouter02.rs create mode 100644 crates/bindings-uniswapx/src/ivalidationcallback.rs delete mode 100644 crates/bindings-uniswapx/src/limit_order_lib.rs delete mode 100644 crates/bindings-uniswapx/src/limit_order_reactor.rs create mode 100644 crates/bindings-uniswapx/src/limitorderlib.rs create mode 100644 crates/bindings-uniswapx/src/limitorderreactor.rs delete mode 100644 crates/bindings-uniswapx/src/math_ext.rs create mode 100644 crates/bindings-uniswapx/src/mathext.rs delete mode 100644 crates/bindings-uniswapx/src/mock_arb_sys.rs delete mode 100644 crates/bindings-uniswapx/src/mock_block_numberish.rs delete mode 100644 crates/bindings-uniswapx/src/mock_cosigner_lib_contract.rs delete mode 100644 crates/bindings-uniswapx/src/mock_dutch_order_reactor.rs delete mode 100644 crates/bindings-uniswapx/src/mock_erc20.rs delete mode 100644 crates/bindings-uniswapx/src/mock_erc721.rs delete mode 100644 crates/bindings-uniswapx/src/mock_exclusivity_lib.rs delete mode 100644 crates/bindings-uniswapx/src/mock_fee_controller.rs delete mode 100644 crates/bindings-uniswapx/src/mock_fee_controller_duplicates.rs delete mode 100644 crates/bindings-uniswapx/src/mock_fee_controller_input_and_output_fees.rs delete mode 100644 crates/bindings-uniswapx/src/mock_fee_controller_input_fees.rs delete mode 100644 crates/bindings-uniswapx/src/mock_fee_controller_zero_fee.rs delete mode 100644 crates/bindings-uniswapx/src/mock_fill_contract.rs delete mode 100644 crates/bindings-uniswapx/src/mock_fill_contract_double_execution.rs delete mode 100644 crates/bindings-uniswapx/src/mock_fill_contract_with_output_override.rs delete mode 100644 crates/bindings-uniswapx/src/mock_protocol_fees.rs delete mode 100644 crates/bindings-uniswapx/src/mock_resolved_order_lib.rs delete mode 100644 crates/bindings-uniswapx/src/mock_swap_router.rs delete mode 100644 crates/bindings-uniswapx/src/mock_swapper.rs delete mode 100644 crates/bindings-uniswapx/src/mock_validation_contract.rs create mode 100644 crates/bindings-uniswapx/src/mockarbsys.rs create mode 100644 crates/bindings-uniswapx/src/mockblocknumberish.rs create mode 100644 crates/bindings-uniswapx/src/mockcosignerlibcontract.rs create mode 100644 crates/bindings-uniswapx/src/mockdutchorderreactor.rs create mode 100644 crates/bindings-uniswapx/src/mockerc20.rs create mode 100644 crates/bindings-uniswapx/src/mockerc721.rs create mode 100644 crates/bindings-uniswapx/src/mockexclusivitylib.rs create mode 100644 crates/bindings-uniswapx/src/mockfeecontroller.rs create mode 100644 crates/bindings-uniswapx/src/mockfeecontrollerduplicates.rs create mode 100644 crates/bindings-uniswapx/src/mockfeecontrollerinputandoutputfees.rs create mode 100644 crates/bindings-uniswapx/src/mockfeecontrollerinputfees.rs create mode 100644 crates/bindings-uniswapx/src/mockfeecontrollerzerofee.rs create mode 100644 crates/bindings-uniswapx/src/mockfillcontract.rs create mode 100644 crates/bindings-uniswapx/src/mockfillcontractdoubleexecution.rs create mode 100644 crates/bindings-uniswapx/src/mockfillcontractwithoutputoverride.rs create mode 100644 crates/bindings-uniswapx/src/mockprotocolfees.rs create mode 100644 crates/bindings-uniswapx/src/mockresolvedorderlib.rs create mode 100644 crates/bindings-uniswapx/src/mockswapper.rs create mode 100644 crates/bindings-uniswapx/src/mockswaprouter.rs create mode 100644 crates/bindings-uniswapx/src/mockvalidationcontract.rs create mode 100644 crates/bindings-uniswapx/src/multifillerswaprouter02executor.rs delete mode 100644 crates/bindings-uniswapx/src/nonlinear_dutch_decay_lib.rs create mode 100644 crates/bindings-uniswapx/src/nonlineardutchdecaylib.rs delete mode 100644 crates/bindings-uniswapx/src/order_info_builder.rs delete mode 100644 crates/bindings-uniswapx/src/order_info_lib.rs delete mode 100644 crates/bindings-uniswapx/src/order_quoter.rs create mode 100644 crates/bindings-uniswapx/src/orderinfobuilder.rs create mode 100644 crates/bindings-uniswapx/src/orderinfolib.rs create mode 100644 crates/bindings-uniswapx/src/orderquoter.rs delete mode 100644 crates/bindings-uniswapx/src/outputs_builder.rs create mode 100644 crates/bindings-uniswapx/src/outputsbuilder.rs delete mode 100644 crates/bindings-uniswapx/src/path_builder.rs create mode 100644 crates/bindings-uniswapx/src/pathbuilder.rs create mode 100644 crates/bindings-uniswapx/src/permit2lib.rs delete mode 100644 crates/bindings-uniswapx/src/permit_2_lib.rs delete mode 100644 crates/bindings-uniswapx/src/permit_signature.rs create mode 100644 crates/bindings-uniswapx/src/permitsignature.rs delete mode 100644 crates/bindings-uniswapx/src/priority_fee_lib.rs delete mode 100644 crates/bindings-uniswapx/src/priority_order_lib.rs delete mode 100644 crates/bindings-uniswapx/src/priority_order_reactor.rs create mode 100644 crates/bindings-uniswapx/src/priorityfeelib.rs create mode 100644 crates/bindings-uniswapx/src/priorityorderlib.rs create mode 100644 crates/bindings-uniswapx/src/priorityorderreactor.rs delete mode 100644 crates/bindings-uniswapx/src/protocol_fees.rs create mode 100644 crates/bindings-uniswapx/src/protocolfees.rs delete mode 100644 crates/bindings-uniswapx/src/reactor_events.rs create mode 100644 crates/bindings-uniswapx/src/reactorevents.rs delete mode 100644 crates/bindings-uniswapx/src/reentrancy_guard.rs create mode 100644 crates/bindings-uniswapx/src/reentrancyguard.rs delete mode 100644 crates/bindings-uniswapx/src/resolved_order_lib.rs create mode 100644 crates/bindings-uniswapx/src/resolvedorderlib.rs delete mode 100644 crates/bindings-uniswapx/src/safe_cast.rs delete mode 100644 crates/bindings-uniswapx/src/safe_transfer_lib.rs create mode 100644 crates/bindings-uniswapx/src/safecast.rs create mode 100644 crates/bindings-uniswapx/src/safetransferlib.rs delete mode 100644 crates/bindings-uniswapx/src/shared_types.rs delete mode 100644 crates/bindings-uniswapx/src/short_strings.rs create mode 100644 crates/bindings-uniswapx/src/shortstrings.rs delete mode 100644 crates/bindings-uniswapx/src/signed_math.rs create mode 100644 crates/bindings-uniswapx/src/signedmath.rs delete mode 100644 crates/bindings-uniswapx/src/storage_slot.rs create mode 100644 crates/bindings-uniswapx/src/storageslot.rs delete mode 100644 crates/bindings-uniswapx/src/swap_router_02_executor.rs create mode 100644 crates/bindings-uniswapx/src/swaprouter02executor.rs create mode 100644 crates/bindings-uniswapx/src/uint16arraylibrary.rs delete mode 100644 crates/bindings-uniswapx/src/uint_16_array_library.rs delete mode 100644 crates/bindings-uniswapx/src/uint_string.rs delete mode 100644 crates/bindings-uniswapx/src/v2_dutch_order_lib.rs delete mode 100644 crates/bindings-uniswapx/src/v2_dutch_order_reactor.rs create mode 100644 crates/bindings-uniswapx/src/v2dutchorderlib.rs create mode 100644 crates/bindings-uniswapx/src/v2dutchorderreactor.rs delete mode 100644 crates/bindings-uniswapx/src/v3_dutch_order_lib.rs delete mode 100644 crates/bindings-uniswapx/src/v3_dutch_order_reactor.rs create mode 100644 crates/bindings-uniswapx/src/v3dutchorderlib.rs create mode 100644 crates/bindings-uniswapx/src/v3dutchorderreactor.rs diff --git a/crates/bindings-uniswapx/Cargo.lock b/crates/bindings-uniswapx/Cargo.lock deleted file mode 100644 index a174665..0000000 --- a/crates/bindings-uniswapx/Cargo.lock +++ /dev/null @@ -1,2812 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - -[[package]] -name = "addr2line" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "arrayvec" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" - -[[package]] -name = "async-trait" -version = "0.1.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "async_io_stream" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" -dependencies = [ - "futures", - "pharos", - "rustc_version", -] - -[[package]] -name = "auto_impl" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "autocfg" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" - -[[package]] -name = "backtrace" -version = "0.3.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bech32" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" - -[[package]] -name = "bindings-uniswapx" -version = "0.2.0" -dependencies = [ - "ethers", - "serde", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "sha2", - "tinyvec", -] - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "byte-slice-cast" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" -dependencies = [ - "serde", -] - -[[package]] -name = "camino" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "cc" -version = "1.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" -dependencies = [ - "shlex", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "num-traits", -] - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - -[[package]] -name = "coins-bip32" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" -dependencies = [ - "bs58", - "coins-core", - "digest", - "hmac", - "k256", - "serde", - "sha2", - "thiserror", -] - -[[package]] -name = "coins-bip39" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" -dependencies = [ - "bitvec", - "coins-bip32", - "hmac", - "once_cell", - "pbkdf2 0.12.2", - "rand", - "sha2", - "thiserror", -] - -[[package]] -name = "coins-core" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" -dependencies = [ - "base64 0.21.7", - "bech32", - "bs58", - "digest", - "generic-array", - "hex", - "ripemd", - "serde", - "serde_derive", - "sha2", - "sha3", - "thiserror", -] - -[[package]] -name = "const-hex" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" -dependencies = [ - "cfg-if", - "cpufeatures", - "hex", - "proptest", - "serde", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "cpufeatures" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" -dependencies = [ - "libc", -] - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core", - "subtle", - "zeroize", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "ctr" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" -dependencies = [ - "cipher", -] - -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "zeroize", -] - -[[package]] -name = "deranged" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", -] - -[[package]] -name = "derive_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core", - "sec1", - "subtle", - "zeroize", -] - -[[package]] -name = "encoding_rs" -version = "0.8.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "enr" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" -dependencies = [ - "base64 0.21.7", - "bytes", - "hex", - "k256", - "log", - "rand", - "rlp", - "serde", - "sha3", - "zeroize", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "eth-keystore" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" -dependencies = [ - "aes", - "ctr", - "digest", - "hex", - "hmac", - "pbkdf2 0.11.0", - "rand", - "scrypt", - "serde", - "serde_json", - "sha2", - "sha3", - "thiserror", - "uuid", -] - -[[package]] -name = "ethabi" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" -dependencies = [ - "ethereum-types", - "hex", - "once_cell", - "regex", - "serde", - "serde_json", - "sha3", - "thiserror", - "uint", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "primitive-types", - "scale-info", - "uint", -] - -[[package]] -name = "ethers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" -dependencies = [ - "ethers-addressbook", - "ethers-contract", - "ethers-core", - "ethers-middleware", - "ethers-providers", - "ethers-signers", -] - -[[package]] -name = "ethers-addressbook" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" -dependencies = [ - "ethers-core", - "once_cell", - "serde", - "serde_json", -] - -[[package]] -name = "ethers-contract" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" -dependencies = [ - "const-hex", - "ethers-contract-abigen", - "ethers-contract-derive", - "ethers-core", - "ethers-providers", - "futures-util", - "once_cell", - "pin-project", - "serde", - "serde_json", - "thiserror", -] - -[[package]] -name = "ethers-contract-abigen" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" -dependencies = [ - "Inflector", - "const-hex", - "dunce", - "ethers-core", - "eyre", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "serde", - "serde_json", - "syn 2.0.76", - "toml", - "walkdir", -] - -[[package]] -name = "ethers-contract-derive" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" -dependencies = [ - "Inflector", - "const-hex", - "ethers-contract-abigen", - "ethers-core", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.76", -] - -[[package]] -name = "ethers-core" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" -dependencies = [ - "arrayvec", - "bytes", - "cargo_metadata", - "chrono", - "const-hex", - "elliptic-curve", - "ethabi", - "generic-array", - "k256", - "num_enum", - "once_cell", - "open-fastrlp", - "rand", - "rlp", - "serde", - "serde_json", - "strum", - "syn 2.0.76", - "tempfile", - "thiserror", - "tiny-keccak", - "unicode-xid", -] - -[[package]] -name = "ethers-middleware" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" -dependencies = [ - "async-trait", - "auto_impl", - "ethers-contract", - "ethers-core", - "ethers-providers", - "ethers-signers", - "futures-channel", - "futures-locks", - "futures-util", - "instant", - "reqwest", - "serde", - "serde_json", - "thiserror", - "tokio", - "tracing", - "tracing-futures", - "url", -] - -[[package]] -name = "ethers-providers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" -dependencies = [ - "async-trait", - "auto_impl", - "base64 0.21.7", - "bytes", - "const-hex", - "enr", - "ethers-core", - "futures-core", - "futures-timer", - "futures-util", - "hashers", - "http", - "instant", - "jsonwebtoken", - "once_cell", - "pin-project", - "reqwest", - "serde", - "serde_json", - "thiserror", - "tokio", - "tracing", - "tracing-futures", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "ws_stream_wasm", -] - -[[package]] -name = "ethers-signers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" -dependencies = [ - "async-trait", - "coins-bip32", - "coins-bip39", - "const-hex", - "elliptic-curve", - "eth-keystore", - "ethers-core", - "rand", - "sha2", - "thiserror", - "tracing", -] - -[[package]] -name = "eyre" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" -dependencies = [ - "indenter", - "once_cell", -] - -[[package]] -name = "fastrand" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" - -[[package]] -name = "ff" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" -dependencies = [ - "rand_core", - "subtle", -] - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "byteorder", - "rand", - "rustc-hex", - "static_assertions", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" - -[[package]] -name = "futures-executor" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" - -[[package]] -name = "futures-locks" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" -dependencies = [ - "futures-channel", - "futures-task", -] - -[[package]] -name = "futures-macro" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "futures-sink" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" - -[[package]] -name = "futures-task" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" - -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" -dependencies = [ - "gloo-timers", - "send_wrapper 0.4.0", -] - -[[package]] -name = "futures-util" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", - "zeroize", -] - -[[package]] -name = "getrandom" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "gimli" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" - -[[package]] -name = "gloo-timers" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core", - "subtle", -] - -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[package]] -name = "hashers" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" -dependencies = [ - "fxhash", -] - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest", -] - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hyper" -version = "0.14.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "impl-codec" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - -[[package]] -name = "impl-serde" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" -dependencies = [ - "serde", -] - -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "indenter" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" - -[[package]] -name = "indexmap" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "inout" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "js-sys" -version = "0.3.70" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "jsonwebtoken" -version = "8.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" -dependencies = [ - "base64 0.21.7", - "pem", - "ring", - "serde", - "serde_json", - "simple_asn1", -] - -[[package]] -name = "k256" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "sha2", - "signature", -] - -[[package]] -name = "keccak" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "lazy_static" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" - -[[package]] -name = "libc" -version = "0.2.158" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" - -[[package]] -name = "libm" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" - -[[package]] -name = "linux-raw-sys" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" - -[[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "memchr" -version = "2.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" -dependencies = [ - "hermit-abi", - "libc", - "wasi", - "windows-sys 0.52.0", -] - -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "num_enum" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "object" -version = "0.36.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "open-fastrlp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", - "ethereum-types", - "open-fastrlp-derive", -] - -[[package]] -name = "open-fastrlp-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" -dependencies = [ - "bytes", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "parity-scale-codec" -version = "3.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", -] - -[[package]] -name = "parity-scale-codec-derive" -version = "3.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest", -] - -[[package]] -name = "pbkdf2" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest", - "hmac", -] - -[[package]] -name = "pem" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" -dependencies = [ - "base64 0.13.1", -] - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pharos" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" -dependencies = [ - "futures", - "rustc_version", -] - -[[package]] -name = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "prettyplease" -version = "0.2.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" -dependencies = [ - "proc-macro2", - "syn 2.0.76", -] - -[[package]] -name = "primitive-types" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" -dependencies = [ - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "uint", -] - -[[package]] -name = "proc-macro-crate" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" -dependencies = [ - "toml_edit", -] - -[[package]] -name = "proc-macro2" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proptest" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" -dependencies = [ - "bitflags 2.6.0", - "lazy_static", - "num-traits", - "rand", - "rand_chacha", - "rand_xorshift", - "regex-syntax", - "unarray", -] - -[[package]] -name = "quote" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rand_xorshift" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" -dependencies = [ - "rand_core", -] - -[[package]] -name = "regex" -version = "1.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" - -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "system-configuration", - "tokio", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin", - "untrusted", - "web-sys", - "winapi", -] - -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest", -] - -[[package]] -name = "rlp" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" -dependencies = [ - "bytes", - "rlp-derive", - "rustc-hex", -] - -[[package]] -name = "rlp-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "0.38.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" -dependencies = [ - "bitflags 2.6.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustversion" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" - -[[package]] -name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "salsa20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scale-info" -version = "2.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" -dependencies = [ - "cfg-if", - "derive_more", - "parity-scale-codec", - "scale-info-derive", -] - -[[package]] -name = "scale-info-derive" -version = "2.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "scrypt" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" -dependencies = [ - "hmac", - "pbkdf2 0.11.0", - "salsa20", - "sha2", -] - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] - -[[package]] -name = "send_wrapper" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" - -[[package]] -name = "send_wrapper" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" - -[[package]] -name = "serde" -version = "1.0.209" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.209" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "serde_json" -version = "1.0.127" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" -dependencies = [ - "itoa", - "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_spanned" -version = "0.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sha3" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest", - "keccak", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest", - "rand_core", -] - -[[package]] -name = "simple_asn1" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" -dependencies = [ - "num-bigint", - "num-traits", - "thiserror", - "time", -] - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "socket2" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.76", -] - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tempfile" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" -dependencies = [ - "cfg-if", - "fastrand", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - -[[package]] -name = "thiserror" -version = "1.0.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "time" -version = "0.3.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tinyvec" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.39.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "windows-sys 0.52.0", -] - -[[package]] -name = "tokio-util" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.22.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", -] - -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-xid" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" - -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - -[[package]] -name = "url" -version = "2.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom", - "serde", -] - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" -dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.76", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" - -[[package]] -name = "web-sys" -version = "0.3.70" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "winnow" -version = "0.6.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "ws_stream_wasm" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" -dependencies = [ - "async_io_stream", - "futures", - "js-sys", - "log", - "pharos", - "rustc_version", - "send_wrapper 0.6.0", - "thiserror", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "byteorder", - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "zeroize" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/crates/bindings-uniswapx/Cargo.toml b/crates/bindings-uniswapx/Cargo.toml index ad60d39..50f101f 100644 --- a/crates/bindings-uniswapx/Cargo.toml +++ b/crates/bindings-uniswapx/Cargo.toml @@ -1,10 +1,7 @@ [package] name = "bindings-uniswapx" -version = "0.2.0" +version = "0.1.0" edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] -ethers = { version = "2.0.14", default-features = false, features = ["abigen"] } -serde = "1" +alloy = { git = "https://github.com/alloy-rs/alloy", features = ["sol-types", "contract"] } \ No newline at end of file diff --git a/crates/bindings-uniswapx/src/array_builder.rs b/crates/bindings-uniswapx/src/array_builder.rs deleted file mode 100644 index 40965b1..0000000 --- a/crates/bindings-uniswapx/src/array_builder.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use array_builder::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod array_builder { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ARRAYBUILDER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xED\xB7\x9C\x14~\x91^\x01\xBD\xCB\xB53k\x8C\xF6PY[F\x8Dt%#\x98}\x91\xAAq\xB7W\xCC\xCEdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static ARRAYBUILDER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xED\xB7\x9C\x14~\x91^\x01\xBD\xCB\xB53k\x8C\xF6PY[F\x8Dt%#\x98}\x91\xAAq\xB7W\xCC\xCEdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static ARRAYBUILDER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct ArrayBuilder(::ethers::contract::Contract); - impl ::core::clone::Clone for ArrayBuilder { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ArrayBuilder { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ArrayBuilder { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ArrayBuilder { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ArrayBuilder)) - .field(&self.address()) - .finish() - } - } - impl ArrayBuilder { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - ARRAYBUILDER_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - ARRAYBUILDER_ABI.clone(), - ARRAYBUILDER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for ArrayBuilder { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/arraybuilder.rs b/crates/bindings-uniswapx/src/arraybuilder.rs new file mode 100644 index 0000000..323ce47 --- /dev/null +++ b/crates/bindings-uniswapx/src/arraybuilder.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ArrayBuilder {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ArrayBuilder { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220004db7042d8b8c819b7657d9b735ca0efaba01f5fbd1bb5cf0d1b1dfbe76b15464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \0M\xB7\x04-\x8B\x8C\x81\x9BvW\xD9\xB75\xCA\x0E\xFA\xBA\x01\xF5\xFB\xD1\xBB\\\xF0\xD1\xB1\xDF\xBEv\xB1TdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220004db7042d8b8c819b7657d9b735ca0efaba01f5fbd1bb5cf0d1b1dfbe76b15464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \0M\xB7\x04-\x8B\x8C\x81\x9BvW\xD9\xB75\xCA\x0E\xFA\xBA\x01\xF5\xFB\xD1\xBB\\\xF0\xD1\xB1\xDF\xBEv\xB1TdsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ArrayBuilder`](self) contract instance. + +See the [wrapper's documentation](`ArrayBuilderInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ArrayBuilderInstance { + ArrayBuilderInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ArrayBuilderInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ArrayBuilderInstance::::deploy_builder(provider) + } + /**A [`ArrayBuilder`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ArrayBuilder`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ArrayBuilderInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ArrayBuilderInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ArrayBuilderInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ArrayBuilderInstance { + /**Creates a new wrapper around an on-chain [`ArrayBuilder`](self) contract instance. + +See the [wrapper's documentation](`ArrayBuilderInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ArrayBuilderInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ArrayBuilderInstance { + ArrayBuilderInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ArrayBuilderInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ArrayBuilderInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/base_reactor.rs b/crates/bindings-uniswapx/src/base_reactor.rs deleted file mode 100644 index 3cc012e..0000000 --- a/crates/bindings-uniswapx/src/base_reactor.rs +++ /dev/null @@ -1,1374 +0,0 @@ -pub use base_reactor::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod base_reactor { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatchWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeBatchWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("feeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeController"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "contract IProtocolFeeController", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit2"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit2"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setProtocolFeeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "setProtocolFeeController", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Fill"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Fill"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("orderHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("swapper"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ProtocolFeeControllerSet"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "ProtocolFeeControllerSet", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("oldFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("duplicateToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("recipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("feeToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidReactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidReactor"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static BASEREACTOR_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - pub struct BaseReactor(::ethers::contract::Contract); - impl ::core::clone::Clone for BaseReactor { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for BaseReactor { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for BaseReactor { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for BaseReactor { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(BaseReactor)) - .field(&self.address()) - .finish() - } - } - impl BaseReactor { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - BASEREACTOR_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `execute` (0x3f62192e) function - pub fn execute( - &self, - order: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 98, 25, 46], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x0d7a16c3) function - pub fn execute_batch( - &self, - orders: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 122, 22, 195], orders) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatchWithCallback` (0x13fb72c7) function - pub fn execute_batch_with_callback( - &self, - orders: ::std::vec::Vec, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([19, 251, 114, 199], (orders, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeWithCallback` (0x0d335884) function - pub fn execute_with_callback( - &self, - order: SignedOrder, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 51, 88, 132], (order, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `feeController` (0x6999b377) function - pub fn fee_controller( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([105, 153, 179, 119], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit2` (0x12261ee7) function - pub fn permit_2( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([18, 38, 30, 231], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setProtocolFeeController` (0x2d771389) function - pub fn set_protocol_fee_controller( - &self, - new_fee_controller: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([45, 119, 19, 137], new_fee_controller) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Fill` event - pub fn fill_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, FillFilter> { - self.0.event() - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - ///Gets the contract's `ProtocolFeeControllerSet` event - pub fn protocol_fee_controller_set_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ProtocolFeeControllerSetFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - BaseReactorEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for BaseReactor { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `DuplicateFeeOutput` with signature `DuplicateFeeOutput(address)` and selector `0xfff08303` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DuplicateFeeOutput", abi = "DuplicateFeeOutput(address)")] - pub struct DuplicateFeeOutput { - pub duplicate_token: ::ethers::core::types::Address, - } - ///Custom Error type `FeeTooLarge` with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "FeeTooLarge", abi = "FeeTooLarge(address,uint256,address)")] - pub struct FeeTooLarge { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub recipient: ::ethers::core::types::Address, - } - ///Custom Error type `InputAndOutputFees` with signature `InputAndOutputFees()` and selector `0xedc7e2e4` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputFees", abi = "InputAndOutputFees()")] - pub struct InputAndOutputFees; - ///Custom Error type `InvalidFeeToken` with signature `InvalidFeeToken(address)` and selector `0xeddf07f5` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidFeeToken", abi = "InvalidFeeToken(address)")] - pub struct InvalidFeeToken { - pub fee_token: ::ethers::core::types::Address, - } - ///Custom Error type `InvalidReactor` with signature `InvalidReactor()` and selector `0x4ddf4a64` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidReactor", abi = "InvalidReactor()")] - pub struct InvalidReactor; - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum BaseReactorErrors { - DuplicateFeeOutput(DuplicateFeeOutput), - FeeTooLarge(FeeTooLarge), - InputAndOutputFees(InputAndOutputFees), - InvalidFeeToken(InvalidFeeToken), - InvalidReactor(InvalidReactor), - NativeTransferFailed(NativeTransferFailed), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for BaseReactorErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DuplicateFeeOutput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeTooLarge(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputFees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidFeeToken(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidReactor(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NativeTransferFailed(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for BaseReactorErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::DuplicateFeeOutput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeTooLarge(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputFees(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidFeeToken(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidReactor(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NativeTransferFailed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for BaseReactorErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for BaseReactorErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DuplicateFeeOutput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeTooLarge(element) => ::core::fmt::Display::fmt(element, f), - Self::InputAndOutputFees(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidFeeToken(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidReactor(element) => ::core::fmt::Display::fmt(element, f), - Self::NativeTransferFailed(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for BaseReactorErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for BaseReactorErrors { - fn from(value: DuplicateFeeOutput) -> Self { - Self::DuplicateFeeOutput(value) - } - } - impl ::core::convert::From for BaseReactorErrors { - fn from(value: FeeTooLarge) -> Self { - Self::FeeTooLarge(value) - } - } - impl ::core::convert::From for BaseReactorErrors { - fn from(value: InputAndOutputFees) -> Self { - Self::InputAndOutputFees(value) - } - } - impl ::core::convert::From for BaseReactorErrors { - fn from(value: InvalidFeeToken) -> Self { - Self::InvalidFeeToken(value) - } - } - impl ::core::convert::From for BaseReactorErrors { - fn from(value: InvalidReactor) -> Self { - Self::InvalidReactor(value) - } - } - impl ::core::convert::From for BaseReactorErrors { - fn from(value: NativeTransferFailed) -> Self { - Self::NativeTransferFailed(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Fill", abi = "Fill(bytes32,address,address,uint256)")] - pub struct FillFilter { - #[ethevent(indexed)] - pub order_hash: [u8; 32], - #[ethevent(indexed)] - pub filler: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub swapper: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "ProtocolFeeControllerSet", - abi = "ProtocolFeeControllerSet(address,address)" - )] - pub struct ProtocolFeeControllerSetFilter { - pub old_fee_controller: ::ethers::core::types::Address, - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum BaseReactorEvents { - FillFilter(FillFilter), - OwnershipTransferredFilter(OwnershipTransferredFilter), - ProtocolFeeControllerSetFilter(ProtocolFeeControllerSetFilter), - } - impl ::ethers::contract::EthLogDecode for BaseReactorEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = FillFilter::decode_log(log) { - return Ok(BaseReactorEvents::FillFilter(decoded)); - } - if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) { - return Ok(BaseReactorEvents::OwnershipTransferredFilter(decoded)); - } - if let Ok(decoded) = ProtocolFeeControllerSetFilter::decode_log(log) { - return Ok(BaseReactorEvents::ProtocolFeeControllerSetFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for BaseReactorEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FillFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ProtocolFeeControllerSetFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for BaseReactorEvents { - fn from(value: FillFilter) -> Self { - Self::FillFilter(value) - } - } - impl ::core::convert::From for BaseReactorEvents { - fn from(value: OwnershipTransferredFilter) -> Self { - Self::OwnershipTransferredFilter(value) - } - } - impl ::core::convert::From for BaseReactorEvents { - fn from(value: ProtocolFeeControllerSetFilter) -> Self { - Self::ProtocolFeeControllerSetFilter(value) - } - } - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes))` and selector `0x3f62192e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes))")] - pub struct ExecuteCall { - pub order: SignedOrder, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((bytes,bytes)[])")] - pub struct ExecuteBatchCall { - pub orders: ::std::vec::Vec, - } - ///Container type for all input parameters for the `executeBatchWithCallback` function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeBatchWithCallback", - abi = "executeBatchWithCallback((bytes,bytes)[],bytes)" - )] - pub struct ExecuteBatchWithCallbackCall { - pub orders: ::std::vec::Vec, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `executeWithCallback` function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeWithCallback", - abi = "executeWithCallback((bytes,bytes),bytes)" - )] - pub struct ExecuteWithCallbackCall { - pub order: SignedOrder, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeController", abi = "feeController()")] - pub struct FeeControllerCall; - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "permit2", abi = "permit2()")] - pub struct Permit2Call; - ///Container type for all input parameters for the `setProtocolFeeController` function with signature `setProtocolFeeController(address)` and selector `0x2d771389` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "setProtocolFeeController", - abi = "setProtocolFeeController(address)" - )] - pub struct SetProtocolFeeControllerCall { - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum BaseReactorCalls { - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ExecuteBatchWithCallback(ExecuteBatchWithCallbackCall), - ExecuteWithCallback(ExecuteWithCallbackCall), - FeeController(FeeControllerCall), - Owner(OwnerCall), - Permit2(Permit2Call), - SetProtocolFeeController(SetProtocolFeeControllerCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for BaseReactorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatchWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Permit2(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetProtocolFeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for BaseReactorCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteBatchWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Permit2(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetProtocolFeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for BaseReactorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatchWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ExecuteWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeController(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit2(element) => ::core::fmt::Display::fmt(element, f), - Self::SetProtocolFeeController(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for BaseReactorCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for BaseReactorCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From for BaseReactorCalls { - fn from(value: ExecuteBatchWithCallbackCall) -> Self { - Self::ExecuteBatchWithCallback(value) - } - } - impl ::core::convert::From for BaseReactorCalls { - fn from(value: ExecuteWithCallbackCall) -> Self { - Self::ExecuteWithCallback(value) - } - } - impl ::core::convert::From for BaseReactorCalls { - fn from(value: FeeControllerCall) -> Self { - Self::FeeController(value) - } - } - impl ::core::convert::From for BaseReactorCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for BaseReactorCalls { - fn from(value: Permit2Call) -> Self { - Self::Permit2(value) - } - } - impl ::core::convert::From for BaseReactorCalls { - fn from(value: SetProtocolFeeControllerCall) -> Self { - Self::SetProtocolFeeController(value) - } - } - impl ::core::convert::From for BaseReactorCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeControllerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct Permit2Return(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/basereactor.rs b/crates/bindings-uniswapx/src/basereactor.rs new file mode 100644 index 0000000..d830a75 --- /dev/null +++ b/crates/bindings-uniswapx/src/basereactor.rs @@ -0,0 +1,3459 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface BaseReactor { + struct SignedOrder { + bytes order; + bytes sig; + } + + error DuplicateFeeOutput(address duplicateToken); + error FeeTooLarge(address token, uint256 amount, address recipient); + error InputAndOutputFees(); + error InvalidFeeToken(address feeToken); + error InvalidReactor(); + error NativeTransferFailed(); + + event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); + event OwnershipTransferred(address indexed user, address indexed newOwner); + event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); + + receive() external payable; + + function execute(SignedOrder memory order) external payable; + function executeBatch(SignedOrder[] memory orders) external payable; + function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; + function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; + function feeController() external view returns (address); + function owner() external view returns (address); + function permit2() external view returns (address); + function setProtocolFeeController(address _newFeeController) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatchWithCallback", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeWithCallback", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "feeController", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IProtocolFeeController" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit2", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPermit2" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setProtocolFeeController", + "inputs": [ + { + "name": "_newFeeController", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Fill", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "filler", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "swapper", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProtocolFeeControllerSet", + "inputs": [ + { + "name": "oldFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "DuplicateFeeOutput", + "inputs": [ + { + "name": "duplicateToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "FeeTooLarge", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InputAndOutputFees", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidFeeToken", + "inputs": [ + { + "name": "feeToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InvalidReactor", + "inputs": [] + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BaseReactor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `DuplicateFeeOutput(address)` and selector `0xfff08303`. +```solidity +error DuplicateFeeOutput(address duplicateToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DuplicateFeeOutput { + pub duplicateToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DuplicateFeeOutput) -> Self { + (value.duplicateToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DuplicateFeeOutput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { duplicateToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DuplicateFeeOutput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DuplicateFeeOutput(address)"; + const SELECTOR: [u8; 4] = [255u8, 240u8, 131u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.duplicateToken, + ), + ) + } + } + }; + /**Custom error with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656`. +```solidity +error FeeTooLarge(address token, uint256 amount, address recipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FeeTooLarge { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FeeTooLarge) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FeeTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for FeeTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "FeeTooLarge(address,uint256,address)"; + const SELECTOR: [u8; 4] = [130u8, 231u8, 86u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + } + }; + /**Custom error with signature `InputAndOutputFees()` and selector `0xedc7e2e4`. +```solidity +error InputAndOutputFees(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputFees {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputFees) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputFees { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputFees { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputFees()"; + const SELECTOR: [u8; 4] = [237u8, 199u8, 226u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidFeeToken(address)` and selector `0xeddf07f5`. +```solidity +error InvalidFeeToken(address feeToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidFeeToken { + pub feeToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidFeeToken) -> Self { + (value.feeToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidFeeToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { feeToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidFeeToken { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidFeeToken(address)"; + const SELECTOR: [u8; 4] = [237u8, 223u8, 7u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.feeToken, + ), + ) + } + } + }; + /**Custom error with signature `InvalidReactor()` and selector `0x4ddf4a64`. +```solidity +error InvalidReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReactor {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReactor()"; + const SELECTOR: [u8; 4] = [77u8, 223u8, 74u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Fill(bytes32,address,address,uint256)` and selector `0x78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66`. +```solidity +event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Fill { + #[allow(missing_docs)] + pub orderHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub filler: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub swapper: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Fill { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Fill(bytes32,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + orderHash: topics.1, + filler: topics.2, + swapper: topics.3, + nonce: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.orderHash.clone(), + self.filler.clone(), + self.swapper.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.orderHash); + out[2usize] = ::encode_topic( + &self.filler, + ); + out[3usize] = ::encode_topic( + &self.swapper, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Fill { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Fill> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Fill) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ProtocolFeeControllerSet(address,address)` and selector `0xb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0`. +```solidity +event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ProtocolFeeControllerSet { + #[allow(missing_docs)] + pub oldFeeController: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newFeeController: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProtocolFeeControllerSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ProtocolFeeControllerSet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldFeeController: data.0, + newFeeController: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldFeeController, + ), + ::tokenize( + &self.newFeeController, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ProtocolFeeControllerSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProtocolFeeControllerSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &ProtocolFeeControllerSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `execute((bytes,bytes))` and selector `0x3f62192e`. +```solidity +function execute(SignedOrder memory order) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes))"; + const SELECTOR: [u8; 4] = [63u8, 98u8, 25u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3`. +```solidity +function executeBatch(SignedOrder[] memory orders) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { orders: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[])"; + const SELECTOR: [u8; 4] = [13u8, 122u8, 22u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7`. +```solidity +function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackCall) -> Self { + (value.orders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchWithCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatchWithCallback((bytes,bytes)[],bytes)"; + const SELECTOR: [u8; 4] = [19u8, 251u8, 114u8, 199u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884`. +```solidity +function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackCall { + pub order: ::RustType, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + SignedOrder, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackCall) -> Self { + (value.order, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeWithCallbackCall { + type Parameters<'a> = (SignedOrder, alloy::sol_types::sol_data::Bytes); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeWithCallback((bytes,bytes),bytes)"; + const SELECTOR: [u8; 4] = [13u8, 51u8, 88u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `feeController()` and selector `0x6999b377`. +```solidity +function feeController() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerCall {} + ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeControllerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeControllerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeController()"; + const SELECTOR: [u8; 4] = [105u8, 153u8, 179u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit2()` and selector `0x12261ee7`. +```solidity +function permit2() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Call {} + ///Container type for the return parameters of the [`permit2()`](permit2Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Return { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit2Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit2Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit2()"; + const SELECTOR: [u8; 4] = [18u8, 38u8, 30u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setProtocolFeeController(address)` and selector `0x2d771389`. +```solidity +function setProtocolFeeController(address _newFeeController) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerCall { + pub _newFeeController: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerCall) -> Self { + (value._newFeeController,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _newFeeController: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProtocolFeeControllerCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProtocolFeeControllerReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProtocolFeeController(address)"; + const SELECTOR: [u8; 4] = [45u8, 119u8, 19u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newFeeController, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`BaseReactor`](self) function calls. + pub enum BaseReactorCalls { + execute(executeCall), + executeBatch(executeBatchCall), + executeBatchWithCallback(executeBatchWithCallbackCall), + executeWithCallback(executeWithCallbackCall), + feeController(feeControllerCall), + owner(ownerCall), + permit2(permit2Call), + setProtocolFeeController(setProtocolFeeControllerCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl BaseReactorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 51u8, 88u8, 132u8], + [13u8, 122u8, 22u8, 195u8], + [18u8, 38u8, 30u8, 231u8], + [19u8, 251u8, 114u8, 199u8], + [45u8, 119u8, 19u8, 137u8], + [63u8, 98u8, 25u8, 46u8], + [105u8, 153u8, 179u8, 119u8], + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for BaseReactorCalls { + const NAME: &'static str = "BaseReactorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::executeBatchWithCallback(_) => { + ::SELECTOR + } + Self::executeWithCallback(_) => { + ::SELECTOR + } + Self::feeController(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::permit2(_) => ::SELECTOR, + Self::setProtocolFeeController(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn executeWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorCalls::executeWithCallback) + } + executeWithCallback + }, + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorCalls::executeBatch) + } + executeBatch + }, + { + fn permit2( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorCalls::permit2) + } + permit2 + }, + { + fn executeBatchWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorCalls::executeBatchWithCallback) + } + executeBatchWithCallback + }, + { + fn setProtocolFeeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorCalls::setProtocolFeeController) + } + setProtocolFeeController + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorCalls::execute) + } + execute + }, + { + fn feeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorCalls::feeController) + } + feeController + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::feeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::permit2(inner) => { + ::abi_encoded_size(inner) + } + Self::setProtocolFeeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::feeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit2(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setProtocolFeeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`BaseReactor`](self) custom errors. + pub enum BaseReactorErrors { + DuplicateFeeOutput(DuplicateFeeOutput), + FeeTooLarge(FeeTooLarge), + InputAndOutputFees(InputAndOutputFees), + InvalidFeeToken(InvalidFeeToken), + InvalidReactor(InvalidReactor), + NativeTransferFailed(NativeTransferFailed), + } + #[automatically_derived] + impl BaseReactorErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [77u8, 223u8, 74u8, 100u8], + [130u8, 231u8, 86u8, 86u8], + [237u8, 199u8, 226u8, 228u8], + [237u8, 223u8, 7u8, 245u8], + [244u8, 179u8, 177u8, 188u8], + [255u8, 240u8, 131u8, 3u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for BaseReactorErrors { + const NAME: &'static str = "BaseReactorErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DuplicateFeeOutput(_) => { + ::SELECTOR + } + Self::FeeTooLarge(_) => { + ::SELECTOR + } + Self::InputAndOutputFees(_) => { + ::SELECTOR + } + Self::InvalidFeeToken(_) => { + ::SELECTOR + } + Self::InvalidReactor(_) => { + ::SELECTOR + } + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn InvalidReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorErrors::InvalidReactor) + } + InvalidReactor + }, + { + fn FeeTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorErrors::FeeTooLarge) + } + FeeTooLarge + }, + { + fn InputAndOutputFees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorErrors::InputAndOutputFees) + } + InputAndOutputFees + }, + { + fn InvalidFeeToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorErrors::InvalidFeeToken) + } + InvalidFeeToken + }, + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorErrors::NativeTransferFailed) + } + NativeTransferFailed + }, + { + fn DuplicateFeeOutput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(BaseReactorErrors::DuplicateFeeOutput) + } + DuplicateFeeOutput + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DuplicateFeeOutput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encoded_size(inner) + } + Self::InputAndOutputFees(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DuplicateFeeOutput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`BaseReactor`](self) events. + pub enum BaseReactorEvents { + Fill(Fill), + OwnershipTransferred(OwnershipTransferred), + ProtocolFeeControllerSet(ProtocolFeeControllerSet), + } + #[automatically_derived] + impl BaseReactorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ], + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + [ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for BaseReactorEvents { + const NAME: &'static str = "BaseReactorEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Fill) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ProtocolFeeControllerSet) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for BaseReactorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BaseReactor`](self) contract instance. + +See the [wrapper's documentation](`BaseReactorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BaseReactorInstance { + BaseReactorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + BaseReactorInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + BaseReactorInstance::::deploy_builder(provider) + } + /**A [`BaseReactor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`BaseReactor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BaseReactorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BaseReactorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BaseReactorInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BaseReactorInstance { + /**Creates a new wrapper around an on-chain [`BaseReactor`](self) contract instance. + +See the [wrapper's documentation](`BaseReactorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BaseReactorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BaseReactorInstance { + BaseReactorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BaseReactorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeBatchCall { orders }) + } + ///Creates a new call builder for the [`executeBatchWithCallback`] function. + pub fn executeBatchWithCallback( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeBatchWithCallbackCall { + orders, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`executeWithCallback`] function. + pub fn executeWithCallback( + &self, + order: ::RustType, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeWithCallbackCall { + order, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`feeController`] function. + pub fn feeController( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeControllerCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`permit2`] function. + pub fn permit2(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&permit2Call {}) + } + ///Creates a new call builder for the [`setProtocolFeeController`] function. + pub fn setProtocolFeeController( + &self, + _newFeeController: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setProtocolFeeControllerCall { + _newFeeController, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BaseReactorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Fill`] event. + pub fn Fill_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ProtocolFeeControllerSet`] event. + pub fn ProtocolFeeControllerSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/block_numberish.rs b/crates/bindings-uniswapx/src/block_numberish.rs deleted file mode 100644 index 5262d1e..0000000 --- a/crates/bindings-uniswapx/src/block_numberish.rs +++ /dev/null @@ -1,127 +0,0 @@ -pub use block_numberish::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod block_numberish { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![], - }), - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static BLOCKNUMBERISH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\xA4\xB1F\x03a\x004W`\x01`\x01`@\x1B\x03a\0\x08a\0O` \x1B\x17\x16`\x80Ra\0\xD1V[`\x01`\x01`@\x1B\x03a\0ya\0\xB6` \x1B\x17\x16`\x80Ra\0\xD1V[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\x8DW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xB1\x91\x90a\0\xBAV[\x90P\x90V[C\x90V[_` \x82\x84\x03\x12\x15a\0\xCAW_\x80\xFD[PQ\x91\x90PV[`\x80Q`\xC9a\0\xE4_9_PP`\xC9_\xF3\xFE`\x80`@R_\x80\xFD[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15`RW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90`t\x91\x90`}V[\x90P\x90V[C\x90V[_` \x82\x84\x03\x12\x15`\x8CW_\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 cV\xF2\xAB\xB1\xE7;\xE3\x18$\x878\x9Co\x14\x88\xFD\xE0\xF0\xAF\x8D\xE8r\xF1C\xF9\xDCS;|\x17\xDDdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static BLOCKNUMBERISH_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R_\x80\xFD[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15`RW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90`t\x91\x90`}V[\x90P\x90V[C\x90V[_` \x82\x84\x03\x12\x15`\x8CW_\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 cV\xF2\xAB\xB1\xE7;\xE3\x18$\x878\x9Co\x14\x88\xFD\xE0\xF0\xAF\x8D\xE8r\xF1C\xF9\xDCS;|\x17\xDDdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static BLOCKNUMBERISH_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct BlockNumberish(::ethers::contract::Contract); - impl ::core::clone::Clone for BlockNumberish { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for BlockNumberish { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for BlockNumberish { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for BlockNumberish { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(BlockNumberish)) - .field(&self.address()) - .finish() - } - } - impl BlockNumberish { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - BLOCKNUMBERISH_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - BLOCKNUMBERISH_ABI.clone(), - BLOCKNUMBERISH_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for BlockNumberish { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/blocknumberish.rs b/crates/bindings-uniswapx/src/blocknumberish.rs new file mode 100644 index 0000000..9333535 --- /dev/null +++ b/crates/bindings-uniswapx/src/blocknumberish.rs @@ -0,0 +1,284 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface BlockNumberish { + constructor(); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BlockNumberish { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b5061a4b14603610035576001600160401b0361000961005060201b17166080526100d7565b6001600160401b0361007d6100ba60201b17166080526100d7565b600060646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b591906100be565b905090565b4390565b6000602082840312156100d057600080fd5b5051919050565b60805160cf6100ed6000396000505060cf6000f3fe6080604052600080fd5b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156056573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190607891906081565b905090565b4390565b600060208284031215609257600080fd5b505191905056fea2646970667358221220b73aa0aaeb32c7953a71d7dd2c411922f55cf9c2c94a2dd7f1c0c947373e3f3264736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\xA4\xB1F\x03a\x005W`\x01`\x01`@\x1B\x03a\0\ta\0P` \x1B\x17\x16`\x80Ra\0\xD7V[`\x01`\x01`@\x1B\x03a\0}a\0\xBA` \x1B\x17\x16`\x80Ra\0\xD7V[`\0`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\x91W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xB5\x91\x90a\0\xBEV[\x90P\x90V[C\x90V[`\0` \x82\x84\x03\x12\x15a\0\xD0W`\0\x80\xFD[PQ\x91\x90PV[`\x80Q`\xCFa\0\xED`\09`\0PP`\xCF`\0\xF3\xFE`\x80`@R`\0\x80\xFD[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15`VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90`x\x91\x90`\x81V[\x90P\x90V[C\x90V[`\0` \x82\x84\x03\x12\x15`\x92W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB7:\xA0\xAA\xEB2\xC7\x95:q\xD7\xDD,A\x19\"\xF5\\\xF9\xC2\xC9J-\xD7\xF1\xC0\xC9G7>?2dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052600080fd5b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156056573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190607891906081565b905090565b4390565b600060208284031215609257600080fd5b505191905056fea2646970667358221220b73aa0aaeb32c7953a71d7dd2c411922f55cf9c2c94a2dd7f1c0c947373e3f3264736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\0\x80\xFD[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15`VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90`x\x91\x90`\x81V[\x90P\x90V[C\x90V[`\0` \x82\x84\x03\x12\x15`\x92W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB7:\xA0\xAA\xEB2\xC7\x95:q\xD7\xDD,A\x19\"\xF5\\\xF9\xC2\xC9J-\xD7\xF1\xC0\xC9G7>?2dsolcC\0\x08\x18\x003", + ); + /**Constructor`. +```solidity +constructor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall {} + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BlockNumberish`](self) contract instance. + +See the [wrapper's documentation](`BlockNumberishInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BlockNumberishInstance { + BlockNumberishInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + BlockNumberishInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + BlockNumberishInstance::::deploy_builder(provider) + } + /**A [`BlockNumberish`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`BlockNumberish`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BlockNumberishInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BlockNumberishInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BlockNumberishInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BlockNumberishInstance { + /**Creates a new wrapper around an on-chain [`BlockNumberish`](self) contract instance. + +See the [wrapper's documentation](`BlockNumberishInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BlockNumberishInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BlockNumberishInstance { + BlockNumberishInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BlockNumberishInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BlockNumberishInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/bytes_lib.rs b/crates/bindings-uniswapx/src/bytes_lib.rs deleted file mode 100644 index 0bb0280..0000000 --- a/crates/bindings-uniswapx/src/bytes_lib.rs +++ /dev/null @@ -1,123 +0,0 @@ -pub use bytes_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod bytes_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static BYTESLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xD3P\xB1\xA9L@Z\x9B\xCB\x07\xC7\xD30)r\x99\xDA\xC2\xC2\x11,\xCD\xE7\xAB\x1F\xC6X\x1EE5r\xA9dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static BYTESLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xD3P\xB1\xA9L@Z\x9B\xCB\x07\xC7\xD30)r\x99\xDA\xC2\xC2\x11,\xCD\xE7\xAB\x1F\xC6X\x1EE5r\xA9dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static BYTESLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct BytesLib(::ethers::contract::Contract); - impl ::core::clone::Clone for BytesLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for BytesLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for BytesLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for BytesLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(BytesLib)).field(&self.address()).finish() - } - } - impl BytesLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - BYTESLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - BYTESLIB_ABI.clone(), - BYTESLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for BytesLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/byteslib.rs b/crates/bindings-uniswapx/src/byteslib.rs new file mode 100644 index 0000000..e7b0dbf --- /dev/null +++ b/crates/bindings-uniswapx/src/byteslib.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface BytesLib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod BytesLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122000455ada9abf93f7e4e52893aecc3ef66a2729b95b4f7b69cfd0d668730d0ca064736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \0EZ\xDA\x9A\xBF\x93\xF7\xE4\xE5(\x93\xAE\xCC>\xF6j')\xB9[O{i\xCF\xD0\xD6hs\r\x0C\xA0dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122000455ada9abf93f7e4e52893aecc3ef66a2729b95b4f7b69cfd0d668730d0ca064736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \0EZ\xDA\x9A\xBF\x93\xF7\xE4\xE5(\x93\xAE\xCC>\xF6j')\xB9[O{i\xCF\xD0\xD6hs\r\x0C\xA0dsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`BytesLib`](self) contract instance. + +See the [wrapper's documentation](`BytesLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> BytesLibInstance { + BytesLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + BytesLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + BytesLibInstance::::deploy_builder(provider) + } + /**A [`BytesLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`BytesLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct BytesLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for BytesLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("BytesLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BytesLibInstance { + /**Creates a new wrapper around an on-chain [`BytesLib`](self) contract instance. + +See the [wrapper's documentation](`BytesLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl BytesLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> BytesLibInstance { + BytesLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BytesLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > BytesLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/cosigner_lib.rs b/crates/bindings-uniswapx/src/cosigner_lib.rs deleted file mode 100644 index a5969b6..0000000 --- a/crates/bindings-uniswapx/src/cosigner_lib.rs +++ /dev/null @@ -1,150 +0,0 @@ -pub use cosigner_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod cosigner_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("InvalidCosignature"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidCosignature"), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static COSIGNERLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x90\xA0\xF0wId<\xBB\r\xFC\x06\x11\x81\x92\xC9\xAB\xD7\xEC\xB0([vZ\xDE\xFDZ\xAA\x07\xFFW\xE6\xF2dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static COSIGNERLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x90\xA0\xF0wId<\xBB\r\xFC\x06\x11\x81\x92\xC9\xAB\xD7\xEC\xB0([vZ\xDE\xFDZ\xAA\x07\xFFW\xE6\xF2dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static COSIGNERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct CosignerLib(::ethers::contract::Contract); - impl ::core::clone::Clone for CosignerLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for CosignerLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for CosignerLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for CosignerLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(CosignerLib)) - .field(&self.address()) - .finish() - } - } - impl CosignerLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - COSIGNERLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - COSIGNERLIB_ABI.clone(), - COSIGNERLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for CosignerLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `InvalidCosignature` with signature `InvalidCosignature()` and selector `0xd7815be1` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidCosignature", abi = "InvalidCosignature()")] - pub struct InvalidCosignature; -} diff --git a/crates/bindings-uniswapx/src/cosignerlib.rs b/crates/bindings-uniswapx/src/cosignerlib.rs new file mode 100644 index 0000000..484708b --- /dev/null +++ b/crates/bindings-uniswapx/src/cosignerlib.rs @@ -0,0 +1,377 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface CosignerLib { + error InvalidCosignature(); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "error", + "name": "InvalidCosignature", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod CosignerLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205e74c02237e4d571e29c432d63791304211f5a1ad21c2d4279f19188ed3b3dbb64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 ^t\xC0\"7\xE4\xD5q\xE2\x9CC-cy\x13\x04!\x1FZ\x1A\xD2\x1C-By\xF1\x91\x88\xED;=\xBBdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205e74c02237e4d571e29c432d63791304211f5a1ad21c2d4279f19188ed3b3dbb64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 ^t\xC0\"7\xE4\xD5q\xE2\x9CC-cy\x13\x04!\x1FZ\x1A\xD2\x1C-By\xF1\x91\x88\xED;=\xBBdsolcC\0\x08\x18\x003", + ); + /**Custom error with signature `InvalidCosignature()` and selector `0xd7815be1`. +```solidity +error InvalidCosignature(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidCosignature {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidCosignature) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidCosignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidCosignature { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidCosignature()"; + const SELECTOR: [u8; 4] = [215u8, 129u8, 91u8, 225u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + ///Container for all the [`CosignerLib`](self) custom errors. + pub enum CosignerLibErrors { + InvalidCosignature(InvalidCosignature), + } + #[automatically_derived] + impl CosignerLibErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[215u8, 129u8, 91u8, 225u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for CosignerLibErrors { + const NAME: &'static str = "CosignerLibErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InvalidCosignature(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn InvalidCosignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(CosignerLibErrors::InvalidCosignature) + } + InvalidCosignature + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InvalidCosignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::InvalidCosignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`CosignerLib`](self) contract instance. + +See the [wrapper's documentation](`CosignerLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> CosignerLibInstance { + CosignerLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + CosignerLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + CosignerLibInstance::::deploy_builder(provider) + } + /**A [`CosignerLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`CosignerLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct CosignerLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for CosignerLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("CosignerLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > CosignerLibInstance { + /**Creates a new wrapper around an on-chain [`CosignerLib`](self) contract instance. + +See the [wrapper's documentation](`CosignerLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl CosignerLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> CosignerLibInstance { + CosignerLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > CosignerLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > CosignerLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/currency_library.rs b/crates/bindings-uniswapx/src/currency_library.rs deleted file mode 100644 index 6f8a57c..0000000 --- a/crates/bindings-uniswapx/src/currency_library.rs +++ /dev/null @@ -1,152 +0,0 @@ -pub use currency_library::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod currency_library { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static CURRENCYLIBRARY_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xCC\xEC`\xF0?\xD0\x93\xE4\xF3\x80SC\xE1\x17\xB9\xF9\xBAw\x8D\xCB\xE3o\x80EJ\xF8\x8E\x06c8\x15\rdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static CURRENCYLIBRARY_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xCC\xEC`\xF0?\xD0\x93\xE4\xF3\x80SC\xE1\x17\xB9\xF9\xBAw\x8D\xCB\xE3o\x80EJ\xF8\x8E\x06c8\x15\rdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static CURRENCYLIBRARY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct CurrencyLibrary(::ethers::contract::Contract); - impl ::core::clone::Clone for CurrencyLibrary { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for CurrencyLibrary { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for CurrencyLibrary { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for CurrencyLibrary { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(CurrencyLibrary)) - .field(&self.address()) - .finish() - } - } - impl CurrencyLibrary { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - CURRENCYLIBRARY_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - CURRENCYLIBRARY_ABI.clone(), - CURRENCYLIBRARY_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for CurrencyLibrary { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; -} diff --git a/crates/bindings-uniswapx/src/currencylibrary.rs b/crates/bindings-uniswapx/src/currencylibrary.rs new file mode 100644 index 0000000..618f211 --- /dev/null +++ b/crates/bindings-uniswapx/src/currencylibrary.rs @@ -0,0 +1,377 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface CurrencyLibrary { + error NativeTransferFailed(); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod CurrencyLibrary { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204d31eec571fc5d8d0c338a6f6bce4e4e15ded122a4be09cad8ce5d66581f67b564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 M1\xEE\xC5q\xFC]\x8D\x0C3\x8Aok\xCENN\x15\xDE\xD1\"\xA4\xBE\t\xCA\xD8\xCE]fX\x1Fg\xB5dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204d31eec571fc5d8d0c338a6f6bce4e4e15ded122a4be09cad8ce5d66581f67b564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 M1\xEE\xC5q\xFC]\x8D\x0C3\x8Aok\xCENN\x15\xDE\xD1\"\xA4\xBE\t\xCA\xD8\xCE]fX\x1Fg\xB5dsolcC\0\x08\x18\x003", + ); + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + ///Container for all the [`CurrencyLibrary`](self) custom errors. + pub enum CurrencyLibraryErrors { + NativeTransferFailed(NativeTransferFailed), + } + #[automatically_derived] + impl CurrencyLibraryErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[244u8, 179u8, 177u8, 188u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for CurrencyLibraryErrors { + const NAME: &'static str = "CurrencyLibraryErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(CurrencyLibraryErrors::NativeTransferFailed) + } + NativeTransferFailed + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`CurrencyLibrary`](self) contract instance. + +See the [wrapper's documentation](`CurrencyLibraryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> CurrencyLibraryInstance { + CurrencyLibraryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + CurrencyLibraryInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + CurrencyLibraryInstance::::deploy_builder(provider) + } + /**A [`CurrencyLibrary`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`CurrencyLibrary`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct CurrencyLibraryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for CurrencyLibraryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("CurrencyLibraryInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > CurrencyLibraryInstance { + /**Creates a new wrapper around an on-chain [`CurrencyLibrary`](self) contract instance. + +See the [wrapper's documentation](`CurrencyLibraryInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl CurrencyLibraryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> CurrencyLibraryInstance { + CurrencyLibraryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > CurrencyLibraryInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > CurrencyLibraryInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/curve_builder.rs b/crates/bindings-uniswapx/src/curve_builder.rs deleted file mode 100644 index 2b853a0..0000000 --- a/crates/bindings-uniswapx/src/curve_builder.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use curve_builder::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod curve_builder { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static CURVEBUILDER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x03\xEE\xE5b$w\xC0\x16\xD94Q\xA1\\\x9F\x15\x0C\x13\xF4\xD6\xA1\xAC\x04\xE2r)\xED\x03\x10w$d_dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static CURVEBUILDER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x03\xEE\xE5b$w\xC0\x16\xD94Q\xA1\\\x9F\x15\x0C\x13\xF4\xD6\xA1\xAC\x04\xE2r)\xED\x03\x10w$d_dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static CURVEBUILDER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct CurveBuilder(::ethers::contract::Contract); - impl ::core::clone::Clone for CurveBuilder { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for CurveBuilder { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for CurveBuilder { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for CurveBuilder { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(CurveBuilder)) - .field(&self.address()) - .finish() - } - } - impl CurveBuilder { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - CURVEBUILDER_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - CURVEBUILDER_ABI.clone(), - CURVEBUILDER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for CurveBuilder { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/curvebuilder.rs b/crates/bindings-uniswapx/src/curvebuilder.rs new file mode 100644 index 0000000..ba445e4 --- /dev/null +++ b/crates/bindings-uniswapx/src/curvebuilder.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface CurveBuilder {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod CurveBuilder { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e5894095e3e5c2c544077a8cf87a690da4dc6f7c4568403975111be34366b4b64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 nX\x94\t^>\\,T@w\xA8\xCF\x87\xA6\x90\xDAM\xC6\xF7\xC4V\x84\x03\x97Q\x11\xBE46kKdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e5894095e3e5c2c544077a8cf87a690da4dc6f7c4568403975111be34366b4b64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 nX\x94\t^>\\,T@w\xA8\xCF\x87\xA6\x90\xDAM\xC6\xF7\xC4V\x84\x03\x97Q\x11\xBE46kKdsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`CurveBuilder`](self) contract instance. + +See the [wrapper's documentation](`CurveBuilderInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> CurveBuilderInstance { + CurveBuilderInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + CurveBuilderInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + CurveBuilderInstance::::deploy_builder(provider) + } + /**A [`CurveBuilder`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`CurveBuilder`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct CurveBuilderInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for CurveBuilderInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("CurveBuilderInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > CurveBuilderInstance { + /**Creates a new wrapper around an on-chain [`CurveBuilder`](self) contract instance. + +See the [wrapper's documentation](`CurveBuilderInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl CurveBuilderInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> CurveBuilderInstance { + CurveBuilderInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > CurveBuilderInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > CurveBuilderInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/deploy_dutch.rs b/crates/bindings-uniswapx/src/deploy_dutch.rs deleted file mode 100644 index 57bf8e1..0000000 --- a/crates/bindings-uniswapx/src/deploy_dutch.rs +++ /dev/null @@ -1,371 +0,0 @@ -pub use deploy_dutch::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod deploy_dutch { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("run"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("run"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("deployment"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct DutchDeployment"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setUp"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setUp"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static DEPLOYDUTCH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[Pag]\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x91W[_\x80\xFD[\0[a\0Ma\0\xB4V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x88V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x017W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01IW=_\x80>=_\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;_\x03\x90Pa\x01oWa\x01ma\x03\x86V[P[_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xA4\x90a\x05\x0CV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x01\xE5W=_\x80>=_\xFD[P\x90Pa\x02'`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[_\x80_\x1B`@Qa\x027\x90a\x05\x19V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02TW=_\x80>=_\xFD[P\x90Pa\x02\x96`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\xFDW_\x80\xFD[PZ\xF1\x15\x80\x15a\x03\x0FW=_\x80>=_\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[_\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aCha#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04\x08\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\x87V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x1FW_\x80\xFD[PZ\xF1\x15\x80\x15a\x041W=_\x80>=_\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xDC\x82\x82`@Q`$\x01a\x04a\x92\x91\x90a\x05\xBDV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04\xE0V[PPV[a\x04\xE9\x81a\x04\xECV[PV[\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[a/\xB0\x80a\x05\xF5\x839\x01\x90V[a\r\xC3\x80a5\xA5\x839\x01\x90V[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x05JW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05.V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x05\xB5`@\x83\x01\x84a\x05&V[\x94\x93PPPPV[`@\x81R_a\x05\xCF`@\x83\x01\x85a\x05&V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0/\xB08\x03\x80b\0/\xB0\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa.\x9Fb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x17\x97\x01Ra.\x9F_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a!2V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a!\xD7V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a\"\x16V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a\"\x9EV[a\x06eV[a\0\xB4a\x01e6`\x04a\"\xC0V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a\"\x9EV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a#\x1FV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0BlV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a%\xDDV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\x1DV[a\x04\x9F\x81a\x0BlV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0BlV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga#\x1FV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\x1DV[a\x08d\x81a\x0BlV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a&\x19V[\x81\x01\x90a\nW\x91\x90a(\xFBV[\x90Pa\nb\x81a\x0C\xB7V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xA1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0Eo\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a&\x19V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FTV[\x90R\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0B=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\x90\x91\x90\x81\x01\x90a*{V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x12\xA7\x82\x84a+qV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xBFWa\x12\xBFa\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x12\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x13wW\x85`@\x01Q\x81\x81Q\x81\x10a\x13JWa\x13Ja#\x1FV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13dWa\x13da#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13,V[P_\x80_[\x84\x81\x10\x15a\x16\x87W_\x87\x82\x81Q\x81\x10a\x13\x97Wa\x13\x97a#\x1FV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14RW\x88\x81\x81Q\x81\x10a\x13\xBDWa\x13\xBDa#\x1FV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x13\xA3V[P_\x80[\x88\x81\x10\x15a\x15\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x14uWa\x14ua#\x1FV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x06W\x85\x15a\x14\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x14\xFF\x90\x84a+qV[\x92P`\x01\x96P[P`\x01\x01a\x14VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\x88W\x84\x15a\x15oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\x81\x90\x82a+qV[\x90P`\x01\x93P[\x80_\x03a\x15\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x15\xEA\x81`\x05a'\x10a\x1EXV[\x82` \x01Q\x11\x15a\x16]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16rWa\x16ra#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x16\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17e\x90\x84\x90\x86\x90`\x04\x01a+\x84V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17{W_\x80\xFD[PZ\xFA\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18T\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18^\x85\x85a\x1E\x92V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xA8\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a-]` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919`@Q` \x01a\x1A\x15\x93\x92\x91\x90a*'V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a-\xAF` \x83\x019`@Q` \x01a\x1Ah\x92\x91\x90a+\xB2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1A\xD5\x96\x95\x94\x93\x92`\x04\x01a,\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\xECW_\x80\xFD[PZ\xF1\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B#Wa\x03L\x82\x82a\x1BEV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1E\xD8V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1B\x9BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xA0V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1B\xEAWP\x83a\x1COV[\x82\x82\x11a\x1C#W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C1WP\x82a\x1COV[B\x83\x10a\x1C?WP\x83a\x1COV[a\x1CL\x83\x83B\x88\x88a\x1F\xC6V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1C\xB5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1C\xCA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1B\xDBV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\x9E\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1D\xDCWa\x1D\xDCa\"\xF2V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1EIW_a\x1E7\x85\x83\x81Q\x81\x10a\x1E*Wa\x1E*a#\x1FV[` \x02` \x01\x01Qa\x1F\xE0V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x0BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\x8BW_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F\xBFW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_a\x1F\xD4\x86\x86\x86\x86\x86a VV[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a-]`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\x9E\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x84\x84\x10a eWP\x80a\x1F\xD7V[_a p\x87\x86a,\xC6V[\x90P_a }\x88\x88a,\xC6V[\x90P_\x85\x85\x12\x15a \xAEWa \x9E\x83\x83a \x97\x88\x8Aa,\xD9V[\x91\x90a\x1EXV[a \xA7\x90a,\xFFV[\x90Pa \xC0V[a \xBD\x83\x83a \x97\x89\x89a,\xD9V[\x90P[a \xCA\x81\x87a-5V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a \xE7W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a \xFDW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x14W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!+W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a!DW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a![W_\x80\xFD[a!g\x87\x83\x88\x01a \xD7V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!|W_\x80\xFD[Pa!\x89\x86\x82\x87\x01a \xEDV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a!\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!+W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a!\xE8W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xFEW_\x80\xFD[a\"\n\x85\x82\x86\x01a!\x96V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\")W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"@W_\x80\xFD[a\"L\x88\x83\x89\x01a!\x96V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"dW_\x80\xFD[Pa\"q\x87\x82\x88\x01a \xEDV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[_` \x82\x84\x03\x12\x15a\"\xAEW_\x80\xFD[\x815a\"\xB9\x81a\"}V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\"\xD0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xE6W_\x80\xFD[a\x1CO\x84\x82\x85\x01a \xD7V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a#fW\x81\x81\x01Q\x83\x82\x01R` \x01a#NV[PP_\x91\x01RV[_\x81Q\x80\x84Ra#\x85\x81` \x86\x01` \x86\x01a#LV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a$\x15W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a#\xCAV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra$\x93a\x01\xA0\x85\x01\x82a#nV[\x90P` \x83\x01Qa$\xD1` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra$\xE9\x82\x82a#\xB7V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x03\x82\x82a#nV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a%\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra%{\x86\x83Qa$ V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\x0FW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&LW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a&fW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!+W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'SWa'Sa\"\xF2V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a'jW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'\x84Wa'\x84a\"\xF2V[a'\xB5` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\x0CV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a'\xC9W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a'\xF5W_\x80\xFD[a'\xFDa&zV[\x90P\x815a(\n\x81a\"}V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(AWa(Aa\"\xF2V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a(ZW_\x80\xFD[\x815` a(oa(j\x83a((V[a'\x0CV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a(\x8DW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a(\xF0W`\x80\x81\x89\x03\x12\x15a(\xA8W_\x80\xFD[a(\xB0a&\xA3V[\x815a(\xBB\x81a\"}V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a(\xDE\x81a\"}V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a(\x91V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a)\x0BW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\"W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)5W_\x80\xFD[a)=a&\xC6V[\x825\x82\x81\x11\x15a)KW_\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a)\\W_\x80\xFD[a)da&\xE9V[\x815a)o\x81a\"}V[\x81R` \x82\x015a)\x7F\x81a\"}V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a)\xA8\x81a\"}V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a)\xBEW_\x80\xFD[a)\xCA\x89\x82\x85\x01a'[V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra)\xF6\x86``\x85\x01a'\xE5V[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\x0CW_\x80\xFD[a*\x18\x87\x82\x86\x01a(KV[`\x80\x83\x01RP\x95\x94PPPPPV[_\x84Qa*8\x81\x84` \x89\x01a#LV[\x84Q\x90\x83\x01\x90a*L\x81\x83` \x89\x01a#LV[\x84Q\x91\x01\x90a*_\x81\x83` \x88\x01a#LV[\x01\x95\x94PPPPPV[` \x81R_a\"\xB9` \x83\x01\x84a$ V[_` \x80\x83\x85\x03\x12\x15a*\x8CW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xA2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a*\xB2W_\x80\xFD[\x80Qa*\xC0a(j\x82a((V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a*\xDEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+8W\x80\x85\x8A\x03\x12\x15a*\xF9W_\x80\xFD[a+\x01a&zV[\x85Qa+\x0C\x81a\"}V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+%\x81a\"}V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a*\xE3V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1CO`@\x83\x01\x84a$ V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x83Qa+\xE9\x81`\x13\x85\x01` \x88\x01a#LV[\x83Q\x90\x83\x01\x90a,\0\x81`\x13\x84\x01` \x88\x01a#LV[\x01`\x13\x01\x94\x93PPPPV[_a\x01@a,;\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra,|`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra,\xB1\x81\x84\x01\x86a#nV[\x90P\x82\x81\x03a\x01 \x84\x01Ra \xCA\x81\x85a#nV[\x81\x81\x03\x81\x81\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a,\xF8Wa,\xF8a+DV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-/Wa-/a+DV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a-TWa-Ta+DV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xE1\xD9wc\xD5v\xC1\x86L\"\xE3$b\x10\x08\xA6\xD9\xD7E-\xF0\xF4\x85\xBE3z\xFE\x84\x01\xBB0\x89dsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\r\xA6\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cA\xD8\x8Di\x14a\0CW\x80cX]\xA6(\x14a\0lW\x80cvq\xD0{\x14a\0\x81W[_\x80\xFD[a\0Va\0Q6`\x04a\x04\xA8V[a\0\xC2V[`@Qa\0c\x91\x90a\x05\xDCV[`@Q\x80\x91\x03\x90\xF3[a\0\x7Fa\0z6`\x04a\x08\xC4V[a\x02\x18V[\0[a\0\x9Da\0\x8F6`\x04a\n*V[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R_\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAA\x92\x91`\x04\x01a\ndV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC1W_\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xD2WP`\x01[a\x02\x12W=\x80\x80\x15a\x01\xFFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xFE\xB5\x9B\x92\xB026\x10F\xE1\x83\xA9\x95\xBD\xE7X(\x86\xEC\x94\x98\x99\x0F{vt\xB9\xC2\x17\xF8\xB1kdsolcC\0\x08\x18\x003`@`\x80\x81R`\x04\x90\x816\x10\x15a\0\x15W`\0\x80\xFD[`\0\x90\x815`\xE0\x1C\x80c\rX\xB1\xDB\x14a\x12lW\x80c\x13|)\xFE\x14a\x10uW\x80c*-\x80\xD1\x14a\r\xB7W\x80c+g\xB5p\x14a\x0B\xDEW\x80c0\xF2\x8Bz\x14a\n\xDEW\x80c6D\xE5\x15\x14a\n\x9DW\x80c6\xC7\x85\x16\x14a\n(W\x80c?\xF9\xDC\xB1\x14a\t\xA8W\x80cO\xE0+D\x14a\t?W\x80ce\xD9r<\x14a\x07\xACW\x80c\x87Q|E\x14a\x06zW\x80c\x92}\xA1\x05\x14a\x05\xC3W\x80c\xCCS(\x7F\x14a\x04\xA3W\x80c\xED\xD9DK\x14a\x03:Wc\xFE\x8E\xC1\xA7\x14a\0\xC6W`\0\x80\xFD[4a\x036W`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x835\x81\x81\x11a\x032Wa\x01\x14\x906\x90\x86\x01a\x16KV[`$5\x82\x81\x11a\x03.Wa\x01+\x906\x90\x87\x01a\x16\x1AV[a\x013a\x14\xE6V[\x91`\x845\x85\x81\x11a\x03*Wa\x01K\x906\x90\x8A\x01a\x15\xC1V[\x98\x90\x95`\xA45\x90\x81\x11a\x03&Wa\x01d\x916\x91\x01a\x15\xC1V[\x96\x90\x95\x81Q\x90a\x01s\x82a\x13\xFFV[`k\x82R\x7FPermitBatchWitnessTransferFrom(T` \x83\x01R\x7FokenPermissions[] permitted,addr\x83\x83\x01R\x7Fess spender,uint256 nonce,uint25``\x83\x01R\x7F6 deadline,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x82Q\x9A\x8B\x91\x81a\x02\"` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8A\x81R\x03\x99a\x02[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x9B\x8C\x81\x01\x83R\x82a\x147V[Q\x90 \x90\x85QQa\x02k\x81a\x1E\xBBV[\x90\x8A[\x81\x81\x10a\x02\xF9WPPa\x02\xF6\x99\x9Aa\x02\xED\x91\x83Qa\x02\xA0\x81a\x02\x94` \x82\x01\x80\x95a\x1FfV[\x03\x84\x81\x01\x83R\x82a\x147V[Q\x90 ` \x89\x81\x01Q\x85\x8B\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`d5`\xC0\x84\x01R\x82`\xE0\x81\x01[\x03\x90\x81\x01\x83R\x82a\x147V[Q\x90 \x93a\x1C\xF7V[\x80\xF3[\x80a\x03\x11a\x03\x0Ba\x03!\x93\x8CQa\x17^V[Qa TV[a\x03\x1B\x82\x86a\x17^V[Ra\x1F\nV[a\x02nV[\x88\x80\xFD[\x87\x80\xFD[\x84\x80\xFD[\x83\x80\xFD[P\x80\xFD[P\x914a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x805\x82\x81\x11a\x032Wa\x03\x8B\x906\x90\x83\x01a\x16KV[`$5\x83\x81\x11a\x03.Wa\x03\xA2\x906\x90\x84\x01a\x16\x1AV[\x93\x90\x92a\x03\xADa\x14\xE6V[\x91`d5\x90\x81\x11a\x04\x9FWa\x03\xC4\x916\x91\x01a\x15\xC1V[\x94\x90\x93\x83QQ\x97a\x03\xD4\x89a\x1E\xBBV[\x98\x88[\x81\x81\x10a\x04}WPPa\x02\xF6\x97\x98\x81Qa\x04%\x81a\x03\xF9` \x82\x01\x80\x95a\x1FfV[\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x01\x83R\x82a\x147V[Q\x90 ` \x86\x01Q\x82\x87\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\xFC\xF3_Z\xC6\xA2\xC2\x88h\xDCD\xC3\x02\x16dp&b9\x19_\x02\xB0\xEE@\x834\x82\x933\xB7f\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x02\xED\x81a\x14\x1BV[\x80\x8Ba\x03\x1B\x82a\x04\x94a\x03\x0Ba\x04\x9A\x96\x8DQa\x17^V[\x92a\x17^V[a\x03\xD7V[\x86\x80\xFD[P\x824a\x05\xBFW` \x90\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x03.Wa\x04\xF4\x916\x91\x01a\x16\x1AV[\x92\x90\x91\x84[\x84\x81\x10a\x05\x04W\x85\x80\xF3[\x80a\x05\x1Aa\x05\x15`\x01\x93\x88\x88a\x19lV[a\x19|V[a\x05/\x84a\x05)\x84\x8A\x8Aa\x19lV[\x01a\x19|V[3\x89R\x83\x85R\x85\x89 \x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x92\x83\x8BR\x86R\x86\x8A \x91\x16\x90\x81\x8AR\x85R\x85\x89 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81T\x16\x90U\x85Q\x91\x82R\x84\x82\x01R\x7F\x89\xB1\xAD\xD1^\xFFV\xB3\xDF\xE2\x99\xAD\x94\xE0\x1F+R\xFB\xCB\x80\xAE\x1A;\xAE\xA6\xAE\x8C\x04\xCB+\x98\xA4\x853\x92\xA2\x01a\x04\xF9V[\x82\x80\xFD[P4a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06v\x81a\x05\xFFa\x14\xA0V[\x93a\x06\x08a\x14\xC3V[a\x06\x10a\x14\xE6V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16\x83R`\x01` \x90\x81R\x84\x84 \x92\x88\x16\x84R\x91\x82R\x83\x83 \x90\x87\x16\x83R\x81R\x91\x90 T\x92Q\x93\x83\x16\x84R`\xA0\x83\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x84\x01R`\xD0\x91\x90\x91\x1C`@\x83\x01R\x81\x90``\x82\x01\x90V[\x03\x90\xF3[P4a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06\xB2a\x14\xA0V[\x90a\x06\xBBa\x14\xC3V[\x91a\x06\xC4a\x14\xE6V[e\xFF\xFF\xFF\xFF\xFF\xFF\x92`d5\x84\x81\x16\x90\x81\x81\x03a\x03*Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x7F\xDA\x9F\xA7\xC1\xB0\x04\x02\xC1}\x01a\xB2I\xB1\xAB\x8B\xBE\xC0G\xC5\xA5\"\x07\xB9\xC1\x12\xDE\xFF\xD8\x17\x03k\x943\x8AR`\x01` R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x8B \x98s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x94\x16\x99\x8A\x8DR` R\x83\x87\x8D \x9B\x16\x9A\x8B\x8DR` R\x86\x8C \x94\x86\x15`\0\x14a\x07\xA4WPB\x16\x92[\x84T\x92\x16\x97\x88\x93`\xA0\x1B\x16\x91\x16\x17\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA4\x80\xF3[\x90P\x92a\x07\x83V[P\x824a\x05\xBFW``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x07\xE5a\x14\xA0V[\x90a\x07\xEEa\x14\xC3V[\x92e\xFF\xFF\xFF\xFF\xFF\xFF`D5\x81\x81\x16\x93\x90\x84\x81\x03a\x03*W3\x88R` \x91`\x01\x83R\x84\x89 \x96s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x97\x88\x8BR\x84R\x85\x8A \x98\x16\x97\x88\x8AR\x83R\x84\x89 T`\xD0\x1C\x93\x84\x87\x11\x15a\t\x17Wa\xFF\xFF\x90\x85\x84\x03\x16\x11a\x08\xF0WP\x90\x7FU\xEB\x90\xD8\x10\xE1p\x0B5\xA8\xE7\xE2S\x95\xFF\x7F+\"Y\xAB\xD7A\\\xA2(M\xFB\x1C$d\x18\xF3\x93\x92\x913\x89R`\x01\x82R\x83\x89 \x87\x8AR\x82R\x83\x89 \x88\x8AR\x82R\x83\x89 \x90y\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83T\x92`\xD0\x1B\x16\x91\x16\x17\x90U\x82Q\x94\x85R\x84\x01R3\x92\xA4\x80\xF3[\x84Q\x7F$\xD3Z&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P4a\x036W\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W\x80` \x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\x8Fa\x14\xA0V[\x16\x81R\x80\x84R\x81\x81 `$5\x82R\x84R T\x90Q\x90\x81R\xF3[P\x824a\x05\xBFW\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFW\x7F7\x04\x90/\x967f\xA4\xE5a\xBB\xAA\xB6\xE6\xCD\xC1\xB1\xDD\x12\xF6\xE9\xE9\x96H\xDA\x88C\xB3\xF4k\x91\x8D\x905\x91`$53\x85R\x84` R\x81\x85 \x84\x86R` R\x81\x85 \x81\x81T\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA2\x80\xF3[\x824a\n\x9AW`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\n\x9AWa\n`a\x14\xA0V[a\nha\x14\xC3V[a\npa\x14\xE6V[`d5\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x83\x03a\x03.Wa\x02\xF6\x93a\x17\xA1V[\x80\xFD[P4a\x036W\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W` \x90a\n\xD7a\x1B\x1EV[\x90Q\x90\x81R\xF3[P\x82\x904a\x05\xBFWa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x0B\x1A6a\x15*V[\x90\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x0BLa\x14xV[\x91`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\xDAWa\x02\xF6\x94a\x0Bo\x916\x91\x01a\x15\xC1V[\x93\x90\x92a\x0B|\x83Qa TV[` \x84\x01Q\x82\x85\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\x93\x9C!\xA4\x8A\x8D\xBE:\x9A$\x04\xA1\xD4f\x91\xE4\xD3\x9Fe\x83\xD6\xECk5qF\x04\xC9\x86\xD8\x01\x06\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x0B\xD1\x81a\x14\x1BV[Q\x90 \x91a\x1C%V[\x85\x80\xFD[P\x914a\x036Wa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x0C\x18a\x14\xA0V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC6\x01`\xC0\x81\x12a\x032W`\x80\x85Q\x91a\x0CQ\x83a\x13\xE3V[\x12a\x032W\x84Q\x90a\x0Cb\x82a\x13\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91`$5\x83\x81\x16\x81\x03a\x04\x9FW\x81R`D5\x83\x81\x16\x81\x03a\x04\x9FW` \x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF`d5\x81\x81\x16\x81\x03a\x03*W\x88\x83\x01R`\x845\x90\x81\x16\x81\x03a\x04\x9FW``\x82\x01R\x81R`\xA45\x93\x82\x85\x16\x85\x03a\x0B\xDAW` \x82\x01\x94\x85R`\xC45\x90\x87\x83\x01\x82\x81R`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x03&Wa\x0C\xFE\x906\x90\x84\x01a\x15\xC1V[\x92\x90\x93\x80B\x11a\r\x88WPP\x91\x85\x91a\rxa\x02\xF6\x99\x9Aa\r~\x95a\r#\x88Qa\x1F\xBEV[\x90\x89\x8CQ\x16\x90Q\x90\x83Q\x92` \x84\x01\x94\x7F\xF3\x84\x1C\xD1\xFF\0\x85\x02jc'\xB6 \xB6y\x97\xCE@\xF2\x82\xC8\x8A\x8E\x90ZzV&\xE3\x10\xF3\xD0\x86R\x84\x01R``\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x90 a\x1B\xD9V[\x91a \xC7V[Q\x92Q\x16\x91a\x19\x9DV[`$\x92P\x8AQ\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[P\x914a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x93\x81\x856\x01\x12a\x032Wa\r\xF3a\x14\xA0V[\x92`$\x90\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x85\x11a\x03*W\x85\x90\x856\x03\x01\x12a\x04\x9FW\x80Q\x97\x85\x89\x01\x89\x81\x10\x82\x82\x11\x17a\x10JW\x82R\x84\x83\x015\x81\x81\x11a\x03&W\x85\x01\x906`#\x83\x01\x12\x15a\x03&W\x83\x82\x015\x91a\x0EP\x83a\x15\xEFV[\x90a\x0E]\x85Q\x92\x83a\x147V[\x83\x82R` \x93\x87\x85\x84\x01\x91`\x07\x1B\x83\x01\x01\x916\x83\x11a\x10FW\x88\x01\x90[\x82\x82\x10a\x0F\xE9WPPP\x8AR`Da\x0E\x93\x86\x88\x01a\x15\tV[\x96\x83\x8C\x01\x97\x88R\x015\x94\x83\x8B\x01\x91\x86\x83R`D5\x90\x81\x11a\x0F\xE5Wa\x0E\xBB\x906\x90\x87\x01a\x15\xC1V[\x95\x90\x96\x80B\x11a\x0F\xBAWPPP\x89\x98\x99QQa\x0E\xD6\x81a\x1E\xBBV[\x90\x8B[\x81\x81\x10a\x0F\x97WPP\x92\x88\x94\x92a\rx\x92a\x0Fd\x97\x95\x83Qa\x0F\x02\x81a\x03\xF9\x86\x82\x01\x80\x95a\x1FfV[Q\x90 \x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x8B\x8BQ\x16\x91Q\x92\x85Q\x94\x85\x01\x95\x7F\xAF\x1B\r0\xD2\xCA\xB08\x0Eh\xF0h\x90\x07\xE3%I\x93\xC5\x96\xF2\xFD\xD0\xAA\xA7\xF4\xD0OyD\x08c\x87R\x85\x01R\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x16\x90\x82QQ\x92\x84[\x84\x81\x10a\x0FxW\x85\x80\xF3[\x80a\x0F\x91\x85\x85a\x0F\x8B`\x01\x95\x87Qa\x17^V[Qa\x19\x9DV[\x01a\x0FmV[\x80a\x03\x11a\x0F\xAC\x8E\x9F\x9E\x93a\x0F\xB2\x94Qa\x17^V[Qa\x1F\xBEV[\x9B\x9A\x9Ba\x0E\xD9V[\x85Q\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[\x8A\x80\xFD[`\x80\x826\x03\x12a\x10FW\x85`\x80\x91\x88Qa\x10\x02\x81a\x13\x98V[a\x10\x0B\x85a\x15\tV[\x81Ra\x10\x18\x83\x86\x01a\x15\tV[\x83\x82\x01Ra\x10'\x8A\x86\x01a\x16\x07V[\x8A\x82\x01R\x8Da\x107\x81\x87\x01a\x16\x07V[\x90\x82\x01R\x81R\x01\x91\x01\x90a\x0EzV[\x8C\x80\xFD[\x84\x89`A\x86\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83RR\xFD[P\x824a\x05\xBFWa\x01@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x10\xB06a\x15*V[\x91\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x10\xE2a\x14xV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90a\x01\x045\x85\x81\x11a\x04\x9FWa\x11\x05\x906\x90\x86\x01a\x15\xC1V[\x90\x93a\x01$5\x96\x87\x11a\x03*Wa\x11%a\x0B\xD1\x96a\x02\xF6\x986\x91\x01a\x15\xC1V[\x96\x90\x95\x82Q\x90a\x114\x82a\x13\xFFV[`d\x82R\x7FPermitWitnessTransferFrom(TokenP` \x83\x01R\x7Fermissions permitted,address spe\x84\x83\x01R\x7Fnder,uint256 nonce,uint256 deadl``\x83\x01R\x7Fine,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x83Q\x94\x85\x91\x81a\x11\xE3` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8B\x81R\x03\x93a\x12\x1C\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x95\x86\x81\x01\x83R\x82a\x147V[Q\x90 \x92a\x12*\x86Qa TV[` \x87\x81\x01Q\x85\x89\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`\xE45`\xC0\x84\x01R\x82`\xE0\x81\x01a\x02\xE1V[P\x824a\x05\xBFW` \x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x0B\xDAW6`#\x83\x01\x12\x15a\x0B\xDAW\x81\x015\x92\x83\x11a\x03.W`$\x90`\x076\x83\x86\x83\x1B\x84\x01\x01\x11a\x04\x9FW\x86[\x85\x81\x10a\x12\xE5W\x87\x80\xF3[\x80\x82\x1B\x83\x01\x90`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\x836\x03\x01\x12a\x03&Wa\x13\x92\x88\x87`\x01\x94``\x83Qa\x13,\x81a\x13\x98V[a\x13h`\x84a\x13<\x8D\x86\x01a\x15\tV[\x94\x85\x84Ra\x13L`D\x82\x01a\x15\tV[\x80\x97\x85\x01Ra\x13]`d\x82\x01a\x15\tV[\x80\x98\x85\x01R\x01a\x15\tV[\x91\x82\x91\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x80\x80\x93\x16\x95\x16\x93\x16\x91\x16a\x17\xA1V[\x01a\x12\xDAV[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC45\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`\0\x80\xFD[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`D5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x01\x90`\x80\x82\x12a\x14\x9BW`@\x80Q\x90a\x15c\x82a\x13\xE3V[\x80\x82\x94\x12a\x14\x9BW\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W\x82R`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x81R`$5` \x82\x01R\x82R`D5` \x83\x01R`d5\x91\x01RV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x83\x81\x86\x01\x95\x01\x01\x11a\x14\x9BWV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x13\xB4W`\x05\x1B` \x01\x90V[5\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x80\x85\x01\x94\x84`\x06\x1B\x01\x01\x11a\x14\x9BWV[\x91\x90\x91``\x81\x84\x03\x12a\x14\x9BW`@\x80Q\x91a\x16f\x83a\x13\xE3V[\x82\x94\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x81\x11a\x14\x9BW\x83\x01\x82`\x1F\x82\x01\x12\x15a\x14\x9BW\x805a\x16\x93\x81a\x15\xEFV[\x92a\x16\xA0\x87Q\x94\x85a\x147V[\x81\x84R` \x94\x85\x80\x86\x01\x93`\x06\x1B\x85\x01\x01\x93\x81\x85\x11a\x14\x9BW\x90\x86\x89\x98\x97\x96\x95\x94\x93\x92\x01\x92[\x84\x84\x10a\x16\xE3WPPPPP\x85R\x80\x82\x015\x90\x85\x01R\x015\x91\x01RV[\x90\x91\x92\x93\x94\x95\x96\x97\x84\x83\x03\x12a\x14\x9BW\x88Q\x90\x89\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17a\x170W\x8A\x92\x89\x92\x84Ra\x17\x14\x87a\x15\tV[\x81R\x82\x87\x015\x83\x82\x01R\x81R\x01\x93\x01\x91\x90\x88\x97\x96\x95\x94\x93a\x16\xC6V[`$`\0\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`A`\x04R\xFD[\x80Q\x82\x10\x15a\x17rW` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x92\x91\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@`\0\x82\x84\x16\x81R`\x01` R\x82\x82\x82 \x96\x16\x95\x86\x82R` R\x81\x81 3\x82R` R \x94\x85T\x95e\xFF\xFF\xFF\xFF\xFF\xFF\x87`\xA0\x1C\x16\x80B\x11a\x18\x84WP\x82\x87\x16\x96\x83\x88\x03a\x18\x12W[PPa\x18\x10\x95P\x16\x92a\x18\xB5V[V[\x87\x84\x84\x16\x11`\0\x14a\x18OW`$\x88`@Q\x90\x7F\xF9o\xB0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x84a\x18\x10\x9A\x03\x16\x91\x16\x17\x90U8\x80a\x18\x02V[`$\x90`@Q\x90\x7F\xD8\x1B/.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90`\0`d\x92` \x95\x82\x95`@Q\x94\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\x04\x86\x01R`$\x85\x01R`D\x84\x01RZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x15a\x19\x0EWV[`d`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R\xFD[\x91\x90\x81\x10\x15a\x17rW`\x06\x1B\x01\x90V[5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x90V[\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81``\x84\x01Q\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x85Q\x16\x94\x82` \x82\x01Q\x16\x92\x80\x86`@\x80\x94\x01Q\x16\x95\x16\x95`\0\x91\x87\x83R`\x01` R\x83\x83 \x89\x84R` R\x83\x83 \x99\x16\x98\x89\x83R` R\x82\x82 \x91\x84\x83T`\xD0\x1C\x03a\x1A\xF5W\x91\x85a\x1A\xCE\x94\x92\x7F\xC6\xA3w\xBF\xC4\xEB\x12\0$\xA8\xAC\x08\xEE\xF2\x05\xBE\x16\xB8\x17\x02\x08\x12\xC72#\xE8\x1D\x1B\xDB\x97\x08\xEC\x98\x97\x96\x94P\x87\x15`\0\x14a\x1A\xD3Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90B\x16[`\xA0\x1B\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01\x86\x01`\xD0\x1B\x16\x17\x17\x90UQ\x93\x84\x93\x84\x91`@\x91\x94\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF``\x85\x01\x96\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x80\x92\x16` \x85\x01R\x16\x91\x01RV[\x03\x90\xA4V[Py\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87a\x1A`V[`\x04\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x1BiW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x82R\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j`@\x82\x01RF``\x82\x01R0`\x80\x82\x01R`\x80\x81Ra\x1B\xD3\x81a\x13\xFFV[Q\x90 \x90V[a\x1B\xE1a\x1B\x1EV[\x90`@Q\x90` \x82\x01\x92\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84R`\"\x83\x01R`B\x82\x01R`B\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x92\x90\x93`\xA45\x93`@\x84\x01Q\x80B\x11a\x1C\xC6WP` \x84Q\x01Q\x80\x86\x11a\x1C\x95WP\x91\x85\x91a\rxa\x1Ce\x94a\x1C`` \x88\x01Q\x86a\x1EGV[a\x1B\xD9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91QQ\x16\x92`\x845\x91\x82\x16\x82\x03a\x14\x9BWa\x18\x10\x93a\x18\xB5V[`$\x90`@Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`$\x90`@Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x95\x90\x93\x95\x80QQ\x95`@\x92\x83\x83\x01Q\x80B\x11a\x1E\x17WP\x84\x88\x03a\x1D\xEEWa\x1D.\x91\x86\x91a\rx` \x9Ba\x1C`\x8D\x88\x01Q\x86a\x1EGV[`\0[\x86\x81\x10a\x1DBWPPPPPPPPV[a\x1DM\x81\x83Qa\x17^V[Q\x88a\x1DZ\x83\x87\x8Aa\x19lV[\x015\x90\x89\x81\x01Q\x80\x83\x11a\x1D\xBEWP\x91\x81\x88\x88\x88`\x01\x96\x85\x96a\x1D\x84W[PPPPPP\x01a\x1D1V[a\x1D\xB3\x95a\x1D\xAD\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x05\x15\x93Q\x16\x95a\x19lV[\x91a\x18\xB5V[\x808\x88\x88\x88\x83a\x1DxV[`$\x90\x86Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`\x04\x84Q\x7F\xFFc:8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`$\x90\x85Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\xFF\x83\x16\x1B\x92\x16`\0R`\0` R`@`\0 \x90`\x08\x1C`\0R` R`@`\0 \x81\x81T\x18\x80\x91U\x16\x15a\x1E\x91WV[`\x04`@Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90a\x1E\xC5\x82a\x15\xEFV[a\x1E\xD2`@Q\x91\x82a\x147V[\x82\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x1F\0\x82\x94a\x15\xEFV[\x01\x90` 6\x91\x017V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x1F7W`\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80Q` \x80\x92\x01\x91`\0[\x82\x81\x10a\x1F\x7FWPPPP\x90V[\x83Q\x85R\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x1FqV[\x90\x81Q\x91`\0[\x83\x81\x10a\x1F\xABWPP\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q\x81\x85\x01R\x01a\x1F\x9AV[`@Q` \x81\x01\x91\x7Febl\xADl\xB9d\x93\xBFo^\xBE\xA2\x87V\xC9f\xF0#\xAB\x9E\x8A\x83\xA7\x10\x18I\xD5W;6x\x83Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`@\x84\x01R` \x82\x01Q\x16``\x83\x01R``e\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82`@\x82\x01Q\x16`\x80\x85\x01R\x01Q\x16`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RQ\x90 \x90V[`@Q` \x80\x82\x01\x92\x7Fa\x83X\xAC=\xB8\xDC'O\x0C\xD8\x82\x9D\xA7\xE24\xBDH\xCDs\xC4\xA7@\xAE\xDE\x1A\xDE\xC9\x84m\x06\xA1\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16`@\x84\x01R\x01Q``\x82\x01R``\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x90\x82`@\x91\x03\x12a\x14\x9BW` \x825\x92\x015\x90V[`\0\x84;a\".WP`A\x82\x03a!\xACWa \xE4\x82\x82\x01\x82a \xB1V[\x93\x90\x92`@\x10\x15a\x17rW` \x93`\0\x93`\xFF`@`\x80\x95\x015`\xF8\x1C[`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a!\xA0Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80`\0Q\x16\x91\x82\x15a!vW\x16\x03a!LWV[`\x04`@Q\x7F\x81^\x1Dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`\x04`@Q\x7F\x8B\xAAW\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`@Q=`\0\x82>=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 \xB8z\xB8~\xF6\x0BA\x9B\x85\xDD\xA0\x0B\x80\xF6\x1A\xA4\xEA]\x83?{*N\x96\x06\xFB\x88\x90\x19\xB4\xDB\x8EdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static DEPLOYDUTCH_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x91W[_\x80\xFD[\0[a\0Ma\0\xB4V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x88V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x017W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01IW=_\x80>=_\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;_\x03\x90Pa\x01oWa\x01ma\x03\x86V[P[_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xA4\x90a\x05\x0CV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x01\xE5W=_\x80>=_\xFD[P\x90Pa\x02'`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[_\x80_\x1B`@Qa\x027\x90a\x05\x19V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02TW=_\x80>=_\xFD[P\x90Pa\x02\x96`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\xFDW_\x80\xFD[PZ\xF1\x15\x80\x15a\x03\x0FW=_\x80>=_\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[_\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aCha#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04\x08\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\x87V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x1FW_\x80\xFD[PZ\xF1\x15\x80\x15a\x041W=_\x80>=_\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xDC\x82\x82`@Q`$\x01a\x04a\x92\x91\x90a\x05\xBDV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04\xE0V[PPV[a\x04\xE9\x81a\x04\xECV[PV[\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[a/\xB0\x80a\x05\xF5\x839\x01\x90V[a\r\xC3\x80a5\xA5\x839\x01\x90V[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x05JW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05.V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x05\xB5`@\x83\x01\x84a\x05&V[\x94\x93PPPPV[`@\x81R_a\x05\xCF`@\x83\x01\x85a\x05&V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0/\xB08\x03\x80b\0/\xB0\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa.\x9Fb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x17\x97\x01Ra.\x9F_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a!2V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a!\xD7V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a\"\x16V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a\"\x9EV[a\x06eV[a\0\xB4a\x01e6`\x04a\"\xC0V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a\"\x9EV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a#\x1FV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0BlV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a%\xDDV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\x1DV[a\x04\x9F\x81a\x0BlV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0BlV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga#\x1FV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\x1DV[a\x08d\x81a\x0BlV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a&\x19V[\x81\x01\x90a\nW\x91\x90a(\xFBV[\x90Pa\nb\x81a\x0C\xB7V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xA1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0Eo\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a&\x19V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FTV[\x90R\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0B=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\x90\x91\x90\x81\x01\x90a*{V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x12\xA7\x82\x84a+qV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xBFWa\x12\xBFa\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x12\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x13wW\x85`@\x01Q\x81\x81Q\x81\x10a\x13JWa\x13Ja#\x1FV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13dWa\x13da#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13,V[P_\x80_[\x84\x81\x10\x15a\x16\x87W_\x87\x82\x81Q\x81\x10a\x13\x97Wa\x13\x97a#\x1FV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14RW\x88\x81\x81Q\x81\x10a\x13\xBDWa\x13\xBDa#\x1FV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x13\xA3V[P_\x80[\x88\x81\x10\x15a\x15\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x14uWa\x14ua#\x1FV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x06W\x85\x15a\x14\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x14\xFF\x90\x84a+qV[\x92P`\x01\x96P[P`\x01\x01a\x14VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\x88W\x84\x15a\x15oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\x81\x90\x82a+qV[\x90P`\x01\x93P[\x80_\x03a\x15\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x15\xEA\x81`\x05a'\x10a\x1EXV[\x82` \x01Q\x11\x15a\x16]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16rWa\x16ra#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x16\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17e\x90\x84\x90\x86\x90`\x04\x01a+\x84V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17{W_\x80\xFD[PZ\xFA\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18T\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18^\x85\x85a\x1E\x92V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xA8\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a-]` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919`@Q` \x01a\x1A\x15\x93\x92\x91\x90a*'V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a-\xAF` \x83\x019`@Q` \x01a\x1Ah\x92\x91\x90a+\xB2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1A\xD5\x96\x95\x94\x93\x92`\x04\x01a,\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\xECW_\x80\xFD[PZ\xF1\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B#Wa\x03L\x82\x82a\x1BEV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1E\xD8V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1B\x9BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xA0V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1B\xEAWP\x83a\x1COV[\x82\x82\x11a\x1C#W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C1WP\x82a\x1COV[B\x83\x10a\x1C?WP\x83a\x1COV[a\x1CL\x83\x83B\x88\x88a\x1F\xC6V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1C\xB5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1C\xCA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1B\xDBV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\x9E\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1D\xDCWa\x1D\xDCa\"\xF2V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1EIW_a\x1E7\x85\x83\x81Q\x81\x10a\x1E*Wa\x1E*a#\x1FV[` \x02` \x01\x01Qa\x1F\xE0V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x0BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\x8BW_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F\xBFW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_a\x1F\xD4\x86\x86\x86\x86\x86a VV[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a-]`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\x9E\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x84\x84\x10a eWP\x80a\x1F\xD7V[_a p\x87\x86a,\xC6V[\x90P_a }\x88\x88a,\xC6V[\x90P_\x85\x85\x12\x15a \xAEWa \x9E\x83\x83a \x97\x88\x8Aa,\xD9V[\x91\x90a\x1EXV[a \xA7\x90a,\xFFV[\x90Pa \xC0V[a \xBD\x83\x83a \x97\x89\x89a,\xD9V[\x90P[a \xCA\x81\x87a-5V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a \xE7W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a \xFDW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x14W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!+W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a!DW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a![W_\x80\xFD[a!g\x87\x83\x88\x01a \xD7V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!|W_\x80\xFD[Pa!\x89\x86\x82\x87\x01a \xEDV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a!\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!+W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a!\xE8W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xFEW_\x80\xFD[a\"\n\x85\x82\x86\x01a!\x96V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\")W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"@W_\x80\xFD[a\"L\x88\x83\x89\x01a!\x96V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"dW_\x80\xFD[Pa\"q\x87\x82\x88\x01a \xEDV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[_` \x82\x84\x03\x12\x15a\"\xAEW_\x80\xFD[\x815a\"\xB9\x81a\"}V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\"\xD0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xE6W_\x80\xFD[a\x1CO\x84\x82\x85\x01a \xD7V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a#fW\x81\x81\x01Q\x83\x82\x01R` \x01a#NV[PP_\x91\x01RV[_\x81Q\x80\x84Ra#\x85\x81` \x86\x01` \x86\x01a#LV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a$\x15W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a#\xCAV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra$\x93a\x01\xA0\x85\x01\x82a#nV[\x90P` \x83\x01Qa$\xD1` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra$\xE9\x82\x82a#\xB7V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x03\x82\x82a#nV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a%\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra%{\x86\x83Qa$ V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\x0FW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&LW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a&fW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!+W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'SWa'Sa\"\xF2V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a'jW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'\x84Wa'\x84a\"\xF2V[a'\xB5` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\x0CV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a'\xC9W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a'\xF5W_\x80\xFD[a'\xFDa&zV[\x90P\x815a(\n\x81a\"}V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(AWa(Aa\"\xF2V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a(ZW_\x80\xFD[\x815` a(oa(j\x83a((V[a'\x0CV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a(\x8DW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a(\xF0W`\x80\x81\x89\x03\x12\x15a(\xA8W_\x80\xFD[a(\xB0a&\xA3V[\x815a(\xBB\x81a\"}V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a(\xDE\x81a\"}V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a(\x91V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a)\x0BW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\"W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)5W_\x80\xFD[a)=a&\xC6V[\x825\x82\x81\x11\x15a)KW_\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a)\\W_\x80\xFD[a)da&\xE9V[\x815a)o\x81a\"}V[\x81R` \x82\x015a)\x7F\x81a\"}V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a)\xA8\x81a\"}V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a)\xBEW_\x80\xFD[a)\xCA\x89\x82\x85\x01a'[V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra)\xF6\x86``\x85\x01a'\xE5V[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\x0CW_\x80\xFD[a*\x18\x87\x82\x86\x01a(KV[`\x80\x83\x01RP\x95\x94PPPPPV[_\x84Qa*8\x81\x84` \x89\x01a#LV[\x84Q\x90\x83\x01\x90a*L\x81\x83` \x89\x01a#LV[\x84Q\x91\x01\x90a*_\x81\x83` \x88\x01a#LV[\x01\x95\x94PPPPPV[` \x81R_a\"\xB9` \x83\x01\x84a$ V[_` \x80\x83\x85\x03\x12\x15a*\x8CW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xA2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a*\xB2W_\x80\xFD[\x80Qa*\xC0a(j\x82a((V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a*\xDEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+8W\x80\x85\x8A\x03\x12\x15a*\xF9W_\x80\xFD[a+\x01a&zV[\x85Qa+\x0C\x81a\"}V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+%\x81a\"}V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a*\xE3V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1CO`@\x83\x01\x84a$ V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x83Qa+\xE9\x81`\x13\x85\x01` \x88\x01a#LV[\x83Q\x90\x83\x01\x90a,\0\x81`\x13\x84\x01` \x88\x01a#LV[\x01`\x13\x01\x94\x93PPPPV[_a\x01@a,;\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra,|`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra,\xB1\x81\x84\x01\x86a#nV[\x90P\x82\x81\x03a\x01 \x84\x01Ra \xCA\x81\x85a#nV[\x81\x81\x03\x81\x81\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a,\xF8Wa,\xF8a+DV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-/Wa-/a+DV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a-TWa-Ta+DV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xE1\xD9wc\xD5v\xC1\x86L\"\xE3$b\x10\x08\xA6\xD9\xD7E-\xF0\xF4\x85\xBE3z\xFE\x84\x01\xBB0\x89dsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\r\xA6\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cA\xD8\x8Di\x14a\0CW\x80cX]\xA6(\x14a\0lW\x80cvq\xD0{\x14a\0\x81W[_\x80\xFD[a\0Va\0Q6`\x04a\x04\xA8V[a\0\xC2V[`@Qa\0c\x91\x90a\x05\xDCV[`@Q\x80\x91\x03\x90\xF3[a\0\x7Fa\0z6`\x04a\x08\xC4V[a\x02\x18V[\0[a\0\x9Da\0\x8F6`\x04a\n*V[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R_\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAA\x92\x91`\x04\x01a\ndV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC1W_\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xD2WP`\x01[a\x02\x12W=\x80\x80\x15a\x01\xFFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xFE\xB5\x9B\x92\xB026\x10F\xE1\x83\xA9\x95\xBD\xE7X(\x86\xEC\x94\x98\x99\x0F{vt\xB9\xC2\x17\xF8\xB1kdsolcC\0\x08\x18\x003`@`\x80\x81R`\x04\x90\x816\x10\x15a\0\x15W`\0\x80\xFD[`\0\x90\x815`\xE0\x1C\x80c\rX\xB1\xDB\x14a\x12lW\x80c\x13|)\xFE\x14a\x10uW\x80c*-\x80\xD1\x14a\r\xB7W\x80c+g\xB5p\x14a\x0B\xDEW\x80c0\xF2\x8Bz\x14a\n\xDEW\x80c6D\xE5\x15\x14a\n\x9DW\x80c6\xC7\x85\x16\x14a\n(W\x80c?\xF9\xDC\xB1\x14a\t\xA8W\x80cO\xE0+D\x14a\t?W\x80ce\xD9r<\x14a\x07\xACW\x80c\x87Q|E\x14a\x06zW\x80c\x92}\xA1\x05\x14a\x05\xC3W\x80c\xCCS(\x7F\x14a\x04\xA3W\x80c\xED\xD9DK\x14a\x03:Wc\xFE\x8E\xC1\xA7\x14a\0\xC6W`\0\x80\xFD[4a\x036W`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x835\x81\x81\x11a\x032Wa\x01\x14\x906\x90\x86\x01a\x16KV[`$5\x82\x81\x11a\x03.Wa\x01+\x906\x90\x87\x01a\x16\x1AV[a\x013a\x14\xE6V[\x91`\x845\x85\x81\x11a\x03*Wa\x01K\x906\x90\x8A\x01a\x15\xC1V[\x98\x90\x95`\xA45\x90\x81\x11a\x03&Wa\x01d\x916\x91\x01a\x15\xC1V[\x96\x90\x95\x81Q\x90a\x01s\x82a\x13\xFFV[`k\x82R\x7FPermitBatchWitnessTransferFrom(T` \x83\x01R\x7FokenPermissions[] permitted,addr\x83\x83\x01R\x7Fess spender,uint256 nonce,uint25``\x83\x01R\x7F6 deadline,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x82Q\x9A\x8B\x91\x81a\x02\"` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8A\x81R\x03\x99a\x02[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x9B\x8C\x81\x01\x83R\x82a\x147V[Q\x90 \x90\x85QQa\x02k\x81a\x1E\xBBV[\x90\x8A[\x81\x81\x10a\x02\xF9WPPa\x02\xF6\x99\x9Aa\x02\xED\x91\x83Qa\x02\xA0\x81a\x02\x94` \x82\x01\x80\x95a\x1FfV[\x03\x84\x81\x01\x83R\x82a\x147V[Q\x90 ` \x89\x81\x01Q\x85\x8B\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`d5`\xC0\x84\x01R\x82`\xE0\x81\x01[\x03\x90\x81\x01\x83R\x82a\x147V[Q\x90 \x93a\x1C\xF7V[\x80\xF3[\x80a\x03\x11a\x03\x0Ba\x03!\x93\x8CQa\x17^V[Qa TV[a\x03\x1B\x82\x86a\x17^V[Ra\x1F\nV[a\x02nV[\x88\x80\xFD[\x87\x80\xFD[\x84\x80\xFD[\x83\x80\xFD[P\x80\xFD[P\x914a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x805\x82\x81\x11a\x032Wa\x03\x8B\x906\x90\x83\x01a\x16KV[`$5\x83\x81\x11a\x03.Wa\x03\xA2\x906\x90\x84\x01a\x16\x1AV[\x93\x90\x92a\x03\xADa\x14\xE6V[\x91`d5\x90\x81\x11a\x04\x9FWa\x03\xC4\x916\x91\x01a\x15\xC1V[\x94\x90\x93\x83QQ\x97a\x03\xD4\x89a\x1E\xBBV[\x98\x88[\x81\x81\x10a\x04}WPPa\x02\xF6\x97\x98\x81Qa\x04%\x81a\x03\xF9` \x82\x01\x80\x95a\x1FfV[\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x01\x83R\x82a\x147V[Q\x90 ` \x86\x01Q\x82\x87\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\xFC\xF3_Z\xC6\xA2\xC2\x88h\xDCD\xC3\x02\x16dp&b9\x19_\x02\xB0\xEE@\x834\x82\x933\xB7f\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x02\xED\x81a\x14\x1BV[\x80\x8Ba\x03\x1B\x82a\x04\x94a\x03\x0Ba\x04\x9A\x96\x8DQa\x17^V[\x92a\x17^V[a\x03\xD7V[\x86\x80\xFD[P\x824a\x05\xBFW` \x90\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x03.Wa\x04\xF4\x916\x91\x01a\x16\x1AV[\x92\x90\x91\x84[\x84\x81\x10a\x05\x04W\x85\x80\xF3[\x80a\x05\x1Aa\x05\x15`\x01\x93\x88\x88a\x19lV[a\x19|V[a\x05/\x84a\x05)\x84\x8A\x8Aa\x19lV[\x01a\x19|V[3\x89R\x83\x85R\x85\x89 \x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x92\x83\x8BR\x86R\x86\x8A \x91\x16\x90\x81\x8AR\x85R\x85\x89 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81T\x16\x90U\x85Q\x91\x82R\x84\x82\x01R\x7F\x89\xB1\xAD\xD1^\xFFV\xB3\xDF\xE2\x99\xAD\x94\xE0\x1F+R\xFB\xCB\x80\xAE\x1A;\xAE\xA6\xAE\x8C\x04\xCB+\x98\xA4\x853\x92\xA2\x01a\x04\xF9V[\x82\x80\xFD[P4a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06v\x81a\x05\xFFa\x14\xA0V[\x93a\x06\x08a\x14\xC3V[a\x06\x10a\x14\xE6V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16\x83R`\x01` \x90\x81R\x84\x84 \x92\x88\x16\x84R\x91\x82R\x83\x83 \x90\x87\x16\x83R\x81R\x91\x90 T\x92Q\x93\x83\x16\x84R`\xA0\x83\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x84\x01R`\xD0\x91\x90\x91\x1C`@\x83\x01R\x81\x90``\x82\x01\x90V[\x03\x90\xF3[P4a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06\xB2a\x14\xA0V[\x90a\x06\xBBa\x14\xC3V[\x91a\x06\xC4a\x14\xE6V[e\xFF\xFF\xFF\xFF\xFF\xFF\x92`d5\x84\x81\x16\x90\x81\x81\x03a\x03*Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x7F\xDA\x9F\xA7\xC1\xB0\x04\x02\xC1}\x01a\xB2I\xB1\xAB\x8B\xBE\xC0G\xC5\xA5\"\x07\xB9\xC1\x12\xDE\xFF\xD8\x17\x03k\x943\x8AR`\x01` R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x8B \x98s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x94\x16\x99\x8A\x8DR` R\x83\x87\x8D \x9B\x16\x9A\x8B\x8DR` R\x86\x8C \x94\x86\x15`\0\x14a\x07\xA4WPB\x16\x92[\x84T\x92\x16\x97\x88\x93`\xA0\x1B\x16\x91\x16\x17\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA4\x80\xF3[\x90P\x92a\x07\x83V[P\x824a\x05\xBFW``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x07\xE5a\x14\xA0V[\x90a\x07\xEEa\x14\xC3V[\x92e\xFF\xFF\xFF\xFF\xFF\xFF`D5\x81\x81\x16\x93\x90\x84\x81\x03a\x03*W3\x88R` \x91`\x01\x83R\x84\x89 \x96s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x97\x88\x8BR\x84R\x85\x8A \x98\x16\x97\x88\x8AR\x83R\x84\x89 T`\xD0\x1C\x93\x84\x87\x11\x15a\t\x17Wa\xFF\xFF\x90\x85\x84\x03\x16\x11a\x08\xF0WP\x90\x7FU\xEB\x90\xD8\x10\xE1p\x0B5\xA8\xE7\xE2S\x95\xFF\x7F+\"Y\xAB\xD7A\\\xA2(M\xFB\x1C$d\x18\xF3\x93\x92\x913\x89R`\x01\x82R\x83\x89 \x87\x8AR\x82R\x83\x89 \x88\x8AR\x82R\x83\x89 \x90y\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83T\x92`\xD0\x1B\x16\x91\x16\x17\x90U\x82Q\x94\x85R\x84\x01R3\x92\xA4\x80\xF3[\x84Q\x7F$\xD3Z&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P4a\x036W\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W\x80` \x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\x8Fa\x14\xA0V[\x16\x81R\x80\x84R\x81\x81 `$5\x82R\x84R T\x90Q\x90\x81R\xF3[P\x824a\x05\xBFW\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFW\x7F7\x04\x90/\x967f\xA4\xE5a\xBB\xAA\xB6\xE6\xCD\xC1\xB1\xDD\x12\xF6\xE9\xE9\x96H\xDA\x88C\xB3\xF4k\x91\x8D\x905\x91`$53\x85R\x84` R\x81\x85 \x84\x86R` R\x81\x85 \x81\x81T\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA2\x80\xF3[\x824a\n\x9AW`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\n\x9AWa\n`a\x14\xA0V[a\nha\x14\xC3V[a\npa\x14\xE6V[`d5\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x83\x03a\x03.Wa\x02\xF6\x93a\x17\xA1V[\x80\xFD[P4a\x036W\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W` \x90a\n\xD7a\x1B\x1EV[\x90Q\x90\x81R\xF3[P\x82\x904a\x05\xBFWa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x0B\x1A6a\x15*V[\x90\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x0BLa\x14xV[\x91`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\xDAWa\x02\xF6\x94a\x0Bo\x916\x91\x01a\x15\xC1V[\x93\x90\x92a\x0B|\x83Qa TV[` \x84\x01Q\x82\x85\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\x93\x9C!\xA4\x8A\x8D\xBE:\x9A$\x04\xA1\xD4f\x91\xE4\xD3\x9Fe\x83\xD6\xECk5qF\x04\xC9\x86\xD8\x01\x06\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x0B\xD1\x81a\x14\x1BV[Q\x90 \x91a\x1C%V[\x85\x80\xFD[P\x914a\x036Wa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x0C\x18a\x14\xA0V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC6\x01`\xC0\x81\x12a\x032W`\x80\x85Q\x91a\x0CQ\x83a\x13\xE3V[\x12a\x032W\x84Q\x90a\x0Cb\x82a\x13\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91`$5\x83\x81\x16\x81\x03a\x04\x9FW\x81R`D5\x83\x81\x16\x81\x03a\x04\x9FW` \x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF`d5\x81\x81\x16\x81\x03a\x03*W\x88\x83\x01R`\x845\x90\x81\x16\x81\x03a\x04\x9FW``\x82\x01R\x81R`\xA45\x93\x82\x85\x16\x85\x03a\x0B\xDAW` \x82\x01\x94\x85R`\xC45\x90\x87\x83\x01\x82\x81R`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x03&Wa\x0C\xFE\x906\x90\x84\x01a\x15\xC1V[\x92\x90\x93\x80B\x11a\r\x88WPP\x91\x85\x91a\rxa\x02\xF6\x99\x9Aa\r~\x95a\r#\x88Qa\x1F\xBEV[\x90\x89\x8CQ\x16\x90Q\x90\x83Q\x92` \x84\x01\x94\x7F\xF3\x84\x1C\xD1\xFF\0\x85\x02jc'\xB6 \xB6y\x97\xCE@\xF2\x82\xC8\x8A\x8E\x90ZzV&\xE3\x10\xF3\xD0\x86R\x84\x01R``\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x90 a\x1B\xD9V[\x91a \xC7V[Q\x92Q\x16\x91a\x19\x9DV[`$\x92P\x8AQ\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[P\x914a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x93\x81\x856\x01\x12a\x032Wa\r\xF3a\x14\xA0V[\x92`$\x90\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x85\x11a\x03*W\x85\x90\x856\x03\x01\x12a\x04\x9FW\x80Q\x97\x85\x89\x01\x89\x81\x10\x82\x82\x11\x17a\x10JW\x82R\x84\x83\x015\x81\x81\x11a\x03&W\x85\x01\x906`#\x83\x01\x12\x15a\x03&W\x83\x82\x015\x91a\x0EP\x83a\x15\xEFV[\x90a\x0E]\x85Q\x92\x83a\x147V[\x83\x82R` \x93\x87\x85\x84\x01\x91`\x07\x1B\x83\x01\x01\x916\x83\x11a\x10FW\x88\x01\x90[\x82\x82\x10a\x0F\xE9WPPP\x8AR`Da\x0E\x93\x86\x88\x01a\x15\tV[\x96\x83\x8C\x01\x97\x88R\x015\x94\x83\x8B\x01\x91\x86\x83R`D5\x90\x81\x11a\x0F\xE5Wa\x0E\xBB\x906\x90\x87\x01a\x15\xC1V[\x95\x90\x96\x80B\x11a\x0F\xBAWPPP\x89\x98\x99QQa\x0E\xD6\x81a\x1E\xBBV[\x90\x8B[\x81\x81\x10a\x0F\x97WPP\x92\x88\x94\x92a\rx\x92a\x0Fd\x97\x95\x83Qa\x0F\x02\x81a\x03\xF9\x86\x82\x01\x80\x95a\x1FfV[Q\x90 \x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x8B\x8BQ\x16\x91Q\x92\x85Q\x94\x85\x01\x95\x7F\xAF\x1B\r0\xD2\xCA\xB08\x0Eh\xF0h\x90\x07\xE3%I\x93\xC5\x96\xF2\xFD\xD0\xAA\xA7\xF4\xD0OyD\x08c\x87R\x85\x01R\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x16\x90\x82QQ\x92\x84[\x84\x81\x10a\x0FxW\x85\x80\xF3[\x80a\x0F\x91\x85\x85a\x0F\x8B`\x01\x95\x87Qa\x17^V[Qa\x19\x9DV[\x01a\x0FmV[\x80a\x03\x11a\x0F\xAC\x8E\x9F\x9E\x93a\x0F\xB2\x94Qa\x17^V[Qa\x1F\xBEV[\x9B\x9A\x9Ba\x0E\xD9V[\x85Q\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[\x8A\x80\xFD[`\x80\x826\x03\x12a\x10FW\x85`\x80\x91\x88Qa\x10\x02\x81a\x13\x98V[a\x10\x0B\x85a\x15\tV[\x81Ra\x10\x18\x83\x86\x01a\x15\tV[\x83\x82\x01Ra\x10'\x8A\x86\x01a\x16\x07V[\x8A\x82\x01R\x8Da\x107\x81\x87\x01a\x16\x07V[\x90\x82\x01R\x81R\x01\x91\x01\x90a\x0EzV[\x8C\x80\xFD[\x84\x89`A\x86\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83RR\xFD[P\x824a\x05\xBFWa\x01@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x10\xB06a\x15*V[\x91\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x10\xE2a\x14xV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90a\x01\x045\x85\x81\x11a\x04\x9FWa\x11\x05\x906\x90\x86\x01a\x15\xC1V[\x90\x93a\x01$5\x96\x87\x11a\x03*Wa\x11%a\x0B\xD1\x96a\x02\xF6\x986\x91\x01a\x15\xC1V[\x96\x90\x95\x82Q\x90a\x114\x82a\x13\xFFV[`d\x82R\x7FPermitWitnessTransferFrom(TokenP` \x83\x01R\x7Fermissions permitted,address spe\x84\x83\x01R\x7Fnder,uint256 nonce,uint256 deadl``\x83\x01R\x7Fine,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x83Q\x94\x85\x91\x81a\x11\xE3` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8B\x81R\x03\x93a\x12\x1C\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x95\x86\x81\x01\x83R\x82a\x147V[Q\x90 \x92a\x12*\x86Qa TV[` \x87\x81\x01Q\x85\x89\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`\xE45`\xC0\x84\x01R\x82`\xE0\x81\x01a\x02\xE1V[P\x824a\x05\xBFW` \x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x0B\xDAW6`#\x83\x01\x12\x15a\x0B\xDAW\x81\x015\x92\x83\x11a\x03.W`$\x90`\x076\x83\x86\x83\x1B\x84\x01\x01\x11a\x04\x9FW\x86[\x85\x81\x10a\x12\xE5W\x87\x80\xF3[\x80\x82\x1B\x83\x01\x90`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\x836\x03\x01\x12a\x03&Wa\x13\x92\x88\x87`\x01\x94``\x83Qa\x13,\x81a\x13\x98V[a\x13h`\x84a\x13<\x8D\x86\x01a\x15\tV[\x94\x85\x84Ra\x13L`D\x82\x01a\x15\tV[\x80\x97\x85\x01Ra\x13]`d\x82\x01a\x15\tV[\x80\x98\x85\x01R\x01a\x15\tV[\x91\x82\x91\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x80\x80\x93\x16\x95\x16\x93\x16\x91\x16a\x17\xA1V[\x01a\x12\xDAV[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC45\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`\0\x80\xFD[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`D5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x01\x90`\x80\x82\x12a\x14\x9BW`@\x80Q\x90a\x15c\x82a\x13\xE3V[\x80\x82\x94\x12a\x14\x9BW\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W\x82R`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x81R`$5` \x82\x01R\x82R`D5` \x83\x01R`d5\x91\x01RV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x83\x81\x86\x01\x95\x01\x01\x11a\x14\x9BWV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x13\xB4W`\x05\x1B` \x01\x90V[5\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x80\x85\x01\x94\x84`\x06\x1B\x01\x01\x11a\x14\x9BWV[\x91\x90\x91``\x81\x84\x03\x12a\x14\x9BW`@\x80Q\x91a\x16f\x83a\x13\xE3V[\x82\x94\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x81\x11a\x14\x9BW\x83\x01\x82`\x1F\x82\x01\x12\x15a\x14\x9BW\x805a\x16\x93\x81a\x15\xEFV[\x92a\x16\xA0\x87Q\x94\x85a\x147V[\x81\x84R` \x94\x85\x80\x86\x01\x93`\x06\x1B\x85\x01\x01\x93\x81\x85\x11a\x14\x9BW\x90\x86\x89\x98\x97\x96\x95\x94\x93\x92\x01\x92[\x84\x84\x10a\x16\xE3WPPPPP\x85R\x80\x82\x015\x90\x85\x01R\x015\x91\x01RV[\x90\x91\x92\x93\x94\x95\x96\x97\x84\x83\x03\x12a\x14\x9BW\x88Q\x90\x89\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17a\x170W\x8A\x92\x89\x92\x84Ra\x17\x14\x87a\x15\tV[\x81R\x82\x87\x015\x83\x82\x01R\x81R\x01\x93\x01\x91\x90\x88\x97\x96\x95\x94\x93a\x16\xC6V[`$`\0\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`A`\x04R\xFD[\x80Q\x82\x10\x15a\x17rW` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x92\x91\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@`\0\x82\x84\x16\x81R`\x01` R\x82\x82\x82 \x96\x16\x95\x86\x82R` R\x81\x81 3\x82R` R \x94\x85T\x95e\xFF\xFF\xFF\xFF\xFF\xFF\x87`\xA0\x1C\x16\x80B\x11a\x18\x84WP\x82\x87\x16\x96\x83\x88\x03a\x18\x12W[PPa\x18\x10\x95P\x16\x92a\x18\xB5V[V[\x87\x84\x84\x16\x11`\0\x14a\x18OW`$\x88`@Q\x90\x7F\xF9o\xB0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x84a\x18\x10\x9A\x03\x16\x91\x16\x17\x90U8\x80a\x18\x02V[`$\x90`@Q\x90\x7F\xD8\x1B/.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90`\0`d\x92` \x95\x82\x95`@Q\x94\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\x04\x86\x01R`$\x85\x01R`D\x84\x01RZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x15a\x19\x0EWV[`d`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R\xFD[\x91\x90\x81\x10\x15a\x17rW`\x06\x1B\x01\x90V[5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x90V[\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81``\x84\x01Q\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x85Q\x16\x94\x82` \x82\x01Q\x16\x92\x80\x86`@\x80\x94\x01Q\x16\x95\x16\x95`\0\x91\x87\x83R`\x01` R\x83\x83 \x89\x84R` R\x83\x83 \x99\x16\x98\x89\x83R` R\x82\x82 \x91\x84\x83T`\xD0\x1C\x03a\x1A\xF5W\x91\x85a\x1A\xCE\x94\x92\x7F\xC6\xA3w\xBF\xC4\xEB\x12\0$\xA8\xAC\x08\xEE\xF2\x05\xBE\x16\xB8\x17\x02\x08\x12\xC72#\xE8\x1D\x1B\xDB\x97\x08\xEC\x98\x97\x96\x94P\x87\x15`\0\x14a\x1A\xD3Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90B\x16[`\xA0\x1B\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01\x86\x01`\xD0\x1B\x16\x17\x17\x90UQ\x93\x84\x93\x84\x91`@\x91\x94\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF``\x85\x01\x96\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x80\x92\x16` \x85\x01R\x16\x91\x01RV[\x03\x90\xA4V[Py\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87a\x1A`V[`\x04\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x1BiW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x82R\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j`@\x82\x01RF``\x82\x01R0`\x80\x82\x01R`\x80\x81Ra\x1B\xD3\x81a\x13\xFFV[Q\x90 \x90V[a\x1B\xE1a\x1B\x1EV[\x90`@Q\x90` \x82\x01\x92\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84R`\"\x83\x01R`B\x82\x01R`B\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x92\x90\x93`\xA45\x93`@\x84\x01Q\x80B\x11a\x1C\xC6WP` \x84Q\x01Q\x80\x86\x11a\x1C\x95WP\x91\x85\x91a\rxa\x1Ce\x94a\x1C`` \x88\x01Q\x86a\x1EGV[a\x1B\xD9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91QQ\x16\x92`\x845\x91\x82\x16\x82\x03a\x14\x9BWa\x18\x10\x93a\x18\xB5V[`$\x90`@Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`$\x90`@Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x95\x90\x93\x95\x80QQ\x95`@\x92\x83\x83\x01Q\x80B\x11a\x1E\x17WP\x84\x88\x03a\x1D\xEEWa\x1D.\x91\x86\x91a\rx` \x9Ba\x1C`\x8D\x88\x01Q\x86a\x1EGV[`\0[\x86\x81\x10a\x1DBWPPPPPPPPV[a\x1DM\x81\x83Qa\x17^V[Q\x88a\x1DZ\x83\x87\x8Aa\x19lV[\x015\x90\x89\x81\x01Q\x80\x83\x11a\x1D\xBEWP\x91\x81\x88\x88\x88`\x01\x96\x85\x96a\x1D\x84W[PPPPPP\x01a\x1D1V[a\x1D\xB3\x95a\x1D\xAD\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x05\x15\x93Q\x16\x95a\x19lV[\x91a\x18\xB5V[\x808\x88\x88\x88\x83a\x1DxV[`$\x90\x86Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`\x04\x84Q\x7F\xFFc:8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`$\x90\x85Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\xFF\x83\x16\x1B\x92\x16`\0R`\0` R`@`\0 \x90`\x08\x1C`\0R` R`@`\0 \x81\x81T\x18\x80\x91U\x16\x15a\x1E\x91WV[`\x04`@Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90a\x1E\xC5\x82a\x15\xEFV[a\x1E\xD2`@Q\x91\x82a\x147V[\x82\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x1F\0\x82\x94a\x15\xEFV[\x01\x90` 6\x91\x017V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x1F7W`\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80Q` \x80\x92\x01\x91`\0[\x82\x81\x10a\x1F\x7FWPPPP\x90V[\x83Q\x85R\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x1FqV[\x90\x81Q\x91`\0[\x83\x81\x10a\x1F\xABWPP\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q\x81\x85\x01R\x01a\x1F\x9AV[`@Q` \x81\x01\x91\x7Febl\xADl\xB9d\x93\xBFo^\xBE\xA2\x87V\xC9f\xF0#\xAB\x9E\x8A\x83\xA7\x10\x18I\xD5W;6x\x83Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`@\x84\x01R` \x82\x01Q\x16``\x83\x01R``e\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82`@\x82\x01Q\x16`\x80\x85\x01R\x01Q\x16`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RQ\x90 \x90V[`@Q` \x80\x82\x01\x92\x7Fa\x83X\xAC=\xB8\xDC'O\x0C\xD8\x82\x9D\xA7\xE24\xBDH\xCDs\xC4\xA7@\xAE\xDE\x1A\xDE\xC9\x84m\x06\xA1\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16`@\x84\x01R\x01Q``\x82\x01R``\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x90\x82`@\x91\x03\x12a\x14\x9BW` \x825\x92\x015\x90V[`\0\x84;a\".WP`A\x82\x03a!\xACWa \xE4\x82\x82\x01\x82a \xB1V[\x93\x90\x92`@\x10\x15a\x17rW` \x93`\0\x93`\xFF`@`\x80\x95\x015`\xF8\x1C[`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a!\xA0Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80`\0Q\x16\x91\x82\x15a!vW\x16\x03a!LWV[`\x04`@Q\x7F\x81^\x1Dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`\x04`@Q\x7F\x8B\xAAW\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`@Q=`\0\x82>=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 \xB8z\xB8~\xF6\x0BA\x9B\x85\xDD\xA0\x0B\x80\xF6\x1A\xA4\xEA]\x83?{*N\x96\x06\xFB\x88\x90\x19\xB4\xDB\x8EdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static DEPLOYDUTCH_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct DeployDutch(::ethers::contract::Contract); - impl ::core::clone::Clone for DeployDutch { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for DeployDutch { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for DeployDutch { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for DeployDutch { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(DeployDutch)) - .field(&self.address()) - .finish() - } - } - impl DeployDutch { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - DEPLOYDUTCH_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - DEPLOYDUTCH_ABI.clone(), - DEPLOYDUTCH_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `IS_SCRIPT` (0xf8ccbf47) function - pub fn is_script(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([248, 204, 191, 71], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `run` (0xc0406226) function - pub fn run( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([192, 64, 98, 38], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setUp` (0x0a9254e4) function - pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([10, 146, 84, 228], ()) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for DeployDutch { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "IS_SCRIPT", abi = "IS_SCRIPT()")] - pub struct IsScriptCall; - ///Container type for all input parameters for the `run` function with signature `run()` and selector `0xc0406226` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "run", abi = "run()")] - pub struct RunCall; - ///Container type for all input parameters for the `setUp` function with signature `setUp()` and selector `0x0a9254e4` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setUp", abi = "setUp()")] - pub struct SetUpCall; - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum DeployDutchCalls { - IsScript(IsScriptCall), - Run(RunCall), - SetUp(SetUpCall), - } - impl ::ethers::core::abi::AbiDecode for DeployDutchCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IsScript(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Run(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetUp(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for DeployDutchCalls { - fn encode(self) -> Vec { - match self { - Self::IsScript(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Run(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for DeployDutchCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::IsScript(element) => ::core::fmt::Display::fmt(element, f), - Self::Run(element) => ::core::fmt::Display::fmt(element, f), - Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for DeployDutchCalls { - fn from(value: IsScriptCall) -> Self { - Self::IsScript(value) - } - } - impl ::core::convert::From for DeployDutchCalls { - fn from(value: RunCall) -> Self { - Self::Run(value) - } - } - impl ::core::convert::From for DeployDutchCalls { - fn from(value: SetUpCall) -> Self { - Self::SetUp(value) - } - } - ///Container type for all return fields from the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsScriptReturn(pub bool); - ///Container type for all return fields from the `run` function with signature `run()` and selector `0xc0406226` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct RunReturn { - pub deployment: DutchDeployment, - } - ///`DutchDeployment(address,address,address)` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct DutchDeployment { - pub permit_2: ::ethers::core::types::Address, - pub reactor: ::ethers::core::types::Address, - pub quoter: ::ethers::core::types::Address, - } -} diff --git a/crates/bindings-uniswapx/src/deploy_dutch_v2.rs b/crates/bindings-uniswapx/src/deploy_dutch_v2.rs deleted file mode 100644 index 2b6ea8e..0000000 --- a/crates/bindings-uniswapx/src/deploy_dutch_v2.rs +++ /dev/null @@ -1,371 +0,0 @@ -pub use deploy_dutch_v2::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod deploy_dutch_v2 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("run"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("run"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("deployment"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct V2DutchOrderDeployment", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setUp"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setUp"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static DEPLOYDUTCHV2_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[Pa:n\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x86W[_\x80\xFD[\0[a\0Ma\0\xA9V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x99\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0}V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01RW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01v\x91\x90a\x04zV[\x90Pa\x01\xB7`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\x1EW_\x80\xFD[PZ\xF1\x15\x80\x15a\x020W=_\x80>=_\xFD[PPPP_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02U\x90a\x04mV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02\x96W=_\x80>=_\xFD[P\x90Pa\x02\xD8`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03?W_\x80\xFD[PZ\xF1\x15\x80\x15a\x03QW=_\x80>=_\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04=\x82\x82`@Q`$\x01a\x03\xC2\x92\x91\x90a\x04\xB4V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04AV[PPV[a\x04J\x81a\x04MV[PV[\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[a4\xFE\x80a\x05;\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x04\x8AW_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xADW_\x80\xFD[\x93\x92PPPV[`@\x81R_\x83Q\x80`@\x84\x01R_[\x81\x81\x10\x15a\x04\xE0W` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xC3V[P_``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x004\xFE8\x03\x80b\x004\xFE\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa3\xEDb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x19\xF9\x01Ra3\xED_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a$_V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a%\x04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a%CV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%\xDBV[a\x06eV[a\0\xB4a\x01e6`\x04a%\xFDV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%\xDBV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a&\\V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x95V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a)\x1AV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0BFV[a\x04\x9F\x81a\x0B\x95V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x95V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga&\\V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0BFV[a\x08d\x81a\x0B\x95V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a)VV[\x81\x01\x90a\nW\x91\x90a-}V[\x90P_a\nc\x82a\x0C\xE0V[\x90Pa\no\x81\x83a\x0F\x10V[a\nx\x82a\x11\tV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xA9\x92\x90\x91\x90a\x12eV[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xCD\x92\x91\x90a\x133V[\x81R` \x01\x85\x80` \x01\x90a\n\xE2\x91\x90a)VV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0B?\x92\x86\x92\x90a\x14\x18V[PP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea&\\V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x14%V[a\x0B\x82\x813a\x19\x02V[a\x0B\x8C\x813a\x19\xF7V[P`\x01\x01a\x0BJV[\x80Q_[\x81\x81\x10\x15a\x0C\xCFW_\x83\x82\x81Q\x81\x10a\x0B\xB4Wa\x0B\xB4a&\\V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C1W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xE8Wa\x0B\xE8a&\\V[` \x02` \x01\x01Q\x90Pa\x0C(\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xFC\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xC9V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CyWa\x0Cya&\\V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xBD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x99V[PG\x15a\x04\xABWa\x04\xAB3Ga\x1DCV[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R_\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a2\xAB` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q` \x01a\x0E_\x93\x92\x91\x90a.rV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\x81\x83_\x01Qa\x1D\xD9V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xA7\x90a\x1ErV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0FWW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0Fq\x91\x90a.\xB4V[\x91P\x91P_\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\x8DWa\x0F\x8Da&\\V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P_`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xB6\x91\x90a.\xD6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\xF2\x92\x91` \x01a/dV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 _\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10kW=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x10\xCAWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11\x01W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11rW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xB9W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x81``\x01QQ\x81\x10\x15a\x04\xABW_\x82``\x01Q\x82\x81Q\x81\x10a\x11\xDFWa\x11\xDFa&\\V[` \x02` \x01\x01Q\x90P_\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12\x04Wa\x12\x04a&\\V[` \x02` \x01\x01Q\x90P\x80_\x14a\x12[W\x81` \x01Q\x81\x10\x15a\x12SW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xBBV[a\x12\x9C`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x12\xDEW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x12\xF3\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13QWa\x13Qa&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xB9W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13oW\x90P[P\x91P_[\x81\x81\x10\x15a\x14\x0FWa\x13\xEA\x86\x82\x81Q\x81\x10a\x13\xDBWa\x13\xDBa&\\V[` \x02` \x01\x01Q\x86\x86a\x1F\x89V[\x83\x82\x81Q\x81\x10a\x13\xFCWa\x13\xFCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBEV[PP\x93\x92PPPV[a\x06_\x84\x84\x84\x84Ba VV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14EWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\x9B\x90\x85\x90`\x04\x01a/\x89V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xB5W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xFA\x91\x90\x81\x01\x90a/\x9BV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\x11\x82\x84a0\x91V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15)Wa\x15)a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\x91W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15GW\x90P[P\x90P_[\x83\x81\x10\x15a\x15\xE1W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xB4Wa\x15\xB4a&\\V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xCEWa\x15\xCEa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\x96V[P_\x80_[\x84\x81\x10\x15a\x18\xF1W_\x87\x82\x81Q\x81\x10a\x16\x01Wa\x16\x01a&\\V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16\xBCW\x88\x81\x81Q\x81\x10a\x16'Wa\x16'a&\\V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\xB4W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\rV[P_\x80[\x88\x81\x10\x15a\x17yW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xDFWa\x16\xDFa&\\V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17pW\x85\x15a\x17ZW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17i\x90\x84a0\x91V[\x92P`\x01\x96P[P`\x01\x01a\x16\xC0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xF2W\x84\x15a\x17\xD9W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xEB\x90\x82a0\x91V[\x90P`\x01\x93P[\x80_\x03a\x18FW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x18T\x81`\x05a'\x10a!\0V[\x82` \x01Q\x11\x15a\x18\xC7W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xDCWa\x18\xDCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xE6V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19SW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xCF\x90\x84\x90\x86\x90`\x04\x01a0\xA4V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xE5W_\x80\xFD[PZ\xFA\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xB6\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1A\xC0\x85\x85a!:V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\xFD`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1Cf\x94\x93\x92\x91` \x01a0\xD2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xD3\x96\x95\x94\x93\x92`\x04\x01a1ZV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xEAW_\x80\xFD[PZ\xF1\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D!Wa\x03L\x82\x82a\x1DCV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\x80V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\x99W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\x9EV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0E\xF3\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\x91Wa\x1E\x91a&/V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xBBW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xFEW_a\x1E\xEC\x85\x83\x81Q\x81\x10a\x1E\xDFWa\x1E\xDFa&\\V[` \x02` \x01\x01Qa\"gV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xC0V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x83\x85\x03a\x1F\x1CWP\x83a\x1F\x81V[\x82\x82\x11a\x1FUW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1FcWP\x82a\x1F\x81V[B\x83\x10a\x1FqWP\x83a\x1F\x81V[a\x1F~\x83\x83B\x88\x88a\"\xDDV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1F\xE7W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xFC\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a a\x84\x84\x83a\"\xF7V[a \xF9W\x81a \x9CW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a \xF6W_\x82\x82\x81Q\x81\x10a \xBFWa \xBFa&\\V[` \x02` \x01\x01Q\x90Pa \xE8\x85a'\x10a \xDA\x91\x90a0\x91V[` \x83\x01Q\x90a'\x10a#AV[` \x90\x91\x01R`\x01\x01a \xA3V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!3W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a \xF9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0E\xF3\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_a\"\xEB\x86\x86\x86\x86\x86a#\x83V[\x90P[\x95\x94PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x1AWP\x82\x82\x11[\x80a\x1F\x81WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#tW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a#\x92WP\x80a\"\xEEV[_a#\x9D\x87\x86a2\x14V[\x90P_a#\xAA\x88\x88a2\x14V[\x90P_\x85\x85\x12\x15a#\xDBWa#\xCB\x83\x83a#\xC4\x88\x8Aa2'V[\x91\x90a!\0V[a#\xD4\x90a2MV[\x90Pa#\xEDV[a#\xEA\x83\x83a#\xC4\x89\x89a2'V[\x90P[a#\xF7\x81\x87a2\x83V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a$\x14W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a$*W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$AW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$XW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a$qW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\x88W_\x80\xFD[a$\x94\x87\x83\x88\x01a$\x04V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\xA9W_\x80\xFD[Pa$\xB6\x86\x82\x87\x01a$\x1AV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$\xD3W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xEAW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$XW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a%\x15W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%+W_\x80\xFD[a%7\x85\x82\x86\x01a$\xC3V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a%VW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%mW_\x80\xFD[a%y\x88\x83\x89\x01a$\xC3V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x91W_\x80\xFD[Pa%\x9E\x87\x82\x88\x01a$\x1AV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a%\xD6\x81a%\xAAV[\x91\x90PV[_` \x82\x84\x03\x12\x15a%\xEBW_\x80\xFD[\x815a%\xF6\x81a%\xAAV[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a&\rW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&#W_\x80\xFD[a\x1F\x81\x84\x82\x85\x01a$\x04V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&\xC2\x81` \x86\x01` \x86\x01a&\x89V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a'RW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x07V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD0a\x01\xA0\x85\x01\x82a&\xABV[\x90P` \x83\x01Qa(\x0E` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(&\x82\x82a&\xF4V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(@\x82\x82a&\xABV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(\xCAW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xB8\x86\x83Qa']V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(~V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)LW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x89W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xA3W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$XW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*mWa*ma&/V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a*\x84W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\x9EWa*\x9Ea&/V[a*\xCF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*&V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xE3W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a+\x0FW_\x80\xFD[a+\x17a)\xB7V[\x90P\x815a+$\x81a%\xAAV[\x81R` \x82\x015a+4\x81a%\xAAV[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a+]\x81a%\xAAV[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+{W_\x80\xFD[a+\x87\x84\x82\x85\x01a*uV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+\xA3W_\x80\xFD[a+\xABa)\xE0V[\x90P\x815a+\xB8\x81a%\xAAV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+\xEFWa+\xEFa&/V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a,\x08W_\x80\xFD[\x815` a,\x1Da,\x18\x83a+\xD6V[a*&V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,;W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\x9EW`\x80\x81\x89\x03\x12\x15a,VW_\x80\xFD[a,^a*\x03V[\x815a,i\x81a%\xAAV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x8C\x81a%\xAAV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,?V[P\x96\x95PPPPPPV[_`\xC0\x82\x84\x03\x12\x15a,\xB9W_\x80\xFD[a,\xC1a)\xB7V[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a,\xDF\x81a%\xAAV[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\x13W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-#W_\x80\xFD[\x805a-1a,\x18\x82a+\xD6V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a-OW_\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a-mW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a-TV[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-\x8DW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-\xA4W_\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a-\xB8W_\x80\xFD[a-\xC0a)\xB7V[\x825\x82\x81\x11\x15a-\xCEW_\x80\xFD[a-\xDA\x87\x82\x86\x01a*\xFFV[\x82RPa-\xE9` \x84\x01a%\xCBV[` \x82\x01Ra-\xFB\x86`@\x85\x01a+\x93V[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\x11W_\x80\xFD[a.\x1D\x87\x82\x86\x01a+\xF9V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.4W_\x80\xFD[a.@\x87\x82\x86\x01a,\xA9V[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a.WW_\x80\xFD[a.c\x87\x82\x86\x01a*uV[`\xA0\x83\x01RP\x95\x94PPPPPV[_\x84Qa.\x83\x81\x84` \x89\x01a&\x89V[\x84Q\x90\x83\x01\x90a.\x97\x81\x83` \x89\x01a&\x89V[\x84Q\x91\x01\x90a.\xAA\x81\x83` \x88\x01a&\x89V[\x01\x95\x94PPPPPV[_\x80`@\x83\x85\x03\x12\x15a.\xC5W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[_` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a,\x9EW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a/DV[\x82\x81R_\x82Qa/{\x81` \x85\x01` \x87\x01a&\x89V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R_a%\xF6` \x83\x01\x84a']V[_` \x80\x83\x85\x03\x12\x15a/\xACW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/\xC2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD2W_\x80\xFD[\x80Qa/\xE0a,\x18\x82a+\xD6V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/\xFEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a0XW\x80\x85\x8A\x03\x12\x15a0\x19W_\x80\xFD[a0!a)\xE0V[\x85Qa0,\x81a%\xAAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa0E\x81a%\xAAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\x03V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a!zWa!za0dV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1F\x81`@\x83\x01\x84a']V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_\x85Qa1\t\x81`\x15\x85\x01` \x8A\x01a&\x89V[\x85Q\x90\x83\x01\x90a1 \x81`\x15\x84\x01` \x8A\x01a&\x89V[\x85Q\x91\x01\x90a16\x81`\x15\x84\x01` \x89\x01a&\x89V[\x84Q\x91\x01\x90a1L\x81`\x15\x84\x01` \x88\x01a&\x89V[\x01`\x15\x01\x96\x95PPPPPPV[_a\x01@a1\x89\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\xCA`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1\xFF\x81\x84\x01\x86a&\xABV[\x90P\x82\x81\x03a\x01 \x84\x01Ra#\xF7\x81\x85a&\xABV[\x81\x81\x03\x81\x81\x11\x15a!zWa!za0dV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a2FWa2Fa0dV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a2}Wa2}a0dV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a2\xA2Wa2\xA2a0dV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x91\xE2f\xE9r\xD65\x18%\x0B\x0E\xD2\x98\xCB\xC1\xE0k\t\n\x93\x98w\t\x84\x04\xDF\xB8@\xD3f^\x1BdsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xC0\xE0\xE4\n\xD4\xFF\x1B\xE4n\xF1\xBA\xF8\x82\xC5\xB9\xAC\xD2VQ=\xC9\x80\x16\x08\x8B\xCE\xED\xD49\xA1\x82\xE5dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static DEPLOYDUTCHV2_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x86W[_\x80\xFD[\0[a\0Ma\0\xA9V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x99\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0}V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01RW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01v\x91\x90a\x04zV[\x90Pa\x01\xB7`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\x1EW_\x80\xFD[PZ\xF1\x15\x80\x15a\x020W=_\x80>=_\xFD[PPPP_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02U\x90a\x04mV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02\x96W=_\x80>=_\xFD[P\x90Pa\x02\xD8`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03?W_\x80\xFD[PZ\xF1\x15\x80\x15a\x03QW=_\x80>=_\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04=\x82\x82`@Q`$\x01a\x03\xC2\x92\x91\x90a\x04\xB4V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04AV[PPV[a\x04J\x81a\x04MV[PV[\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[a4\xFE\x80a\x05;\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x04\x8AW_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xADW_\x80\xFD[\x93\x92PPPV[`@\x81R_\x83Q\x80`@\x84\x01R_[\x81\x81\x10\x15a\x04\xE0W` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xC3V[P_``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x004\xFE8\x03\x80b\x004\xFE\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa3\xEDb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x19\xF9\x01Ra3\xED_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a$_V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a%\x04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a%CV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%\xDBV[a\x06eV[a\0\xB4a\x01e6`\x04a%\xFDV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%\xDBV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a&\\V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x95V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a)\x1AV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0BFV[a\x04\x9F\x81a\x0B\x95V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x95V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga&\\V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0BFV[a\x08d\x81a\x0B\x95V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a)VV[\x81\x01\x90a\nW\x91\x90a-}V[\x90P_a\nc\x82a\x0C\xE0V[\x90Pa\no\x81\x83a\x0F\x10V[a\nx\x82a\x11\tV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xA9\x92\x90\x91\x90a\x12eV[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xCD\x92\x91\x90a\x133V[\x81R` \x01\x85\x80` \x01\x90a\n\xE2\x91\x90a)VV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0B?\x92\x86\x92\x90a\x14\x18V[PP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea&\\V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x14%V[a\x0B\x82\x813a\x19\x02V[a\x0B\x8C\x813a\x19\xF7V[P`\x01\x01a\x0BJV[\x80Q_[\x81\x81\x10\x15a\x0C\xCFW_\x83\x82\x81Q\x81\x10a\x0B\xB4Wa\x0B\xB4a&\\V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C1W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xE8Wa\x0B\xE8a&\\V[` \x02` \x01\x01Q\x90Pa\x0C(\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xFC\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xC9V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CyWa\x0Cya&\\V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xBD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x99V[PG\x15a\x04\xABWa\x04\xAB3Ga\x1DCV[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R_\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a2\xAB` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q` \x01a\x0E_\x93\x92\x91\x90a.rV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\x81\x83_\x01Qa\x1D\xD9V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xA7\x90a\x1ErV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0FWW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0Fq\x91\x90a.\xB4V[\x91P\x91P_\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\x8DWa\x0F\x8Da&\\V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P_`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xB6\x91\x90a.\xD6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\xF2\x92\x91` \x01a/dV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 _\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10kW=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x10\xCAWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11\x01W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11rW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xB9W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x81``\x01QQ\x81\x10\x15a\x04\xABW_\x82``\x01Q\x82\x81Q\x81\x10a\x11\xDFWa\x11\xDFa&\\V[` \x02` \x01\x01Q\x90P_\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12\x04Wa\x12\x04a&\\V[` \x02` \x01\x01Q\x90P\x80_\x14a\x12[W\x81` \x01Q\x81\x10\x15a\x12SW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xBBV[a\x12\x9C`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x12\xDEW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x12\xF3\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13QWa\x13Qa&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xB9W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13oW\x90P[P\x91P_[\x81\x81\x10\x15a\x14\x0FWa\x13\xEA\x86\x82\x81Q\x81\x10a\x13\xDBWa\x13\xDBa&\\V[` \x02` \x01\x01Q\x86\x86a\x1F\x89V[\x83\x82\x81Q\x81\x10a\x13\xFCWa\x13\xFCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBEV[PP\x93\x92PPPV[a\x06_\x84\x84\x84\x84Ba VV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14EWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\x9B\x90\x85\x90`\x04\x01a/\x89V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xB5W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xFA\x91\x90\x81\x01\x90a/\x9BV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\x11\x82\x84a0\x91V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15)Wa\x15)a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\x91W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15GW\x90P[P\x90P_[\x83\x81\x10\x15a\x15\xE1W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xB4Wa\x15\xB4a&\\V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xCEWa\x15\xCEa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\x96V[P_\x80_[\x84\x81\x10\x15a\x18\xF1W_\x87\x82\x81Q\x81\x10a\x16\x01Wa\x16\x01a&\\V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16\xBCW\x88\x81\x81Q\x81\x10a\x16'Wa\x16'a&\\V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\xB4W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\rV[P_\x80[\x88\x81\x10\x15a\x17yW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xDFWa\x16\xDFa&\\V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17pW\x85\x15a\x17ZW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17i\x90\x84a0\x91V[\x92P`\x01\x96P[P`\x01\x01a\x16\xC0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xF2W\x84\x15a\x17\xD9W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xEB\x90\x82a0\x91V[\x90P`\x01\x93P[\x80_\x03a\x18FW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x18T\x81`\x05a'\x10a!\0V[\x82` \x01Q\x11\x15a\x18\xC7W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xDCWa\x18\xDCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xE6V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19SW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xCF\x90\x84\x90\x86\x90`\x04\x01a0\xA4V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xE5W_\x80\xFD[PZ\xFA\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xB6\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1A\xC0\x85\x85a!:V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\xFD`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1Cf\x94\x93\x92\x91` \x01a0\xD2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xD3\x96\x95\x94\x93\x92`\x04\x01a1ZV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xEAW_\x80\xFD[PZ\xF1\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D!Wa\x03L\x82\x82a\x1DCV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\x80V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\x99W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\x9EV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0E\xF3\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\x91Wa\x1E\x91a&/V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xBBW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xFEW_a\x1E\xEC\x85\x83\x81Q\x81\x10a\x1E\xDFWa\x1E\xDFa&\\V[` \x02` \x01\x01Qa\"gV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xC0V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x83\x85\x03a\x1F\x1CWP\x83a\x1F\x81V[\x82\x82\x11a\x1FUW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1FcWP\x82a\x1F\x81V[B\x83\x10a\x1FqWP\x83a\x1F\x81V[a\x1F~\x83\x83B\x88\x88a\"\xDDV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1F\xE7W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xFC\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a a\x84\x84\x83a\"\xF7V[a \xF9W\x81a \x9CW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a \xF6W_\x82\x82\x81Q\x81\x10a \xBFWa \xBFa&\\V[` \x02` \x01\x01Q\x90Pa \xE8\x85a'\x10a \xDA\x91\x90a0\x91V[` \x83\x01Q\x90a'\x10a#AV[` \x90\x91\x01R`\x01\x01a \xA3V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!3W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a \xF9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0E\xF3\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_a\"\xEB\x86\x86\x86\x86\x86a#\x83V[\x90P[\x95\x94PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x1AWP\x82\x82\x11[\x80a\x1F\x81WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#tW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a#\x92WP\x80a\"\xEEV[_a#\x9D\x87\x86a2\x14V[\x90P_a#\xAA\x88\x88a2\x14V[\x90P_\x85\x85\x12\x15a#\xDBWa#\xCB\x83\x83a#\xC4\x88\x8Aa2'V[\x91\x90a!\0V[a#\xD4\x90a2MV[\x90Pa#\xEDV[a#\xEA\x83\x83a#\xC4\x89\x89a2'V[\x90P[a#\xF7\x81\x87a2\x83V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a$\x14W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a$*W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$AW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$XW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a$qW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\x88W_\x80\xFD[a$\x94\x87\x83\x88\x01a$\x04V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\xA9W_\x80\xFD[Pa$\xB6\x86\x82\x87\x01a$\x1AV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$\xD3W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xEAW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$XW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a%\x15W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%+W_\x80\xFD[a%7\x85\x82\x86\x01a$\xC3V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a%VW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%mW_\x80\xFD[a%y\x88\x83\x89\x01a$\xC3V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x91W_\x80\xFD[Pa%\x9E\x87\x82\x88\x01a$\x1AV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a%\xD6\x81a%\xAAV[\x91\x90PV[_` \x82\x84\x03\x12\x15a%\xEBW_\x80\xFD[\x815a%\xF6\x81a%\xAAV[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a&\rW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&#W_\x80\xFD[a\x1F\x81\x84\x82\x85\x01a$\x04V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&\xC2\x81` \x86\x01` \x86\x01a&\x89V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a'RW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x07V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD0a\x01\xA0\x85\x01\x82a&\xABV[\x90P` \x83\x01Qa(\x0E` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(&\x82\x82a&\xF4V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(@\x82\x82a&\xABV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(\xCAW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xB8\x86\x83Qa']V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(~V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)LW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x89W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xA3W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$XW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*mWa*ma&/V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a*\x84W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\x9EWa*\x9Ea&/V[a*\xCF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*&V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xE3W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a+\x0FW_\x80\xFD[a+\x17a)\xB7V[\x90P\x815a+$\x81a%\xAAV[\x81R` \x82\x015a+4\x81a%\xAAV[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a+]\x81a%\xAAV[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+{W_\x80\xFD[a+\x87\x84\x82\x85\x01a*uV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+\xA3W_\x80\xFD[a+\xABa)\xE0V[\x90P\x815a+\xB8\x81a%\xAAV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+\xEFWa+\xEFa&/V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a,\x08W_\x80\xFD[\x815` a,\x1Da,\x18\x83a+\xD6V[a*&V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,;W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\x9EW`\x80\x81\x89\x03\x12\x15a,VW_\x80\xFD[a,^a*\x03V[\x815a,i\x81a%\xAAV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x8C\x81a%\xAAV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,?V[P\x96\x95PPPPPPV[_`\xC0\x82\x84\x03\x12\x15a,\xB9W_\x80\xFD[a,\xC1a)\xB7V[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a,\xDF\x81a%\xAAV[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\x13W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-#W_\x80\xFD[\x805a-1a,\x18\x82a+\xD6V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a-OW_\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a-mW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a-TV[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-\x8DW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-\xA4W_\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a-\xB8W_\x80\xFD[a-\xC0a)\xB7V[\x825\x82\x81\x11\x15a-\xCEW_\x80\xFD[a-\xDA\x87\x82\x86\x01a*\xFFV[\x82RPa-\xE9` \x84\x01a%\xCBV[` \x82\x01Ra-\xFB\x86`@\x85\x01a+\x93V[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\x11W_\x80\xFD[a.\x1D\x87\x82\x86\x01a+\xF9V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.4W_\x80\xFD[a.@\x87\x82\x86\x01a,\xA9V[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a.WW_\x80\xFD[a.c\x87\x82\x86\x01a*uV[`\xA0\x83\x01RP\x95\x94PPPPPV[_\x84Qa.\x83\x81\x84` \x89\x01a&\x89V[\x84Q\x90\x83\x01\x90a.\x97\x81\x83` \x89\x01a&\x89V[\x84Q\x91\x01\x90a.\xAA\x81\x83` \x88\x01a&\x89V[\x01\x95\x94PPPPPV[_\x80`@\x83\x85\x03\x12\x15a.\xC5W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[_` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a,\x9EW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a/DV[\x82\x81R_\x82Qa/{\x81` \x85\x01` \x87\x01a&\x89V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R_a%\xF6` \x83\x01\x84a']V[_` \x80\x83\x85\x03\x12\x15a/\xACW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/\xC2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD2W_\x80\xFD[\x80Qa/\xE0a,\x18\x82a+\xD6V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/\xFEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a0XW\x80\x85\x8A\x03\x12\x15a0\x19W_\x80\xFD[a0!a)\xE0V[\x85Qa0,\x81a%\xAAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa0E\x81a%\xAAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\x03V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a!zWa!za0dV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1F\x81`@\x83\x01\x84a']V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_\x85Qa1\t\x81`\x15\x85\x01` \x8A\x01a&\x89V[\x85Q\x90\x83\x01\x90a1 \x81`\x15\x84\x01` \x8A\x01a&\x89V[\x85Q\x91\x01\x90a16\x81`\x15\x84\x01` \x89\x01a&\x89V[\x84Q\x91\x01\x90a1L\x81`\x15\x84\x01` \x88\x01a&\x89V[\x01`\x15\x01\x96\x95PPPPPPV[_a\x01@a1\x89\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\xCA`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1\xFF\x81\x84\x01\x86a&\xABV[\x90P\x82\x81\x03a\x01 \x84\x01Ra#\xF7\x81\x85a&\xABV[\x81\x81\x03\x81\x81\x11\x15a!zWa!za0dV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a2FWa2Fa0dV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a2}Wa2}a0dV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a2\xA2Wa2\xA2a0dV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x91\xE2f\xE9r\xD65\x18%\x0B\x0E\xD2\x98\xCB\xC1\xE0k\t\n\x93\x98w\t\x84\x04\xDF\xB8@\xD3f^\x1BdsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xC0\xE0\xE4\n\xD4\xFF\x1B\xE4n\xF1\xBA\xF8\x82\xC5\xB9\xAC\xD2VQ=\xC9\x80\x16\x08\x8B\xCE\xED\xD49\xA1\x82\xE5dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static DEPLOYDUTCHV2_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct DeployDutchV2(::ethers::contract::Contract); - impl ::core::clone::Clone for DeployDutchV2 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for DeployDutchV2 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for DeployDutchV2 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for DeployDutchV2 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(DeployDutchV2)) - .field(&self.address()) - .finish() - } - } - impl DeployDutchV2 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - DEPLOYDUTCHV2_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - DEPLOYDUTCHV2_ABI.clone(), - DEPLOYDUTCHV2_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `IS_SCRIPT` (0xf8ccbf47) function - pub fn is_script(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([248, 204, 191, 71], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `run` (0xc0406226) function - pub fn run( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([192, 64, 98, 38], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setUp` (0x0a9254e4) function - pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([10, 146, 84, 228], ()) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for DeployDutchV2 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "IS_SCRIPT", abi = "IS_SCRIPT()")] - pub struct IsScriptCall; - ///Container type for all input parameters for the `run` function with signature `run()` and selector `0xc0406226` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "run", abi = "run()")] - pub struct RunCall; - ///Container type for all input parameters for the `setUp` function with signature `setUp()` and selector `0x0a9254e4` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setUp", abi = "setUp()")] - pub struct SetUpCall; - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum DeployDutchV2Calls { - IsScript(IsScriptCall), - Run(RunCall), - SetUp(SetUpCall), - } - impl ::ethers::core::abi::AbiDecode for DeployDutchV2Calls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IsScript(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Run(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetUp(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for DeployDutchV2Calls { - fn encode(self) -> Vec { - match self { - Self::IsScript(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Run(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for DeployDutchV2Calls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::IsScript(element) => ::core::fmt::Display::fmt(element, f), - Self::Run(element) => ::core::fmt::Display::fmt(element, f), - Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for DeployDutchV2Calls { - fn from(value: IsScriptCall) -> Self { - Self::IsScript(value) - } - } - impl ::core::convert::From for DeployDutchV2Calls { - fn from(value: RunCall) -> Self { - Self::Run(value) - } - } - impl ::core::convert::From for DeployDutchV2Calls { - fn from(value: SetUpCall) -> Self { - Self::SetUp(value) - } - } - ///Container type for all return fields from the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsScriptReturn(pub bool); - ///Container type for all return fields from the `run` function with signature `run()` and selector `0xc0406226` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct RunReturn { - pub deployment: V2DutchOrderDeployment, - } - ///`V2DutchOrderDeployment(address,address)` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct V2DutchOrderDeployment { - pub permit_2: ::ethers::core::types::Address, - pub reactor: ::ethers::core::types::Address, - } -} diff --git a/crates/bindings-uniswapx/src/deploy_dutch_v3.rs b/crates/bindings-uniswapx/src/deploy_dutch_v3.rs deleted file mode 100644 index a630980..0000000 --- a/crates/bindings-uniswapx/src/deploy_dutch_v3.rs +++ /dev/null @@ -1,371 +0,0 @@ -pub use deploy_dutch_v3::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod deploy_dutch_v3 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("run"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("run"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("deployment"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct V3DutchOrderDeployment", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setUp"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setUp"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static DEPLOYDUTCHV3_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[PaJ\xFF\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x86W[_\x80\xFD[\0[a\0Ma\0\xA9V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x99\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0}V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01RW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01v\x91\x90a\x04zV[\x90Pa\x01\xB7`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\x1EW_\x80\xFD[PZ\xF1\x15\x80\x15a\x020W=_\x80>=_\xFD[PPPP_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02U\x90a\x04mV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02\x96W=_\x80>=_\xFD[P\x90Pa\x02\xD8`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03?W_\x80\xFD[PZ\xF1\x15\x80\x15a\x03QW=_\x80>=_\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04=\x82\x82`@Q`$\x01a\x03\xC2\x92\x91\x90a\x04\xB4V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04AV[PPV[a\x04J\x81a\x04MV[PV[\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[aE\x8F\x80a\x05;\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x04\x8AW_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xADW_\x80\xFD[\x93\x92PPPV[`@\x81R_\x83Q\x80`@\x84\x01R_[\x81\x81\x10\x15a\x04\xE0W` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xC3V[P_``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xC0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0E\x8F8\x03\x80b\0E\x8F\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01dV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\xA4\xB0\x19F\x01b\0\0\xBDW`\x01`\x01`@\x1B\x03b\0\tab\0\0\xDE` \x1B\x17\x16`\xA0Rb\0\0\xD6V[`\x01`\x01`@\x1B\x03b\0\t\xD5b\0\x01H` \x1B\x17\x16`\xA0R[PPb\0\x01\xB9V[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\x1DW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01C\x91\x90b\0\x01\xA1V[\x90P\x90V[C\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01aW_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\x01vW_\x80\xFD[\x82Qb\0\x01\x83\x81b\0\x01LV[` \x84\x01Q\x90\x92Pb\0\x01\x96\x81b\0\x01LV[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15b\0\x01\xB2W_\x80\xFD[PQ\x91\x90PV[`\x80Q`\xA0QaC\xAEb\0\x01\xE1_9_a\n\xFF\x01R_\x81\x81`\xDA\x01Ra\x1A\xCE\x01RaC\xAE_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a/\x8FV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a0sV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a1\x0BV[a\x06eV[a\0\xB4a\x01e6`\x04a1&V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a1\x0BV[a\x08rV[a\x01\xE8a\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\nJV[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a1\x85V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0CDV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\t\xD9V[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a4CV[a\nJV[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\xF5V[a\x04\x9F\x81a\x0CDV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\t\xD9V[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0CDV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\nJV[\x81_\x81Q\x81\x10a\x08GWa\x08Ga1\x85V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\xF5V[a\x08d\x81a\x0CDV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xACW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xD0\x91\x90a4\x7FV[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xC2\x83\x80a4\x96V[\x81\x01\x90a\n\xCF\x91\x90a:BV[\x90P_a\n\xDB\x82a\r\x8FV[\x90Pa\n\xE7\x81\x83a\x10sV[a\n\xF0\x82a\x10\xCFV[a\n\xF9\x82a\x12/V[_a\x0B&\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\x0B\\\x85`\xA0\x01Q_\x01Q\x84\x87``\x01Qa\x134\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0By\x91\x85a\x13\xF9V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x8E\x91\x90a4\x96V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0B\xED\x92\x87\x92\x90\x85a\x14\xDEV[PPP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0C\x14Wa\x0C\x14a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C'\x81a\x14\xF2V[a\x0C1\x813a\x19\xCFV[a\x0C;\x813a\x1A\xCCV[P`\x01\x01a\x0B\xF9V[\x80Q_[\x81\x81\x10\x15a\r~W_\x83\x82\x81Q\x81\x10a\x0CcWa\x0Cca1\x85V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\xE0W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x97Wa\x0C\x97a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C\xD7\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1E\xC6\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0CxV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r(Wa\r(a1\x85V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\rl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CHV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1F\rV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R_\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q` \x01a\x0Fq\x90a;QV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\x8F\x90a\x03V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x82W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15\xC7\x91\x90\x81\x01\x90a>\x15V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\xDE\x82\x84a?\x0BV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\xF6Wa\x15\xF6a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16\x14W\x90P[P\x90P_[\x83\x81\x10\x15a\x16\xAEW\x85`@\x01Q\x81\x81Q\x81\x10a\x16\x81Wa\x16\x81a1\x85V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x9BWa\x16\x9Ba1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16cV[P_\x80_[\x84\x81\x10\x15a\x19\xBEW_\x87\x82\x81Q\x81\x10a\x16\xCEWa\x16\xCEa1\x85V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x17\x89W\x88\x81\x81Q\x81\x10a\x16\xF4Wa\x16\xF4a1\x85V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x81W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\xDAV[P_\x80[\x88\x81\x10\x15a\x18FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x17\xACWa\x17\xACa1\x85V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18=W\x85\x15a\x18'W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x186\x90\x84a?\x0BV[\x92P`\x01\x96P[P`\x01\x01a\x17\x8DV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18\xBFW\x84\x15a\x18\xA6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18\xB8\x90\x82a?\x0BV[\x90P`\x01\x93P[\x80_\x03a\x19\x13W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x19!\x81`\x05a'\x10a'\xF2V[\x82` \x01Q\x11\x15a\x19\x94W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x19\xA9Wa\x19\xA9a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x16\xB3V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\x9C\x90\x84\x90\x86\x90`\x04\x01a?\x1EV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A\xB2W_\x80\xFD[PZ\xFA\x15\x80\x15a\x1A\xC4W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x8B\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1CV\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aB\xBE`.\x919`@Q` \x01a\x1C\xC0\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1D\xF0\x90`\xB8\x01a=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1E\xEBWa\x03L\x82\x82a\x1F\rV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(,V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1FcW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1FhV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aB\xEC`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10V\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q` \x01a L\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!\x0C\x92\x90\x91\x90`\x84\x01a@\xB8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Qa!8\x85`@\x01Qa)\x13V[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10VV[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xAAWa!\xAAa1XV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a!\xD4W` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P_[\x81\x81\x10\x15a\"\x19W_a\"\x07\x86\x83\x81Q\x81\x10a!\xFAWa!\xFAa1\x85V[` \x02` \x01\x01Qa*\x0FV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a!\xDCV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xA0\x01Q`@Q` \x01a\"A\x91\x90a@\xE6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"~\x93\x92\x91` \x01aAiV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\"\xB3\x91\x90aA\x95V[\x91P\x91P_\x83`@\x81Q\x81\x10a\"\xCBWa\"\xCBa1\x85V[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#%W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\x80WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a#\xB7W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x81\x83\x10\x15a#\xECWa#\xDBa#\xD6\x84\x84aA\xB7V[a+qV[a#\xE5\x90_aA\xCAV[\x90Pa\"\x97V[a#\xE5a#\xD6\x83\x85aA\xB7V[_\x80\x82\x12a$\x10Wa#\xE5\x83\x83c;\x9A\xCA\0a'\xF2V[a$(a$\x1C\x83aA\xF0V[\x84\x90c;\x9A\xCA\0a,&V[a#\xE5\x90aA\xF0V[_a$G\x85a$@\x86\x84aA\xCAV[\x85\x85a$PV[\x95\x94PPPPPV[_\x80\x84\x12\x15a$\xB1W_a$c\x85aA\xF0V[\x90P\x85a$\x90\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaA\xB7V[\x10\x15a$\x9FW\x82\x91PPa$\xD8V[a$\xA9\x81\x87a?\x0BV[\x91PPa$\xCDV[\x83\x85\x10\x15a$\xC0WP\x81a$\xD8V[a$\xCA\x84\x86aA\xB7V[\x90P[a$G\x81\x84\x84a,hV[\x94\x93PPPPV[_\x84\x84\x10a$\xEFWP\x80a$GV[_a$\xFA\x87\x86aA\xB7V[\x90P_a%\x07\x88\x88aA\xB7V[\x90P_\x85\x85\x12\x15a%8Wa%(\x83\x83a%!\x88\x8AaA\xCAV[\x91\x90a'\xF2V[a%1\x90aA\xF0V[\x90Pa%QV[a%N\x83\x83a%G\x89\x89aA\xCAV[\x91\x90a,&V[\x90P[a%[\x81\x87aB&V[\x99\x98PPPPPPPPPV[_`\x10\x82_\x01Q` \x01QQ\x11\x15a%\xACW`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a%\xC7WP\x81Q` \x01QQ\x15[\x15a%\xE6W`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa\"\x97\x92\x90\x91a,hV[_a&\x06\x83`@\x01Q\x84``\x01Qa%\xFE\x91\x90aA\xB7V[a\xFF\xFFa,xV[\x90P_\x80_\x80a&\x19\x87_\x01Q\x86a,\x8FV[\x93P\x93P\x93P\x93P_a&C\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&a\x92\x91\x84\x91a$PV[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.H\x81RP\x90P_a&\xF7\x82a%hV[\x90P`@Q\x80``\x01`@R\x80\x87_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a']\x84\x84\x83a.\x98V[a\x14\xEBW\x81a'\x98W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a#\xB7W_\x82\x82\x81Q\x81\x10a'\xBBWa'\xBBa1\x85V[` \x02` \x01\x01Q\x90Pa'\xE4\x85a'\x10a'\xD6\x91\x90a?\x0BV[` \x83\x01Q\x90a'\x10a,&V[` \x90\x91\x01R`\x01\x01a'\x9FV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(%W_\x80\xFD[P\x91\x02\x04\x90V[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x14\xEBW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R_\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Q`@Q` \x01a)\xBC\x91\x90aBMV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10VV[_`@Q` \x01a*\x1F\x90a&W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a>LW_\x80\xFD[\x80Qa>Za7\x92\x82a7\x19V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a>xW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a>\xD2W\x80\x85\x8A\x03\x12\x15a>\x93W_\x80\xFD[a>\x9Ba5\x89V[\x85Qa>\xA6\x81a0\xDAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa>\xBF\x81a0\xDAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a>}V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\"\x97Wa\"\x97a>\xDEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a$\xD8`@\x83\x01\x84a2\x86V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_`\x15\x88Q` a?\x85\x82\x84\x87\x01\x83\x8E\x01a1\xB2V[\x89Q\x91\x85\x01\x91a?\x9A\x81\x85\x85\x01\x84\x8E\x01a1\xB2V[\x89Q\x92\x01\x91a?\xAE\x81\x85\x85\x01\x84\x8D\x01a1\xB2V[\x88Q\x92\x01\x91a?\xC2\x81\x85\x85\x01\x84\x8C\x01a1\xB2V[\x87Q\x92\x01\x91a?\xD6\x81\x85\x85\x01\x84\x8B\x01a1\xB2V[\x86Q\x92\x01\x91a?\xEA\x81\x85\x85\x01\x84\x8A\x01a1\xB2V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[_a\x01@a@-\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra@n`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra@\xA3\x81\x84\x01\x86a1\xD4V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%[\x81\x85a1\xD4V[_\x83Qa@\xC9\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xDD\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[_` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a9mW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aAIV[\x83\x81R\x82` \x82\x01R_\x82QaA\x86\x81`@\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[_\x80`@\x83\x85\x03\x12\x15aA\xA6W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a\"\x97Wa\"\x97a>\xDEV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aA\xE9WaA\xE9a>\xDEV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aB WaB a>\xDEV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aBEWaBEa>\xDEV[PP\x92\x91PPV[\x81Q_\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aBvW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aBZV[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aA\xE9WaA\xE9a>\xDEV[_a\xFF\xFF\x80\x83\x16\x81\x81\x03aB\xB3WaB\xB3a>\xDEV[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 uyp,x\xB4\x1D=j!\n\x95w\xB1(\xD7/\xB7\x90\xC9Cg\xB3\x8EY\x8E-G\x15\xEB\xA2\xE9dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xEEh\x0B\x16\x19\x1A\xDA&\x91Jc\x9D\xF0\x92T6\xF1\xE1\xFB;\x9B \xA0\xDD|w&\xFF?\x06<\x9AdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static DEPLOYDUTCHV3_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x86W[_\x80\xFD[\0[a\0Ma\0\xA9V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x99\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0}V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01RW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01v\x91\x90a\x04zV[\x90Pa\x01\xB7`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\x1EW_\x80\xFD[PZ\xF1\x15\x80\x15a\x020W=_\x80>=_\xFD[PPPP_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02U\x90a\x04mV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02\x96W=_\x80>=_\xFD[P\x90Pa\x02\xD8`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03?W_\x80\xFD[PZ\xF1\x15\x80\x15a\x03QW=_\x80>=_\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04=\x82\x82`@Q`$\x01a\x03\xC2\x92\x91\x90a\x04\xB4V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04AV[PPV[a\x04J\x81a\x04MV[PV[\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[aE\x8F\x80a\x05;\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x04\x8AW_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xADW_\x80\xFD[\x93\x92PPPV[`@\x81R_\x83Q\x80`@\x84\x01R_[\x81\x81\x10\x15a\x04\xE0W` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xC3V[P_``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xC0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0E\x8F8\x03\x80b\0E\x8F\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01dV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\xA4\xB0\x19F\x01b\0\0\xBDW`\x01`\x01`@\x1B\x03b\0\tab\0\0\xDE` \x1B\x17\x16`\xA0Rb\0\0\xD6V[`\x01`\x01`@\x1B\x03b\0\t\xD5b\0\x01H` \x1B\x17\x16`\xA0R[PPb\0\x01\xB9V[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\x1DW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01C\x91\x90b\0\x01\xA1V[\x90P\x90V[C\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01aW_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\x01vW_\x80\xFD[\x82Qb\0\x01\x83\x81b\0\x01LV[` \x84\x01Q\x90\x92Pb\0\x01\x96\x81b\0\x01LV[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15b\0\x01\xB2W_\x80\xFD[PQ\x91\x90PV[`\x80Q`\xA0QaC\xAEb\0\x01\xE1_9_a\n\xFF\x01R_\x81\x81`\xDA\x01Ra\x1A\xCE\x01RaC\xAE_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a/\x8FV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a0sV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a1\x0BV[a\x06eV[a\0\xB4a\x01e6`\x04a1&V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a1\x0BV[a\x08rV[a\x01\xE8a\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\nJV[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a1\x85V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0CDV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\t\xD9V[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a4CV[a\nJV[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\xF5V[a\x04\x9F\x81a\x0CDV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\t\xD9V[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0CDV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\nJV[\x81_\x81Q\x81\x10a\x08GWa\x08Ga1\x85V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\xF5V[a\x08d\x81a\x0CDV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xACW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xD0\x91\x90a4\x7FV[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xC2\x83\x80a4\x96V[\x81\x01\x90a\n\xCF\x91\x90a:BV[\x90P_a\n\xDB\x82a\r\x8FV[\x90Pa\n\xE7\x81\x83a\x10sV[a\n\xF0\x82a\x10\xCFV[a\n\xF9\x82a\x12/V[_a\x0B&\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\x0B\\\x85`\xA0\x01Q_\x01Q\x84\x87``\x01Qa\x134\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0By\x91\x85a\x13\xF9V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x8E\x91\x90a4\x96V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0B\xED\x92\x87\x92\x90\x85a\x14\xDEV[PPP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0C\x14Wa\x0C\x14a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C'\x81a\x14\xF2V[a\x0C1\x813a\x19\xCFV[a\x0C;\x813a\x1A\xCCV[P`\x01\x01a\x0B\xF9V[\x80Q_[\x81\x81\x10\x15a\r~W_\x83\x82\x81Q\x81\x10a\x0CcWa\x0Cca1\x85V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\xE0W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x97Wa\x0C\x97a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C\xD7\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1E\xC6\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0CxV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r(Wa\r(a1\x85V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\rl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CHV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1F\rV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R_\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q` \x01a\x0Fq\x90a;QV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\x8F\x90a\x03V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x82W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15\xC7\x91\x90\x81\x01\x90a>\x15V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\xDE\x82\x84a?\x0BV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\xF6Wa\x15\xF6a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16\x14W\x90P[P\x90P_[\x83\x81\x10\x15a\x16\xAEW\x85`@\x01Q\x81\x81Q\x81\x10a\x16\x81Wa\x16\x81a1\x85V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x9BWa\x16\x9Ba1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16cV[P_\x80_[\x84\x81\x10\x15a\x19\xBEW_\x87\x82\x81Q\x81\x10a\x16\xCEWa\x16\xCEa1\x85V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x17\x89W\x88\x81\x81Q\x81\x10a\x16\xF4Wa\x16\xF4a1\x85V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x81W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\xDAV[P_\x80[\x88\x81\x10\x15a\x18FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x17\xACWa\x17\xACa1\x85V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18=W\x85\x15a\x18'W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x186\x90\x84a?\x0BV[\x92P`\x01\x96P[P`\x01\x01a\x17\x8DV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18\xBFW\x84\x15a\x18\xA6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18\xB8\x90\x82a?\x0BV[\x90P`\x01\x93P[\x80_\x03a\x19\x13W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x19!\x81`\x05a'\x10a'\xF2V[\x82` \x01Q\x11\x15a\x19\x94W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x19\xA9Wa\x19\xA9a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x16\xB3V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\x9C\x90\x84\x90\x86\x90`\x04\x01a?\x1EV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A\xB2W_\x80\xFD[PZ\xFA\x15\x80\x15a\x1A\xC4W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x8B\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1CV\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aB\xBE`.\x919`@Q` \x01a\x1C\xC0\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1D\xF0\x90`\xB8\x01a=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1E\xEBWa\x03L\x82\x82a\x1F\rV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(,V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1FcW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1FhV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aB\xEC`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10V\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q` \x01a L\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!\x0C\x92\x90\x91\x90`\x84\x01a@\xB8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Qa!8\x85`@\x01Qa)\x13V[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10VV[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xAAWa!\xAAa1XV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a!\xD4W` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P_[\x81\x81\x10\x15a\"\x19W_a\"\x07\x86\x83\x81Q\x81\x10a!\xFAWa!\xFAa1\x85V[` \x02` \x01\x01Qa*\x0FV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a!\xDCV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xA0\x01Q`@Q` \x01a\"A\x91\x90a@\xE6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"~\x93\x92\x91` \x01aAiV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\"\xB3\x91\x90aA\x95V[\x91P\x91P_\x83`@\x81Q\x81\x10a\"\xCBWa\"\xCBa1\x85V[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#%W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\x80WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a#\xB7W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x81\x83\x10\x15a#\xECWa#\xDBa#\xD6\x84\x84aA\xB7V[a+qV[a#\xE5\x90_aA\xCAV[\x90Pa\"\x97V[a#\xE5a#\xD6\x83\x85aA\xB7V[_\x80\x82\x12a$\x10Wa#\xE5\x83\x83c;\x9A\xCA\0a'\xF2V[a$(a$\x1C\x83aA\xF0V[\x84\x90c;\x9A\xCA\0a,&V[a#\xE5\x90aA\xF0V[_a$G\x85a$@\x86\x84aA\xCAV[\x85\x85a$PV[\x95\x94PPPPPV[_\x80\x84\x12\x15a$\xB1W_a$c\x85aA\xF0V[\x90P\x85a$\x90\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaA\xB7V[\x10\x15a$\x9FW\x82\x91PPa$\xD8V[a$\xA9\x81\x87a?\x0BV[\x91PPa$\xCDV[\x83\x85\x10\x15a$\xC0WP\x81a$\xD8V[a$\xCA\x84\x86aA\xB7V[\x90P[a$G\x81\x84\x84a,hV[\x94\x93PPPPV[_\x84\x84\x10a$\xEFWP\x80a$GV[_a$\xFA\x87\x86aA\xB7V[\x90P_a%\x07\x88\x88aA\xB7V[\x90P_\x85\x85\x12\x15a%8Wa%(\x83\x83a%!\x88\x8AaA\xCAV[\x91\x90a'\xF2V[a%1\x90aA\xF0V[\x90Pa%QV[a%N\x83\x83a%G\x89\x89aA\xCAV[\x91\x90a,&V[\x90P[a%[\x81\x87aB&V[\x99\x98PPPPPPPPPV[_`\x10\x82_\x01Q` \x01QQ\x11\x15a%\xACW`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a%\xC7WP\x81Q` \x01QQ\x15[\x15a%\xE6W`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa\"\x97\x92\x90\x91a,hV[_a&\x06\x83`@\x01Q\x84``\x01Qa%\xFE\x91\x90aA\xB7V[a\xFF\xFFa,xV[\x90P_\x80_\x80a&\x19\x87_\x01Q\x86a,\x8FV[\x93P\x93P\x93P\x93P_a&C\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&a\x92\x91\x84\x91a$PV[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.H\x81RP\x90P_a&\xF7\x82a%hV[\x90P`@Q\x80``\x01`@R\x80\x87_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a']\x84\x84\x83a.\x98V[a\x14\xEBW\x81a'\x98W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a#\xB7W_\x82\x82\x81Q\x81\x10a'\xBBWa'\xBBa1\x85V[` \x02` \x01\x01Q\x90Pa'\xE4\x85a'\x10a'\xD6\x91\x90a?\x0BV[` \x83\x01Q\x90a'\x10a,&V[` \x90\x91\x01R`\x01\x01a'\x9FV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(%W_\x80\xFD[P\x91\x02\x04\x90V[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x14\xEBW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R_\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Q`@Q` \x01a)\xBC\x91\x90aBMV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10VV[_`@Q` \x01a*\x1F\x90a&W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a>LW_\x80\xFD[\x80Qa>Za7\x92\x82a7\x19V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a>xW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a>\xD2W\x80\x85\x8A\x03\x12\x15a>\x93W_\x80\xFD[a>\x9Ba5\x89V[\x85Qa>\xA6\x81a0\xDAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa>\xBF\x81a0\xDAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a>}V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\"\x97Wa\"\x97a>\xDEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a$\xD8`@\x83\x01\x84a2\x86V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_`\x15\x88Q` a?\x85\x82\x84\x87\x01\x83\x8E\x01a1\xB2V[\x89Q\x91\x85\x01\x91a?\x9A\x81\x85\x85\x01\x84\x8E\x01a1\xB2V[\x89Q\x92\x01\x91a?\xAE\x81\x85\x85\x01\x84\x8D\x01a1\xB2V[\x88Q\x92\x01\x91a?\xC2\x81\x85\x85\x01\x84\x8C\x01a1\xB2V[\x87Q\x92\x01\x91a?\xD6\x81\x85\x85\x01\x84\x8B\x01a1\xB2V[\x86Q\x92\x01\x91a?\xEA\x81\x85\x85\x01\x84\x8A\x01a1\xB2V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[_a\x01@a@-\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra@n`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra@\xA3\x81\x84\x01\x86a1\xD4V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%[\x81\x85a1\xD4V[_\x83Qa@\xC9\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xDD\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[_` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a9mW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aAIV[\x83\x81R\x82` \x82\x01R_\x82QaA\x86\x81`@\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[_\x80`@\x83\x85\x03\x12\x15aA\xA6W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a\"\x97Wa\"\x97a>\xDEV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aA\xE9WaA\xE9a>\xDEV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aB WaB a>\xDEV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aBEWaBEa>\xDEV[PP\x92\x91PPV[\x81Q_\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aBvW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aBZV[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aA\xE9WaA\xE9a>\xDEV[_a\xFF\xFF\x80\x83\x16\x81\x81\x03aB\xB3WaB\xB3a>\xDEV[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 uyp,x\xB4\x1D=j!\n\x95w\xB1(\xD7/\xB7\x90\xC9Cg\xB3\x8EY\x8E-G\x15\xEB\xA2\xE9dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xEEh\x0B\x16\x19\x1A\xDA&\x91Jc\x9D\xF0\x92T6\xF1\xE1\xFB;\x9B \xA0\xDD|w&\xFF?\x06<\x9AdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static DEPLOYDUTCHV3_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct DeployDutchV3(::ethers::contract::Contract); - impl ::core::clone::Clone for DeployDutchV3 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for DeployDutchV3 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for DeployDutchV3 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for DeployDutchV3 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(DeployDutchV3)) - .field(&self.address()) - .finish() - } - } - impl DeployDutchV3 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - DEPLOYDUTCHV3_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - DEPLOYDUTCHV3_ABI.clone(), - DEPLOYDUTCHV3_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `IS_SCRIPT` (0xf8ccbf47) function - pub fn is_script(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([248, 204, 191, 71], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `run` (0xc0406226) function - pub fn run( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([192, 64, 98, 38], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setUp` (0x0a9254e4) function - pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([10, 146, 84, 228], ()) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for DeployDutchV3 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "IS_SCRIPT", abi = "IS_SCRIPT()")] - pub struct IsScriptCall; - ///Container type for all input parameters for the `run` function with signature `run()` and selector `0xc0406226` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "run", abi = "run()")] - pub struct RunCall; - ///Container type for all input parameters for the `setUp` function with signature `setUp()` and selector `0x0a9254e4` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setUp", abi = "setUp()")] - pub struct SetUpCall; - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum DeployDutchV3Calls { - IsScript(IsScriptCall), - Run(RunCall), - SetUp(SetUpCall), - } - impl ::ethers::core::abi::AbiDecode for DeployDutchV3Calls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IsScript(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Run(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetUp(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for DeployDutchV3Calls { - fn encode(self) -> Vec { - match self { - Self::IsScript(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Run(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for DeployDutchV3Calls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::IsScript(element) => ::core::fmt::Display::fmt(element, f), - Self::Run(element) => ::core::fmt::Display::fmt(element, f), - Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for DeployDutchV3Calls { - fn from(value: IsScriptCall) -> Self { - Self::IsScript(value) - } - } - impl ::core::convert::From for DeployDutchV3Calls { - fn from(value: RunCall) -> Self { - Self::Run(value) - } - } - impl ::core::convert::From for DeployDutchV3Calls { - fn from(value: SetUpCall) -> Self { - Self::SetUp(value) - } - } - ///Container type for all return fields from the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsScriptReturn(pub bool); - ///Container type for all return fields from the `run` function with signature `run()` and selector `0xc0406226` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct RunReturn { - pub deployment: V3DutchOrderDeployment, - } - ///`V3DutchOrderDeployment(address,address)` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct V3DutchOrderDeployment { - pub permit_2: ::ethers::core::types::Address, - pub reactor: ::ethers::core::types::Address, - } -} diff --git a/crates/bindings-uniswapx/src/deploy_exclusive_dutch.rs b/crates/bindings-uniswapx/src/deploy_exclusive_dutch.rs deleted file mode 100644 index 695cb2c..0000000 --- a/crates/bindings-uniswapx/src/deploy_exclusive_dutch.rs +++ /dev/null @@ -1,373 +0,0 @@ -pub use deploy_exclusive_dutch::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod deploy_exclusive_dutch { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("run"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("run"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("deployment"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ExclusiveDutchDeployment", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setUp"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setUp"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static DEPLOYEXCLUSIVEDUTCH_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[Paiz\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x91W[_\x80\xFD[\0[a\0Ma\0\xB4V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x88V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x017W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01IW=_\x80>=_\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;_\x03\x90Pa\x01oWa\x01ma\x03\x86V[P[_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xA4\x90a\x05\x0CV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x01\xE5W=_\x80>=_\xFD[P\x90Pa\x02'`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[_\x80_\x1B`@Qa\x027\x90a\x05\x19V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02TW=_\x80>=_\xFD[P\x90Pa\x02\x96`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\xFDW_\x80\xFD[PZ\xF1\x15\x80\x15a\x03\x0FW=_\x80>=_\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[_\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aE\x85a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04\x08\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\x87V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x1FW_\x80\xFD[PZ\xF1\x15\x80\x15a\x041W=_\x80>=_\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xDC\x82\x82`@Q`$\x01a\x04a\x92\x91\x90a\x05\xBDV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04\xE0V[PPV[a\x04\xE9\x81a\x04\xECV[PV[\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[a1\xCD\x80a\x05\xF5\x839\x01\x90V[a\r\xC3\x80a7\xC2\x839\x01\x90V[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x05JW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05.V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x05\xB5`@\x83\x01\x84a\x05&V[\x94\x93PPPPV[`@\x81R_a\x05\xCF`@\x83\x01\x85a\x05&V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x001\xCD8\x03\x80b\x001\xCD\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa0\xBCb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x18*\x01Ra0\xBC_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a\"\xDBV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a#\x80V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a#\xBFV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a$WV[a\x06eV[a\0\xB4a\x01e6`\x04a$yV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a$WV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a$\xD8V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x8AV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a'\x96V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B;V[a\x04\x9F\x81a\x0B\x8AV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x8AV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga$\xD8V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B;V[a\x08d\x81a\x0B\x8AV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a'\xD2V[\x81\x01\x90a\nW\x91\x90a+HV[\x90Pa\nb\x81a\x0C\xD5V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\x8D\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a'\xD2V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FrV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B5\x92\x85\x92\x91\x90a\x12AV[P\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BZWa\x0BZa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0Bm\x81a\x12NV[a\x0Bw\x813a\x17+V[a\x0B\x81\x813a\x18(V[P`\x01\x01a\x0B?V[\x80Q_[\x81\x81\x10\x15a\x0C\xC4W_\x83\x82\x81Q\x81\x10a\x0B\xA9Wa\x0B\xA9a$\xD8V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C&W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xDDWa\x0B\xDDa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0C\x1D\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B~\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBEV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CnWa\x0Cna$\xD8V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xB2\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8EV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1B\xC5V[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r\x18W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08oW_[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xABW\x81`\xC0\x01Q\x81\x81Q\x81\x10a\rRWa\rRa$\xD8V[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\rtWa\rta$\xD8V[` \x02` \x01\x01Q` \x01Q\x14a\r\xB7W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\r/V[a\r\xF6`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0E8W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x0EM\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xABWa\x0E\xABa$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\x13W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xC9W\x90P[P\x91P_[\x81\x81\x10\x15a\x0FiWa\x0FD\x86\x82\x81Q\x81\x10a\x0F5Wa\x0F5a$\xD8V[` \x02` \x01\x01Q\x86\x86a\x1C\xD7V[\x83\x82\x81Q\x81\x10a\x0FVWa\x0FVa$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F\x18V[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R_\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/z` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919`@Q` \x01a\x11c\x93\x92\x91\x90a,\x16V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\x85\x83_\x01Qa\x1D\xA4V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q_\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xC0\x8B`\xC0\x01Qa\x1E=V[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06_\x84\x84\x84\x84Ba\x1E\xD8V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12nWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12\xC4\x90\x85\x90`\x04\x01a,XV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xDEW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13#\x91\x90\x81\x01\x90a,jV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x13:\x82\x84a-`V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13RWa\x13Ra$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBAW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13pW\x90P[P\x90P_[\x83\x81\x10\x15a\x14\nW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\xDDWa\x13\xDDa$\xD8V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xF7Wa\x13\xF7a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBFV[P_\x80_[\x84\x81\x10\x15a\x17\x1AW_\x87\x82\x81Q\x81\x10a\x14*Wa\x14*a$\xD8V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14\xE5W\x88\x81\x81Q\x81\x10a\x14PWa\x14Pa$\xD8V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\xDDW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x146V[P_\x80[\x88\x81\x10\x15a\x15\xA2W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x15\x08Wa\x15\x08a$\xD8V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x99W\x85\x15a\x15\x83W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\x92\x90\x84a-`V[\x92P`\x01\x96P[P`\x01\x01a\x14\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16\x1BW\x84\x15a\x16\x02W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16\x14\x90\x82a-`V[\x90P`\x01\x93P[\x80_\x03a\x16oW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x16}\x81`\x05a'\x10a\x1F\x82V[\x82` \x01Q\x11\x15a\x16\xF0W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17\x05Wa\x17\x05a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14\x0FV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17|W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xF8\x90\x84\x90\x86\x90`\x04\x01a-sV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18\x0EW_\x80\xFD[PZ\xFA\x15\x80\x15a\x18 W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xE7\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xF1\x85\x85a\x1F\xBCV[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a/\xFA\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a/\xCC`.\x919`@Q` \x01a\x1A\xE8\x94\x93\x92\x91\x90a-\xA1V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1BU\x96\x95\x94\x93\x92`\x04\x01a.)V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1BlW_\x80\xFD[PZ\xF1\x15\x80\x15a\x18 W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xA3Wa\x03L\x82\x82a\x1B\xC5V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a \x02V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1C\x1BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1CjWP\x83a\x1C\xCFV[\x82\x82\x11a\x1C\xA3W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\xB1WP\x82a\x1C\xCFV[B\x83\x10a\x1C\xBFWP\x83a\x1C\xCFV[a\x1C\xCC\x83\x83B\x88\x88a \xE9V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1DJ\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12$\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\\Wa\x1E\\a$\xABV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x86W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xC9W_a\x1E\xB7\x85\x83\x81Q\x81\x10a\x1E\xAAWa\x1E\xAAa$\xD8V[` \x02` \x01\x01Qa!\x03V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x8BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1E\xE3\x84\x84\x83a!yV[a\x1F{W\x81a\x1F\x1EW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a\x1FxW_\x82\x82\x81Q\x81\x10a\x1FAWa\x1FAa$\xD8V[` \x02` \x01\x01Q\x90Pa\x1Fj\x85a'\x10a\x1F\\\x91\x90a-`V[` \x83\x01Q\x90a'\x10a!\xC3V[` \x90\x91\x01R`\x01\x01a\x1F%V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1F\xB5W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F{W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_a \xF7\x86\x86\x86\x86\x86a\"\x05V[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12$\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a!\x9CWP\x82\x82\x11[\x80a\x1C\xCFWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xF6W_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a\"\x14WP\x80a \xFAV[_a\"\x1F\x87\x86a.\xE3V[\x90P_a\",\x88\x88a.\xE3V[\x90P_\x85\x85\x12\x15a\"]Wa\"M\x83\x83a\"F\x88\x8Aa.\xF6V[\x91\x90a\x1F\x82V[a\"V\x90a/\x1CV[\x90Pa\"oV[a\"l\x83\x83a\"F\x89\x89a.\xF6V[\x90P[a\"y\x81\x87a/RV[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a\x0B5W_\x80\xFD[_\x80\x83`\x1F\x84\x01\x12a\"\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\"\xEDW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x04W_\x80\xFD[a#\x10\x87\x83\x88\x01a\"\x86V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#%W_\x80\xFD[Pa#2\x86\x82\x87\x01a\"\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a#OW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#fW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a#\x91W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xA7W_\x80\xFD[a#\xB3\x85\x82\x86\x01a#?V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a#\xD2W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE9W_\x80\xFD[a#\xF5\x88\x83\x89\x01a#?V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\rW_\x80\xFD[Pa$\x1A\x87\x82\x88\x01a\"\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a$R\x81a$&V[\x91\x90PV[_` \x82\x84\x03\x12\x15a$gW_\x80\xFD[\x815a$r\x81a$&V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a$\x89W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x9FW_\x80\xFD[a\x1C\xCF\x84\x82\x85\x01a\"\x86V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a%\x1FW\x81\x81\x01Q\x83\x82\x01R` \x01a%\x07V[PP_\x91\x01RV[_\x81Q\x80\x84Ra%>\x81` \x86\x01` \x86\x01a%\x05V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a%\xCEW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a%\x83V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&La\x01\xA0\x85\x01\x82a%'V[\x90P` \x83\x01Qa&\x8A` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra&\xA2\x82\x82a%pV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra&\xBC\x82\x82a%'V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a'FW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'4\x86\x83Qa%\xD9V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a&\xFAV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'\xC8W_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\x05W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\x1FW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"\xD4W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xE9Wa(\xE9a$\xABV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\x1AWa)\x1Aa$\xABV[a)K` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(\xA2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)_W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a)\x8BW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a)\xAFWa)\xAFa$\xABV[\x81`@R\x82\x93P\x845\x91Pa)\xC3\x82a$&V[\x90\x82R` \x84\x015\x90a)\xD5\x82a$&V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa)\xFF\x82a$&V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\x18W_\x80\xFD[Pa*%\x85\x82\x86\x01a(\xF1V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a*BW_\x80\xFD[a*Ja(3V[\x90P\x815a*W\x81a$&V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*\x8EWa*\x8Ea$\xABV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a*\xA7W_\x80\xFD[\x815` a*\xBCa*\xB7\x83a*uV[a(\xA2V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a*\xDAW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+=W`\x80\x81\x89\x03\x12\x15a*\xF5W_\x80\xFD[a*\xFDa(\\V[\x815a+\x08\x81a$&V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a++\x81a$&V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a*\xDEV[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a+XW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a+oW_\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a+\x83W_\x80\xFD[a+\x8Ba(\x7FV[\x825\x82\x81\x11\x15a+\x99W_\x80\xFD[a+\xA5\x87\x82\x86\x01a){V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+\xC8``\x84\x01a$GV[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra+\xE4\x86`\xA0\x85\x01a*2V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a+\xFBW_\x80\xFD[a,\x07\x87\x82\x86\x01a*\x98V[`\xC0\x83\x01RP\x95\x94PPPPPV[_\x84Qa,'\x81\x84` \x89\x01a%\x05V[\x84Q\x90\x83\x01\x90a,;\x81\x83` \x89\x01a%\x05V[\x84Q\x91\x01\x90a,N\x81\x83` \x88\x01a%\x05V[\x01\x95\x94PPPPPV[` \x81R_a$r` \x83\x01\x84a%\xD9V[_` \x80\x83\x85\x03\x12\x15a,{W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,\x91W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xA1W_\x80\xFD[\x80Qa,\xAFa*\xB7\x82a*uV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a,\xCDW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-'W\x80\x85\x8A\x03\x12\x15a,\xE8W_\x80\xFD[a,\xF0a(3V[\x85Qa,\xFB\x81a$&V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\x14\x81a$&V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a,\xD2V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1C\xCF`@\x83\x01\x84a%\xD9V[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R_\x85Qa-\xD8\x81`\x1C\x85\x01` \x8A\x01a%\x05V[\x85Q\x90\x83\x01\x90a-\xEF\x81`\x1C\x84\x01` \x8A\x01a%\x05V[\x85Q\x91\x01\x90a.\x05\x81`\x1C\x84\x01` \x89\x01a%\x05V[\x84Q\x91\x01\x90a.\x1B\x81`\x1C\x84\x01` \x88\x01a%\x05V[\x01`\x1C\x01\x96\x95PPPPPPV[_a\x01@a.X\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra.\x99`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra.\xCE\x81\x84\x01\x86a%'V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"y\x81\x85a%'V[\x81\x81\x03\x81\x81\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\x15Wa/\x15a-3V[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a/LWa/La-3V[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a/qWa/qa-3V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 H3\xEBU\x835*\xC5\xCE\xDEc\"\x0C\x94\x147h\x99\x9E!#\xD94\x89\x9F=\xCB\xAC8\x03\xAFRdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\r\xA6\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cA\xD8\x8Di\x14a\0CW\x80cX]\xA6(\x14a\0lW\x80cvq\xD0{\x14a\0\x81W[_\x80\xFD[a\0Va\0Q6`\x04a\x04\xA8V[a\0\xC2V[`@Qa\0c\x91\x90a\x05\xDCV[`@Q\x80\x91\x03\x90\xF3[a\0\x7Fa\0z6`\x04a\x08\xC4V[a\x02\x18V[\0[a\0\x9Da\0\x8F6`\x04a\n*V[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R_\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAA\x92\x91`\x04\x01a\ndV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC1W_\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xD2WP`\x01[a\x02\x12W=\x80\x80\x15a\x01\xFFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xFE\xB5\x9B\x92\xB026\x10F\xE1\x83\xA9\x95\xBD\xE7X(\x86\xEC\x94\x98\x99\x0F{vt\xB9\xC2\x17\xF8\xB1kdsolcC\0\x08\x18\x003`@`\x80\x81R`\x04\x90\x816\x10\x15a\0\x15W`\0\x80\xFD[`\0\x90\x815`\xE0\x1C\x80c\rX\xB1\xDB\x14a\x12lW\x80c\x13|)\xFE\x14a\x10uW\x80c*-\x80\xD1\x14a\r\xB7W\x80c+g\xB5p\x14a\x0B\xDEW\x80c0\xF2\x8Bz\x14a\n\xDEW\x80c6D\xE5\x15\x14a\n\x9DW\x80c6\xC7\x85\x16\x14a\n(W\x80c?\xF9\xDC\xB1\x14a\t\xA8W\x80cO\xE0+D\x14a\t?W\x80ce\xD9r<\x14a\x07\xACW\x80c\x87Q|E\x14a\x06zW\x80c\x92}\xA1\x05\x14a\x05\xC3W\x80c\xCCS(\x7F\x14a\x04\xA3W\x80c\xED\xD9DK\x14a\x03:Wc\xFE\x8E\xC1\xA7\x14a\0\xC6W`\0\x80\xFD[4a\x036W`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x835\x81\x81\x11a\x032Wa\x01\x14\x906\x90\x86\x01a\x16KV[`$5\x82\x81\x11a\x03.Wa\x01+\x906\x90\x87\x01a\x16\x1AV[a\x013a\x14\xE6V[\x91`\x845\x85\x81\x11a\x03*Wa\x01K\x906\x90\x8A\x01a\x15\xC1V[\x98\x90\x95`\xA45\x90\x81\x11a\x03&Wa\x01d\x916\x91\x01a\x15\xC1V[\x96\x90\x95\x81Q\x90a\x01s\x82a\x13\xFFV[`k\x82R\x7FPermitBatchWitnessTransferFrom(T` \x83\x01R\x7FokenPermissions[] permitted,addr\x83\x83\x01R\x7Fess spender,uint256 nonce,uint25``\x83\x01R\x7F6 deadline,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x82Q\x9A\x8B\x91\x81a\x02\"` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8A\x81R\x03\x99a\x02[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x9B\x8C\x81\x01\x83R\x82a\x147V[Q\x90 \x90\x85QQa\x02k\x81a\x1E\xBBV[\x90\x8A[\x81\x81\x10a\x02\xF9WPPa\x02\xF6\x99\x9Aa\x02\xED\x91\x83Qa\x02\xA0\x81a\x02\x94` \x82\x01\x80\x95a\x1FfV[\x03\x84\x81\x01\x83R\x82a\x147V[Q\x90 ` \x89\x81\x01Q\x85\x8B\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`d5`\xC0\x84\x01R\x82`\xE0\x81\x01[\x03\x90\x81\x01\x83R\x82a\x147V[Q\x90 \x93a\x1C\xF7V[\x80\xF3[\x80a\x03\x11a\x03\x0Ba\x03!\x93\x8CQa\x17^V[Qa TV[a\x03\x1B\x82\x86a\x17^V[Ra\x1F\nV[a\x02nV[\x88\x80\xFD[\x87\x80\xFD[\x84\x80\xFD[\x83\x80\xFD[P\x80\xFD[P\x914a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x805\x82\x81\x11a\x032Wa\x03\x8B\x906\x90\x83\x01a\x16KV[`$5\x83\x81\x11a\x03.Wa\x03\xA2\x906\x90\x84\x01a\x16\x1AV[\x93\x90\x92a\x03\xADa\x14\xE6V[\x91`d5\x90\x81\x11a\x04\x9FWa\x03\xC4\x916\x91\x01a\x15\xC1V[\x94\x90\x93\x83QQ\x97a\x03\xD4\x89a\x1E\xBBV[\x98\x88[\x81\x81\x10a\x04}WPPa\x02\xF6\x97\x98\x81Qa\x04%\x81a\x03\xF9` \x82\x01\x80\x95a\x1FfV[\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x01\x83R\x82a\x147V[Q\x90 ` \x86\x01Q\x82\x87\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\xFC\xF3_Z\xC6\xA2\xC2\x88h\xDCD\xC3\x02\x16dp&b9\x19_\x02\xB0\xEE@\x834\x82\x933\xB7f\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x02\xED\x81a\x14\x1BV[\x80\x8Ba\x03\x1B\x82a\x04\x94a\x03\x0Ba\x04\x9A\x96\x8DQa\x17^V[\x92a\x17^V[a\x03\xD7V[\x86\x80\xFD[P\x824a\x05\xBFW` \x90\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x03.Wa\x04\xF4\x916\x91\x01a\x16\x1AV[\x92\x90\x91\x84[\x84\x81\x10a\x05\x04W\x85\x80\xF3[\x80a\x05\x1Aa\x05\x15`\x01\x93\x88\x88a\x19lV[a\x19|V[a\x05/\x84a\x05)\x84\x8A\x8Aa\x19lV[\x01a\x19|V[3\x89R\x83\x85R\x85\x89 \x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x92\x83\x8BR\x86R\x86\x8A \x91\x16\x90\x81\x8AR\x85R\x85\x89 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81T\x16\x90U\x85Q\x91\x82R\x84\x82\x01R\x7F\x89\xB1\xAD\xD1^\xFFV\xB3\xDF\xE2\x99\xAD\x94\xE0\x1F+R\xFB\xCB\x80\xAE\x1A;\xAE\xA6\xAE\x8C\x04\xCB+\x98\xA4\x853\x92\xA2\x01a\x04\xF9V[\x82\x80\xFD[P4a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06v\x81a\x05\xFFa\x14\xA0V[\x93a\x06\x08a\x14\xC3V[a\x06\x10a\x14\xE6V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16\x83R`\x01` \x90\x81R\x84\x84 \x92\x88\x16\x84R\x91\x82R\x83\x83 \x90\x87\x16\x83R\x81R\x91\x90 T\x92Q\x93\x83\x16\x84R`\xA0\x83\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x84\x01R`\xD0\x91\x90\x91\x1C`@\x83\x01R\x81\x90``\x82\x01\x90V[\x03\x90\xF3[P4a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06\xB2a\x14\xA0V[\x90a\x06\xBBa\x14\xC3V[\x91a\x06\xC4a\x14\xE6V[e\xFF\xFF\xFF\xFF\xFF\xFF\x92`d5\x84\x81\x16\x90\x81\x81\x03a\x03*Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x7F\xDA\x9F\xA7\xC1\xB0\x04\x02\xC1}\x01a\xB2I\xB1\xAB\x8B\xBE\xC0G\xC5\xA5\"\x07\xB9\xC1\x12\xDE\xFF\xD8\x17\x03k\x943\x8AR`\x01` R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x8B \x98s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x94\x16\x99\x8A\x8DR` R\x83\x87\x8D \x9B\x16\x9A\x8B\x8DR` R\x86\x8C \x94\x86\x15`\0\x14a\x07\xA4WPB\x16\x92[\x84T\x92\x16\x97\x88\x93`\xA0\x1B\x16\x91\x16\x17\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA4\x80\xF3[\x90P\x92a\x07\x83V[P\x824a\x05\xBFW``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x07\xE5a\x14\xA0V[\x90a\x07\xEEa\x14\xC3V[\x92e\xFF\xFF\xFF\xFF\xFF\xFF`D5\x81\x81\x16\x93\x90\x84\x81\x03a\x03*W3\x88R` \x91`\x01\x83R\x84\x89 \x96s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x97\x88\x8BR\x84R\x85\x8A \x98\x16\x97\x88\x8AR\x83R\x84\x89 T`\xD0\x1C\x93\x84\x87\x11\x15a\t\x17Wa\xFF\xFF\x90\x85\x84\x03\x16\x11a\x08\xF0WP\x90\x7FU\xEB\x90\xD8\x10\xE1p\x0B5\xA8\xE7\xE2S\x95\xFF\x7F+\"Y\xAB\xD7A\\\xA2(M\xFB\x1C$d\x18\xF3\x93\x92\x913\x89R`\x01\x82R\x83\x89 \x87\x8AR\x82R\x83\x89 \x88\x8AR\x82R\x83\x89 \x90y\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83T\x92`\xD0\x1B\x16\x91\x16\x17\x90U\x82Q\x94\x85R\x84\x01R3\x92\xA4\x80\xF3[\x84Q\x7F$\xD3Z&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P4a\x036W\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W\x80` \x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\x8Fa\x14\xA0V[\x16\x81R\x80\x84R\x81\x81 `$5\x82R\x84R T\x90Q\x90\x81R\xF3[P\x824a\x05\xBFW\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFW\x7F7\x04\x90/\x967f\xA4\xE5a\xBB\xAA\xB6\xE6\xCD\xC1\xB1\xDD\x12\xF6\xE9\xE9\x96H\xDA\x88C\xB3\xF4k\x91\x8D\x905\x91`$53\x85R\x84` R\x81\x85 \x84\x86R` R\x81\x85 \x81\x81T\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA2\x80\xF3[\x824a\n\x9AW`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\n\x9AWa\n`a\x14\xA0V[a\nha\x14\xC3V[a\npa\x14\xE6V[`d5\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x83\x03a\x03.Wa\x02\xF6\x93a\x17\xA1V[\x80\xFD[P4a\x036W\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W` \x90a\n\xD7a\x1B\x1EV[\x90Q\x90\x81R\xF3[P\x82\x904a\x05\xBFWa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x0B\x1A6a\x15*V[\x90\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x0BLa\x14xV[\x91`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\xDAWa\x02\xF6\x94a\x0Bo\x916\x91\x01a\x15\xC1V[\x93\x90\x92a\x0B|\x83Qa TV[` \x84\x01Q\x82\x85\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\x93\x9C!\xA4\x8A\x8D\xBE:\x9A$\x04\xA1\xD4f\x91\xE4\xD3\x9Fe\x83\xD6\xECk5qF\x04\xC9\x86\xD8\x01\x06\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x0B\xD1\x81a\x14\x1BV[Q\x90 \x91a\x1C%V[\x85\x80\xFD[P\x914a\x036Wa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x0C\x18a\x14\xA0V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC6\x01`\xC0\x81\x12a\x032W`\x80\x85Q\x91a\x0CQ\x83a\x13\xE3V[\x12a\x032W\x84Q\x90a\x0Cb\x82a\x13\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91`$5\x83\x81\x16\x81\x03a\x04\x9FW\x81R`D5\x83\x81\x16\x81\x03a\x04\x9FW` \x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF`d5\x81\x81\x16\x81\x03a\x03*W\x88\x83\x01R`\x845\x90\x81\x16\x81\x03a\x04\x9FW``\x82\x01R\x81R`\xA45\x93\x82\x85\x16\x85\x03a\x0B\xDAW` \x82\x01\x94\x85R`\xC45\x90\x87\x83\x01\x82\x81R`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x03&Wa\x0C\xFE\x906\x90\x84\x01a\x15\xC1V[\x92\x90\x93\x80B\x11a\r\x88WPP\x91\x85\x91a\rxa\x02\xF6\x99\x9Aa\r~\x95a\r#\x88Qa\x1F\xBEV[\x90\x89\x8CQ\x16\x90Q\x90\x83Q\x92` \x84\x01\x94\x7F\xF3\x84\x1C\xD1\xFF\0\x85\x02jc'\xB6 \xB6y\x97\xCE@\xF2\x82\xC8\x8A\x8E\x90ZzV&\xE3\x10\xF3\xD0\x86R\x84\x01R``\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x90 a\x1B\xD9V[\x91a \xC7V[Q\x92Q\x16\x91a\x19\x9DV[`$\x92P\x8AQ\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[P\x914a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x93\x81\x856\x01\x12a\x032Wa\r\xF3a\x14\xA0V[\x92`$\x90\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x85\x11a\x03*W\x85\x90\x856\x03\x01\x12a\x04\x9FW\x80Q\x97\x85\x89\x01\x89\x81\x10\x82\x82\x11\x17a\x10JW\x82R\x84\x83\x015\x81\x81\x11a\x03&W\x85\x01\x906`#\x83\x01\x12\x15a\x03&W\x83\x82\x015\x91a\x0EP\x83a\x15\xEFV[\x90a\x0E]\x85Q\x92\x83a\x147V[\x83\x82R` \x93\x87\x85\x84\x01\x91`\x07\x1B\x83\x01\x01\x916\x83\x11a\x10FW\x88\x01\x90[\x82\x82\x10a\x0F\xE9WPPP\x8AR`Da\x0E\x93\x86\x88\x01a\x15\tV[\x96\x83\x8C\x01\x97\x88R\x015\x94\x83\x8B\x01\x91\x86\x83R`D5\x90\x81\x11a\x0F\xE5Wa\x0E\xBB\x906\x90\x87\x01a\x15\xC1V[\x95\x90\x96\x80B\x11a\x0F\xBAWPPP\x89\x98\x99QQa\x0E\xD6\x81a\x1E\xBBV[\x90\x8B[\x81\x81\x10a\x0F\x97WPP\x92\x88\x94\x92a\rx\x92a\x0Fd\x97\x95\x83Qa\x0F\x02\x81a\x03\xF9\x86\x82\x01\x80\x95a\x1FfV[Q\x90 \x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x8B\x8BQ\x16\x91Q\x92\x85Q\x94\x85\x01\x95\x7F\xAF\x1B\r0\xD2\xCA\xB08\x0Eh\xF0h\x90\x07\xE3%I\x93\xC5\x96\xF2\xFD\xD0\xAA\xA7\xF4\xD0OyD\x08c\x87R\x85\x01R\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x16\x90\x82QQ\x92\x84[\x84\x81\x10a\x0FxW\x85\x80\xF3[\x80a\x0F\x91\x85\x85a\x0F\x8B`\x01\x95\x87Qa\x17^V[Qa\x19\x9DV[\x01a\x0FmV[\x80a\x03\x11a\x0F\xAC\x8E\x9F\x9E\x93a\x0F\xB2\x94Qa\x17^V[Qa\x1F\xBEV[\x9B\x9A\x9Ba\x0E\xD9V[\x85Q\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[\x8A\x80\xFD[`\x80\x826\x03\x12a\x10FW\x85`\x80\x91\x88Qa\x10\x02\x81a\x13\x98V[a\x10\x0B\x85a\x15\tV[\x81Ra\x10\x18\x83\x86\x01a\x15\tV[\x83\x82\x01Ra\x10'\x8A\x86\x01a\x16\x07V[\x8A\x82\x01R\x8Da\x107\x81\x87\x01a\x16\x07V[\x90\x82\x01R\x81R\x01\x91\x01\x90a\x0EzV[\x8C\x80\xFD[\x84\x89`A\x86\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83RR\xFD[P\x824a\x05\xBFWa\x01@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x10\xB06a\x15*V[\x91\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x10\xE2a\x14xV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90a\x01\x045\x85\x81\x11a\x04\x9FWa\x11\x05\x906\x90\x86\x01a\x15\xC1V[\x90\x93a\x01$5\x96\x87\x11a\x03*Wa\x11%a\x0B\xD1\x96a\x02\xF6\x986\x91\x01a\x15\xC1V[\x96\x90\x95\x82Q\x90a\x114\x82a\x13\xFFV[`d\x82R\x7FPermitWitnessTransferFrom(TokenP` \x83\x01R\x7Fermissions permitted,address spe\x84\x83\x01R\x7Fnder,uint256 nonce,uint256 deadl``\x83\x01R\x7Fine,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x83Q\x94\x85\x91\x81a\x11\xE3` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8B\x81R\x03\x93a\x12\x1C\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x95\x86\x81\x01\x83R\x82a\x147V[Q\x90 \x92a\x12*\x86Qa TV[` \x87\x81\x01Q\x85\x89\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`\xE45`\xC0\x84\x01R\x82`\xE0\x81\x01a\x02\xE1V[P\x824a\x05\xBFW` \x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x0B\xDAW6`#\x83\x01\x12\x15a\x0B\xDAW\x81\x015\x92\x83\x11a\x03.W`$\x90`\x076\x83\x86\x83\x1B\x84\x01\x01\x11a\x04\x9FW\x86[\x85\x81\x10a\x12\xE5W\x87\x80\xF3[\x80\x82\x1B\x83\x01\x90`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\x836\x03\x01\x12a\x03&Wa\x13\x92\x88\x87`\x01\x94``\x83Qa\x13,\x81a\x13\x98V[a\x13h`\x84a\x13<\x8D\x86\x01a\x15\tV[\x94\x85\x84Ra\x13L`D\x82\x01a\x15\tV[\x80\x97\x85\x01Ra\x13]`d\x82\x01a\x15\tV[\x80\x98\x85\x01R\x01a\x15\tV[\x91\x82\x91\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x80\x80\x93\x16\x95\x16\x93\x16\x91\x16a\x17\xA1V[\x01a\x12\xDAV[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC45\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`\0\x80\xFD[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`D5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x01\x90`\x80\x82\x12a\x14\x9BW`@\x80Q\x90a\x15c\x82a\x13\xE3V[\x80\x82\x94\x12a\x14\x9BW\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W\x82R`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x81R`$5` \x82\x01R\x82R`D5` \x83\x01R`d5\x91\x01RV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x83\x81\x86\x01\x95\x01\x01\x11a\x14\x9BWV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x13\xB4W`\x05\x1B` \x01\x90V[5\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x80\x85\x01\x94\x84`\x06\x1B\x01\x01\x11a\x14\x9BWV[\x91\x90\x91``\x81\x84\x03\x12a\x14\x9BW`@\x80Q\x91a\x16f\x83a\x13\xE3V[\x82\x94\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x81\x11a\x14\x9BW\x83\x01\x82`\x1F\x82\x01\x12\x15a\x14\x9BW\x805a\x16\x93\x81a\x15\xEFV[\x92a\x16\xA0\x87Q\x94\x85a\x147V[\x81\x84R` \x94\x85\x80\x86\x01\x93`\x06\x1B\x85\x01\x01\x93\x81\x85\x11a\x14\x9BW\x90\x86\x89\x98\x97\x96\x95\x94\x93\x92\x01\x92[\x84\x84\x10a\x16\xE3WPPPPP\x85R\x80\x82\x015\x90\x85\x01R\x015\x91\x01RV[\x90\x91\x92\x93\x94\x95\x96\x97\x84\x83\x03\x12a\x14\x9BW\x88Q\x90\x89\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17a\x170W\x8A\x92\x89\x92\x84Ra\x17\x14\x87a\x15\tV[\x81R\x82\x87\x015\x83\x82\x01R\x81R\x01\x93\x01\x91\x90\x88\x97\x96\x95\x94\x93a\x16\xC6V[`$`\0\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`A`\x04R\xFD[\x80Q\x82\x10\x15a\x17rW` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x92\x91\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@`\0\x82\x84\x16\x81R`\x01` R\x82\x82\x82 \x96\x16\x95\x86\x82R` R\x81\x81 3\x82R` R \x94\x85T\x95e\xFF\xFF\xFF\xFF\xFF\xFF\x87`\xA0\x1C\x16\x80B\x11a\x18\x84WP\x82\x87\x16\x96\x83\x88\x03a\x18\x12W[PPa\x18\x10\x95P\x16\x92a\x18\xB5V[V[\x87\x84\x84\x16\x11`\0\x14a\x18OW`$\x88`@Q\x90\x7F\xF9o\xB0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x84a\x18\x10\x9A\x03\x16\x91\x16\x17\x90U8\x80a\x18\x02V[`$\x90`@Q\x90\x7F\xD8\x1B/.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90`\0`d\x92` \x95\x82\x95`@Q\x94\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\x04\x86\x01R`$\x85\x01R`D\x84\x01RZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x15a\x19\x0EWV[`d`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R\xFD[\x91\x90\x81\x10\x15a\x17rW`\x06\x1B\x01\x90V[5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x90V[\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81``\x84\x01Q\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x85Q\x16\x94\x82` \x82\x01Q\x16\x92\x80\x86`@\x80\x94\x01Q\x16\x95\x16\x95`\0\x91\x87\x83R`\x01` R\x83\x83 \x89\x84R` R\x83\x83 \x99\x16\x98\x89\x83R` R\x82\x82 \x91\x84\x83T`\xD0\x1C\x03a\x1A\xF5W\x91\x85a\x1A\xCE\x94\x92\x7F\xC6\xA3w\xBF\xC4\xEB\x12\0$\xA8\xAC\x08\xEE\xF2\x05\xBE\x16\xB8\x17\x02\x08\x12\xC72#\xE8\x1D\x1B\xDB\x97\x08\xEC\x98\x97\x96\x94P\x87\x15`\0\x14a\x1A\xD3Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90B\x16[`\xA0\x1B\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01\x86\x01`\xD0\x1B\x16\x17\x17\x90UQ\x93\x84\x93\x84\x91`@\x91\x94\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF``\x85\x01\x96\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x80\x92\x16` \x85\x01R\x16\x91\x01RV[\x03\x90\xA4V[Py\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87a\x1A`V[`\x04\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x1BiW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x82R\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j`@\x82\x01RF``\x82\x01R0`\x80\x82\x01R`\x80\x81Ra\x1B\xD3\x81a\x13\xFFV[Q\x90 \x90V[a\x1B\xE1a\x1B\x1EV[\x90`@Q\x90` \x82\x01\x92\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84R`\"\x83\x01R`B\x82\x01R`B\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x92\x90\x93`\xA45\x93`@\x84\x01Q\x80B\x11a\x1C\xC6WP` \x84Q\x01Q\x80\x86\x11a\x1C\x95WP\x91\x85\x91a\rxa\x1Ce\x94a\x1C`` \x88\x01Q\x86a\x1EGV[a\x1B\xD9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91QQ\x16\x92`\x845\x91\x82\x16\x82\x03a\x14\x9BWa\x18\x10\x93a\x18\xB5V[`$\x90`@Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`$\x90`@Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x95\x90\x93\x95\x80QQ\x95`@\x92\x83\x83\x01Q\x80B\x11a\x1E\x17WP\x84\x88\x03a\x1D\xEEWa\x1D.\x91\x86\x91a\rx` \x9Ba\x1C`\x8D\x88\x01Q\x86a\x1EGV[`\0[\x86\x81\x10a\x1DBWPPPPPPPPV[a\x1DM\x81\x83Qa\x17^V[Q\x88a\x1DZ\x83\x87\x8Aa\x19lV[\x015\x90\x89\x81\x01Q\x80\x83\x11a\x1D\xBEWP\x91\x81\x88\x88\x88`\x01\x96\x85\x96a\x1D\x84W[PPPPPP\x01a\x1D1V[a\x1D\xB3\x95a\x1D\xAD\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x05\x15\x93Q\x16\x95a\x19lV[\x91a\x18\xB5V[\x808\x88\x88\x88\x83a\x1DxV[`$\x90\x86Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`\x04\x84Q\x7F\xFFc:8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`$\x90\x85Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\xFF\x83\x16\x1B\x92\x16`\0R`\0` R`@`\0 \x90`\x08\x1C`\0R` R`@`\0 \x81\x81T\x18\x80\x91U\x16\x15a\x1E\x91WV[`\x04`@Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90a\x1E\xC5\x82a\x15\xEFV[a\x1E\xD2`@Q\x91\x82a\x147V[\x82\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x1F\0\x82\x94a\x15\xEFV[\x01\x90` 6\x91\x017V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x1F7W`\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80Q` \x80\x92\x01\x91`\0[\x82\x81\x10a\x1F\x7FWPPPP\x90V[\x83Q\x85R\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x1FqV[\x90\x81Q\x91`\0[\x83\x81\x10a\x1F\xABWPP\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q\x81\x85\x01R\x01a\x1F\x9AV[`@Q` \x81\x01\x91\x7Febl\xADl\xB9d\x93\xBFo^\xBE\xA2\x87V\xC9f\xF0#\xAB\x9E\x8A\x83\xA7\x10\x18I\xD5W;6x\x83Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`@\x84\x01R` \x82\x01Q\x16``\x83\x01R``e\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82`@\x82\x01Q\x16`\x80\x85\x01R\x01Q\x16`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RQ\x90 \x90V[`@Q` \x80\x82\x01\x92\x7Fa\x83X\xAC=\xB8\xDC'O\x0C\xD8\x82\x9D\xA7\xE24\xBDH\xCDs\xC4\xA7@\xAE\xDE\x1A\xDE\xC9\x84m\x06\xA1\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16`@\x84\x01R\x01Q``\x82\x01R``\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x90\x82`@\x91\x03\x12a\x14\x9BW` \x825\x92\x015\x90V[`\0\x84;a\".WP`A\x82\x03a!\xACWa \xE4\x82\x82\x01\x82a \xB1V[\x93\x90\x92`@\x10\x15a\x17rW` \x93`\0\x93`\xFF`@`\x80\x95\x015`\xF8\x1C[`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a!\xA0Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80`\0Q\x16\x91\x82\x15a!vW\x16\x03a!LWV[`\x04`@Q\x7F\x81^\x1Dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`\x04`@Q\x7F\x8B\xAAW\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`@Q=`\0\x82>=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 \xD8\xE67\xD0\xBF\xDA1\x19R3\x88\xA7\xAC\x0F\x86.\xD5o}\xBF\xBE\xBE\xD7\xD2-\xFB\x8C\xAE`\x8D\0|dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static DEPLOYEXCLUSIVEDUTCH_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x91W[_\x80\xFD[\0[a\0Ma\0\xB4V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x88V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x017W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01IW=_\x80>=_\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;_\x03\x90Pa\x01oWa\x01ma\x03\x86V[P[_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xA4\x90a\x05\x0CV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x01\xE5W=_\x80>=_\xFD[P\x90Pa\x02'`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[_\x80_\x1B`@Qa\x027\x90a\x05\x19V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02TW=_\x80>=_\xFD[P\x90Pa\x02\x96`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\xFDW_\x80\xFD[PZ\xF1\x15\x80\x15a\x03\x0FW=_\x80>=_\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[_\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aE\x85a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04\x08\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\x87V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x1FW_\x80\xFD[PZ\xF1\x15\x80\x15a\x041W=_\x80>=_\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xDC\x82\x82`@Q`$\x01a\x04a\x92\x91\x90a\x05\xBDV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04\xE0V[PPV[a\x04\xE9\x81a\x04\xECV[PV[\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[a1\xCD\x80a\x05\xF5\x839\x01\x90V[a\r\xC3\x80a7\xC2\x839\x01\x90V[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x05JW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05.V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x05\xB5`@\x83\x01\x84a\x05&V[\x94\x93PPPPV[`@\x81R_a\x05\xCF`@\x83\x01\x85a\x05&V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x001\xCD8\x03\x80b\x001\xCD\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa0\xBCb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x18*\x01Ra0\xBC_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a\"\xDBV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a#\x80V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a#\xBFV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a$WV[a\x06eV[a\0\xB4a\x01e6`\x04a$yV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a$WV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a$\xD8V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x8AV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a'\x96V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B;V[a\x04\x9F\x81a\x0B\x8AV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x8AV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga$\xD8V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B;V[a\x08d\x81a\x0B\x8AV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a'\xD2V[\x81\x01\x90a\nW\x91\x90a+HV[\x90Pa\nb\x81a\x0C\xD5V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\x8D\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a'\xD2V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FrV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B5\x92\x85\x92\x91\x90a\x12AV[P\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BZWa\x0BZa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0Bm\x81a\x12NV[a\x0Bw\x813a\x17+V[a\x0B\x81\x813a\x18(V[P`\x01\x01a\x0B?V[\x80Q_[\x81\x81\x10\x15a\x0C\xC4W_\x83\x82\x81Q\x81\x10a\x0B\xA9Wa\x0B\xA9a$\xD8V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C&W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xDDWa\x0B\xDDa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0C\x1D\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B~\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBEV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CnWa\x0Cna$\xD8V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xB2\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8EV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1B\xC5V[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r\x18W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08oW_[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xABW\x81`\xC0\x01Q\x81\x81Q\x81\x10a\rRWa\rRa$\xD8V[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\rtWa\rta$\xD8V[` \x02` \x01\x01Q` \x01Q\x14a\r\xB7W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\r/V[a\r\xF6`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0E8W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x0EM\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xABWa\x0E\xABa$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\x13W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xC9W\x90P[P\x91P_[\x81\x81\x10\x15a\x0FiWa\x0FD\x86\x82\x81Q\x81\x10a\x0F5Wa\x0F5a$\xD8V[` \x02` \x01\x01Q\x86\x86a\x1C\xD7V[\x83\x82\x81Q\x81\x10a\x0FVWa\x0FVa$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F\x18V[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R_\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/z` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919`@Q` \x01a\x11c\x93\x92\x91\x90a,\x16V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\x85\x83_\x01Qa\x1D\xA4V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q_\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xC0\x8B`\xC0\x01Qa\x1E=V[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06_\x84\x84\x84\x84Ba\x1E\xD8V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12nWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12\xC4\x90\x85\x90`\x04\x01a,XV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xDEW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13#\x91\x90\x81\x01\x90a,jV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x13:\x82\x84a-`V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13RWa\x13Ra$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBAW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13pW\x90P[P\x90P_[\x83\x81\x10\x15a\x14\nW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\xDDWa\x13\xDDa$\xD8V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xF7Wa\x13\xF7a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBFV[P_\x80_[\x84\x81\x10\x15a\x17\x1AW_\x87\x82\x81Q\x81\x10a\x14*Wa\x14*a$\xD8V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14\xE5W\x88\x81\x81Q\x81\x10a\x14PWa\x14Pa$\xD8V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\xDDW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x146V[P_\x80[\x88\x81\x10\x15a\x15\xA2W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x15\x08Wa\x15\x08a$\xD8V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x99W\x85\x15a\x15\x83W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\x92\x90\x84a-`V[\x92P`\x01\x96P[P`\x01\x01a\x14\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16\x1BW\x84\x15a\x16\x02W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16\x14\x90\x82a-`V[\x90P`\x01\x93P[\x80_\x03a\x16oW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x16}\x81`\x05a'\x10a\x1F\x82V[\x82` \x01Q\x11\x15a\x16\xF0W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17\x05Wa\x17\x05a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14\x0FV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17|W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xF8\x90\x84\x90\x86\x90`\x04\x01a-sV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18\x0EW_\x80\xFD[PZ\xFA\x15\x80\x15a\x18 W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xE7\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xF1\x85\x85a\x1F\xBCV[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a/\xFA\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a/\xCC`.\x919`@Q` \x01a\x1A\xE8\x94\x93\x92\x91\x90a-\xA1V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1BU\x96\x95\x94\x93\x92`\x04\x01a.)V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1BlW_\x80\xFD[PZ\xF1\x15\x80\x15a\x18 W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xA3Wa\x03L\x82\x82a\x1B\xC5V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a \x02V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1C\x1BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1CjWP\x83a\x1C\xCFV[\x82\x82\x11a\x1C\xA3W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\xB1WP\x82a\x1C\xCFV[B\x83\x10a\x1C\xBFWP\x83a\x1C\xCFV[a\x1C\xCC\x83\x83B\x88\x88a \xE9V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1DJ\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12$\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\\Wa\x1E\\a$\xABV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x86W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xC9W_a\x1E\xB7\x85\x83\x81Q\x81\x10a\x1E\xAAWa\x1E\xAAa$\xD8V[` \x02` \x01\x01Qa!\x03V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x8BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1E\xE3\x84\x84\x83a!yV[a\x1F{W\x81a\x1F\x1EW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a\x1FxW_\x82\x82\x81Q\x81\x10a\x1FAWa\x1FAa$\xD8V[` \x02` \x01\x01Q\x90Pa\x1Fj\x85a'\x10a\x1F\\\x91\x90a-`V[` \x83\x01Q\x90a'\x10a!\xC3V[` \x90\x91\x01R`\x01\x01a\x1F%V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1F\xB5W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F{W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_a \xF7\x86\x86\x86\x86\x86a\"\x05V[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12$\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a!\x9CWP\x82\x82\x11[\x80a\x1C\xCFWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xF6W_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a\"\x14WP\x80a \xFAV[_a\"\x1F\x87\x86a.\xE3V[\x90P_a\",\x88\x88a.\xE3V[\x90P_\x85\x85\x12\x15a\"]Wa\"M\x83\x83a\"F\x88\x8Aa.\xF6V[\x91\x90a\x1F\x82V[a\"V\x90a/\x1CV[\x90Pa\"oV[a\"l\x83\x83a\"F\x89\x89a.\xF6V[\x90P[a\"y\x81\x87a/RV[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a\x0B5W_\x80\xFD[_\x80\x83`\x1F\x84\x01\x12a\"\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\"\xEDW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x04W_\x80\xFD[a#\x10\x87\x83\x88\x01a\"\x86V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#%W_\x80\xFD[Pa#2\x86\x82\x87\x01a\"\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a#OW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#fW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a#\x91W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xA7W_\x80\xFD[a#\xB3\x85\x82\x86\x01a#?V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a#\xD2W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE9W_\x80\xFD[a#\xF5\x88\x83\x89\x01a#?V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\rW_\x80\xFD[Pa$\x1A\x87\x82\x88\x01a\"\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a$R\x81a$&V[\x91\x90PV[_` \x82\x84\x03\x12\x15a$gW_\x80\xFD[\x815a$r\x81a$&V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a$\x89W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x9FW_\x80\xFD[a\x1C\xCF\x84\x82\x85\x01a\"\x86V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a%\x1FW\x81\x81\x01Q\x83\x82\x01R` \x01a%\x07V[PP_\x91\x01RV[_\x81Q\x80\x84Ra%>\x81` \x86\x01` \x86\x01a%\x05V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a%\xCEW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a%\x83V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&La\x01\xA0\x85\x01\x82a%'V[\x90P` \x83\x01Qa&\x8A` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra&\xA2\x82\x82a%pV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra&\xBC\x82\x82a%'V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a'FW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'4\x86\x83Qa%\xD9V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a&\xFAV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'\xC8W_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\x05W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\x1FW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"\xD4W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xE9Wa(\xE9a$\xABV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\x1AWa)\x1Aa$\xABV[a)K` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(\xA2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)_W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a)\x8BW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a)\xAFWa)\xAFa$\xABV[\x81`@R\x82\x93P\x845\x91Pa)\xC3\x82a$&V[\x90\x82R` \x84\x015\x90a)\xD5\x82a$&V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa)\xFF\x82a$&V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\x18W_\x80\xFD[Pa*%\x85\x82\x86\x01a(\xF1V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a*BW_\x80\xFD[a*Ja(3V[\x90P\x815a*W\x81a$&V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*\x8EWa*\x8Ea$\xABV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a*\xA7W_\x80\xFD[\x815` a*\xBCa*\xB7\x83a*uV[a(\xA2V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a*\xDAW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+=W`\x80\x81\x89\x03\x12\x15a*\xF5W_\x80\xFD[a*\xFDa(\\V[\x815a+\x08\x81a$&V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a++\x81a$&V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a*\xDEV[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a+XW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a+oW_\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a+\x83W_\x80\xFD[a+\x8Ba(\x7FV[\x825\x82\x81\x11\x15a+\x99W_\x80\xFD[a+\xA5\x87\x82\x86\x01a){V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+\xC8``\x84\x01a$GV[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra+\xE4\x86`\xA0\x85\x01a*2V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a+\xFBW_\x80\xFD[a,\x07\x87\x82\x86\x01a*\x98V[`\xC0\x83\x01RP\x95\x94PPPPPV[_\x84Qa,'\x81\x84` \x89\x01a%\x05V[\x84Q\x90\x83\x01\x90a,;\x81\x83` \x89\x01a%\x05V[\x84Q\x91\x01\x90a,N\x81\x83` \x88\x01a%\x05V[\x01\x95\x94PPPPPV[` \x81R_a$r` \x83\x01\x84a%\xD9V[_` \x80\x83\x85\x03\x12\x15a,{W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,\x91W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xA1W_\x80\xFD[\x80Qa,\xAFa*\xB7\x82a*uV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a,\xCDW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-'W\x80\x85\x8A\x03\x12\x15a,\xE8W_\x80\xFD[a,\xF0a(3V[\x85Qa,\xFB\x81a$&V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\x14\x81a$&V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a,\xD2V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1C\xCF`@\x83\x01\x84a%\xD9V[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R_\x85Qa-\xD8\x81`\x1C\x85\x01` \x8A\x01a%\x05V[\x85Q\x90\x83\x01\x90a-\xEF\x81`\x1C\x84\x01` \x8A\x01a%\x05V[\x85Q\x91\x01\x90a.\x05\x81`\x1C\x84\x01` \x89\x01a%\x05V[\x84Q\x91\x01\x90a.\x1B\x81`\x1C\x84\x01` \x88\x01a%\x05V[\x01`\x1C\x01\x96\x95PPPPPPV[_a\x01@a.X\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra.\x99`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra.\xCE\x81\x84\x01\x86a%'V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"y\x81\x85a%'V[\x81\x81\x03\x81\x81\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\x15Wa/\x15a-3V[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a/LWa/La-3V[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a/qWa/qa-3V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 H3\xEBU\x835*\xC5\xCE\xDEc\"\x0C\x94\x147h\x99\x9E!#\xD94\x89\x9F=\xCB\xAC8\x03\xAFRdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\r\xA6\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cA\xD8\x8Di\x14a\0CW\x80cX]\xA6(\x14a\0lW\x80cvq\xD0{\x14a\0\x81W[_\x80\xFD[a\0Va\0Q6`\x04a\x04\xA8V[a\0\xC2V[`@Qa\0c\x91\x90a\x05\xDCV[`@Q\x80\x91\x03\x90\xF3[a\0\x7Fa\0z6`\x04a\x08\xC4V[a\x02\x18V[\0[a\0\x9Da\0\x8F6`\x04a\n*V[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R_\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAA\x92\x91`\x04\x01a\ndV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC1W_\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xD2WP`\x01[a\x02\x12W=\x80\x80\x15a\x01\xFFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xFE\xB5\x9B\x92\xB026\x10F\xE1\x83\xA9\x95\xBD\xE7X(\x86\xEC\x94\x98\x99\x0F{vt\xB9\xC2\x17\xF8\xB1kdsolcC\0\x08\x18\x003`@`\x80\x81R`\x04\x90\x816\x10\x15a\0\x15W`\0\x80\xFD[`\0\x90\x815`\xE0\x1C\x80c\rX\xB1\xDB\x14a\x12lW\x80c\x13|)\xFE\x14a\x10uW\x80c*-\x80\xD1\x14a\r\xB7W\x80c+g\xB5p\x14a\x0B\xDEW\x80c0\xF2\x8Bz\x14a\n\xDEW\x80c6D\xE5\x15\x14a\n\x9DW\x80c6\xC7\x85\x16\x14a\n(W\x80c?\xF9\xDC\xB1\x14a\t\xA8W\x80cO\xE0+D\x14a\t?W\x80ce\xD9r<\x14a\x07\xACW\x80c\x87Q|E\x14a\x06zW\x80c\x92}\xA1\x05\x14a\x05\xC3W\x80c\xCCS(\x7F\x14a\x04\xA3W\x80c\xED\xD9DK\x14a\x03:Wc\xFE\x8E\xC1\xA7\x14a\0\xC6W`\0\x80\xFD[4a\x036W`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x835\x81\x81\x11a\x032Wa\x01\x14\x906\x90\x86\x01a\x16KV[`$5\x82\x81\x11a\x03.Wa\x01+\x906\x90\x87\x01a\x16\x1AV[a\x013a\x14\xE6V[\x91`\x845\x85\x81\x11a\x03*Wa\x01K\x906\x90\x8A\x01a\x15\xC1V[\x98\x90\x95`\xA45\x90\x81\x11a\x03&Wa\x01d\x916\x91\x01a\x15\xC1V[\x96\x90\x95\x81Q\x90a\x01s\x82a\x13\xFFV[`k\x82R\x7FPermitBatchWitnessTransferFrom(T` \x83\x01R\x7FokenPermissions[] permitted,addr\x83\x83\x01R\x7Fess spender,uint256 nonce,uint25``\x83\x01R\x7F6 deadline,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x82Q\x9A\x8B\x91\x81a\x02\"` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8A\x81R\x03\x99a\x02[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x9B\x8C\x81\x01\x83R\x82a\x147V[Q\x90 \x90\x85QQa\x02k\x81a\x1E\xBBV[\x90\x8A[\x81\x81\x10a\x02\xF9WPPa\x02\xF6\x99\x9Aa\x02\xED\x91\x83Qa\x02\xA0\x81a\x02\x94` \x82\x01\x80\x95a\x1FfV[\x03\x84\x81\x01\x83R\x82a\x147V[Q\x90 ` \x89\x81\x01Q\x85\x8B\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`d5`\xC0\x84\x01R\x82`\xE0\x81\x01[\x03\x90\x81\x01\x83R\x82a\x147V[Q\x90 \x93a\x1C\xF7V[\x80\xF3[\x80a\x03\x11a\x03\x0Ba\x03!\x93\x8CQa\x17^V[Qa TV[a\x03\x1B\x82\x86a\x17^V[Ra\x1F\nV[a\x02nV[\x88\x80\xFD[\x87\x80\xFD[\x84\x80\xFD[\x83\x80\xFD[P\x80\xFD[P\x914a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x805\x82\x81\x11a\x032Wa\x03\x8B\x906\x90\x83\x01a\x16KV[`$5\x83\x81\x11a\x03.Wa\x03\xA2\x906\x90\x84\x01a\x16\x1AV[\x93\x90\x92a\x03\xADa\x14\xE6V[\x91`d5\x90\x81\x11a\x04\x9FWa\x03\xC4\x916\x91\x01a\x15\xC1V[\x94\x90\x93\x83QQ\x97a\x03\xD4\x89a\x1E\xBBV[\x98\x88[\x81\x81\x10a\x04}WPPa\x02\xF6\x97\x98\x81Qa\x04%\x81a\x03\xF9` \x82\x01\x80\x95a\x1FfV[\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x01\x83R\x82a\x147V[Q\x90 ` \x86\x01Q\x82\x87\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\xFC\xF3_Z\xC6\xA2\xC2\x88h\xDCD\xC3\x02\x16dp&b9\x19_\x02\xB0\xEE@\x834\x82\x933\xB7f\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x02\xED\x81a\x14\x1BV[\x80\x8Ba\x03\x1B\x82a\x04\x94a\x03\x0Ba\x04\x9A\x96\x8DQa\x17^V[\x92a\x17^V[a\x03\xD7V[\x86\x80\xFD[P\x824a\x05\xBFW` \x90\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x03.Wa\x04\xF4\x916\x91\x01a\x16\x1AV[\x92\x90\x91\x84[\x84\x81\x10a\x05\x04W\x85\x80\xF3[\x80a\x05\x1Aa\x05\x15`\x01\x93\x88\x88a\x19lV[a\x19|V[a\x05/\x84a\x05)\x84\x8A\x8Aa\x19lV[\x01a\x19|V[3\x89R\x83\x85R\x85\x89 \x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x92\x83\x8BR\x86R\x86\x8A \x91\x16\x90\x81\x8AR\x85R\x85\x89 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81T\x16\x90U\x85Q\x91\x82R\x84\x82\x01R\x7F\x89\xB1\xAD\xD1^\xFFV\xB3\xDF\xE2\x99\xAD\x94\xE0\x1F+R\xFB\xCB\x80\xAE\x1A;\xAE\xA6\xAE\x8C\x04\xCB+\x98\xA4\x853\x92\xA2\x01a\x04\xF9V[\x82\x80\xFD[P4a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06v\x81a\x05\xFFa\x14\xA0V[\x93a\x06\x08a\x14\xC3V[a\x06\x10a\x14\xE6V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16\x83R`\x01` \x90\x81R\x84\x84 \x92\x88\x16\x84R\x91\x82R\x83\x83 \x90\x87\x16\x83R\x81R\x91\x90 T\x92Q\x93\x83\x16\x84R`\xA0\x83\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x84\x01R`\xD0\x91\x90\x91\x1C`@\x83\x01R\x81\x90``\x82\x01\x90V[\x03\x90\xF3[P4a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06\xB2a\x14\xA0V[\x90a\x06\xBBa\x14\xC3V[\x91a\x06\xC4a\x14\xE6V[e\xFF\xFF\xFF\xFF\xFF\xFF\x92`d5\x84\x81\x16\x90\x81\x81\x03a\x03*Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x7F\xDA\x9F\xA7\xC1\xB0\x04\x02\xC1}\x01a\xB2I\xB1\xAB\x8B\xBE\xC0G\xC5\xA5\"\x07\xB9\xC1\x12\xDE\xFF\xD8\x17\x03k\x943\x8AR`\x01` R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x8B \x98s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x94\x16\x99\x8A\x8DR` R\x83\x87\x8D \x9B\x16\x9A\x8B\x8DR` R\x86\x8C \x94\x86\x15`\0\x14a\x07\xA4WPB\x16\x92[\x84T\x92\x16\x97\x88\x93`\xA0\x1B\x16\x91\x16\x17\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA4\x80\xF3[\x90P\x92a\x07\x83V[P\x824a\x05\xBFW``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x07\xE5a\x14\xA0V[\x90a\x07\xEEa\x14\xC3V[\x92e\xFF\xFF\xFF\xFF\xFF\xFF`D5\x81\x81\x16\x93\x90\x84\x81\x03a\x03*W3\x88R` \x91`\x01\x83R\x84\x89 \x96s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x97\x88\x8BR\x84R\x85\x8A \x98\x16\x97\x88\x8AR\x83R\x84\x89 T`\xD0\x1C\x93\x84\x87\x11\x15a\t\x17Wa\xFF\xFF\x90\x85\x84\x03\x16\x11a\x08\xF0WP\x90\x7FU\xEB\x90\xD8\x10\xE1p\x0B5\xA8\xE7\xE2S\x95\xFF\x7F+\"Y\xAB\xD7A\\\xA2(M\xFB\x1C$d\x18\xF3\x93\x92\x913\x89R`\x01\x82R\x83\x89 \x87\x8AR\x82R\x83\x89 \x88\x8AR\x82R\x83\x89 \x90y\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83T\x92`\xD0\x1B\x16\x91\x16\x17\x90U\x82Q\x94\x85R\x84\x01R3\x92\xA4\x80\xF3[\x84Q\x7F$\xD3Z&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P4a\x036W\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W\x80` \x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\x8Fa\x14\xA0V[\x16\x81R\x80\x84R\x81\x81 `$5\x82R\x84R T\x90Q\x90\x81R\xF3[P\x824a\x05\xBFW\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFW\x7F7\x04\x90/\x967f\xA4\xE5a\xBB\xAA\xB6\xE6\xCD\xC1\xB1\xDD\x12\xF6\xE9\xE9\x96H\xDA\x88C\xB3\xF4k\x91\x8D\x905\x91`$53\x85R\x84` R\x81\x85 \x84\x86R` R\x81\x85 \x81\x81T\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA2\x80\xF3[\x824a\n\x9AW`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\n\x9AWa\n`a\x14\xA0V[a\nha\x14\xC3V[a\npa\x14\xE6V[`d5\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x83\x03a\x03.Wa\x02\xF6\x93a\x17\xA1V[\x80\xFD[P4a\x036W\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W` \x90a\n\xD7a\x1B\x1EV[\x90Q\x90\x81R\xF3[P\x82\x904a\x05\xBFWa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x0B\x1A6a\x15*V[\x90\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x0BLa\x14xV[\x91`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\xDAWa\x02\xF6\x94a\x0Bo\x916\x91\x01a\x15\xC1V[\x93\x90\x92a\x0B|\x83Qa TV[` \x84\x01Q\x82\x85\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\x93\x9C!\xA4\x8A\x8D\xBE:\x9A$\x04\xA1\xD4f\x91\xE4\xD3\x9Fe\x83\xD6\xECk5qF\x04\xC9\x86\xD8\x01\x06\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x0B\xD1\x81a\x14\x1BV[Q\x90 \x91a\x1C%V[\x85\x80\xFD[P\x914a\x036Wa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x0C\x18a\x14\xA0V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC6\x01`\xC0\x81\x12a\x032W`\x80\x85Q\x91a\x0CQ\x83a\x13\xE3V[\x12a\x032W\x84Q\x90a\x0Cb\x82a\x13\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91`$5\x83\x81\x16\x81\x03a\x04\x9FW\x81R`D5\x83\x81\x16\x81\x03a\x04\x9FW` \x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF`d5\x81\x81\x16\x81\x03a\x03*W\x88\x83\x01R`\x845\x90\x81\x16\x81\x03a\x04\x9FW``\x82\x01R\x81R`\xA45\x93\x82\x85\x16\x85\x03a\x0B\xDAW` \x82\x01\x94\x85R`\xC45\x90\x87\x83\x01\x82\x81R`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x03&Wa\x0C\xFE\x906\x90\x84\x01a\x15\xC1V[\x92\x90\x93\x80B\x11a\r\x88WPP\x91\x85\x91a\rxa\x02\xF6\x99\x9Aa\r~\x95a\r#\x88Qa\x1F\xBEV[\x90\x89\x8CQ\x16\x90Q\x90\x83Q\x92` \x84\x01\x94\x7F\xF3\x84\x1C\xD1\xFF\0\x85\x02jc'\xB6 \xB6y\x97\xCE@\xF2\x82\xC8\x8A\x8E\x90ZzV&\xE3\x10\xF3\xD0\x86R\x84\x01R``\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x90 a\x1B\xD9V[\x91a \xC7V[Q\x92Q\x16\x91a\x19\x9DV[`$\x92P\x8AQ\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[P\x914a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x93\x81\x856\x01\x12a\x032Wa\r\xF3a\x14\xA0V[\x92`$\x90\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x85\x11a\x03*W\x85\x90\x856\x03\x01\x12a\x04\x9FW\x80Q\x97\x85\x89\x01\x89\x81\x10\x82\x82\x11\x17a\x10JW\x82R\x84\x83\x015\x81\x81\x11a\x03&W\x85\x01\x906`#\x83\x01\x12\x15a\x03&W\x83\x82\x015\x91a\x0EP\x83a\x15\xEFV[\x90a\x0E]\x85Q\x92\x83a\x147V[\x83\x82R` \x93\x87\x85\x84\x01\x91`\x07\x1B\x83\x01\x01\x916\x83\x11a\x10FW\x88\x01\x90[\x82\x82\x10a\x0F\xE9WPPP\x8AR`Da\x0E\x93\x86\x88\x01a\x15\tV[\x96\x83\x8C\x01\x97\x88R\x015\x94\x83\x8B\x01\x91\x86\x83R`D5\x90\x81\x11a\x0F\xE5Wa\x0E\xBB\x906\x90\x87\x01a\x15\xC1V[\x95\x90\x96\x80B\x11a\x0F\xBAWPPP\x89\x98\x99QQa\x0E\xD6\x81a\x1E\xBBV[\x90\x8B[\x81\x81\x10a\x0F\x97WPP\x92\x88\x94\x92a\rx\x92a\x0Fd\x97\x95\x83Qa\x0F\x02\x81a\x03\xF9\x86\x82\x01\x80\x95a\x1FfV[Q\x90 \x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x8B\x8BQ\x16\x91Q\x92\x85Q\x94\x85\x01\x95\x7F\xAF\x1B\r0\xD2\xCA\xB08\x0Eh\xF0h\x90\x07\xE3%I\x93\xC5\x96\xF2\xFD\xD0\xAA\xA7\xF4\xD0OyD\x08c\x87R\x85\x01R\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x16\x90\x82QQ\x92\x84[\x84\x81\x10a\x0FxW\x85\x80\xF3[\x80a\x0F\x91\x85\x85a\x0F\x8B`\x01\x95\x87Qa\x17^V[Qa\x19\x9DV[\x01a\x0FmV[\x80a\x03\x11a\x0F\xAC\x8E\x9F\x9E\x93a\x0F\xB2\x94Qa\x17^V[Qa\x1F\xBEV[\x9B\x9A\x9Ba\x0E\xD9V[\x85Q\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[\x8A\x80\xFD[`\x80\x826\x03\x12a\x10FW\x85`\x80\x91\x88Qa\x10\x02\x81a\x13\x98V[a\x10\x0B\x85a\x15\tV[\x81Ra\x10\x18\x83\x86\x01a\x15\tV[\x83\x82\x01Ra\x10'\x8A\x86\x01a\x16\x07V[\x8A\x82\x01R\x8Da\x107\x81\x87\x01a\x16\x07V[\x90\x82\x01R\x81R\x01\x91\x01\x90a\x0EzV[\x8C\x80\xFD[\x84\x89`A\x86\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83RR\xFD[P\x824a\x05\xBFWa\x01@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x10\xB06a\x15*V[\x91\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x10\xE2a\x14xV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90a\x01\x045\x85\x81\x11a\x04\x9FWa\x11\x05\x906\x90\x86\x01a\x15\xC1V[\x90\x93a\x01$5\x96\x87\x11a\x03*Wa\x11%a\x0B\xD1\x96a\x02\xF6\x986\x91\x01a\x15\xC1V[\x96\x90\x95\x82Q\x90a\x114\x82a\x13\xFFV[`d\x82R\x7FPermitWitnessTransferFrom(TokenP` \x83\x01R\x7Fermissions permitted,address spe\x84\x83\x01R\x7Fnder,uint256 nonce,uint256 deadl``\x83\x01R\x7Fine,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x83Q\x94\x85\x91\x81a\x11\xE3` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8B\x81R\x03\x93a\x12\x1C\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x95\x86\x81\x01\x83R\x82a\x147V[Q\x90 \x92a\x12*\x86Qa TV[` \x87\x81\x01Q\x85\x89\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`\xE45`\xC0\x84\x01R\x82`\xE0\x81\x01a\x02\xE1V[P\x824a\x05\xBFW` \x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x0B\xDAW6`#\x83\x01\x12\x15a\x0B\xDAW\x81\x015\x92\x83\x11a\x03.W`$\x90`\x076\x83\x86\x83\x1B\x84\x01\x01\x11a\x04\x9FW\x86[\x85\x81\x10a\x12\xE5W\x87\x80\xF3[\x80\x82\x1B\x83\x01\x90`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\x836\x03\x01\x12a\x03&Wa\x13\x92\x88\x87`\x01\x94``\x83Qa\x13,\x81a\x13\x98V[a\x13h`\x84a\x13<\x8D\x86\x01a\x15\tV[\x94\x85\x84Ra\x13L`D\x82\x01a\x15\tV[\x80\x97\x85\x01Ra\x13]`d\x82\x01a\x15\tV[\x80\x98\x85\x01R\x01a\x15\tV[\x91\x82\x91\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x80\x80\x93\x16\x95\x16\x93\x16\x91\x16a\x17\xA1V[\x01a\x12\xDAV[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC45\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`\0\x80\xFD[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`D5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x01\x90`\x80\x82\x12a\x14\x9BW`@\x80Q\x90a\x15c\x82a\x13\xE3V[\x80\x82\x94\x12a\x14\x9BW\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W\x82R`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x81R`$5` \x82\x01R\x82R`D5` \x83\x01R`d5\x91\x01RV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x83\x81\x86\x01\x95\x01\x01\x11a\x14\x9BWV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x13\xB4W`\x05\x1B` \x01\x90V[5\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x80\x85\x01\x94\x84`\x06\x1B\x01\x01\x11a\x14\x9BWV[\x91\x90\x91``\x81\x84\x03\x12a\x14\x9BW`@\x80Q\x91a\x16f\x83a\x13\xE3V[\x82\x94\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x81\x11a\x14\x9BW\x83\x01\x82`\x1F\x82\x01\x12\x15a\x14\x9BW\x805a\x16\x93\x81a\x15\xEFV[\x92a\x16\xA0\x87Q\x94\x85a\x147V[\x81\x84R` \x94\x85\x80\x86\x01\x93`\x06\x1B\x85\x01\x01\x93\x81\x85\x11a\x14\x9BW\x90\x86\x89\x98\x97\x96\x95\x94\x93\x92\x01\x92[\x84\x84\x10a\x16\xE3WPPPPP\x85R\x80\x82\x015\x90\x85\x01R\x015\x91\x01RV[\x90\x91\x92\x93\x94\x95\x96\x97\x84\x83\x03\x12a\x14\x9BW\x88Q\x90\x89\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17a\x170W\x8A\x92\x89\x92\x84Ra\x17\x14\x87a\x15\tV[\x81R\x82\x87\x015\x83\x82\x01R\x81R\x01\x93\x01\x91\x90\x88\x97\x96\x95\x94\x93a\x16\xC6V[`$`\0\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`A`\x04R\xFD[\x80Q\x82\x10\x15a\x17rW` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x92\x91\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@`\0\x82\x84\x16\x81R`\x01` R\x82\x82\x82 \x96\x16\x95\x86\x82R` R\x81\x81 3\x82R` R \x94\x85T\x95e\xFF\xFF\xFF\xFF\xFF\xFF\x87`\xA0\x1C\x16\x80B\x11a\x18\x84WP\x82\x87\x16\x96\x83\x88\x03a\x18\x12W[PPa\x18\x10\x95P\x16\x92a\x18\xB5V[V[\x87\x84\x84\x16\x11`\0\x14a\x18OW`$\x88`@Q\x90\x7F\xF9o\xB0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x84a\x18\x10\x9A\x03\x16\x91\x16\x17\x90U8\x80a\x18\x02V[`$\x90`@Q\x90\x7F\xD8\x1B/.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90`\0`d\x92` \x95\x82\x95`@Q\x94\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\x04\x86\x01R`$\x85\x01R`D\x84\x01RZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x15a\x19\x0EWV[`d`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R\xFD[\x91\x90\x81\x10\x15a\x17rW`\x06\x1B\x01\x90V[5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x90V[\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81``\x84\x01Q\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x85Q\x16\x94\x82` \x82\x01Q\x16\x92\x80\x86`@\x80\x94\x01Q\x16\x95\x16\x95`\0\x91\x87\x83R`\x01` R\x83\x83 \x89\x84R` R\x83\x83 \x99\x16\x98\x89\x83R` R\x82\x82 \x91\x84\x83T`\xD0\x1C\x03a\x1A\xF5W\x91\x85a\x1A\xCE\x94\x92\x7F\xC6\xA3w\xBF\xC4\xEB\x12\0$\xA8\xAC\x08\xEE\xF2\x05\xBE\x16\xB8\x17\x02\x08\x12\xC72#\xE8\x1D\x1B\xDB\x97\x08\xEC\x98\x97\x96\x94P\x87\x15`\0\x14a\x1A\xD3Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90B\x16[`\xA0\x1B\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01\x86\x01`\xD0\x1B\x16\x17\x17\x90UQ\x93\x84\x93\x84\x91`@\x91\x94\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF``\x85\x01\x96\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x80\x92\x16` \x85\x01R\x16\x91\x01RV[\x03\x90\xA4V[Py\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87a\x1A`V[`\x04\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x1BiW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x82R\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j`@\x82\x01RF``\x82\x01R0`\x80\x82\x01R`\x80\x81Ra\x1B\xD3\x81a\x13\xFFV[Q\x90 \x90V[a\x1B\xE1a\x1B\x1EV[\x90`@Q\x90` \x82\x01\x92\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84R`\"\x83\x01R`B\x82\x01R`B\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x92\x90\x93`\xA45\x93`@\x84\x01Q\x80B\x11a\x1C\xC6WP` \x84Q\x01Q\x80\x86\x11a\x1C\x95WP\x91\x85\x91a\rxa\x1Ce\x94a\x1C`` \x88\x01Q\x86a\x1EGV[a\x1B\xD9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91QQ\x16\x92`\x845\x91\x82\x16\x82\x03a\x14\x9BWa\x18\x10\x93a\x18\xB5V[`$\x90`@Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`$\x90`@Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x95\x90\x93\x95\x80QQ\x95`@\x92\x83\x83\x01Q\x80B\x11a\x1E\x17WP\x84\x88\x03a\x1D\xEEWa\x1D.\x91\x86\x91a\rx` \x9Ba\x1C`\x8D\x88\x01Q\x86a\x1EGV[`\0[\x86\x81\x10a\x1DBWPPPPPPPPV[a\x1DM\x81\x83Qa\x17^V[Q\x88a\x1DZ\x83\x87\x8Aa\x19lV[\x015\x90\x89\x81\x01Q\x80\x83\x11a\x1D\xBEWP\x91\x81\x88\x88\x88`\x01\x96\x85\x96a\x1D\x84W[PPPPPP\x01a\x1D1V[a\x1D\xB3\x95a\x1D\xAD\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x05\x15\x93Q\x16\x95a\x19lV[\x91a\x18\xB5V[\x808\x88\x88\x88\x83a\x1DxV[`$\x90\x86Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`\x04\x84Q\x7F\xFFc:8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`$\x90\x85Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\xFF\x83\x16\x1B\x92\x16`\0R`\0` R`@`\0 \x90`\x08\x1C`\0R` R`@`\0 \x81\x81T\x18\x80\x91U\x16\x15a\x1E\x91WV[`\x04`@Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90a\x1E\xC5\x82a\x15\xEFV[a\x1E\xD2`@Q\x91\x82a\x147V[\x82\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x1F\0\x82\x94a\x15\xEFV[\x01\x90` 6\x91\x017V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x1F7W`\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80Q` \x80\x92\x01\x91`\0[\x82\x81\x10a\x1F\x7FWPPPP\x90V[\x83Q\x85R\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x1FqV[\x90\x81Q\x91`\0[\x83\x81\x10a\x1F\xABWPP\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q\x81\x85\x01R\x01a\x1F\x9AV[`@Q` \x81\x01\x91\x7Febl\xADl\xB9d\x93\xBFo^\xBE\xA2\x87V\xC9f\xF0#\xAB\x9E\x8A\x83\xA7\x10\x18I\xD5W;6x\x83Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`@\x84\x01R` \x82\x01Q\x16``\x83\x01R``e\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82`@\x82\x01Q\x16`\x80\x85\x01R\x01Q\x16`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RQ\x90 \x90V[`@Q` \x80\x82\x01\x92\x7Fa\x83X\xAC=\xB8\xDC'O\x0C\xD8\x82\x9D\xA7\xE24\xBDH\xCDs\xC4\xA7@\xAE\xDE\x1A\xDE\xC9\x84m\x06\xA1\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16`@\x84\x01R\x01Q``\x82\x01R``\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x90\x82`@\x91\x03\x12a\x14\x9BW` \x825\x92\x015\x90V[`\0\x84;a\".WP`A\x82\x03a!\xACWa \xE4\x82\x82\x01\x82a \xB1V[\x93\x90\x92`@\x10\x15a\x17rW` \x93`\0\x93`\xFF`@`\x80\x95\x015`\xF8\x1C[`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a!\xA0Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80`\0Q\x16\x91\x82\x15a!vW\x16\x03a!LWV[`\x04`@Q\x7F\x81^\x1Dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`\x04`@Q\x7F\x8B\xAAW\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`@Q=`\0\x82>=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 \xD8\xE67\xD0\xBF\xDA1\x19R3\x88\xA7\xAC\x0F\x86.\xD5o}\xBF\xBE\xBE\xD7\xD2-\xFB\x8C\xAE`\x8D\0|dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static DEPLOYEXCLUSIVEDUTCH_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct DeployExclusiveDutch(::ethers::contract::Contract); - impl ::core::clone::Clone for DeployExclusiveDutch { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for DeployExclusiveDutch { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for DeployExclusiveDutch { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for DeployExclusiveDutch { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(DeployExclusiveDutch)) - .field(&self.address()) - .finish() - } - } - impl DeployExclusiveDutch { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - DEPLOYEXCLUSIVEDUTCH_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - DEPLOYEXCLUSIVEDUTCH_ABI.clone(), - DEPLOYEXCLUSIVEDUTCH_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `IS_SCRIPT` (0xf8ccbf47) function - pub fn is_script(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([248, 204, 191, 71], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `run` (0xc0406226) function - pub fn run( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([192, 64, 98, 38], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setUp` (0x0a9254e4) function - pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([10, 146, 84, 228], ()) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for DeployExclusiveDutch { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "IS_SCRIPT", abi = "IS_SCRIPT()")] - pub struct IsScriptCall; - ///Container type for all input parameters for the `run` function with signature `run()` and selector `0xc0406226` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "run", abi = "run()")] - pub struct RunCall; - ///Container type for all input parameters for the `setUp` function with signature `setUp()` and selector `0x0a9254e4` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setUp", abi = "setUp()")] - pub struct SetUpCall; - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum DeployExclusiveDutchCalls { - IsScript(IsScriptCall), - Run(RunCall), - SetUp(SetUpCall), - } - impl ::ethers::core::abi::AbiDecode for DeployExclusiveDutchCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IsScript(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Run(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetUp(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for DeployExclusiveDutchCalls { - fn encode(self) -> Vec { - match self { - Self::IsScript(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Run(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for DeployExclusiveDutchCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::IsScript(element) => ::core::fmt::Display::fmt(element, f), - Self::Run(element) => ::core::fmt::Display::fmt(element, f), - Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for DeployExclusiveDutchCalls { - fn from(value: IsScriptCall) -> Self { - Self::IsScript(value) - } - } - impl ::core::convert::From for DeployExclusiveDutchCalls { - fn from(value: RunCall) -> Self { - Self::Run(value) - } - } - impl ::core::convert::From for DeployExclusiveDutchCalls { - fn from(value: SetUpCall) -> Self { - Self::SetUp(value) - } - } - ///Container type for all return fields from the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsScriptReturn(pub bool); - ///Container type for all return fields from the `run` function with signature `run()` and selector `0xc0406226` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct RunReturn { - pub deployment: ExclusiveDutchDeployment, - } - ///`ExclusiveDutchDeployment(address,address,address)` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ExclusiveDutchDeployment { - pub permit_2: ::ethers::core::types::Address, - pub reactor: ::ethers::core::types::Address, - pub quoter: ::ethers::core::types::Address, - } -} diff --git a/crates/bindings-uniswapx/src/deploy_permit_2.rs b/crates/bindings-uniswapx/src/deploy_permit_2.rs deleted file mode 100644 index a9c6556..0000000 --- a/crates/bindings-uniswapx/src/deploy_permit_2.rs +++ /dev/null @@ -1,181 +0,0 @@ -pub use deploy_permit_2::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod deploy_permit_2 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static DEPLOYPERMIT2_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15`\x1FW_\x80\xFD[P`\x86\x80a\0,_9_\xF3\xFE`\x80`@R4\x80\x15`\x0EW_\x80\xFD[P`\x046\x10`&W_5`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`*W[_\x80\xFD[`\x0CT`<\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x0C\xBC\xD2a\xDCf\xA4\xFA\x80\x1D\x92\x81U\xA6\x14\xA7\xA1\x8B!\xFA\xAE\xB1\xDA\x18-\x7F/\xA3/\xBA\xA2\xC9dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static DEPLOYPERMIT2_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0EW_\x80\xFD[P`\x046\x10`&W_5`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`*W[_\x80\xFD[`\x0CT`<\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x0C\xBC\xD2a\xDCf\xA4\xFA\x80\x1D\x92\x81U\xA6\x14\xA7\xA1\x8B!\xFA\xAE\xB1\xDA\x18-\x7F/\xA3/\xBA\xA2\xC9dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static DEPLOYPERMIT2_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct DeployPermit2(::ethers::contract::Contract); - impl ::core::clone::Clone for DeployPermit2 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for DeployPermit2 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for DeployPermit2 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for DeployPermit2 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(DeployPermit2)) - .field(&self.address()) - .finish() - } - } - impl DeployPermit2 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - DEPLOYPERMIT2_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - DEPLOYPERMIT2_ABI.clone(), - DEPLOYPERMIT2_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `IS_SCRIPT` (0xf8ccbf47) function - pub fn is_script(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([248, 204, 191, 71], ()) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for DeployPermit2 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "IS_SCRIPT", abi = "IS_SCRIPT()")] - pub struct IsScriptCall; - ///Container type for all return fields from the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsScriptReturn(pub bool); -} diff --git a/crates/bindings-uniswapx/src/deploy_priority_order_reactor.rs b/crates/bindings-uniswapx/src/deploy_priority_order_reactor.rs deleted file mode 100644 index 5faeca3..0000000 --- a/crates/bindings-uniswapx/src/deploy_priority_order_reactor.rs +++ /dev/null @@ -1,376 +0,0 @@ -pub use deploy_priority_order_reactor::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod deploy_priority_order_reactor { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("run"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("run"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("deployment"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct PriorityOrderReactorDeployment", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setUp"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setUp"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static DEPLOYPRIORITYORDERREACTOR_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[Pal@\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x91W[_\x80\xFD[\0[a\0Ma\0\xB4V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x88V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01fW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x8A\x91\x90a\x05\xEFV[\x90P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xF3W_\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x05W=_\x80>=_\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;_\x03\x90Pa\x02+Wa\x02)a\x04OV[P[_\x7F\xB0\x05\x9E\x91\x87\xDA\xACp\xF2\xC7e\xCF\xC9\x9A\x03\xF9\xBFC!\xC1\x1Bz\xB7\x84\xEE>1\x02\x92rL\x18_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02l\x90a\x05\xD5V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02\xADW=_\x80>=_\xFD[P\x90Pa\x02\xEF`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x05\x14V[_\x80_\x1B`@Qa\x02\xFF\x90a\x05\xE2V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x03\x1CW=_\x80>=_\xFD[P\x90Pa\x03^`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x05\x14V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\xC5W_\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xD7W=_\x80>=_\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x93PPPP\x90V[_\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aHKa#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04\xD1\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x06\x8AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\xE8W_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xFAW=_\x80>=_\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x05\xA5\x82\x82`@Q`$\x01a\x05*\x92\x91\x90a\x06\xC0V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x05\xA9V[PPV[a\x05\xB2\x81a\x05\xB5V[PV[\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[a3\x90\x80a\x06\xF8\x839\x01\x90V[a\r\xC3\x80a:\x88\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x05\xFFW_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\"W_\x80\xFD[\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x06MW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x061V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x06\xB8`@\x83\x01\x84a\x06)V[\x94\x93PPPPV[`@\x81R_a\x06\xD2`@\x83\x01\x85a\x06)V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x003\x908\x03\x80b\x003\x90\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa2xb\0\x01\x18_9_\x81\x81`\xDA\x01R\x81\x81a\r-\x01Ra\x19\x8F\x01Ra2x_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a#\xBDV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a$bV[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a$\xA1V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%4V[a\x06eV[a\0\xB4a\x01e6`\x04a%VV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%4V[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a%\xBDV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x86V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a({V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B7V[a\x04\x9F\x81a\x0B\x86V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x86V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga%\xBDV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B7V[a\x08d\x81a\x0B\x86V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a(\xB7V[\x81\x01\x90a\nW\x91\x90a,nV[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\np\x91a\x0C\xD1V[_a\nz\x82a\r\xE0V[\x90Pa\n\x86\x81\x83a\x10,V[_a\n\x94\x83``\x01Qa\x11\x8CV[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\n\xC1\x83\x86`\x80\x01Qa\x11\xDF\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xDD\x83\x86`\xA0\x01Qa\x12\xD8\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\n\xF2\x91\x90a(\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BVWa\x0BVa%\xBDV[` \x02` \x01\x01Q\x90Pa\x0Bi\x81a\x13\xBBV[a\x0Bs\x813a\x18\x98V[a\x0B}\x813a\x19\x8DV[P`\x01\x01a\x0B;V[\x80Q_[\x81\x81\x10\x15a\x0C\xC0W_\x83\x82\x81Q\x81\x10a\x0B\xA5Wa\x0B\xA5a%\xBDV[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\"W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xD9Wa\x0B\xD9a%\xBDV[` \x02` \x01\x01Q\x90Pa\x0C\x19\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBAV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CjWa\x0Cja%\xBDV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xAE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8AV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1D\x06V[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91_\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\rtW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x98\x91\x90a-hV[\x90P\x81\x81\x18\x80\x83\x16_\x03a\r\xD8W`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R_\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a1[` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919`@Q` \x01a\x0Fy\x94\x93\x92\x91\x90a-\x7FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\x9B\x83_\x01Qa\x1D\x9CV[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xB7\x87`\x80\x01Qa\x1E5V[a\x0F\xC4\x88`\xA0\x01Qa\x1E\x9BV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10kW`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\x98WP\x80C\x10[\x80\x15a\x10\xA8WP`\xC0\x82\x01QQ\x81\x11[\x15a\x10\xD2W` \x82\x01Qa\x10\xCA\x90a\x10\xC0\x84\x86a\x1F6V[\x84`\xE0\x01Qa\x1F\xACV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11\x0CW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03LW_[\x82`\xA0\x01QQ\x81\x10\x15a\x06_W_\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11@Wa\x11@a%\xBDV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\x84W`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11\x1CV[_H:\x10\x15a\x11\xC7W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x11\xD7W\x03\x90V[P_[\x91\x90PV[a\x12\x16`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[_\x83`@\x01Q\x83a\x12'\x91\x90a.\x02V[\x90Pb\x98\x96\x80\x81\x10a\x12sW`@Q\x80``\x01`@R\x80\x85_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x12\xD2V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x12\xBDW` \x86\x01Qa\x12\xB8\x90b\x98\x96\x80\x85\x81\x03\x90a \xCFV[a\x12\xC3V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xF6Wa\x12\xF6a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x14W\x90P[P\x91P_[\x81\x81\x10\x15a\x13\xB3Wa\x13\x8E\x85\x82\x81Q\x81\x10a\x13\x80Wa\x13\x80a%\xBDV[` \x02` \x01\x01Q\x85a!\tV[\x83\x82\x81Q\x81\x10a\x13\xA0Wa\x13\xA0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13cV[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x13\xDBWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x141\x90\x85\x90`\x04\x01a.\x19V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14KW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\x90\x91\x90\x81\x01\x90a.+V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x14\xA7\x82\x84a.\xF4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\xBFWa\x14\xBFa%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x15wW\x85`@\x01Q\x81\x81Q\x81\x10a\x15JWa\x15Ja%\xBDV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15dWa\x15da%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15,V[P_\x80_[\x84\x81\x10\x15a\x18\x87W_\x87\x82\x81Q\x81\x10a\x15\x97Wa\x15\x97a%\xBDV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16RW\x88\x81\x81Q\x81\x10a\x15\xBDWa\x15\xBDa%\xBDV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x15\xA3V[P_\x80[\x88\x81\x10\x15a\x17\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16uWa\x16ua%\xBDV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x06W\x85\x15a\x16\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x16\xFF\x90\x84a.\xF4V[\x92P`\x01\x96P[P`\x01\x01a\x16VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\x88W\x84\x15a\x17oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\x81\x90\x82a.\xF4V[\x90P`\x01\x93P[\x80_\x03a\x17\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x17\xEA\x81`\x05a'\x10a \xCFV[\x82` \x01Q\x11\x15a\x18]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18rWa\x18ra%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x18\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19e\x90\x84\x90\x86\x90`\x04\x01a/\x07V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19{W_\x80\xFD[PZ\xFA\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1AL\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a1\xE8\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a1-`.\x919`@Q` \x01a\x1C)\x95\x94\x93\x92\x91\x90a/5V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\x96\x96\x95\x94\x93\x92`\x04\x01a/\xCFV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xADW_\x80\xFD[PZ\xF1\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1C\xE4Wa\x03L\x82\x82a\x1D\x06V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xBCV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\\W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1DaV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x0F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10\x0F\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBAWa\x1E\xBAa%\x90V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE4W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1F'W_a\x1F\x15\x85\x83\x81Q\x81\x10a\x1F\x08Wa\x1F\x08a%\xBDV[` \x02` \x01\x01Qa\"\xAAV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xE9V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xC0\x01Q`@Q` \x01a\x1FQ\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x8E\x93\x92\x91` \x01a0\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x1F\xC2\x91\x90a0\xC2V[\x91P\x91P_\x83`@\x81Q\x81\x10a\x1F\xDAWa\x1F\xDAa%\xBDV[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a 4W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a \x8FWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a \xC6W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\x02W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a!\x8BWa!\x86\x85`@\x01Q\x85a!j\x91\x90a.\x02V[a!w\x90b\x98\x96\x80a.\xF4V[` \x87\x01Q\x90b\x98\x96\x80a# V[a!\x91V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\"\xA3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10\x0F\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#SW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_`@\x82\x84\x03\x12\x15a#rW_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a#\x88W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\x9FW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a#\xCFW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE6W_\x80\xFD[a#\xF2\x87\x83\x88\x01a#bV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x07W_\x80\xFD[Pa$\x14\x86\x82\x87\x01a#xV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$1W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$HW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a$sW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x89W_\x80\xFD[a$\x95\x85\x82\x86\x01a$!V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a$\xB4W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\xCBW_\x80\xFD[a$\xD7\x88\x83\x89\x01a$!V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\xEFW_\x80\xFD[Pa$\xFC\x87\x82\x88\x01a#xV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a\x11\xDA\x81a%\x08V[_` \x82\x84\x03\x12\x15a%DW_\x80\xFD[\x815a%O\x81a%\x08V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a%fW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%|W_\x80\xFD[a%\x88\x84\x82\x85\x01a#bV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\x04W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xECV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&#\x81` \x86\x01` \x86\x01a%\xEAV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a&\xB3W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a&hV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'1a\x01\xA0\x85\x01\x82a&\x0CV[\x90P` \x83\x01Qa'o` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'\x87\x82\x82a&UV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'\xA1\x82\x82a&\x0CV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(+W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\x19\x86\x83Qa&\xBEV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\xDFV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(\xADW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xEAW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\x04W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#\xB6W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xCFWa)\xCFa%\x90V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\xE6W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\0Wa*\0a%\x90V[a*1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)\x88V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*EW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a*qW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\x95Wa*\x95a%\x90V[\x81`@R\x82\x93P\x845\x91Pa*\xA9\x82a%\x08V[\x90\x82R` \x84\x015\x90a*\xBB\x82a%\x08V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xE5\x82a%\x08V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xFEW_\x80\xFD[Pa+\x0B\x85\x82\x86\x01a)\xD7V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+(W_\x80\xFD[a+0a)\x18V[\x90P\x815a+=\x81a%\x08V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+tWa+ta%\x90V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a+\x8DW_\x80\xFD[\x815` a+\xA2a+\x9D\x83a+[V[a)\x88V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\xC0W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,#W`\x80\x81\x89\x03\x12\x15a+\xDBW_\x80\xFD[a+\xE3a)AV[\x815a+\xEE\x81a%\x08V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x11\x81a%\x08V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\xC4V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a,>W_\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a,aWa,aa%\x90V[`@R\x915\x82RP\x91\x90PV[_` \x82\x84\x03\x12\x15a,~W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,\x95W_\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a,\xA9W_\x80\xFD[a,\xB1a)dV[\x825\x82\x81\x11\x15a,\xBFW_\x80\xFD[a,\xCB\x87\x82\x86\x01a*aV[\x82RPa,\xDA` \x84\x01a%)V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\0\x86`\x80\x85\x01a+\x18V[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\x16W_\x80\xFD[a-\"\x87\x82\x86\x01a+~V[`\xA0\x83\x01RPa-6\x86a\x01\0\x85\x01a,.V[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a-MW_\x80\xFD[a-Y\x87\x82\x86\x01a)\xD7V[`\xE0\x83\x01RP\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-xW_\x80\xFD[PQ\x91\x90PV[_\x85Qa-\x90\x81\x84` \x8A\x01a%\xEAV[\x85Q\x90\x83\x01\x90a-\xA4\x81\x83` \x8A\x01a%\xEAV[\x85Q\x91\x01\x90a-\xB7\x81\x83` \x89\x01a%\xEAV[\x84Q\x91\x01\x90a-\xCA\x81\x83` \x88\x01a%\xEAV[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x12\xD2Wa\x12\xD2a-\xD5V[` \x81R_a%O` \x83\x01\x84a&\xBEV[_` \x80\x83\x85\x03\x12\x15a.a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xFE\xB5\x9B\x92\xB026\x10F\xE1\x83\xA9\x95\xBD\xE7X(\x86\xEC\x94\x98\x99\x0F{vt\xB9\xC2\x17\xF8\xB1kdsolcC\0\x08\x18\x003`@`\x80\x81R`\x04\x90\x816\x10\x15a\0\x15W`\0\x80\xFD[`\0\x90\x815`\xE0\x1C\x80c\rX\xB1\xDB\x14a\x12lW\x80c\x13|)\xFE\x14a\x10uW\x80c*-\x80\xD1\x14a\r\xB7W\x80c+g\xB5p\x14a\x0B\xDEW\x80c0\xF2\x8Bz\x14a\n\xDEW\x80c6D\xE5\x15\x14a\n\x9DW\x80c6\xC7\x85\x16\x14a\n(W\x80c?\xF9\xDC\xB1\x14a\t\xA8W\x80cO\xE0+D\x14a\t?W\x80ce\xD9r<\x14a\x07\xACW\x80c\x87Q|E\x14a\x06zW\x80c\x92}\xA1\x05\x14a\x05\xC3W\x80c\xCCS(\x7F\x14a\x04\xA3W\x80c\xED\xD9DK\x14a\x03:Wc\xFE\x8E\xC1\xA7\x14a\0\xC6W`\0\x80\xFD[4a\x036W`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x835\x81\x81\x11a\x032Wa\x01\x14\x906\x90\x86\x01a\x16KV[`$5\x82\x81\x11a\x03.Wa\x01+\x906\x90\x87\x01a\x16\x1AV[a\x013a\x14\xE6V[\x91`\x845\x85\x81\x11a\x03*Wa\x01K\x906\x90\x8A\x01a\x15\xC1V[\x98\x90\x95`\xA45\x90\x81\x11a\x03&Wa\x01d\x916\x91\x01a\x15\xC1V[\x96\x90\x95\x81Q\x90a\x01s\x82a\x13\xFFV[`k\x82R\x7FPermitBatchWitnessTransferFrom(T` \x83\x01R\x7FokenPermissions[] permitted,addr\x83\x83\x01R\x7Fess spender,uint256 nonce,uint25``\x83\x01R\x7F6 deadline,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x82Q\x9A\x8B\x91\x81a\x02\"` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8A\x81R\x03\x99a\x02[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x9B\x8C\x81\x01\x83R\x82a\x147V[Q\x90 \x90\x85QQa\x02k\x81a\x1E\xBBV[\x90\x8A[\x81\x81\x10a\x02\xF9WPPa\x02\xF6\x99\x9Aa\x02\xED\x91\x83Qa\x02\xA0\x81a\x02\x94` \x82\x01\x80\x95a\x1FfV[\x03\x84\x81\x01\x83R\x82a\x147V[Q\x90 ` \x89\x81\x01Q\x85\x8B\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`d5`\xC0\x84\x01R\x82`\xE0\x81\x01[\x03\x90\x81\x01\x83R\x82a\x147V[Q\x90 \x93a\x1C\xF7V[\x80\xF3[\x80a\x03\x11a\x03\x0Ba\x03!\x93\x8CQa\x17^V[Qa TV[a\x03\x1B\x82\x86a\x17^V[Ra\x1F\nV[a\x02nV[\x88\x80\xFD[\x87\x80\xFD[\x84\x80\xFD[\x83\x80\xFD[P\x80\xFD[P\x914a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x805\x82\x81\x11a\x032Wa\x03\x8B\x906\x90\x83\x01a\x16KV[`$5\x83\x81\x11a\x03.Wa\x03\xA2\x906\x90\x84\x01a\x16\x1AV[\x93\x90\x92a\x03\xADa\x14\xE6V[\x91`d5\x90\x81\x11a\x04\x9FWa\x03\xC4\x916\x91\x01a\x15\xC1V[\x94\x90\x93\x83QQ\x97a\x03\xD4\x89a\x1E\xBBV[\x98\x88[\x81\x81\x10a\x04}WPPa\x02\xF6\x97\x98\x81Qa\x04%\x81a\x03\xF9` \x82\x01\x80\x95a\x1FfV[\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x01\x83R\x82a\x147V[Q\x90 ` \x86\x01Q\x82\x87\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\xFC\xF3_Z\xC6\xA2\xC2\x88h\xDCD\xC3\x02\x16dp&b9\x19_\x02\xB0\xEE@\x834\x82\x933\xB7f\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x02\xED\x81a\x14\x1BV[\x80\x8Ba\x03\x1B\x82a\x04\x94a\x03\x0Ba\x04\x9A\x96\x8DQa\x17^V[\x92a\x17^V[a\x03\xD7V[\x86\x80\xFD[P\x824a\x05\xBFW` \x90\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x03.Wa\x04\xF4\x916\x91\x01a\x16\x1AV[\x92\x90\x91\x84[\x84\x81\x10a\x05\x04W\x85\x80\xF3[\x80a\x05\x1Aa\x05\x15`\x01\x93\x88\x88a\x19lV[a\x19|V[a\x05/\x84a\x05)\x84\x8A\x8Aa\x19lV[\x01a\x19|V[3\x89R\x83\x85R\x85\x89 \x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x92\x83\x8BR\x86R\x86\x8A \x91\x16\x90\x81\x8AR\x85R\x85\x89 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81T\x16\x90U\x85Q\x91\x82R\x84\x82\x01R\x7F\x89\xB1\xAD\xD1^\xFFV\xB3\xDF\xE2\x99\xAD\x94\xE0\x1F+R\xFB\xCB\x80\xAE\x1A;\xAE\xA6\xAE\x8C\x04\xCB+\x98\xA4\x853\x92\xA2\x01a\x04\xF9V[\x82\x80\xFD[P4a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06v\x81a\x05\xFFa\x14\xA0V[\x93a\x06\x08a\x14\xC3V[a\x06\x10a\x14\xE6V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16\x83R`\x01` \x90\x81R\x84\x84 \x92\x88\x16\x84R\x91\x82R\x83\x83 \x90\x87\x16\x83R\x81R\x91\x90 T\x92Q\x93\x83\x16\x84R`\xA0\x83\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x84\x01R`\xD0\x91\x90\x91\x1C`@\x83\x01R\x81\x90``\x82\x01\x90V[\x03\x90\xF3[P4a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06\xB2a\x14\xA0V[\x90a\x06\xBBa\x14\xC3V[\x91a\x06\xC4a\x14\xE6V[e\xFF\xFF\xFF\xFF\xFF\xFF\x92`d5\x84\x81\x16\x90\x81\x81\x03a\x03*Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x7F\xDA\x9F\xA7\xC1\xB0\x04\x02\xC1}\x01a\xB2I\xB1\xAB\x8B\xBE\xC0G\xC5\xA5\"\x07\xB9\xC1\x12\xDE\xFF\xD8\x17\x03k\x943\x8AR`\x01` R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x8B \x98s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x94\x16\x99\x8A\x8DR` R\x83\x87\x8D \x9B\x16\x9A\x8B\x8DR` R\x86\x8C \x94\x86\x15`\0\x14a\x07\xA4WPB\x16\x92[\x84T\x92\x16\x97\x88\x93`\xA0\x1B\x16\x91\x16\x17\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA4\x80\xF3[\x90P\x92a\x07\x83V[P\x824a\x05\xBFW``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x07\xE5a\x14\xA0V[\x90a\x07\xEEa\x14\xC3V[\x92e\xFF\xFF\xFF\xFF\xFF\xFF`D5\x81\x81\x16\x93\x90\x84\x81\x03a\x03*W3\x88R` \x91`\x01\x83R\x84\x89 \x96s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x97\x88\x8BR\x84R\x85\x8A \x98\x16\x97\x88\x8AR\x83R\x84\x89 T`\xD0\x1C\x93\x84\x87\x11\x15a\t\x17Wa\xFF\xFF\x90\x85\x84\x03\x16\x11a\x08\xF0WP\x90\x7FU\xEB\x90\xD8\x10\xE1p\x0B5\xA8\xE7\xE2S\x95\xFF\x7F+\"Y\xAB\xD7A\\\xA2(M\xFB\x1C$d\x18\xF3\x93\x92\x913\x89R`\x01\x82R\x83\x89 \x87\x8AR\x82R\x83\x89 \x88\x8AR\x82R\x83\x89 \x90y\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83T\x92`\xD0\x1B\x16\x91\x16\x17\x90U\x82Q\x94\x85R\x84\x01R3\x92\xA4\x80\xF3[\x84Q\x7F$\xD3Z&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P4a\x036W\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W\x80` \x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\x8Fa\x14\xA0V[\x16\x81R\x80\x84R\x81\x81 `$5\x82R\x84R T\x90Q\x90\x81R\xF3[P\x824a\x05\xBFW\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFW\x7F7\x04\x90/\x967f\xA4\xE5a\xBB\xAA\xB6\xE6\xCD\xC1\xB1\xDD\x12\xF6\xE9\xE9\x96H\xDA\x88C\xB3\xF4k\x91\x8D\x905\x91`$53\x85R\x84` R\x81\x85 \x84\x86R` R\x81\x85 \x81\x81T\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA2\x80\xF3[\x824a\n\x9AW`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\n\x9AWa\n`a\x14\xA0V[a\nha\x14\xC3V[a\npa\x14\xE6V[`d5\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x83\x03a\x03.Wa\x02\xF6\x93a\x17\xA1V[\x80\xFD[P4a\x036W\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W` \x90a\n\xD7a\x1B\x1EV[\x90Q\x90\x81R\xF3[P\x82\x904a\x05\xBFWa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x0B\x1A6a\x15*V[\x90\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x0BLa\x14xV[\x91`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\xDAWa\x02\xF6\x94a\x0Bo\x916\x91\x01a\x15\xC1V[\x93\x90\x92a\x0B|\x83Qa TV[` \x84\x01Q\x82\x85\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\x93\x9C!\xA4\x8A\x8D\xBE:\x9A$\x04\xA1\xD4f\x91\xE4\xD3\x9Fe\x83\xD6\xECk5qF\x04\xC9\x86\xD8\x01\x06\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x0B\xD1\x81a\x14\x1BV[Q\x90 \x91a\x1C%V[\x85\x80\xFD[P\x914a\x036Wa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x0C\x18a\x14\xA0V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC6\x01`\xC0\x81\x12a\x032W`\x80\x85Q\x91a\x0CQ\x83a\x13\xE3V[\x12a\x032W\x84Q\x90a\x0Cb\x82a\x13\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91`$5\x83\x81\x16\x81\x03a\x04\x9FW\x81R`D5\x83\x81\x16\x81\x03a\x04\x9FW` \x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF`d5\x81\x81\x16\x81\x03a\x03*W\x88\x83\x01R`\x845\x90\x81\x16\x81\x03a\x04\x9FW``\x82\x01R\x81R`\xA45\x93\x82\x85\x16\x85\x03a\x0B\xDAW` \x82\x01\x94\x85R`\xC45\x90\x87\x83\x01\x82\x81R`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x03&Wa\x0C\xFE\x906\x90\x84\x01a\x15\xC1V[\x92\x90\x93\x80B\x11a\r\x88WPP\x91\x85\x91a\rxa\x02\xF6\x99\x9Aa\r~\x95a\r#\x88Qa\x1F\xBEV[\x90\x89\x8CQ\x16\x90Q\x90\x83Q\x92` \x84\x01\x94\x7F\xF3\x84\x1C\xD1\xFF\0\x85\x02jc'\xB6 \xB6y\x97\xCE@\xF2\x82\xC8\x8A\x8E\x90ZzV&\xE3\x10\xF3\xD0\x86R\x84\x01R``\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x90 a\x1B\xD9V[\x91a \xC7V[Q\x92Q\x16\x91a\x19\x9DV[`$\x92P\x8AQ\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[P\x914a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x93\x81\x856\x01\x12a\x032Wa\r\xF3a\x14\xA0V[\x92`$\x90\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x85\x11a\x03*W\x85\x90\x856\x03\x01\x12a\x04\x9FW\x80Q\x97\x85\x89\x01\x89\x81\x10\x82\x82\x11\x17a\x10JW\x82R\x84\x83\x015\x81\x81\x11a\x03&W\x85\x01\x906`#\x83\x01\x12\x15a\x03&W\x83\x82\x015\x91a\x0EP\x83a\x15\xEFV[\x90a\x0E]\x85Q\x92\x83a\x147V[\x83\x82R` \x93\x87\x85\x84\x01\x91`\x07\x1B\x83\x01\x01\x916\x83\x11a\x10FW\x88\x01\x90[\x82\x82\x10a\x0F\xE9WPPP\x8AR`Da\x0E\x93\x86\x88\x01a\x15\tV[\x96\x83\x8C\x01\x97\x88R\x015\x94\x83\x8B\x01\x91\x86\x83R`D5\x90\x81\x11a\x0F\xE5Wa\x0E\xBB\x906\x90\x87\x01a\x15\xC1V[\x95\x90\x96\x80B\x11a\x0F\xBAWPPP\x89\x98\x99QQa\x0E\xD6\x81a\x1E\xBBV[\x90\x8B[\x81\x81\x10a\x0F\x97WPP\x92\x88\x94\x92a\rx\x92a\x0Fd\x97\x95\x83Qa\x0F\x02\x81a\x03\xF9\x86\x82\x01\x80\x95a\x1FfV[Q\x90 \x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x8B\x8BQ\x16\x91Q\x92\x85Q\x94\x85\x01\x95\x7F\xAF\x1B\r0\xD2\xCA\xB08\x0Eh\xF0h\x90\x07\xE3%I\x93\xC5\x96\xF2\xFD\xD0\xAA\xA7\xF4\xD0OyD\x08c\x87R\x85\x01R\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x16\x90\x82QQ\x92\x84[\x84\x81\x10a\x0FxW\x85\x80\xF3[\x80a\x0F\x91\x85\x85a\x0F\x8B`\x01\x95\x87Qa\x17^V[Qa\x19\x9DV[\x01a\x0FmV[\x80a\x03\x11a\x0F\xAC\x8E\x9F\x9E\x93a\x0F\xB2\x94Qa\x17^V[Qa\x1F\xBEV[\x9B\x9A\x9Ba\x0E\xD9V[\x85Q\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[\x8A\x80\xFD[`\x80\x826\x03\x12a\x10FW\x85`\x80\x91\x88Qa\x10\x02\x81a\x13\x98V[a\x10\x0B\x85a\x15\tV[\x81Ra\x10\x18\x83\x86\x01a\x15\tV[\x83\x82\x01Ra\x10'\x8A\x86\x01a\x16\x07V[\x8A\x82\x01R\x8Da\x107\x81\x87\x01a\x16\x07V[\x90\x82\x01R\x81R\x01\x91\x01\x90a\x0EzV[\x8C\x80\xFD[\x84\x89`A\x86\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83RR\xFD[P\x824a\x05\xBFWa\x01@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x10\xB06a\x15*V[\x91\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x10\xE2a\x14xV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90a\x01\x045\x85\x81\x11a\x04\x9FWa\x11\x05\x906\x90\x86\x01a\x15\xC1V[\x90\x93a\x01$5\x96\x87\x11a\x03*Wa\x11%a\x0B\xD1\x96a\x02\xF6\x986\x91\x01a\x15\xC1V[\x96\x90\x95\x82Q\x90a\x114\x82a\x13\xFFV[`d\x82R\x7FPermitWitnessTransferFrom(TokenP` \x83\x01R\x7Fermissions permitted,address spe\x84\x83\x01R\x7Fnder,uint256 nonce,uint256 deadl``\x83\x01R\x7Fine,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x83Q\x94\x85\x91\x81a\x11\xE3` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8B\x81R\x03\x93a\x12\x1C\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x95\x86\x81\x01\x83R\x82a\x147V[Q\x90 \x92a\x12*\x86Qa TV[` \x87\x81\x01Q\x85\x89\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`\xE45`\xC0\x84\x01R\x82`\xE0\x81\x01a\x02\xE1V[P\x824a\x05\xBFW` \x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x0B\xDAW6`#\x83\x01\x12\x15a\x0B\xDAW\x81\x015\x92\x83\x11a\x03.W`$\x90`\x076\x83\x86\x83\x1B\x84\x01\x01\x11a\x04\x9FW\x86[\x85\x81\x10a\x12\xE5W\x87\x80\xF3[\x80\x82\x1B\x83\x01\x90`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\x836\x03\x01\x12a\x03&Wa\x13\x92\x88\x87`\x01\x94``\x83Qa\x13,\x81a\x13\x98V[a\x13h`\x84a\x13<\x8D\x86\x01a\x15\tV[\x94\x85\x84Ra\x13L`D\x82\x01a\x15\tV[\x80\x97\x85\x01Ra\x13]`d\x82\x01a\x15\tV[\x80\x98\x85\x01R\x01a\x15\tV[\x91\x82\x91\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x80\x80\x93\x16\x95\x16\x93\x16\x91\x16a\x17\xA1V[\x01a\x12\xDAV[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC45\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`\0\x80\xFD[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`D5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x01\x90`\x80\x82\x12a\x14\x9BW`@\x80Q\x90a\x15c\x82a\x13\xE3V[\x80\x82\x94\x12a\x14\x9BW\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W\x82R`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x81R`$5` \x82\x01R\x82R`D5` \x83\x01R`d5\x91\x01RV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x83\x81\x86\x01\x95\x01\x01\x11a\x14\x9BWV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x13\xB4W`\x05\x1B` \x01\x90V[5\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x80\x85\x01\x94\x84`\x06\x1B\x01\x01\x11a\x14\x9BWV[\x91\x90\x91``\x81\x84\x03\x12a\x14\x9BW`@\x80Q\x91a\x16f\x83a\x13\xE3V[\x82\x94\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x81\x11a\x14\x9BW\x83\x01\x82`\x1F\x82\x01\x12\x15a\x14\x9BW\x805a\x16\x93\x81a\x15\xEFV[\x92a\x16\xA0\x87Q\x94\x85a\x147V[\x81\x84R` \x94\x85\x80\x86\x01\x93`\x06\x1B\x85\x01\x01\x93\x81\x85\x11a\x14\x9BW\x90\x86\x89\x98\x97\x96\x95\x94\x93\x92\x01\x92[\x84\x84\x10a\x16\xE3WPPPPP\x85R\x80\x82\x015\x90\x85\x01R\x015\x91\x01RV[\x90\x91\x92\x93\x94\x95\x96\x97\x84\x83\x03\x12a\x14\x9BW\x88Q\x90\x89\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17a\x170W\x8A\x92\x89\x92\x84Ra\x17\x14\x87a\x15\tV[\x81R\x82\x87\x015\x83\x82\x01R\x81R\x01\x93\x01\x91\x90\x88\x97\x96\x95\x94\x93a\x16\xC6V[`$`\0\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`A`\x04R\xFD[\x80Q\x82\x10\x15a\x17rW` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x92\x91\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@`\0\x82\x84\x16\x81R`\x01` R\x82\x82\x82 \x96\x16\x95\x86\x82R` R\x81\x81 3\x82R` R \x94\x85T\x95e\xFF\xFF\xFF\xFF\xFF\xFF\x87`\xA0\x1C\x16\x80B\x11a\x18\x84WP\x82\x87\x16\x96\x83\x88\x03a\x18\x12W[PPa\x18\x10\x95P\x16\x92a\x18\xB5V[V[\x87\x84\x84\x16\x11`\0\x14a\x18OW`$\x88`@Q\x90\x7F\xF9o\xB0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x84a\x18\x10\x9A\x03\x16\x91\x16\x17\x90U8\x80a\x18\x02V[`$\x90`@Q\x90\x7F\xD8\x1B/.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90`\0`d\x92` \x95\x82\x95`@Q\x94\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\x04\x86\x01R`$\x85\x01R`D\x84\x01RZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x15a\x19\x0EWV[`d`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R\xFD[\x91\x90\x81\x10\x15a\x17rW`\x06\x1B\x01\x90V[5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x90V[\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81``\x84\x01Q\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x85Q\x16\x94\x82` \x82\x01Q\x16\x92\x80\x86`@\x80\x94\x01Q\x16\x95\x16\x95`\0\x91\x87\x83R`\x01` R\x83\x83 \x89\x84R` R\x83\x83 \x99\x16\x98\x89\x83R` R\x82\x82 \x91\x84\x83T`\xD0\x1C\x03a\x1A\xF5W\x91\x85a\x1A\xCE\x94\x92\x7F\xC6\xA3w\xBF\xC4\xEB\x12\0$\xA8\xAC\x08\xEE\xF2\x05\xBE\x16\xB8\x17\x02\x08\x12\xC72#\xE8\x1D\x1B\xDB\x97\x08\xEC\x98\x97\x96\x94P\x87\x15`\0\x14a\x1A\xD3Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90B\x16[`\xA0\x1B\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01\x86\x01`\xD0\x1B\x16\x17\x17\x90UQ\x93\x84\x93\x84\x91`@\x91\x94\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF``\x85\x01\x96\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x80\x92\x16` \x85\x01R\x16\x91\x01RV[\x03\x90\xA4V[Py\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87a\x1A`V[`\x04\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x1BiW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x82R\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j`@\x82\x01RF``\x82\x01R0`\x80\x82\x01R`\x80\x81Ra\x1B\xD3\x81a\x13\xFFV[Q\x90 \x90V[a\x1B\xE1a\x1B\x1EV[\x90`@Q\x90` \x82\x01\x92\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84R`\"\x83\x01R`B\x82\x01R`B\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x92\x90\x93`\xA45\x93`@\x84\x01Q\x80B\x11a\x1C\xC6WP` \x84Q\x01Q\x80\x86\x11a\x1C\x95WP\x91\x85\x91a\rxa\x1Ce\x94a\x1C`` \x88\x01Q\x86a\x1EGV[a\x1B\xD9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91QQ\x16\x92`\x845\x91\x82\x16\x82\x03a\x14\x9BWa\x18\x10\x93a\x18\xB5V[`$\x90`@Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`$\x90`@Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x95\x90\x93\x95\x80QQ\x95`@\x92\x83\x83\x01Q\x80B\x11a\x1E\x17WP\x84\x88\x03a\x1D\xEEWa\x1D.\x91\x86\x91a\rx` \x9Ba\x1C`\x8D\x88\x01Q\x86a\x1EGV[`\0[\x86\x81\x10a\x1DBWPPPPPPPPV[a\x1DM\x81\x83Qa\x17^V[Q\x88a\x1DZ\x83\x87\x8Aa\x19lV[\x015\x90\x89\x81\x01Q\x80\x83\x11a\x1D\xBEWP\x91\x81\x88\x88\x88`\x01\x96\x85\x96a\x1D\x84W[PPPPPP\x01a\x1D1V[a\x1D\xB3\x95a\x1D\xAD\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x05\x15\x93Q\x16\x95a\x19lV[\x91a\x18\xB5V[\x808\x88\x88\x88\x83a\x1DxV[`$\x90\x86Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`\x04\x84Q\x7F\xFFc:8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`$\x90\x85Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\xFF\x83\x16\x1B\x92\x16`\0R`\0` R`@`\0 \x90`\x08\x1C`\0R` R`@`\0 \x81\x81T\x18\x80\x91U\x16\x15a\x1E\x91WV[`\x04`@Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90a\x1E\xC5\x82a\x15\xEFV[a\x1E\xD2`@Q\x91\x82a\x147V[\x82\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x1F\0\x82\x94a\x15\xEFV[\x01\x90` 6\x91\x017V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x1F7W`\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80Q` \x80\x92\x01\x91`\0[\x82\x81\x10a\x1F\x7FWPPPP\x90V[\x83Q\x85R\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x1FqV[\x90\x81Q\x91`\0[\x83\x81\x10a\x1F\xABWPP\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q\x81\x85\x01R\x01a\x1F\x9AV[`@Q` \x81\x01\x91\x7Febl\xADl\xB9d\x93\xBFo^\xBE\xA2\x87V\xC9f\xF0#\xAB\x9E\x8A\x83\xA7\x10\x18I\xD5W;6x\x83Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`@\x84\x01R` \x82\x01Q\x16``\x83\x01R``e\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82`@\x82\x01Q\x16`\x80\x85\x01R\x01Q\x16`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RQ\x90 \x90V[`@Q` \x80\x82\x01\x92\x7Fa\x83X\xAC=\xB8\xDC'O\x0C\xD8\x82\x9D\xA7\xE24\xBDH\xCDs\xC4\xA7@\xAE\xDE\x1A\xDE\xC9\x84m\x06\xA1\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16`@\x84\x01R\x01Q``\x82\x01R``\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x90\x82`@\x91\x03\x12a\x14\x9BW` \x825\x92\x015\x90V[`\0\x84;a\".WP`A\x82\x03a!\xACWa \xE4\x82\x82\x01\x82a \xB1V[\x93\x90\x92`@\x10\x15a\x17rW` \x93`\0\x93`\xFF`@`\x80\x95\x015`\xF8\x1C[`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a!\xA0Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80`\0Q\x16\x91\x82\x15a!vW\x16\x03a!LWV[`\x04`@Q\x7F\x81^\x1Dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`\x04`@Q\x7F\x8B\xAAW\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`@Q=`\0\x82>=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 \x06\xE9{D\x9CS\xB3E\xA69`\x15\xC2\x1B\xFC\xBE\x0Cx\xDB&\x9B\x15\x05\xF2\xFE\xC9\xAE\xB1H\x16\xE3\xABdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static DEPLOYPRIORITYORDERREACTOR_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x91W[_\x80\xFD[\0[a\0Ma\0\xB4V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x88V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01fW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x8A\x91\x90a\x05\xEFV[\x90P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xF3W_\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x05W=_\x80>=_\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;_\x03\x90Pa\x02+Wa\x02)a\x04OV[P[_\x7F\xB0\x05\x9E\x91\x87\xDA\xACp\xF2\xC7e\xCF\xC9\x9A\x03\xF9\xBFC!\xC1\x1Bz\xB7\x84\xEE>1\x02\x92rL\x18_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02l\x90a\x05\xD5V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02\xADW=_\x80>=_\xFD[P\x90Pa\x02\xEF`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x05\x14V[_\x80_\x1B`@Qa\x02\xFF\x90a\x05\xE2V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x03\x1CW=_\x80>=_\xFD[P\x90Pa\x03^`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x05\x14V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\xC5W_\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xD7W=_\x80>=_\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x93PPPP\x90V[_\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aHKa#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04\xD1\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x06\x8AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\xE8W_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xFAW=_\x80>=_\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x05\xA5\x82\x82`@Q`$\x01a\x05*\x92\x91\x90a\x06\xC0V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x05\xA9V[PPV[a\x05\xB2\x81a\x05\xB5V[PV[\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[a3\x90\x80a\x06\xF8\x839\x01\x90V[a\r\xC3\x80a:\x88\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x05\xFFW_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\"W_\x80\xFD[\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x06MW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x061V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x06\xB8`@\x83\x01\x84a\x06)V[\x94\x93PPPPV[`@\x81R_a\x06\xD2`@\x83\x01\x85a\x06)V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x003\x908\x03\x80b\x003\x90\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa2xb\0\x01\x18_9_\x81\x81`\xDA\x01R\x81\x81a\r-\x01Ra\x19\x8F\x01Ra2x_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a#\xBDV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a$bV[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a$\xA1V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%4V[a\x06eV[a\0\xB4a\x01e6`\x04a%VV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%4V[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a%\xBDV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x86V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a({V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B7V[a\x04\x9F\x81a\x0B\x86V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x86V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga%\xBDV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B7V[a\x08d\x81a\x0B\x86V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a(\xB7V[\x81\x01\x90a\nW\x91\x90a,nV[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\np\x91a\x0C\xD1V[_a\nz\x82a\r\xE0V[\x90Pa\n\x86\x81\x83a\x10,V[_a\n\x94\x83``\x01Qa\x11\x8CV[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\n\xC1\x83\x86`\x80\x01Qa\x11\xDF\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xDD\x83\x86`\xA0\x01Qa\x12\xD8\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\n\xF2\x91\x90a(\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BVWa\x0BVa%\xBDV[` \x02` \x01\x01Q\x90Pa\x0Bi\x81a\x13\xBBV[a\x0Bs\x813a\x18\x98V[a\x0B}\x813a\x19\x8DV[P`\x01\x01a\x0B;V[\x80Q_[\x81\x81\x10\x15a\x0C\xC0W_\x83\x82\x81Q\x81\x10a\x0B\xA5Wa\x0B\xA5a%\xBDV[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\"W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xD9Wa\x0B\xD9a%\xBDV[` \x02` \x01\x01Q\x90Pa\x0C\x19\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBAV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CjWa\x0Cja%\xBDV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xAE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8AV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1D\x06V[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91_\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\rtW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x98\x91\x90a-hV[\x90P\x81\x81\x18\x80\x83\x16_\x03a\r\xD8W`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R_\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a1[` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919`@Q` \x01a\x0Fy\x94\x93\x92\x91\x90a-\x7FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\x9B\x83_\x01Qa\x1D\x9CV[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xB7\x87`\x80\x01Qa\x1E5V[a\x0F\xC4\x88`\xA0\x01Qa\x1E\x9BV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10kW`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\x98WP\x80C\x10[\x80\x15a\x10\xA8WP`\xC0\x82\x01QQ\x81\x11[\x15a\x10\xD2W` \x82\x01Qa\x10\xCA\x90a\x10\xC0\x84\x86a\x1F6V[\x84`\xE0\x01Qa\x1F\xACV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11\x0CW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03LW_[\x82`\xA0\x01QQ\x81\x10\x15a\x06_W_\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11@Wa\x11@a%\xBDV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\x84W`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11\x1CV[_H:\x10\x15a\x11\xC7W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x11\xD7W\x03\x90V[P_[\x91\x90PV[a\x12\x16`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[_\x83`@\x01Q\x83a\x12'\x91\x90a.\x02V[\x90Pb\x98\x96\x80\x81\x10a\x12sW`@Q\x80``\x01`@R\x80\x85_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x12\xD2V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x12\xBDW` \x86\x01Qa\x12\xB8\x90b\x98\x96\x80\x85\x81\x03\x90a \xCFV[a\x12\xC3V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xF6Wa\x12\xF6a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x14W\x90P[P\x91P_[\x81\x81\x10\x15a\x13\xB3Wa\x13\x8E\x85\x82\x81Q\x81\x10a\x13\x80Wa\x13\x80a%\xBDV[` \x02` \x01\x01Q\x85a!\tV[\x83\x82\x81Q\x81\x10a\x13\xA0Wa\x13\xA0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13cV[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x13\xDBWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x141\x90\x85\x90`\x04\x01a.\x19V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14KW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\x90\x91\x90\x81\x01\x90a.+V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x14\xA7\x82\x84a.\xF4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\xBFWa\x14\xBFa%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x15wW\x85`@\x01Q\x81\x81Q\x81\x10a\x15JWa\x15Ja%\xBDV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15dWa\x15da%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15,V[P_\x80_[\x84\x81\x10\x15a\x18\x87W_\x87\x82\x81Q\x81\x10a\x15\x97Wa\x15\x97a%\xBDV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16RW\x88\x81\x81Q\x81\x10a\x15\xBDWa\x15\xBDa%\xBDV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x15\xA3V[P_\x80[\x88\x81\x10\x15a\x17\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16uWa\x16ua%\xBDV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x06W\x85\x15a\x16\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x16\xFF\x90\x84a.\xF4V[\x92P`\x01\x96P[P`\x01\x01a\x16VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\x88W\x84\x15a\x17oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\x81\x90\x82a.\xF4V[\x90P`\x01\x93P[\x80_\x03a\x17\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x17\xEA\x81`\x05a'\x10a \xCFV[\x82` \x01Q\x11\x15a\x18]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18rWa\x18ra%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x18\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19e\x90\x84\x90\x86\x90`\x04\x01a/\x07V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19{W_\x80\xFD[PZ\xFA\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1AL\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a1\xE8\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a1-`.\x919`@Q` \x01a\x1C)\x95\x94\x93\x92\x91\x90a/5V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\x96\x96\x95\x94\x93\x92`\x04\x01a/\xCFV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xADW_\x80\xFD[PZ\xF1\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1C\xE4Wa\x03L\x82\x82a\x1D\x06V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xBCV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\\W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1DaV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x0F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10\x0F\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBAWa\x1E\xBAa%\x90V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE4W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1F'W_a\x1F\x15\x85\x83\x81Q\x81\x10a\x1F\x08Wa\x1F\x08a%\xBDV[` \x02` \x01\x01Qa\"\xAAV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xE9V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xC0\x01Q`@Q` \x01a\x1FQ\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x8E\x93\x92\x91` \x01a0\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x1F\xC2\x91\x90a0\xC2V[\x91P\x91P_\x83`@\x81Q\x81\x10a\x1F\xDAWa\x1F\xDAa%\xBDV[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a 4W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a \x8FWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a \xC6W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\x02W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a!\x8BWa!\x86\x85`@\x01Q\x85a!j\x91\x90a.\x02V[a!w\x90b\x98\x96\x80a.\xF4V[` \x87\x01Q\x90b\x98\x96\x80a# V[a!\x91V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\"\xA3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10\x0F\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#SW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_`@\x82\x84\x03\x12\x15a#rW_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a#\x88W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\x9FW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a#\xCFW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE6W_\x80\xFD[a#\xF2\x87\x83\x88\x01a#bV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x07W_\x80\xFD[Pa$\x14\x86\x82\x87\x01a#xV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$1W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$HW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a$sW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x89W_\x80\xFD[a$\x95\x85\x82\x86\x01a$!V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a$\xB4W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\xCBW_\x80\xFD[a$\xD7\x88\x83\x89\x01a$!V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\xEFW_\x80\xFD[Pa$\xFC\x87\x82\x88\x01a#xV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a\x11\xDA\x81a%\x08V[_` \x82\x84\x03\x12\x15a%DW_\x80\xFD[\x815a%O\x81a%\x08V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a%fW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%|W_\x80\xFD[a%\x88\x84\x82\x85\x01a#bV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\x04W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xECV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&#\x81` \x86\x01` \x86\x01a%\xEAV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a&\xB3W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a&hV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'1a\x01\xA0\x85\x01\x82a&\x0CV[\x90P` \x83\x01Qa'o` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'\x87\x82\x82a&UV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'\xA1\x82\x82a&\x0CV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(+W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\x19\x86\x83Qa&\xBEV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\xDFV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(\xADW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xEAW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\x04W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#\xB6W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xCFWa)\xCFa%\x90V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\xE6W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\0Wa*\0a%\x90V[a*1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)\x88V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*EW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a*qW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\x95Wa*\x95a%\x90V[\x81`@R\x82\x93P\x845\x91Pa*\xA9\x82a%\x08V[\x90\x82R` \x84\x015\x90a*\xBB\x82a%\x08V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xE5\x82a%\x08V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xFEW_\x80\xFD[Pa+\x0B\x85\x82\x86\x01a)\xD7V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+(W_\x80\xFD[a+0a)\x18V[\x90P\x815a+=\x81a%\x08V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+tWa+ta%\x90V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a+\x8DW_\x80\xFD[\x815` a+\xA2a+\x9D\x83a+[V[a)\x88V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\xC0W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,#W`\x80\x81\x89\x03\x12\x15a+\xDBW_\x80\xFD[a+\xE3a)AV[\x815a+\xEE\x81a%\x08V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x11\x81a%\x08V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\xC4V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a,>W_\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a,aWa,aa%\x90V[`@R\x915\x82RP\x91\x90PV[_` \x82\x84\x03\x12\x15a,~W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,\x95W_\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a,\xA9W_\x80\xFD[a,\xB1a)dV[\x825\x82\x81\x11\x15a,\xBFW_\x80\xFD[a,\xCB\x87\x82\x86\x01a*aV[\x82RPa,\xDA` \x84\x01a%)V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\0\x86`\x80\x85\x01a+\x18V[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\x16W_\x80\xFD[a-\"\x87\x82\x86\x01a+~V[`\xA0\x83\x01RPa-6\x86a\x01\0\x85\x01a,.V[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a-MW_\x80\xFD[a-Y\x87\x82\x86\x01a)\xD7V[`\xE0\x83\x01RP\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-xW_\x80\xFD[PQ\x91\x90PV[_\x85Qa-\x90\x81\x84` \x8A\x01a%\xEAV[\x85Q\x90\x83\x01\x90a-\xA4\x81\x83` \x8A\x01a%\xEAV[\x85Q\x91\x01\x90a-\xB7\x81\x83` \x89\x01a%\xEAV[\x84Q\x91\x01\x90a-\xCA\x81\x83` \x88\x01a%\xEAV[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x12\xD2Wa\x12\xD2a-\xD5V[` \x81R_a%O` \x83\x01\x84a&\xBEV[_` \x80\x83\x85\x03\x12\x15a.a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xFE\xB5\x9B\x92\xB026\x10F\xE1\x83\xA9\x95\xBD\xE7X(\x86\xEC\x94\x98\x99\x0F{vt\xB9\xC2\x17\xF8\xB1kdsolcC\0\x08\x18\x003`@`\x80\x81R`\x04\x90\x816\x10\x15a\0\x15W`\0\x80\xFD[`\0\x90\x815`\xE0\x1C\x80c\rX\xB1\xDB\x14a\x12lW\x80c\x13|)\xFE\x14a\x10uW\x80c*-\x80\xD1\x14a\r\xB7W\x80c+g\xB5p\x14a\x0B\xDEW\x80c0\xF2\x8Bz\x14a\n\xDEW\x80c6D\xE5\x15\x14a\n\x9DW\x80c6\xC7\x85\x16\x14a\n(W\x80c?\xF9\xDC\xB1\x14a\t\xA8W\x80cO\xE0+D\x14a\t?W\x80ce\xD9r<\x14a\x07\xACW\x80c\x87Q|E\x14a\x06zW\x80c\x92}\xA1\x05\x14a\x05\xC3W\x80c\xCCS(\x7F\x14a\x04\xA3W\x80c\xED\xD9DK\x14a\x03:Wc\xFE\x8E\xC1\xA7\x14a\0\xC6W`\0\x80\xFD[4a\x036W`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x835\x81\x81\x11a\x032Wa\x01\x14\x906\x90\x86\x01a\x16KV[`$5\x82\x81\x11a\x03.Wa\x01+\x906\x90\x87\x01a\x16\x1AV[a\x013a\x14\xE6V[\x91`\x845\x85\x81\x11a\x03*Wa\x01K\x906\x90\x8A\x01a\x15\xC1V[\x98\x90\x95`\xA45\x90\x81\x11a\x03&Wa\x01d\x916\x91\x01a\x15\xC1V[\x96\x90\x95\x81Q\x90a\x01s\x82a\x13\xFFV[`k\x82R\x7FPermitBatchWitnessTransferFrom(T` \x83\x01R\x7FokenPermissions[] permitted,addr\x83\x83\x01R\x7Fess spender,uint256 nonce,uint25``\x83\x01R\x7F6 deadline,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x82Q\x9A\x8B\x91\x81a\x02\"` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8A\x81R\x03\x99a\x02[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x9B\x8C\x81\x01\x83R\x82a\x147V[Q\x90 \x90\x85QQa\x02k\x81a\x1E\xBBV[\x90\x8A[\x81\x81\x10a\x02\xF9WPPa\x02\xF6\x99\x9Aa\x02\xED\x91\x83Qa\x02\xA0\x81a\x02\x94` \x82\x01\x80\x95a\x1FfV[\x03\x84\x81\x01\x83R\x82a\x147V[Q\x90 ` \x89\x81\x01Q\x85\x8B\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`d5`\xC0\x84\x01R\x82`\xE0\x81\x01[\x03\x90\x81\x01\x83R\x82a\x147V[Q\x90 \x93a\x1C\xF7V[\x80\xF3[\x80a\x03\x11a\x03\x0Ba\x03!\x93\x8CQa\x17^V[Qa TV[a\x03\x1B\x82\x86a\x17^V[Ra\x1F\nV[a\x02nV[\x88\x80\xFD[\x87\x80\xFD[\x84\x80\xFD[\x83\x80\xFD[P\x80\xFD[P\x914a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x805\x82\x81\x11a\x032Wa\x03\x8B\x906\x90\x83\x01a\x16KV[`$5\x83\x81\x11a\x03.Wa\x03\xA2\x906\x90\x84\x01a\x16\x1AV[\x93\x90\x92a\x03\xADa\x14\xE6V[\x91`d5\x90\x81\x11a\x04\x9FWa\x03\xC4\x916\x91\x01a\x15\xC1V[\x94\x90\x93\x83QQ\x97a\x03\xD4\x89a\x1E\xBBV[\x98\x88[\x81\x81\x10a\x04}WPPa\x02\xF6\x97\x98\x81Qa\x04%\x81a\x03\xF9` \x82\x01\x80\x95a\x1FfV[\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x01\x83R\x82a\x147V[Q\x90 ` \x86\x01Q\x82\x87\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\xFC\xF3_Z\xC6\xA2\xC2\x88h\xDCD\xC3\x02\x16dp&b9\x19_\x02\xB0\xEE@\x834\x82\x933\xB7f\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x02\xED\x81a\x14\x1BV[\x80\x8Ba\x03\x1B\x82a\x04\x94a\x03\x0Ba\x04\x9A\x96\x8DQa\x17^V[\x92a\x17^V[a\x03\xD7V[\x86\x80\xFD[P\x824a\x05\xBFW` \x90\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x03.Wa\x04\xF4\x916\x91\x01a\x16\x1AV[\x92\x90\x91\x84[\x84\x81\x10a\x05\x04W\x85\x80\xF3[\x80a\x05\x1Aa\x05\x15`\x01\x93\x88\x88a\x19lV[a\x19|V[a\x05/\x84a\x05)\x84\x8A\x8Aa\x19lV[\x01a\x19|V[3\x89R\x83\x85R\x85\x89 \x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x92\x83\x8BR\x86R\x86\x8A \x91\x16\x90\x81\x8AR\x85R\x85\x89 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81T\x16\x90U\x85Q\x91\x82R\x84\x82\x01R\x7F\x89\xB1\xAD\xD1^\xFFV\xB3\xDF\xE2\x99\xAD\x94\xE0\x1F+R\xFB\xCB\x80\xAE\x1A;\xAE\xA6\xAE\x8C\x04\xCB+\x98\xA4\x853\x92\xA2\x01a\x04\xF9V[\x82\x80\xFD[P4a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06v\x81a\x05\xFFa\x14\xA0V[\x93a\x06\x08a\x14\xC3V[a\x06\x10a\x14\xE6V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16\x83R`\x01` \x90\x81R\x84\x84 \x92\x88\x16\x84R\x91\x82R\x83\x83 \x90\x87\x16\x83R\x81R\x91\x90 T\x92Q\x93\x83\x16\x84R`\xA0\x83\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x84\x01R`\xD0\x91\x90\x91\x1C`@\x83\x01R\x81\x90``\x82\x01\x90V[\x03\x90\xF3[P4a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06\xB2a\x14\xA0V[\x90a\x06\xBBa\x14\xC3V[\x91a\x06\xC4a\x14\xE6V[e\xFF\xFF\xFF\xFF\xFF\xFF\x92`d5\x84\x81\x16\x90\x81\x81\x03a\x03*Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x7F\xDA\x9F\xA7\xC1\xB0\x04\x02\xC1}\x01a\xB2I\xB1\xAB\x8B\xBE\xC0G\xC5\xA5\"\x07\xB9\xC1\x12\xDE\xFF\xD8\x17\x03k\x943\x8AR`\x01` R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x8B \x98s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x94\x16\x99\x8A\x8DR` R\x83\x87\x8D \x9B\x16\x9A\x8B\x8DR` R\x86\x8C \x94\x86\x15`\0\x14a\x07\xA4WPB\x16\x92[\x84T\x92\x16\x97\x88\x93`\xA0\x1B\x16\x91\x16\x17\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA4\x80\xF3[\x90P\x92a\x07\x83V[P\x824a\x05\xBFW``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x07\xE5a\x14\xA0V[\x90a\x07\xEEa\x14\xC3V[\x92e\xFF\xFF\xFF\xFF\xFF\xFF`D5\x81\x81\x16\x93\x90\x84\x81\x03a\x03*W3\x88R` \x91`\x01\x83R\x84\x89 \x96s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x97\x88\x8BR\x84R\x85\x8A \x98\x16\x97\x88\x8AR\x83R\x84\x89 T`\xD0\x1C\x93\x84\x87\x11\x15a\t\x17Wa\xFF\xFF\x90\x85\x84\x03\x16\x11a\x08\xF0WP\x90\x7FU\xEB\x90\xD8\x10\xE1p\x0B5\xA8\xE7\xE2S\x95\xFF\x7F+\"Y\xAB\xD7A\\\xA2(M\xFB\x1C$d\x18\xF3\x93\x92\x913\x89R`\x01\x82R\x83\x89 \x87\x8AR\x82R\x83\x89 \x88\x8AR\x82R\x83\x89 \x90y\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83T\x92`\xD0\x1B\x16\x91\x16\x17\x90U\x82Q\x94\x85R\x84\x01R3\x92\xA4\x80\xF3[\x84Q\x7F$\xD3Z&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P4a\x036W\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W\x80` \x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\x8Fa\x14\xA0V[\x16\x81R\x80\x84R\x81\x81 `$5\x82R\x84R T\x90Q\x90\x81R\xF3[P\x824a\x05\xBFW\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFW\x7F7\x04\x90/\x967f\xA4\xE5a\xBB\xAA\xB6\xE6\xCD\xC1\xB1\xDD\x12\xF6\xE9\xE9\x96H\xDA\x88C\xB3\xF4k\x91\x8D\x905\x91`$53\x85R\x84` R\x81\x85 \x84\x86R` R\x81\x85 \x81\x81T\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA2\x80\xF3[\x824a\n\x9AW`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\n\x9AWa\n`a\x14\xA0V[a\nha\x14\xC3V[a\npa\x14\xE6V[`d5\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x83\x03a\x03.Wa\x02\xF6\x93a\x17\xA1V[\x80\xFD[P4a\x036W\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W` \x90a\n\xD7a\x1B\x1EV[\x90Q\x90\x81R\xF3[P\x82\x904a\x05\xBFWa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x0B\x1A6a\x15*V[\x90\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x0BLa\x14xV[\x91`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\xDAWa\x02\xF6\x94a\x0Bo\x916\x91\x01a\x15\xC1V[\x93\x90\x92a\x0B|\x83Qa TV[` \x84\x01Q\x82\x85\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\x93\x9C!\xA4\x8A\x8D\xBE:\x9A$\x04\xA1\xD4f\x91\xE4\xD3\x9Fe\x83\xD6\xECk5qF\x04\xC9\x86\xD8\x01\x06\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x0B\xD1\x81a\x14\x1BV[Q\x90 \x91a\x1C%V[\x85\x80\xFD[P\x914a\x036Wa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x0C\x18a\x14\xA0V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC6\x01`\xC0\x81\x12a\x032W`\x80\x85Q\x91a\x0CQ\x83a\x13\xE3V[\x12a\x032W\x84Q\x90a\x0Cb\x82a\x13\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91`$5\x83\x81\x16\x81\x03a\x04\x9FW\x81R`D5\x83\x81\x16\x81\x03a\x04\x9FW` \x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF`d5\x81\x81\x16\x81\x03a\x03*W\x88\x83\x01R`\x845\x90\x81\x16\x81\x03a\x04\x9FW``\x82\x01R\x81R`\xA45\x93\x82\x85\x16\x85\x03a\x0B\xDAW` \x82\x01\x94\x85R`\xC45\x90\x87\x83\x01\x82\x81R`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x03&Wa\x0C\xFE\x906\x90\x84\x01a\x15\xC1V[\x92\x90\x93\x80B\x11a\r\x88WPP\x91\x85\x91a\rxa\x02\xF6\x99\x9Aa\r~\x95a\r#\x88Qa\x1F\xBEV[\x90\x89\x8CQ\x16\x90Q\x90\x83Q\x92` \x84\x01\x94\x7F\xF3\x84\x1C\xD1\xFF\0\x85\x02jc'\xB6 \xB6y\x97\xCE@\xF2\x82\xC8\x8A\x8E\x90ZzV&\xE3\x10\xF3\xD0\x86R\x84\x01R``\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x90 a\x1B\xD9V[\x91a \xC7V[Q\x92Q\x16\x91a\x19\x9DV[`$\x92P\x8AQ\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[P\x914a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x93\x81\x856\x01\x12a\x032Wa\r\xF3a\x14\xA0V[\x92`$\x90\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x85\x11a\x03*W\x85\x90\x856\x03\x01\x12a\x04\x9FW\x80Q\x97\x85\x89\x01\x89\x81\x10\x82\x82\x11\x17a\x10JW\x82R\x84\x83\x015\x81\x81\x11a\x03&W\x85\x01\x906`#\x83\x01\x12\x15a\x03&W\x83\x82\x015\x91a\x0EP\x83a\x15\xEFV[\x90a\x0E]\x85Q\x92\x83a\x147V[\x83\x82R` \x93\x87\x85\x84\x01\x91`\x07\x1B\x83\x01\x01\x916\x83\x11a\x10FW\x88\x01\x90[\x82\x82\x10a\x0F\xE9WPPP\x8AR`Da\x0E\x93\x86\x88\x01a\x15\tV[\x96\x83\x8C\x01\x97\x88R\x015\x94\x83\x8B\x01\x91\x86\x83R`D5\x90\x81\x11a\x0F\xE5Wa\x0E\xBB\x906\x90\x87\x01a\x15\xC1V[\x95\x90\x96\x80B\x11a\x0F\xBAWPPP\x89\x98\x99QQa\x0E\xD6\x81a\x1E\xBBV[\x90\x8B[\x81\x81\x10a\x0F\x97WPP\x92\x88\x94\x92a\rx\x92a\x0Fd\x97\x95\x83Qa\x0F\x02\x81a\x03\xF9\x86\x82\x01\x80\x95a\x1FfV[Q\x90 \x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x8B\x8BQ\x16\x91Q\x92\x85Q\x94\x85\x01\x95\x7F\xAF\x1B\r0\xD2\xCA\xB08\x0Eh\xF0h\x90\x07\xE3%I\x93\xC5\x96\xF2\xFD\xD0\xAA\xA7\xF4\xD0OyD\x08c\x87R\x85\x01R\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x16\x90\x82QQ\x92\x84[\x84\x81\x10a\x0FxW\x85\x80\xF3[\x80a\x0F\x91\x85\x85a\x0F\x8B`\x01\x95\x87Qa\x17^V[Qa\x19\x9DV[\x01a\x0FmV[\x80a\x03\x11a\x0F\xAC\x8E\x9F\x9E\x93a\x0F\xB2\x94Qa\x17^V[Qa\x1F\xBEV[\x9B\x9A\x9Ba\x0E\xD9V[\x85Q\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[\x8A\x80\xFD[`\x80\x826\x03\x12a\x10FW\x85`\x80\x91\x88Qa\x10\x02\x81a\x13\x98V[a\x10\x0B\x85a\x15\tV[\x81Ra\x10\x18\x83\x86\x01a\x15\tV[\x83\x82\x01Ra\x10'\x8A\x86\x01a\x16\x07V[\x8A\x82\x01R\x8Da\x107\x81\x87\x01a\x16\x07V[\x90\x82\x01R\x81R\x01\x91\x01\x90a\x0EzV[\x8C\x80\xFD[\x84\x89`A\x86\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83RR\xFD[P\x824a\x05\xBFWa\x01@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x10\xB06a\x15*V[\x91\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x10\xE2a\x14xV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90a\x01\x045\x85\x81\x11a\x04\x9FWa\x11\x05\x906\x90\x86\x01a\x15\xC1V[\x90\x93a\x01$5\x96\x87\x11a\x03*Wa\x11%a\x0B\xD1\x96a\x02\xF6\x986\x91\x01a\x15\xC1V[\x96\x90\x95\x82Q\x90a\x114\x82a\x13\xFFV[`d\x82R\x7FPermitWitnessTransferFrom(TokenP` \x83\x01R\x7Fermissions permitted,address spe\x84\x83\x01R\x7Fnder,uint256 nonce,uint256 deadl``\x83\x01R\x7Fine,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x83Q\x94\x85\x91\x81a\x11\xE3` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8B\x81R\x03\x93a\x12\x1C\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x95\x86\x81\x01\x83R\x82a\x147V[Q\x90 \x92a\x12*\x86Qa TV[` \x87\x81\x01Q\x85\x89\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`\xE45`\xC0\x84\x01R\x82`\xE0\x81\x01a\x02\xE1V[P\x824a\x05\xBFW` \x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x0B\xDAW6`#\x83\x01\x12\x15a\x0B\xDAW\x81\x015\x92\x83\x11a\x03.W`$\x90`\x076\x83\x86\x83\x1B\x84\x01\x01\x11a\x04\x9FW\x86[\x85\x81\x10a\x12\xE5W\x87\x80\xF3[\x80\x82\x1B\x83\x01\x90`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\x836\x03\x01\x12a\x03&Wa\x13\x92\x88\x87`\x01\x94``\x83Qa\x13,\x81a\x13\x98V[a\x13h`\x84a\x13<\x8D\x86\x01a\x15\tV[\x94\x85\x84Ra\x13L`D\x82\x01a\x15\tV[\x80\x97\x85\x01Ra\x13]`d\x82\x01a\x15\tV[\x80\x98\x85\x01R\x01a\x15\tV[\x91\x82\x91\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x80\x80\x93\x16\x95\x16\x93\x16\x91\x16a\x17\xA1V[\x01a\x12\xDAV[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC45\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`\0\x80\xFD[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`D5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x01\x90`\x80\x82\x12a\x14\x9BW`@\x80Q\x90a\x15c\x82a\x13\xE3V[\x80\x82\x94\x12a\x14\x9BW\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W\x82R`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x81R`$5` \x82\x01R\x82R`D5` \x83\x01R`d5\x91\x01RV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x83\x81\x86\x01\x95\x01\x01\x11a\x14\x9BWV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x13\xB4W`\x05\x1B` \x01\x90V[5\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x80\x85\x01\x94\x84`\x06\x1B\x01\x01\x11a\x14\x9BWV[\x91\x90\x91``\x81\x84\x03\x12a\x14\x9BW`@\x80Q\x91a\x16f\x83a\x13\xE3V[\x82\x94\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x81\x11a\x14\x9BW\x83\x01\x82`\x1F\x82\x01\x12\x15a\x14\x9BW\x805a\x16\x93\x81a\x15\xEFV[\x92a\x16\xA0\x87Q\x94\x85a\x147V[\x81\x84R` \x94\x85\x80\x86\x01\x93`\x06\x1B\x85\x01\x01\x93\x81\x85\x11a\x14\x9BW\x90\x86\x89\x98\x97\x96\x95\x94\x93\x92\x01\x92[\x84\x84\x10a\x16\xE3WPPPPP\x85R\x80\x82\x015\x90\x85\x01R\x015\x91\x01RV[\x90\x91\x92\x93\x94\x95\x96\x97\x84\x83\x03\x12a\x14\x9BW\x88Q\x90\x89\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17a\x170W\x8A\x92\x89\x92\x84Ra\x17\x14\x87a\x15\tV[\x81R\x82\x87\x015\x83\x82\x01R\x81R\x01\x93\x01\x91\x90\x88\x97\x96\x95\x94\x93a\x16\xC6V[`$`\0\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`A`\x04R\xFD[\x80Q\x82\x10\x15a\x17rW` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x92\x91\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@`\0\x82\x84\x16\x81R`\x01` R\x82\x82\x82 \x96\x16\x95\x86\x82R` R\x81\x81 3\x82R` R \x94\x85T\x95e\xFF\xFF\xFF\xFF\xFF\xFF\x87`\xA0\x1C\x16\x80B\x11a\x18\x84WP\x82\x87\x16\x96\x83\x88\x03a\x18\x12W[PPa\x18\x10\x95P\x16\x92a\x18\xB5V[V[\x87\x84\x84\x16\x11`\0\x14a\x18OW`$\x88`@Q\x90\x7F\xF9o\xB0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x84a\x18\x10\x9A\x03\x16\x91\x16\x17\x90U8\x80a\x18\x02V[`$\x90`@Q\x90\x7F\xD8\x1B/.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90`\0`d\x92` \x95\x82\x95`@Q\x94\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\x04\x86\x01R`$\x85\x01R`D\x84\x01RZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x15a\x19\x0EWV[`d`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R\xFD[\x91\x90\x81\x10\x15a\x17rW`\x06\x1B\x01\x90V[5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x90V[\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81``\x84\x01Q\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x85Q\x16\x94\x82` \x82\x01Q\x16\x92\x80\x86`@\x80\x94\x01Q\x16\x95\x16\x95`\0\x91\x87\x83R`\x01` R\x83\x83 \x89\x84R` R\x83\x83 \x99\x16\x98\x89\x83R` R\x82\x82 \x91\x84\x83T`\xD0\x1C\x03a\x1A\xF5W\x91\x85a\x1A\xCE\x94\x92\x7F\xC6\xA3w\xBF\xC4\xEB\x12\0$\xA8\xAC\x08\xEE\xF2\x05\xBE\x16\xB8\x17\x02\x08\x12\xC72#\xE8\x1D\x1B\xDB\x97\x08\xEC\x98\x97\x96\x94P\x87\x15`\0\x14a\x1A\xD3Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90B\x16[`\xA0\x1B\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01\x86\x01`\xD0\x1B\x16\x17\x17\x90UQ\x93\x84\x93\x84\x91`@\x91\x94\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF``\x85\x01\x96\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x80\x92\x16` \x85\x01R\x16\x91\x01RV[\x03\x90\xA4V[Py\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87a\x1A`V[`\x04\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x1BiW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x82R\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j`@\x82\x01RF``\x82\x01R0`\x80\x82\x01R`\x80\x81Ra\x1B\xD3\x81a\x13\xFFV[Q\x90 \x90V[a\x1B\xE1a\x1B\x1EV[\x90`@Q\x90` \x82\x01\x92\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84R`\"\x83\x01R`B\x82\x01R`B\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x92\x90\x93`\xA45\x93`@\x84\x01Q\x80B\x11a\x1C\xC6WP` \x84Q\x01Q\x80\x86\x11a\x1C\x95WP\x91\x85\x91a\rxa\x1Ce\x94a\x1C`` \x88\x01Q\x86a\x1EGV[a\x1B\xD9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91QQ\x16\x92`\x845\x91\x82\x16\x82\x03a\x14\x9BWa\x18\x10\x93a\x18\xB5V[`$\x90`@Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`$\x90`@Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x95\x90\x93\x95\x80QQ\x95`@\x92\x83\x83\x01Q\x80B\x11a\x1E\x17WP\x84\x88\x03a\x1D\xEEWa\x1D.\x91\x86\x91a\rx` \x9Ba\x1C`\x8D\x88\x01Q\x86a\x1EGV[`\0[\x86\x81\x10a\x1DBWPPPPPPPPV[a\x1DM\x81\x83Qa\x17^V[Q\x88a\x1DZ\x83\x87\x8Aa\x19lV[\x015\x90\x89\x81\x01Q\x80\x83\x11a\x1D\xBEWP\x91\x81\x88\x88\x88`\x01\x96\x85\x96a\x1D\x84W[PPPPPP\x01a\x1D1V[a\x1D\xB3\x95a\x1D\xAD\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x05\x15\x93Q\x16\x95a\x19lV[\x91a\x18\xB5V[\x808\x88\x88\x88\x83a\x1DxV[`$\x90\x86Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`\x04\x84Q\x7F\xFFc:8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`$\x90\x85Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\xFF\x83\x16\x1B\x92\x16`\0R`\0` R`@`\0 \x90`\x08\x1C`\0R` R`@`\0 \x81\x81T\x18\x80\x91U\x16\x15a\x1E\x91WV[`\x04`@Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90a\x1E\xC5\x82a\x15\xEFV[a\x1E\xD2`@Q\x91\x82a\x147V[\x82\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x1F\0\x82\x94a\x15\xEFV[\x01\x90` 6\x91\x017V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x1F7W`\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80Q` \x80\x92\x01\x91`\0[\x82\x81\x10a\x1F\x7FWPPPP\x90V[\x83Q\x85R\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x1FqV[\x90\x81Q\x91`\0[\x83\x81\x10a\x1F\xABWPP\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q\x81\x85\x01R\x01a\x1F\x9AV[`@Q` \x81\x01\x91\x7Febl\xADl\xB9d\x93\xBFo^\xBE\xA2\x87V\xC9f\xF0#\xAB\x9E\x8A\x83\xA7\x10\x18I\xD5W;6x\x83Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`@\x84\x01R` \x82\x01Q\x16``\x83\x01R``e\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82`@\x82\x01Q\x16`\x80\x85\x01R\x01Q\x16`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RQ\x90 \x90V[`@Q` \x80\x82\x01\x92\x7Fa\x83X\xAC=\xB8\xDC'O\x0C\xD8\x82\x9D\xA7\xE24\xBDH\xCDs\xC4\xA7@\xAE\xDE\x1A\xDE\xC9\x84m\x06\xA1\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16`@\x84\x01R\x01Q``\x82\x01R``\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x90\x82`@\x91\x03\x12a\x14\x9BW` \x825\x92\x015\x90V[`\0\x84;a\".WP`A\x82\x03a!\xACWa \xE4\x82\x82\x01\x82a \xB1V[\x93\x90\x92`@\x10\x15a\x17rW` \x93`\0\x93`\xFF`@`\x80\x95\x015`\xF8\x1C[`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a!\xA0Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80`\0Q\x16\x91\x82\x15a!vW\x16\x03a!LWV[`\x04`@Q\x7F\x81^\x1Dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`\x04`@Q\x7F\x8B\xAAW\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`@Q=`\0\x82>=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 \x06\xE9{D\x9CS\xB3E\xA69`\x15\xC2\x1B\xFC\xBE\x0Cx\xDB&\x9B\x15\x05\xF2\xFE\xC9\xAE\xB1H\x16\xE3\xABdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static DEPLOYPRIORITYORDERREACTOR_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct DeployPriorityOrderReactor(::ethers::contract::Contract); - impl ::core::clone::Clone for DeployPriorityOrderReactor { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for DeployPriorityOrderReactor { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for DeployPriorityOrderReactor { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for DeployPriorityOrderReactor { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(DeployPriorityOrderReactor)) - .field(&self.address()) - .finish() - } - } - impl DeployPriorityOrderReactor { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - DEPLOYPRIORITYORDERREACTOR_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - DEPLOYPRIORITYORDERREACTOR_ABI.clone(), - DEPLOYPRIORITYORDERREACTOR_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `IS_SCRIPT` (0xf8ccbf47) function - pub fn is_script(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([248, 204, 191, 71], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `run` (0xc0406226) function - pub fn run( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - PriorityOrderReactorDeployment, - > { - self.0 - .method_hash([192, 64, 98, 38], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setUp` (0x0a9254e4) function - pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([10, 146, 84, 228], ()) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for DeployPriorityOrderReactor { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "IS_SCRIPT", abi = "IS_SCRIPT()")] - pub struct IsScriptCall; - ///Container type for all input parameters for the `run` function with signature `run()` and selector `0xc0406226` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "run", abi = "run()")] - pub struct RunCall; - ///Container type for all input parameters for the `setUp` function with signature `setUp()` and selector `0x0a9254e4` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setUp", abi = "setUp()")] - pub struct SetUpCall; - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum DeployPriorityOrderReactorCalls { - IsScript(IsScriptCall), - Run(RunCall), - SetUp(SetUpCall), - } - impl ::ethers::core::abi::AbiDecode for DeployPriorityOrderReactorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IsScript(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Run(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetUp(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for DeployPriorityOrderReactorCalls { - fn encode(self) -> Vec { - match self { - Self::IsScript(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Run(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for DeployPriorityOrderReactorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::IsScript(element) => ::core::fmt::Display::fmt(element, f), - Self::Run(element) => ::core::fmt::Display::fmt(element, f), - Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for DeployPriorityOrderReactorCalls { - fn from(value: IsScriptCall) -> Self { - Self::IsScript(value) - } - } - impl ::core::convert::From for DeployPriorityOrderReactorCalls { - fn from(value: RunCall) -> Self { - Self::Run(value) - } - } - impl ::core::convert::From for DeployPriorityOrderReactorCalls { - fn from(value: SetUpCall) -> Self { - Self::SetUp(value) - } - } - ///Container type for all return fields from the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsScriptReturn(pub bool); - ///Container type for all return fields from the `run` function with signature `run()` and selector `0xc0406226` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct RunReturn { - pub deployment: PriorityOrderReactorDeployment, - } - ///`PriorityOrderReactorDeployment(address,address,address)` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct PriorityOrderReactorDeployment { - pub permit_2: ::ethers::core::types::Address, - pub reactor: ::ethers::core::types::Address, - pub quoter: ::ethers::core::types::Address, - } -} diff --git a/crates/bindings-uniswapx/src/deploy_swap_router_02_executor.rs b/crates/bindings-uniswapx/src/deploy_swap_router_02_executor.rs deleted file mode 100644 index 26810d3..0000000 --- a/crates/bindings-uniswapx/src/deploy_swap_router_02_executor.rs +++ /dev/null @@ -1,352 +0,0 @@ -pub use deploy_swap_router_02_executor::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod deploy_swap_router_02_executor { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("run"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("run"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("executor"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "contract SwapRouter02Executor", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setUp"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setUp"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static DEPLOYSWAPROUTER02EXECUTOR_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[Pa!\x9F\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0wW[_\x80\xFD[\0[a\0Ma\0\x9AV[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x8A\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0nV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_REACTOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R_\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01XW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01|\x91\x90a\x07HV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_WHITELISTED_CALLER\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02;W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02_\x91\x90a\x07HV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_OWNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x1EW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03B\x91\x90a\x07HV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_SWAPROUTER02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x01W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04%\x91\x90a\x07HV[\x90P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x8EW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xA0W=_\x80>=_\xFD[PPPP_\x80\x1B\x83\x85\x84\x84`@Qa\x04\xB7\x90a\x07;V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x90\x83\x16`@\x83\x01R\x90\x91\x16``\x82\x01R`\x80\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x05\tW=_\x80>=_\xFD[P\x94P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x05sW_\x80\xFD[PZ\xF1\x15\x80\x15a\x05\x85W=_\x80>=_\xFD[PPPPa\x05\xC8`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86a\x06zV[a\x06s`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06JW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06n\x91\x90a\x07HV[a\x06zV[PPPP\x90V[a\x07\x0B\x82\x82`@Q`$\x01a\x06\x90\x92\x91\x90a\x07\x82V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\x0FV[PPV[a\x07\x18\x81a\x07\x1BV[PV[\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[a\x19a\x80a\x08\t\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x07XW_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07{W_\x80\xFD[\x93\x92PPPV[`@\x81R_\x83Q\x80`@\x84\x01R_[\x81\x81\x10\x15a\x07\xAEW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x07\x91V[P_``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFEa\x01\0`@R4\x80\x15b\0\0\x11W_\x80\xFD[P`@Qb\0\x19a8\x03\x80b\0\x19a\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01&V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x81\x16`\xC0R\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\xD1W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xF7\x91\x90b\0\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xB0\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01#W_\x80\xFD[PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15b\0\x01:W_\x80\xFD[\x84Qb\0\x01G\x81b\0\x01\x0EV[` \x86\x01Q\x90\x94Pb\0\x01Z\x81b\0\x01\x0EV[`@\x86\x01Q\x90\x93Pb\0\x01m\x81b\0\x01\x0EV[``\x86\x01Q\x90\x92Pb\0\x01\x80\x81b\0\x01\x0EV[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15b\0\x01\x9CW_\x80\xFD[\x81Qb\0\x01\xA9\x81b\0\x01\x0EV[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x171b\0\x020_9_\x81\x81`\xE2\x01R\x81\x81a\x08\xDC\x01Ra\t\x8C\x01R_\x81\x81a\x02M\x01R\x81\x81a\x02\xE4\x01R\x81\x81a\x03\xF8\x01R\x81\x81a\x05S\x01R\x81\x81a\nC\x01Ra\n\xE2\x01R_a\x01\xEF\x01R_\x81\x81a\x01\x9D\x01R\x81\x81a\x03`\x01R\x81\x81a\x04\x90\x01R\x81\x81a\x06\x15\x01Ra\x06\xDF\x01Ra\x171_\xF3\xFE`\x80`@R`\x046\x10a\0\xC6W_5`\xE0\x1C\x80c\x8C!\xB4\x11\x11a\0qW\x80c\xD0\xF2\xD8\xAC\x11a\0LW\x80c\xD0\xF2\xD8\xAC\x14a\x02oW\x80c\xE5\x13^\xC6\x14a\x02\x8EW\x80c\xF2\xFD\xE3\x8B\x14a\x02\xADW_\x80\xFD[\x80c\x8C!\xB4\x11\x14a\x01\xDEW\x80c\x8D\xA5\xCB[\x14a\x02\x11W\x80c\xABW&P\x14a\x02=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x05G\x91\x90\x81\x01\x90a\x13\x9EV[PG\x15a\x05xWa\x05x\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\r\x10V[PPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_[\x83\x81\x10\x15a\x06\xA1Wa\x06\x99\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x06gWa\x06ga\x12\x93V[\x90P` \x02\x01` \x81\x01\x90a\x06|\x91\x90a\x0F\x86V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C?V[`\x01\x01a\x06\x08V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x078\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x15'V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x07SW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x07\x98\x91\x90\x81\x01\x90a\x13\x9EV[PPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\x1FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[a\x08)\x81Ga\r\xABV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xACW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t6W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tZ\x91\x90a\x15\xB6V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\t\xE2W_\x80\xFD[PZ\xF1\x15\x80\x15a\t\xF4W=_\x80>=_\xFD[PPPPa\n\x02\x82Ga\r\xABV[PPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\n|\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x16\x17V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\n\x93W_\x80\xFD[PZ\xF1\x15\x80\x15a\x05xW=_\x80>=_\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x0B\x1D\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\xD0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\r\nW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\rfW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\rkV[``\x91P[PP\x90P\x80a\r\xA6W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\r\xA6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[_\x80\x83`\x1F\x84\x01\x12a\x0E-W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0EDW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0E^W_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x0EuW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x8CW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0E^W_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0E\xB6W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xCDW_\x80\xFD[a\x0E\xD9\x88\x83\x89\x01a\x0E\x1DV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0E\xF1W_\x80\xFD[Pa\x0E\xFE\x87\x82\x88\x01a\x0EeV[\x95\x98\x94\x97P\x95PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0F\x1DW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F4W_\x80\xFD[a\x0F@\x88\x83\x89\x01a\x0E\x1DV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0FXW_\x80\xFD[Pa\x0E\xFE\x87\x82\x88\x01a\x0E\x1DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08)W_\x80\xFD[_` \x82\x84\x03\x12\x15a\x0F\x96W_\x80\xFD[\x815a\x0F\xA1\x81a\x0FeV[\x93\x92PPPV[_\x80_`@\x84\x86\x03\x12\x15a\x0F\xBAW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\xD1W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x0F\xE4W_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x0F\xF9W_\x80\xFD[Pa\x10\x06\x86\x82\x87\x01a\x0EeV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10\x87Wa\x10\x87a\x10\x13V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10\xA8Wa\x10\xA8a\x10\x13V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x10\xC1W_\x80\xFD[\x815` a\x10\xD6a\x10\xD1\x83a\x10\x8FV[a\x10@V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x10\xF7W_\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x11\x1CW\x805a\x11\x0F\x81a\x0FeV[\x83R\x91\x83\x01\x91\x83\x01a\x10\xFCV[P\x96\x95PPPPPPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11@Wa\x11@a\x10\x13V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x80_``\x84\x86\x03\x12\x15a\x11~W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\x95W_\x80\xFD[a\x11\xA1\x87\x83\x88\x01a\x10\xB2V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\xB7W_\x80\xFD[a\x11\xC3\x88\x82\x89\x01a\x10\xB2V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x11\xD8W_\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x11\xE8W_\x80\xFD[\x805a\x11\xF6a\x10\xD1\x82a\x10\x8FV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x12\x14W_\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12\x81W\x805\x87\x81\x11\x15a\x12.W_\x80\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12>W_\x80\xFD[\x88\x81\x015a\x12Na\x10\xD1\x82a\x11'V[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12aW_\x80\xFD[\x81\x89\x84\x01\x8C\x83\x017_\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x12\x18V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x12\xDAW\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\xC2V[PP_\x91\x01RV[_`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01_[\x82\x81\x10\x15a\x13\x90W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13S\x81\x88\x8A\x01\x89\x85\x01a\x12\xC0V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x13\x0EV[P\x93\x98\x97PPPPPPPPV[_` \x80\x83\x85\x03\x12\x15a\x13\xAFW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\xC6W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x13\xD9W_\x80\xFD[\x81Qa\x13\xE7a\x10\xD1\x82a\x10\x8FV[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x14\x05W_\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14sW\x80Q\x85\x81\x11\x15a\x14\x1FW_\x80\xFD[\x86\x01`?\x81\x01\x8B\x13a\x14/W_\x80\xFD[\x87\x81\x01Q`@a\x14Aa\x10\xD1\x83a\x11'V[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14TW_\x80\xFD[a\x14c\x83\x8C\x83\x01\x84\x87\x01a\x12\xC0V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x14\tV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x14\xFAW_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\x19W_\x80\xFD[\x806\x03\x82\x13\x15a\x0E^W_\x80\xFD[_`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86_[\x87\x81\x10\x15a\x15\xA8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15\x89\x82\x8Aa\x14\xC7V[a\x15\x94\x87\x82\x84a\x14\x80V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15PV[P\x92\x98\x97PPPPPPPPV[_` \x82\x84\x03\x12\x15a\x15\xC6W_\x80\xFD[PQ\x91\x90PV[_a\x15\xD8\x82\x83a\x14\xC7V[`@\x85Ra\x15\xEA`@\x86\x01\x82\x84a\x14\x80V[\x91PPa\x15\xFA` \x84\x01\x84a\x14\xC7V[\x85\x83\x03` \x87\x01Ra\x16\r\x83\x82\x84a\x14\x80V[\x96\x95PPPPPPV[`@\x81R_a\x16)`@\x83\x01\x86a\x15\xCDV[\x82\x81\x03` \x84\x01Ra\x16\r\x81\x85\x87a\x14\x80V[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x16\xDAW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x16\xB8W_\x80\xFD[a\x16\xC4\x85\x8C\x83\x01a\x15\xCDV[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x16XV[PPP\x82\x81\x03` \x84\x01Ra\x16\xF0\x81\x85\x87a\x14\x80V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 -i\xC6I`\xC7\xE4\xC5\xF4\xE7\x9D\x02\x88~~\r@\x03~\x12ObD\x0B\xDF\x115\x1F\0\xD6-\x88dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 ]\x86=dd\xD1\xF5\x0C\x89\x11\x1FN \x96\x0C\xCE\x12)\xC0\xC6l\"\xDD4q\x06\xDB*\xBD\"\xE8AdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static DEPLOYSWAPROUTER02EXECUTOR_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0wW[_\x80\xFD[\0[a\0Ma\0\x9AV[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x8A\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0nV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_REACTOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R_\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01XW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01|\x91\x90a\x07HV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_WHITELISTED_CALLER\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02;W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02_\x91\x90a\x07HV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_OWNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x1EW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03B\x91\x90a\x07HV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_SWAPROUTER02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x01W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04%\x91\x90a\x07HV[\x90P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x8EW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xA0W=_\x80>=_\xFD[PPPP_\x80\x1B\x83\x85\x84\x84`@Qa\x04\xB7\x90a\x07;V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x90\x83\x16`@\x83\x01R\x90\x91\x16``\x82\x01R`\x80\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x05\tW=_\x80>=_\xFD[P\x94P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x05sW_\x80\xFD[PZ\xF1\x15\x80\x15a\x05\x85W=_\x80>=_\xFD[PPPPa\x05\xC8`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86a\x06zV[a\x06s`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x06JW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06n\x91\x90a\x07HV[a\x06zV[PPPP\x90V[a\x07\x0B\x82\x82`@Q`$\x01a\x06\x90\x92\x91\x90a\x07\x82V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\x0FV[PPV[a\x07\x18\x81a\x07\x1BV[PV[\x80Qjconsole.log` \x83\x01_\x80\x84\x83\x85Z\xFAPPPPPV[a\x19a\x80a\x08\t\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x07XW_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07{W_\x80\xFD[\x93\x92PPPV[`@\x81R_\x83Q\x80`@\x84\x01R_[\x81\x81\x10\x15a\x07\xAEW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x07\x91V[P_``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFEa\x01\0`@R4\x80\x15b\0\0\x11W_\x80\xFD[P`@Qb\0\x19a8\x03\x80b\0\x19a\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01&V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x81\x16`\xC0R\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\xD1W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xF7\x91\x90b\0\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xB0\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01#W_\x80\xFD[PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15b\0\x01:W_\x80\xFD[\x84Qb\0\x01G\x81b\0\x01\x0EV[` \x86\x01Q\x90\x94Pb\0\x01Z\x81b\0\x01\x0EV[`@\x86\x01Q\x90\x93Pb\0\x01m\x81b\0\x01\x0EV[``\x86\x01Q\x90\x92Pb\0\x01\x80\x81b\0\x01\x0EV[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15b\0\x01\x9CW_\x80\xFD[\x81Qb\0\x01\xA9\x81b\0\x01\x0EV[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x171b\0\x020_9_\x81\x81`\xE2\x01R\x81\x81a\x08\xDC\x01Ra\t\x8C\x01R_\x81\x81a\x02M\x01R\x81\x81a\x02\xE4\x01R\x81\x81a\x03\xF8\x01R\x81\x81a\x05S\x01R\x81\x81a\nC\x01Ra\n\xE2\x01R_a\x01\xEF\x01R_\x81\x81a\x01\x9D\x01R\x81\x81a\x03`\x01R\x81\x81a\x04\x90\x01R\x81\x81a\x06\x15\x01Ra\x06\xDF\x01Ra\x171_\xF3\xFE`\x80`@R`\x046\x10a\0\xC6W_5`\xE0\x1C\x80c\x8C!\xB4\x11\x11a\0qW\x80c\xD0\xF2\xD8\xAC\x11a\0LW\x80c\xD0\xF2\xD8\xAC\x14a\x02oW\x80c\xE5\x13^\xC6\x14a\x02\x8EW\x80c\xF2\xFD\xE3\x8B\x14a\x02\xADW_\x80\xFD[\x80c\x8C!\xB4\x11\x14a\x01\xDEW\x80c\x8D\xA5\xCB[\x14a\x02\x11W\x80c\xABW&P\x14a\x02=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x05G\x91\x90\x81\x01\x90a\x13\x9EV[PG\x15a\x05xWa\x05x\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\r\x10V[PPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_[\x83\x81\x10\x15a\x06\xA1Wa\x06\x99\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x06gWa\x06ga\x12\x93V[\x90P` \x02\x01` \x81\x01\x90a\x06|\x91\x90a\x0F\x86V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C?V[`\x01\x01a\x06\x08V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x078\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x15'V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x07SW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x07\x98\x91\x90\x81\x01\x90a\x13\x9EV[PPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\x1FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[a\x08)\x81Ga\r\xABV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xACW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t6W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tZ\x91\x90a\x15\xB6V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\t\xE2W_\x80\xFD[PZ\xF1\x15\x80\x15a\t\xF4W=_\x80>=_\xFD[PPPPa\n\x02\x82Ga\r\xABV[PPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\n|\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x16\x17V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\n\x93W_\x80\xFD[PZ\xF1\x15\x80\x15a\x05xW=_\x80>=_\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x0B\x1D\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\xD0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\r\nW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\rfW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\rkV[``\x91P[PP\x90P\x80a\r\xA6W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\r\xA6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[_\x80\x83`\x1F\x84\x01\x12a\x0E-W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0EDW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0E^W_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x0EuW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x8CW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0E^W_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0E\xB6W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xCDW_\x80\xFD[a\x0E\xD9\x88\x83\x89\x01a\x0E\x1DV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0E\xF1W_\x80\xFD[Pa\x0E\xFE\x87\x82\x88\x01a\x0EeV[\x95\x98\x94\x97P\x95PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0F\x1DW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F4W_\x80\xFD[a\x0F@\x88\x83\x89\x01a\x0E\x1DV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0FXW_\x80\xFD[Pa\x0E\xFE\x87\x82\x88\x01a\x0E\x1DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08)W_\x80\xFD[_` \x82\x84\x03\x12\x15a\x0F\x96W_\x80\xFD[\x815a\x0F\xA1\x81a\x0FeV[\x93\x92PPPV[_\x80_`@\x84\x86\x03\x12\x15a\x0F\xBAW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\xD1W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x0F\xE4W_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x0F\xF9W_\x80\xFD[Pa\x10\x06\x86\x82\x87\x01a\x0EeV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10\x87Wa\x10\x87a\x10\x13V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10\xA8Wa\x10\xA8a\x10\x13V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x10\xC1W_\x80\xFD[\x815` a\x10\xD6a\x10\xD1\x83a\x10\x8FV[a\x10@V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x10\xF7W_\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x11\x1CW\x805a\x11\x0F\x81a\x0FeV[\x83R\x91\x83\x01\x91\x83\x01a\x10\xFCV[P\x96\x95PPPPPPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11@Wa\x11@a\x10\x13V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x80_``\x84\x86\x03\x12\x15a\x11~W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\x95W_\x80\xFD[a\x11\xA1\x87\x83\x88\x01a\x10\xB2V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\xB7W_\x80\xFD[a\x11\xC3\x88\x82\x89\x01a\x10\xB2V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x11\xD8W_\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x11\xE8W_\x80\xFD[\x805a\x11\xF6a\x10\xD1\x82a\x10\x8FV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x12\x14W_\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12\x81W\x805\x87\x81\x11\x15a\x12.W_\x80\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12>W_\x80\xFD[\x88\x81\x015a\x12Na\x10\xD1\x82a\x11'V[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12aW_\x80\xFD[\x81\x89\x84\x01\x8C\x83\x017_\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x12\x18V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x12\xDAW\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\xC2V[PP_\x91\x01RV[_`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01_[\x82\x81\x10\x15a\x13\x90W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13S\x81\x88\x8A\x01\x89\x85\x01a\x12\xC0V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x13\x0EV[P\x93\x98\x97PPPPPPPPV[_` \x80\x83\x85\x03\x12\x15a\x13\xAFW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\xC6W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x13\xD9W_\x80\xFD[\x81Qa\x13\xE7a\x10\xD1\x82a\x10\x8FV[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x14\x05W_\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14sW\x80Q\x85\x81\x11\x15a\x14\x1FW_\x80\xFD[\x86\x01`?\x81\x01\x8B\x13a\x14/W_\x80\xFD[\x87\x81\x01Q`@a\x14Aa\x10\xD1\x83a\x11'V[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14TW_\x80\xFD[a\x14c\x83\x8C\x83\x01\x84\x87\x01a\x12\xC0V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x14\tV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x14\xFAW_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\x19W_\x80\xFD[\x806\x03\x82\x13\x15a\x0E^W_\x80\xFD[_`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86_[\x87\x81\x10\x15a\x15\xA8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15\x89\x82\x8Aa\x14\xC7V[a\x15\x94\x87\x82\x84a\x14\x80V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15PV[P\x92\x98\x97PPPPPPPPV[_` \x82\x84\x03\x12\x15a\x15\xC6W_\x80\xFD[PQ\x91\x90PV[_a\x15\xD8\x82\x83a\x14\xC7V[`@\x85Ra\x15\xEA`@\x86\x01\x82\x84a\x14\x80V[\x91PPa\x15\xFA` \x84\x01\x84a\x14\xC7V[\x85\x83\x03` \x87\x01Ra\x16\r\x83\x82\x84a\x14\x80V[\x96\x95PPPPPPV[`@\x81R_a\x16)`@\x83\x01\x86a\x15\xCDV[\x82\x81\x03` \x84\x01Ra\x16\r\x81\x85\x87a\x14\x80V[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x16\xDAW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x16\xB8W_\x80\xFD[a\x16\xC4\x85\x8C\x83\x01a\x15\xCDV[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x16XV[PPP\x82\x81\x03` \x84\x01Ra\x16\xF0\x81\x85\x87a\x14\x80V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 -i\xC6I`\xC7\xE4\xC5\xF4\xE7\x9D\x02\x88~~\r@\x03~\x12ObD\x0B\xDF\x115\x1F\0\xD6-\x88dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 ]\x86=dd\xD1\xF5\x0C\x89\x11\x1FN \x96\x0C\xCE\x12)\xC0\xC6l\"\xDD4q\x06\xDB*\xBD\"\xE8AdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static DEPLOYSWAPROUTER02EXECUTOR_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct DeploySwapRouter02Executor(::ethers::contract::Contract); - impl ::core::clone::Clone for DeploySwapRouter02Executor { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for DeploySwapRouter02Executor { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for DeploySwapRouter02Executor { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for DeploySwapRouter02Executor { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(DeploySwapRouter02Executor)) - .field(&self.address()) - .finish() - } - } - impl DeploySwapRouter02Executor { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - DEPLOYSWAPROUTER02EXECUTOR_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - DEPLOYSWAPROUTER02EXECUTOR_ABI.clone(), - DEPLOYSWAPROUTER02EXECUTOR_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `IS_SCRIPT` (0xf8ccbf47) function - pub fn is_script(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([248, 204, 191, 71], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `run` (0xc0406226) function - pub fn run( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([192, 64, 98, 38], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setUp` (0x0a9254e4) function - pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([10, 146, 84, 228], ()) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for DeploySwapRouter02Executor { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "IS_SCRIPT", abi = "IS_SCRIPT()")] - pub struct IsScriptCall; - ///Container type for all input parameters for the `run` function with signature `run()` and selector `0xc0406226` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "run", abi = "run()")] - pub struct RunCall; - ///Container type for all input parameters for the `setUp` function with signature `setUp()` and selector `0x0a9254e4` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setUp", abi = "setUp()")] - pub struct SetUpCall; - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum DeploySwapRouter02ExecutorCalls { - IsScript(IsScriptCall), - Run(RunCall), - SetUp(SetUpCall), - } - impl ::ethers::core::abi::AbiDecode for DeploySwapRouter02ExecutorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IsScript(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Run(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetUp(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for DeploySwapRouter02ExecutorCalls { - fn encode(self) -> Vec { - match self { - Self::IsScript(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Run(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for DeploySwapRouter02ExecutorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::IsScript(element) => ::core::fmt::Display::fmt(element, f), - Self::Run(element) => ::core::fmt::Display::fmt(element, f), - Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for DeploySwapRouter02ExecutorCalls { - fn from(value: IsScriptCall) -> Self { - Self::IsScript(value) - } - } - impl ::core::convert::From for DeploySwapRouter02ExecutorCalls { - fn from(value: RunCall) -> Self { - Self::Run(value) - } - } - impl ::core::convert::From for DeploySwapRouter02ExecutorCalls { - fn from(value: SetUpCall) -> Self { - Self::SetUp(value) - } - } - ///Container type for all return fields from the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsScriptReturn(pub bool); - ///Container type for all return fields from the `run` function with signature `run()` and selector `0xc0406226` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct RunReturn { - pub executor: ::ethers::core::types::Address, - } -} diff --git a/crates/bindings-uniswapx/src/deploydutch.rs b/crates/bindings-uniswapx/src/deploydutch.rs new file mode 100644 index 0000000..9269e85 --- /dev/null +++ b/crates/bindings-uniswapx/src/deploydutch.rs @@ -0,0 +1,997 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DeployDutch { + struct DutchDeployment { + address permit2; + address reactor; + address quoter; + } + + function IS_SCRIPT() external view returns (bool); + function run() external returns (DutchDeployment memory deployment); + function setUp() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "run", + "inputs": [], + "outputs": [ + { + "name": "deployment", + "type": "tuple", + "internalType": "struct DutchDeployment", + "components": [ + { + "name": "permit2", + "type": "address", + "internalType": "contract IPermit2" + }, + { + "name": "reactor", + "type": "address", + "internalType": "contract DutchOrderReactor" + }, + { + "name": "quoter", + "type": "address", + "internalType": "contract OrderQuoter" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DeployDutch { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b506168aa806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610094575b600080fd5b005b6100506100b7565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a79062010000900460ff1681565b604051901515815260200161008b565b60408051606081018252600080825260208201819052918101919091527f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561013f57600080fd5b505af1158015610153573d6000803e3d6000fd5b5050506e22d473030f116ddee9f6b43ac78ba33b600003905061017a576101786103a1565b505b60008060001b6e22d473030f116ddee9f6b43ac78ba3731a9c8182c09f50c8318d769245bea52c32be35bc6040516101b19061052e565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156101f5573d6000803e3d6000fd5b5090506102376040518060400160405280600781526020017f52656163746f72000000000000000000000000000000000000000000000000008152508261046c565b60008060001b6040516102499061053b565b8190604051809103906000f5905080158015610269573d6000803e3d6000fd5b5090506102ab6040518060400160405280600681526020017f51756f74657200000000000000000000000000000000000000000000000000008152508261046c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561031657600080fd5b505af115801561032a573d6000803e3d6000fd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b600080604051806123e001604052806123c081526020016144b56123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290610424906e22d473030f116ddee9f6b43ac78ba39085906004016105ac565b600060405180830381600087803b15801561043e57600080fd5b505af1158015610452573d6000803e3d6000fd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6104fd82826040516024016104829291906105e3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610501565b5050565b61050a8161050d565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6130808061061c83390190565b610e198061369c83390190565b6000815180845260005b8181101561056e57602081850181015186830182015201610552565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006105db6040830184610548565b949350505050565b6040815260006105f66040830185610548565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b5060405162003080380380620030808339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051612f67620001196000396000818160e001526117e90152612f676000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046121aa565b6101eb565b005b6100b96100c9366004612258565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461229a565b6104c5565b34801561014a57600080fd5b506100b9610159366004612328565b610683565b6100b961016c36600461234c565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612328565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56123b0565b60200260200101819052506102d981610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016125b3565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b95565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612381565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666123b0565b90506020028101906104789190612679565b6109f6565b82828151811061048f5761048f6123b0565b6020908102919091010152600101610449565b506104ac81610b44565b6104b581610b95565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612381565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666123b0565b8282815181106105d9576105d96123b0565b60209081029190910101526001016105aa565b506105f681610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016125b3565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b95565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696123b0565b602002602001018190525061087d81610b44565b61088681610b95565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f83806126b7565b810190610a7c91906129a9565b9050610a8781610ce8565b6040518060a0016040528082600001518152602001610abd836020015184604001518560600151610dd39092919063ffffffff16565b8152602001610ae3836020015184604001518560800151610ea59092919063ffffffff16565b8152602001848060200190610af891906126b7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610f8c565b90529392505050565b805160005b8181101561035f576000838281518110610b6557610b656123b0565b60200260200101519050610b78816111f6565b610b8281336116e6565b610b8c81336117e7565b50600101610b49565b805160005b81811015610cd7576000838281518110610bb657610bb66123b0565b602002602001015190506000816040015151905060005b81811015610c3757600083604001518281518110610bed57610bed6123b0565b60200260200101519050610c2e81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611b579092919063ffffffff16565b50600101610bcd565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c8057610c806123b0565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cc591815260200190565b60405180910390a45050600101610b9a565b5047156104c1576104c13347611b9e565b60408101518151606001511015610d2b576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108915760005b8160800151518110156104c15781608001518181518110610d6657610d666123b0565b60200260200101516040015182608001518281518110610d8857610d886123b0565b60200260200101516020015114610dcb576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d43565b610e0d6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e4f576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e65856020015186604001518686611c38565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ec357610ec3612381565b604051908082528060200260200182016040528015610f2c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ee15790505b50915060005b81811015610f8357610f5e868281518110610f4f57610f4f6123b0565b60200260200101518686611cb5565b838281518110610f7057610f706123b0565b6020908102919091010152600101610f32565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a982015260009060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d913960405160200161113293929190612add565b604051602081830303815290604052805190602001206111558360000151611d85565b836020015184604001518560600151600001518660600151602001518760600151604001516111878960800151611e1f565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff166112165750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061126d908590600401612b20565b600060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112d09190810190612b33565b60408301515181519192509060006112e88284612c32565b67ffffffffffffffff81111561130057611300612381565b60405190808252806020026020018201604052801561136957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161131e5790505b50905060005b838110156113ba578560400151818151811061138d5761138d6123b0565b60200260200101518282815181106113a7576113a76123b0565b602090810291909101015260010161136f565b5060008060005b848110156116d55760008782815181106113dd576113dd6123b0565b6020026020010151905060005b8281101561149b57888181518110611404576114046123b0565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036114935781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016113ea565b506000805b8881101561155c5760008b6040015182815181106114c0576114c06123b0565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361155357851561153d576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161154c9084612c32565b9250600196505b506001016114a0565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036115d55784156115bc576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516115ce9082612c32565b9050600193505b8060000361162a5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611638816005612710611ebd565b826020015111156116ab578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106116c0576116c06123b0565b602090810291909101015250506001016113c1565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611737576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117b39084908690600401612c45565b60006040518083038186803b1580156117cb57600080fd5b505afa1580156117df573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6118a7846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6118b18585611ef9565b85600001516020015186608001516040516020016119fc907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d9139604051602001611a6993929190612add565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612e776020830139604051602001611abc929190612c74565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611b299695949392600401612ccf565b600060405180830381600087803b158015611b4357600080fd5b505af11580156117df573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611b7c5761035f8282611b9e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484611f40565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611bf8576040519150601f19603f3d011682016040523d82523d6000602084013e611bfd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611c48575083611cad565b828211611c81576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611c8f575082611cad565b428310611c9d575083611cad565b611caa8383428888612032565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d14576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d2a856020015186604001518686611c38565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d8152602001612ea5608d913980516020918201208351848301516040808701516060880151608089015160a08a015180519089012093516111d998939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611e3f57611e3f612381565b6040519080825280601f01601f191660200182016040528015611e69576020820181803683370190505b50905060005b8351811015611eae576000611e9c858381518110611e8f57611e8f6123b0565b602002602001015161204d565b60208381028501015250600101611e6f565b50805160209091012092915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611ef257600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600061204186868686866120c4565b90505b95945050505050565b6000604051806080016040528060528152602001612e25605291398051602091820120835184830151604080870151606088015191516111d9969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b60008484106120d4575080612044565b60006120e08786612d8a565b905060006120ee8888612d8a565b9050600085851215612120576121108383612109888a612d9d565b9190611ebd565b61211990612dc4565b9050612132565b61212f83836121098989612d9d565b90505b61213c8187612dfc565b9998505050505050505050565b60006040828403121561215b57600080fd5b50919050565b60008083601f84011261217357600080fd5b50813567ffffffffffffffff81111561218b57600080fd5b6020830191508360208285010111156121a357600080fd5b9250929050565b6000806000604084860312156121bf57600080fd5b833567ffffffffffffffff808211156121d757600080fd5b6121e387838801612149565b945060208601359150808211156121f957600080fd5b5061220686828701612161565b9497909650939450505050565b60008083601f84011261222557600080fd5b50813567ffffffffffffffff81111561223d57600080fd5b6020830191508360208260051b85010111156121a357600080fd5b6000806020838503121561226b57600080fd5b823567ffffffffffffffff81111561228257600080fd5b61228e85828601612213565b90969095509350505050565b600080600080604085870312156122b057600080fd5b843567ffffffffffffffff808211156122c857600080fd5b6122d488838901612213565b909650945060208701359150808211156122ed57600080fd5b506122fa87828801612161565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b60006020828403121561233a57600080fd5b813561234581612306565b9392505050565b60006020828403121561235e57600080fd5b813567ffffffffffffffff81111561237557600080fd5b611cad84828501612149565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156123fa5781810151838201526020016123e2565b50506000910152565b6000815180845261241b8160208601602086016123df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156124ad578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612462565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c061018085015261252c6101a0850182612403565b9050602083015161256a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612582828261244d565b915050606083015184820360a086015261259c8282612403565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612628577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526126168683516124b8565b955093820193908201906001016125dc565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126126ad57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126ec57600080fd5b83018035915067ffffffffffffffff82111561270757600080fd5b6020019150368190038213156121a357600080fd5b6040516060810167ffffffffffffffff8111828210171561273f5761273f612381565b60405290565b6040516080810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160a0810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160c0810167ffffffffffffffff8111828210171561273f5761273f612381565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127f5576127f5612381565b604052919050565b600082601f83011261280e57600080fd5b813567ffffffffffffffff81111561282857612828612381565b61285960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016127ae565b81815284602083860101111561286e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561289d57600080fd5b6128a561271c565b905081356128b281612306565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff8211156128ea576128ea612381565b5060051b60200190565b600082601f83011261290557600080fd5b8135602061291a612915836128d0565b6127ae565b82815260079290921b8401810191818101908684111561293957600080fd5b8286015b8481101561299e57608081890312156129565760008081fd5b61295e612745565b813561296981612306565b815281850135858201526040808301359082015260608083013561298c81612306565b9082015283529183019160800161293d565b509695505050505050565b6000602082840312156129bb57600080fd5b813567ffffffffffffffff808211156129d357600080fd5b9083019060e082860312156129e757600080fd5b6129ef612768565b8235828111156129fe57600080fd5b830160c08188031215612a1057600080fd5b612a1861278b565b8135612a2381612306565b81526020820135612a3381612306565b8060208301525060408201356040820152606082013560608201526080820135612a5c81612306565b608082015260a082013584811115612a7357600080fd5b612a7f898285016127fd565b60a08301525080835250506020830135602082015260408301356040820152612aab866060850161288b565b606082015260c083013582811115612ac257600080fd5b612ace878286016128f4565b60808301525095945050505050565b60008451612aef8184602089016123df565b845190830190612b038183602089016123df565b8451910190612b168183602088016123df565b0195945050505050565b60208152600061234560208301846124b8565b60006020808385031215612b4657600080fd5b825167ffffffffffffffff811115612b5d57600080fd5b8301601f81018513612b6e57600080fd5b8051612b7c612915826128d0565b81815260609182028301840191848201919088841115612b9b57600080fd5b938501935b83851015612bf75780858a031215612bb85760008081fd5b612bc061271c565b8551612bcb81612306565b81528587015187820152604080870151612be481612306565b9082015283529384019391850191612ba0565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611f3a57611f3a612c03565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611cad60408301846124b8565b7f44757463684f72646572207769746e6573732900000000000000000000000000815260008351612cac8160138501602088016123df565b835190830190612cc38160138401602088016123df565b01601301949350505050565b6000610140612cff838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612d406080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612d7581840186612403565b905082810361012084015261213c8185612403565b81810381811115611f3a57611f3a612c03565b8181036000831280158383131683831282161715612dbd57612dbd612c03565b5092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203612df557612df5612c03565b5060000390565b8082018281126000831280158216821582161715612e1c57612e1c612c03565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212200c74c65349b0af83668d860352d39f1829d5721d9019f51e2826cab1d7552ecb64736f6c63430008180033608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212204f855fe9ad607831506703d1076c7fdb575de559547994833437b0d18ccf26e764736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pah\xAA\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x94W[`\0\x80\xFD[\0[a\0Pa\0\xB7V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA7\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8BV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01?W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01SW=`\0\x80>=`\0\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;`\0\x03\x90Pa\x01zWa\x01xa\x03\xA1V[P[`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xB1\x90a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x01\xF5W=`\0\x80>=`\0\xFD[P\x90Pa\x027`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[`\0\x80`\0\x1B`@Qa\x02I\x90a\x05;V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02iW=`\0\x80>=`\0\xFD[P\x90Pa\x02\xAB`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\x16W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03*W=`\0\x80>=`\0\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[`\0\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aD\xB5a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04$\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\xACV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04>W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04RW=`\0\x80>=`\0\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xFD\x82\x82`@Q`$\x01a\x04\x82\x92\x91\x90a\x05\xE3V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x05\x01V[PPV[a\x05\n\x81a\x05\rV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a0\x80\x80a\x06\x1C\x839\x01\x90V[a\x0E\x19\x80a6\x9C\x839\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x05nW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05RV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x05\xDB`@\x83\x01\x84a\x05HV[\x94\x93PPPPV[`@\x81R`\0a\x05\xF6`@\x83\x01\x85a\x05HV[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x000\x808\x03\x80b\x000\x80\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa/gb\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x17\xE9\x01Ra/g`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a!\xAAV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a\"XV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a\"\x9AV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a#(V[a\x06\x83V[a\0\xB9a\x01l6`\x04a#LV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a#(V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a#\xB0V[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\x95V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a&yV[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BDV[a\x04\xB5\x81a\x0B\x95V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\x95V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia#\xB0V[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BDV[a\x08\x86\x81a\x0B\x95V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a&\xB7V[\x81\x01\x90a\n|\x91\x90a)\xA9V[\x90Pa\n\x87\x81a\x0C\xE8V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xD3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0E\xA5\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a&\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\x8CV[\x90R\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea#\xB0V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x11\xF6V[a\x0B\x82\x813a\x16\xE6V[a\x0B\x8C\x813a\x17\xE7V[P`\x01\x01a\x0BIV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xD7W`\0\x83\x82\x81Q\x81\x10a\x0B\xB6Wa\x0B\xB6a#\xB0V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C7W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xEDWa\x0B\xEDa#\xB0V[` \x02` \x01\x01Q\x90Pa\x0C.\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1BW\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xCDV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x80Wa\x0C\x80a#\xB0V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xC5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x9AV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1B\x9EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r+W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\x80\x01QQ\x81\x10\x15a\x04\xC1W\x81`\x80\x01Q\x81\x81Q\x81\x10a\rfWa\rfa#\xB0V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\r\x88Wa\r\x88a#\xB0V[` \x02` \x01\x01Q` \x01Q\x14a\r\xCBW`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\rCV[a\x0E\r`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EOW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0Ee\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xC3Wa\x0E\xC3a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F,W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xE1W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\x83Wa\x0F^\x86\x82\x81Q\x81\x10a\x0FOWa\x0FOa#\xB0V[` \x02` \x01\x01Q\x86\x86a\x1C\xB5V[\x83\x82\x81Q\x81\x10a\x0FpWa\x0Fpa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F2V[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R`\0\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x112\x93\x92\x91\x90a*\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11U\x83`\0\x01Qa\x1D\x85V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q`\0\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x11\x87\x89`\x80\x01Qa\x1E\x1FV[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\x16WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12m\x90\x85\x90`\x04\x01a+ V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\x8AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\xD0\x91\x90\x81\x01\x90a+3V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x12\xE8\x82\x84a,2V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\0Wa\x13\0a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13iW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x1EW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x13\xBAW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\x8DWa\x13\x8Da#\xB0V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xA7Wa\x13\xA7a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13oV[P`\0\x80`\0[\x84\x81\x10\x15a\x16\xD5W`\0\x87\x82\x81Q\x81\x10a\x13\xDDWa\x13\xDDa#\xB0V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x14\x9BW\x88\x81\x81Q\x81\x10a\x14\x04Wa\x14\x04a#\xB0V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\x93W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x13\xEAV[P`\0\x80[\x88\x81\x10\x15a\x15\\W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x14\xC0Wa\x14\xC0a#\xB0V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15SW\x85\x15a\x15=W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15L\x90\x84a,2V[\x92P`\x01\x96P[P`\x01\x01a\x14\xA0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\xD5W\x84\x15a\x15\xBCW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\xCE\x90\x82a,2V[\x90P`\x01\x93P[\x80`\0\x03a\x16*W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x168\x81`\x05a'\x10a\x1E\xBDV[\x82` \x01Q\x11\x15a\x16\xABW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16\xC0Wa\x16\xC0a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13\xC1V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x177W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xB3\x90\x84\x90\x86\x90`\x04\x01a,EV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17\xCBW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xA7\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xB1\x85\x85a\x1E\xF9V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xFC\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x1Ai\x93\x92\x91\x90a*\xDDV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a.w` \x83\x019`@Q` \x01a\x1A\xBC\x92\x91\x90a,tV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B)\x96\x95\x94\x93\x92`\x04\x01a,\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B|Wa\x03_\x82\x82a\x1B\x9EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1F@V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1B\xF8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1B\xFDV[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1CHWP\x83a\x1C\xADV[\x82\x82\x11a\x1C\x81W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\x8FWP\x82a\x1C\xADV[B\x83\x10a\x1C\x9DWP\x83a\x1C\xADV[a\x1C\xAA\x83\x83B\x88\x88a 2V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x14W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D*\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\xD9\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E?Wa\x1E?a#\x81V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1EiW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1E\xAEW`\0a\x1E\x9C\x85\x83\x81Q\x81\x10a\x1E\x8FWa\x1E\x8Fa#\xB0V[` \x02` \x01\x01Qa MV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1EoV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\xF2W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a +W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0a A\x86\x86\x86\x86\x86a \xC4V[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a.%`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\xD9\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x84\x84\x10a \xD4WP\x80a DV[`\0a \xE0\x87\x86a-\x8AV[\x90P`\0a \xEE\x88\x88a-\x8AV[\x90P`\0\x85\x85\x12\x15a! Wa!\x10\x83\x83a!\t\x88\x8Aa-\x9DV[\x91\x90a\x1E\xBDV[a!\x19\x90a-\xC4V[\x90Pa!2V[a!/\x83\x83a!\t\x89\x89a-\x9DV[\x90P[a!<\x81\x87a-\xFCV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a![W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a!sW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x8BW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a!\xBFW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a!\xD7W`\0\x80\xFD[a!\xE3\x87\x83\x88\x01a!IV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!\xF9W`\0\x80\xFD[Pa\"\x06\x86\x82\x87\x01a!aV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\"%W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"=W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\"kW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x82W`\0\x80\xFD[a\"\x8E\x85\x82\x86\x01a\"\x13V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\"\xB0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"\xC8W`\0\x80\xFD[a\"\xD4\x88\x83\x89\x01a\"\x13V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"\xEDW`\0\x80\xFD[Pa\"\xFA\x87\x82\x88\x01a!aV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a#:W`\0\x80\xFD[\x815a#E\x81a#\x06V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a#^W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#uW`\0\x80\xFD[a\x1C\xAD\x84\x82\x85\x01a!IV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a#\xFAW\x81\x81\x01Q\x83\x82\x01R` \x01a#\xE2V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra$\x1B\x81` \x86\x01` \x86\x01a#\xDFV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a$\xADW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a$bV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%,a\x01\xA0\x85\x01\x82a$\x03V[\x90P` \x83\x01Qa%j` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra%\x82\x82\x82a$MV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x9C\x82\x82a$\x03V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a&(W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra&\x16\x86\x83Qa$\xB8V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%\xDCV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\xADW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&\xECW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a'\x07W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!\xA3W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xF5Wa'\xF5a#\x81V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a(\x0EW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a((Wa((a#\x81V[a(Y` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\xAEV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a(nW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a(\x9DW`\0\x80\xFD[a(\xA5a'\x1CV[\x90P\x815a(\xB2\x81a#\x06V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xEAWa(\xEAa#\x81V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a)\x05W`\0\x80\xFD[\x815` a)\x1Aa)\x15\x83a(\xD0V[a'\xAEV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a)9W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a)\x9EW`\x80\x81\x89\x03\x12\x15a)VW`\0\x80\x81\xFD[a)^a'EV[\x815a)i\x81a#\x06V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a)\x8C\x81a#\x06V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a)=V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a)\xBBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\xD3W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)\xE7W`\0\x80\xFD[a)\xEFa'hV[\x825\x82\x81\x11\x15a)\xFEW`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a*\x10W`\0\x80\xFD[a*\x18a'\x8BV[\x815a*#\x81a#\x06V[\x81R` \x82\x015a*3\x81a#\x06V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a*\\\x81a#\x06V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a*sW`\0\x80\xFD[a*\x7F\x89\x82\x85\x01a'\xFDV[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra*\xAB\x86``\x85\x01a(\x8BV[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\xC2W`\0\x80\xFD[a*\xCE\x87\x82\x86\x01a(\xF4V[`\x80\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa*\xEF\x81\x84` \x89\x01a#\xDFV[\x84Q\x90\x83\x01\x90a+\x03\x81\x83` \x89\x01a#\xDFV[\x84Q\x91\x01\x90a+\x16\x81\x83` \x88\x01a#\xDFV[\x01\x95\x94PPPPPV[` \x81R`\0a#E` \x83\x01\x84a$\xB8V[`\0` \x80\x83\x85\x03\x12\x15a+FW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+]W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a+nW`\0\x80\xFD[\x80Qa+|a)\x15\x82a(\xD0V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a+\x9BW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+\xF7W\x80\x85\x8A\x03\x12\x15a+\xB8W`\0\x80\x81\xFD[a+\xC0a'\x1CV[\x85Qa+\xCB\x81a#\x06V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+\xE4\x81a#\x06V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a+\xA0V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F:Wa\x1F:a,\x03V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1C\xAD`@\x83\x01\x84a$\xB8V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa,\xAC\x81`\x13\x85\x01` \x88\x01a#\xDFV[\x83Q\x90\x83\x01\x90a,\xC3\x81`\x13\x84\x01` \x88\x01a#\xDFV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a,\xFF\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra-@`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra-u\x81\x84\x01\x86a$\x03V[\x90P\x82\x81\x03a\x01 \x84\x01Ra!<\x81\x85a$\x03V[\x81\x81\x03\x81\x81\x11\x15a\x1F:Wa\x1F:a,\x03V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a-\xBDWa-\xBDa,\x03V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-\xF5Wa-\xF5a,\x03V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a.\x1CWa.\x1Ca,\x03V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x0Ct\xC6SI\xB0\xAF\x83f\x8D\x86\x03R\xD3\x9F\x18)\xD5r\x1D\x90\x19\xF5\x1E(&\xCA\xB1\xD7U.\xCBdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 O\x85_\xE9\xAD`x1Pg\x03\xD1\x07l\x7F\xDBW]\xE5YTy\x94\x8347\xB0\xD1\x8C\xCF&\xE7dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610094575b600080fd5b005b6100506100b7565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a79062010000900460ff1681565b604051901515815260200161008b565b60408051606081018252600080825260208201819052918101919091527f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561013f57600080fd5b505af1158015610153573d6000803e3d6000fd5b5050506e22d473030f116ddee9f6b43ac78ba33b600003905061017a576101786103a1565b505b60008060001b6e22d473030f116ddee9f6b43ac78ba3731a9c8182c09f50c8318d769245bea52c32be35bc6040516101b19061052e565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156101f5573d6000803e3d6000fd5b5090506102376040518060400160405280600781526020017f52656163746f72000000000000000000000000000000000000000000000000008152508261046c565b60008060001b6040516102499061053b565b8190604051809103906000f5905080158015610269573d6000803e3d6000fd5b5090506102ab6040518060400160405280600681526020017f51756f74657200000000000000000000000000000000000000000000000000008152508261046c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561031657600080fd5b505af115801561032a573d6000803e3d6000fd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b600080604051806123e001604052806123c081526020016144b56123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290610424906e22d473030f116ddee9f6b43ac78ba39085906004016105ac565b600060405180830381600087803b15801561043e57600080fd5b505af1158015610452573d6000803e3d6000fd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6104fd82826040516024016104829291906105e3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610501565b5050565b61050a8161050d565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6130808061061c83390190565b610e198061369c83390190565b6000815180845260005b8181101561056e57602081850181015186830182015201610552565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006105db6040830184610548565b949350505050565b6040815260006105f66040830185610548565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b5060405162003080380380620030808339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051612f67620001196000396000818160e001526117e90152612f676000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046121aa565b6101eb565b005b6100b96100c9366004612258565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461229a565b6104c5565b34801561014a57600080fd5b506100b9610159366004612328565b610683565b6100b961016c36600461234c565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612328565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56123b0565b60200260200101819052506102d981610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016125b3565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b95565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612381565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666123b0565b90506020028101906104789190612679565b6109f6565b82828151811061048f5761048f6123b0565b6020908102919091010152600101610449565b506104ac81610b44565b6104b581610b95565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612381565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666123b0565b8282815181106105d9576105d96123b0565b60209081029190910101526001016105aa565b506105f681610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016125b3565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b95565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696123b0565b602002602001018190525061087d81610b44565b61088681610b95565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f83806126b7565b810190610a7c91906129a9565b9050610a8781610ce8565b6040518060a0016040528082600001518152602001610abd836020015184604001518560600151610dd39092919063ffffffff16565b8152602001610ae3836020015184604001518560800151610ea59092919063ffffffff16565b8152602001848060200190610af891906126b7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610f8c565b90529392505050565b805160005b8181101561035f576000838281518110610b6557610b656123b0565b60200260200101519050610b78816111f6565b610b8281336116e6565b610b8c81336117e7565b50600101610b49565b805160005b81811015610cd7576000838281518110610bb657610bb66123b0565b602002602001015190506000816040015151905060005b81811015610c3757600083604001518281518110610bed57610bed6123b0565b60200260200101519050610c2e81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611b579092919063ffffffff16565b50600101610bcd565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c8057610c806123b0565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cc591815260200190565b60405180910390a45050600101610b9a565b5047156104c1576104c13347611b9e565b60408101518151606001511015610d2b576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108915760005b8160800151518110156104c15781608001518181518110610d6657610d666123b0565b60200260200101516040015182608001518281518110610d8857610d886123b0565b60200260200101516020015114610dcb576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d43565b610e0d6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e4f576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e65856020015186604001518686611c38565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ec357610ec3612381565b604051908082528060200260200182016040528015610f2c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ee15790505b50915060005b81811015610f8357610f5e868281518110610f4f57610f4f6123b0565b60200260200101518686611cb5565b838281518110610f7057610f706123b0565b6020908102919091010152600101610f32565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a982015260009060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d913960405160200161113293929190612add565b604051602081830303815290604052805190602001206111558360000151611d85565b836020015184604001518560600151600001518660600151602001518760600151604001516111878960800151611e1f565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff166112165750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061126d908590600401612b20565b600060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112d09190810190612b33565b60408301515181519192509060006112e88284612c32565b67ffffffffffffffff81111561130057611300612381565b60405190808252806020026020018201604052801561136957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161131e5790505b50905060005b838110156113ba578560400151818151811061138d5761138d6123b0565b60200260200101518282815181106113a7576113a76123b0565b602090810291909101015260010161136f565b5060008060005b848110156116d55760008782815181106113dd576113dd6123b0565b6020026020010151905060005b8281101561149b57888181518110611404576114046123b0565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036114935781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016113ea565b506000805b8881101561155c5760008b6040015182815181106114c0576114c06123b0565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361155357851561153d576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161154c9084612c32565b9250600196505b506001016114a0565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036115d55784156115bc576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516115ce9082612c32565b9050600193505b8060000361162a5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611638816005612710611ebd565b826020015111156116ab578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106116c0576116c06123b0565b602090810291909101015250506001016113c1565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611737576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117b39084908690600401612c45565b60006040518083038186803b1580156117cb57600080fd5b505afa1580156117df573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6118a7846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6118b18585611ef9565b85600001516020015186608001516040516020016119fc907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d9139604051602001611a6993929190612add565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612e776020830139604051602001611abc929190612c74565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611b299695949392600401612ccf565b600060405180830381600087803b158015611b4357600080fd5b505af11580156117df573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611b7c5761035f8282611b9e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484611f40565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611bf8576040519150601f19603f3d011682016040523d82523d6000602084013e611bfd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611c48575083611cad565b828211611c81576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611c8f575082611cad565b428310611c9d575083611cad565b611caa8383428888612032565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d14576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d2a856020015186604001518686611c38565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d8152602001612ea5608d913980516020918201208351848301516040808701516060880151608089015160a08a015180519089012093516111d998939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611e3f57611e3f612381565b6040519080825280601f01601f191660200182016040528015611e69576020820181803683370190505b50905060005b8351811015611eae576000611e9c858381518110611e8f57611e8f6123b0565b602002602001015161204d565b60208381028501015250600101611e6f565b50805160209091012092915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611ef257600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600061204186868686866120c4565b90505b95945050505050565b6000604051806080016040528060528152602001612e25605291398051602091820120835184830151604080870151606088015191516111d9969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b60008484106120d4575080612044565b60006120e08786612d8a565b905060006120ee8888612d8a565b9050600085851215612120576121108383612109888a612d9d565b9190611ebd565b61211990612dc4565b9050612132565b61212f83836121098989612d9d565b90505b61213c8187612dfc565b9998505050505050505050565b60006040828403121561215b57600080fd5b50919050565b60008083601f84011261217357600080fd5b50813567ffffffffffffffff81111561218b57600080fd5b6020830191508360208285010111156121a357600080fd5b9250929050565b6000806000604084860312156121bf57600080fd5b833567ffffffffffffffff808211156121d757600080fd5b6121e387838801612149565b945060208601359150808211156121f957600080fd5b5061220686828701612161565b9497909650939450505050565b60008083601f84011261222557600080fd5b50813567ffffffffffffffff81111561223d57600080fd5b6020830191508360208260051b85010111156121a357600080fd5b6000806020838503121561226b57600080fd5b823567ffffffffffffffff81111561228257600080fd5b61228e85828601612213565b90969095509350505050565b600080600080604085870312156122b057600080fd5b843567ffffffffffffffff808211156122c857600080fd5b6122d488838901612213565b909650945060208701359150808211156122ed57600080fd5b506122fa87828801612161565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b60006020828403121561233a57600080fd5b813561234581612306565b9392505050565b60006020828403121561235e57600080fd5b813567ffffffffffffffff81111561237557600080fd5b611cad84828501612149565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156123fa5781810151838201526020016123e2565b50506000910152565b6000815180845261241b8160208601602086016123df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156124ad578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612462565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c061018085015261252c6101a0850182612403565b9050602083015161256a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612582828261244d565b915050606083015184820360a086015261259c8282612403565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612628577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526126168683516124b8565b955093820193908201906001016125dc565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126126ad57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126ec57600080fd5b83018035915067ffffffffffffffff82111561270757600080fd5b6020019150368190038213156121a357600080fd5b6040516060810167ffffffffffffffff8111828210171561273f5761273f612381565b60405290565b6040516080810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160a0810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160c0810167ffffffffffffffff8111828210171561273f5761273f612381565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127f5576127f5612381565b604052919050565b600082601f83011261280e57600080fd5b813567ffffffffffffffff81111561282857612828612381565b61285960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016127ae565b81815284602083860101111561286e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561289d57600080fd5b6128a561271c565b905081356128b281612306565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff8211156128ea576128ea612381565b5060051b60200190565b600082601f83011261290557600080fd5b8135602061291a612915836128d0565b6127ae565b82815260079290921b8401810191818101908684111561293957600080fd5b8286015b8481101561299e57608081890312156129565760008081fd5b61295e612745565b813561296981612306565b815281850135858201526040808301359082015260608083013561298c81612306565b9082015283529183019160800161293d565b509695505050505050565b6000602082840312156129bb57600080fd5b813567ffffffffffffffff808211156129d357600080fd5b9083019060e082860312156129e757600080fd5b6129ef612768565b8235828111156129fe57600080fd5b830160c08188031215612a1057600080fd5b612a1861278b565b8135612a2381612306565b81526020820135612a3381612306565b8060208301525060408201356040820152606082013560608201526080820135612a5c81612306565b608082015260a082013584811115612a7357600080fd5b612a7f898285016127fd565b60a08301525080835250506020830135602082015260408301356040820152612aab866060850161288b565b606082015260c083013582811115612ac257600080fd5b612ace878286016128f4565b60808301525095945050505050565b60008451612aef8184602089016123df565b845190830190612b038183602089016123df565b8451910190612b168183602088016123df565b0195945050505050565b60208152600061234560208301846124b8565b60006020808385031215612b4657600080fd5b825167ffffffffffffffff811115612b5d57600080fd5b8301601f81018513612b6e57600080fd5b8051612b7c612915826128d0565b81815260609182028301840191848201919088841115612b9b57600080fd5b938501935b83851015612bf75780858a031215612bb85760008081fd5b612bc061271c565b8551612bcb81612306565b81528587015187820152604080870151612be481612306565b9082015283529384019391850191612ba0565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611f3a57611f3a612c03565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611cad60408301846124b8565b7f44757463684f72646572207769746e6573732900000000000000000000000000815260008351612cac8160138501602088016123df565b835190830190612cc38160138401602088016123df565b01601301949350505050565b6000610140612cff838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612d406080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612d7581840186612403565b905082810361012084015261213c8185612403565b81810381811115611f3a57611f3a612c03565b8181036000831280158383131683831282161715612dbd57612dbd612c03565b5092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203612df557612df5612c03565b5060000390565b8082018281126000831280158216821582161715612e1c57612e1c612c03565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212200c74c65349b0af83668d860352d39f1829d5721d9019f51e2826cab1d7552ecb64736f6c63430008180033608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212204f855fe9ad607831506703d1076c7fdb575de559547994833437b0d18ccf26e764736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x94W[`\0\x80\xFD[\0[a\0Pa\0\xB7V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA7\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8BV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01?W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01SW=`\0\x80>=`\0\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;`\0\x03\x90Pa\x01zWa\x01xa\x03\xA1V[P[`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xB1\x90a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x01\xF5W=`\0\x80>=`\0\xFD[P\x90Pa\x027`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[`\0\x80`\0\x1B`@Qa\x02I\x90a\x05;V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02iW=`\0\x80>=`\0\xFD[P\x90Pa\x02\xAB`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\x16W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03*W=`\0\x80>=`\0\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[`\0\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aD\xB5a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04$\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\xACV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04>W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04RW=`\0\x80>=`\0\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xFD\x82\x82`@Q`$\x01a\x04\x82\x92\x91\x90a\x05\xE3V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x05\x01V[PPV[a\x05\n\x81a\x05\rV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a0\x80\x80a\x06\x1C\x839\x01\x90V[a\x0E\x19\x80a6\x9C\x839\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x05nW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05RV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x05\xDB`@\x83\x01\x84a\x05HV[\x94\x93PPPPV[`@\x81R`\0a\x05\xF6`@\x83\x01\x85a\x05HV[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x000\x808\x03\x80b\x000\x80\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa/gb\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x17\xE9\x01Ra/g`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a!\xAAV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a\"XV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a\"\x9AV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a#(V[a\x06\x83V[a\0\xB9a\x01l6`\x04a#LV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a#(V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a#\xB0V[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\x95V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a&yV[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BDV[a\x04\xB5\x81a\x0B\x95V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\x95V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia#\xB0V[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BDV[a\x08\x86\x81a\x0B\x95V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a&\xB7V[\x81\x01\x90a\n|\x91\x90a)\xA9V[\x90Pa\n\x87\x81a\x0C\xE8V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xD3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0E\xA5\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a&\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\x8CV[\x90R\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea#\xB0V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x11\xF6V[a\x0B\x82\x813a\x16\xE6V[a\x0B\x8C\x813a\x17\xE7V[P`\x01\x01a\x0BIV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xD7W`\0\x83\x82\x81Q\x81\x10a\x0B\xB6Wa\x0B\xB6a#\xB0V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C7W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xEDWa\x0B\xEDa#\xB0V[` \x02` \x01\x01Q\x90Pa\x0C.\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1BW\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xCDV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x80Wa\x0C\x80a#\xB0V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xC5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x9AV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1B\x9EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r+W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\x80\x01QQ\x81\x10\x15a\x04\xC1W\x81`\x80\x01Q\x81\x81Q\x81\x10a\rfWa\rfa#\xB0V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\r\x88Wa\r\x88a#\xB0V[` \x02` \x01\x01Q` \x01Q\x14a\r\xCBW`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\rCV[a\x0E\r`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EOW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0Ee\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xC3Wa\x0E\xC3a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F,W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xE1W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\x83Wa\x0F^\x86\x82\x81Q\x81\x10a\x0FOWa\x0FOa#\xB0V[` \x02` \x01\x01Q\x86\x86a\x1C\xB5V[\x83\x82\x81Q\x81\x10a\x0FpWa\x0Fpa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F2V[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R`\0\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x112\x93\x92\x91\x90a*\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11U\x83`\0\x01Qa\x1D\x85V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q`\0\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x11\x87\x89`\x80\x01Qa\x1E\x1FV[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\x16WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12m\x90\x85\x90`\x04\x01a+ V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\x8AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\xD0\x91\x90\x81\x01\x90a+3V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x12\xE8\x82\x84a,2V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\0Wa\x13\0a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13iW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x1EW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x13\xBAW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\x8DWa\x13\x8Da#\xB0V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xA7Wa\x13\xA7a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13oV[P`\0\x80`\0[\x84\x81\x10\x15a\x16\xD5W`\0\x87\x82\x81Q\x81\x10a\x13\xDDWa\x13\xDDa#\xB0V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x14\x9BW\x88\x81\x81Q\x81\x10a\x14\x04Wa\x14\x04a#\xB0V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\x93W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x13\xEAV[P`\0\x80[\x88\x81\x10\x15a\x15\\W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x14\xC0Wa\x14\xC0a#\xB0V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15SW\x85\x15a\x15=W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15L\x90\x84a,2V[\x92P`\x01\x96P[P`\x01\x01a\x14\xA0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\xD5W\x84\x15a\x15\xBCW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\xCE\x90\x82a,2V[\x90P`\x01\x93P[\x80`\0\x03a\x16*W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x168\x81`\x05a'\x10a\x1E\xBDV[\x82` \x01Q\x11\x15a\x16\xABW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16\xC0Wa\x16\xC0a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13\xC1V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x177W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xB3\x90\x84\x90\x86\x90`\x04\x01a,EV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17\xCBW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xA7\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xB1\x85\x85a\x1E\xF9V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xFC\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x1Ai\x93\x92\x91\x90a*\xDDV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a.w` \x83\x019`@Q` \x01a\x1A\xBC\x92\x91\x90a,tV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B)\x96\x95\x94\x93\x92`\x04\x01a,\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B|Wa\x03_\x82\x82a\x1B\x9EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1F@V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1B\xF8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1B\xFDV[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1CHWP\x83a\x1C\xADV[\x82\x82\x11a\x1C\x81W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\x8FWP\x82a\x1C\xADV[B\x83\x10a\x1C\x9DWP\x83a\x1C\xADV[a\x1C\xAA\x83\x83B\x88\x88a 2V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x14W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D*\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\xD9\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E?Wa\x1E?a#\x81V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1EiW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1E\xAEW`\0a\x1E\x9C\x85\x83\x81Q\x81\x10a\x1E\x8FWa\x1E\x8Fa#\xB0V[` \x02` \x01\x01Qa MV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1EoV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\xF2W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a +W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0a A\x86\x86\x86\x86\x86a \xC4V[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a.%`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\xD9\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x84\x84\x10a \xD4WP\x80a DV[`\0a \xE0\x87\x86a-\x8AV[\x90P`\0a \xEE\x88\x88a-\x8AV[\x90P`\0\x85\x85\x12\x15a! Wa!\x10\x83\x83a!\t\x88\x8Aa-\x9DV[\x91\x90a\x1E\xBDV[a!\x19\x90a-\xC4V[\x90Pa!2V[a!/\x83\x83a!\t\x89\x89a-\x9DV[\x90P[a!<\x81\x87a-\xFCV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a![W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a!sW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x8BW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a!\xBFW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a!\xD7W`\0\x80\xFD[a!\xE3\x87\x83\x88\x01a!IV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!\xF9W`\0\x80\xFD[Pa\"\x06\x86\x82\x87\x01a!aV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\"%W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"=W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\"kW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x82W`\0\x80\xFD[a\"\x8E\x85\x82\x86\x01a\"\x13V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\"\xB0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"\xC8W`\0\x80\xFD[a\"\xD4\x88\x83\x89\x01a\"\x13V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"\xEDW`\0\x80\xFD[Pa\"\xFA\x87\x82\x88\x01a!aV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a#:W`\0\x80\xFD[\x815a#E\x81a#\x06V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a#^W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#uW`\0\x80\xFD[a\x1C\xAD\x84\x82\x85\x01a!IV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a#\xFAW\x81\x81\x01Q\x83\x82\x01R` \x01a#\xE2V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra$\x1B\x81` \x86\x01` \x86\x01a#\xDFV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a$\xADW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a$bV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%,a\x01\xA0\x85\x01\x82a$\x03V[\x90P` \x83\x01Qa%j` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra%\x82\x82\x82a$MV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x9C\x82\x82a$\x03V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a&(W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra&\x16\x86\x83Qa$\xB8V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%\xDCV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\xADW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&\xECW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a'\x07W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!\xA3W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xF5Wa'\xF5a#\x81V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a(\x0EW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a((Wa((a#\x81V[a(Y` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\xAEV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a(nW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a(\x9DW`\0\x80\xFD[a(\xA5a'\x1CV[\x90P\x815a(\xB2\x81a#\x06V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xEAWa(\xEAa#\x81V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a)\x05W`\0\x80\xFD[\x815` a)\x1Aa)\x15\x83a(\xD0V[a'\xAEV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a)9W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a)\x9EW`\x80\x81\x89\x03\x12\x15a)VW`\0\x80\x81\xFD[a)^a'EV[\x815a)i\x81a#\x06V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a)\x8C\x81a#\x06V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a)=V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a)\xBBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\xD3W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)\xE7W`\0\x80\xFD[a)\xEFa'hV[\x825\x82\x81\x11\x15a)\xFEW`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a*\x10W`\0\x80\xFD[a*\x18a'\x8BV[\x815a*#\x81a#\x06V[\x81R` \x82\x015a*3\x81a#\x06V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a*\\\x81a#\x06V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a*sW`\0\x80\xFD[a*\x7F\x89\x82\x85\x01a'\xFDV[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra*\xAB\x86``\x85\x01a(\x8BV[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\xC2W`\0\x80\xFD[a*\xCE\x87\x82\x86\x01a(\xF4V[`\x80\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa*\xEF\x81\x84` \x89\x01a#\xDFV[\x84Q\x90\x83\x01\x90a+\x03\x81\x83` \x89\x01a#\xDFV[\x84Q\x91\x01\x90a+\x16\x81\x83` \x88\x01a#\xDFV[\x01\x95\x94PPPPPV[` \x81R`\0a#E` \x83\x01\x84a$\xB8V[`\0` \x80\x83\x85\x03\x12\x15a+FW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+]W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a+nW`\0\x80\xFD[\x80Qa+|a)\x15\x82a(\xD0V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a+\x9BW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+\xF7W\x80\x85\x8A\x03\x12\x15a+\xB8W`\0\x80\x81\xFD[a+\xC0a'\x1CV[\x85Qa+\xCB\x81a#\x06V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+\xE4\x81a#\x06V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a+\xA0V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F:Wa\x1F:a,\x03V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1C\xAD`@\x83\x01\x84a$\xB8V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa,\xAC\x81`\x13\x85\x01` \x88\x01a#\xDFV[\x83Q\x90\x83\x01\x90a,\xC3\x81`\x13\x84\x01` \x88\x01a#\xDFV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a,\xFF\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra-@`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra-u\x81\x84\x01\x86a$\x03V[\x90P\x82\x81\x03a\x01 \x84\x01Ra!<\x81\x85a$\x03V[\x81\x81\x03\x81\x81\x11\x15a\x1F:Wa\x1F:a,\x03V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a-\xBDWa-\xBDa,\x03V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-\xF5Wa-\xF5a,\x03V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a.\x1CWa.\x1Ca,\x03V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x0Ct\xC6SI\xB0\xAF\x83f\x8D\x86\x03R\xD3\x9F\x18)\xD5r\x1D\x90\x19\xF5\x1E(&\xCA\xB1\xD7U.\xCBdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 O\x85_\xE9\xAD`x1Pg\x03\xD1\x07l\x7F\xDBW]\xE5YTy\x94\x8347\xB0\xD1\x8C\xCF&\xE7dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct DutchDeployment { address permit2; address reactor; address quoter; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DutchDeployment { + pub permit2: alloy::sol_types::private::Address, + pub reactor: alloy::sol_types::private::Address, + pub quoter: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DutchDeployment) -> Self { + (value.permit2, value.reactor, value.quoter) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DutchDeployment { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit2: tuple.0, + reactor: tuple.1, + quoter: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for DutchDeployment { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for DutchDeployment { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.permit2, + ), + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.quoter, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for DutchDeployment { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for DutchDeployment { + const NAME: &'static str = "DutchDeployment"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "DutchDeployment(address permit2,address reactor,address quoter)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.permit2, + ) + .0, + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.quoter, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for DutchDeployment { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.permit2, + ) + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.quoter, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.permit2, + out, + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.quoter, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. +```solidity +function IS_SCRIPT() external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `run()` and selector `0xc0406226`. +```solidity +function run() external returns (DutchDeployment memory deployment); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runReturn { + pub deployment: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (DutchDeployment,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runReturn) -> Self { + (value.deployment,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { deployment: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for runCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = runReturn; + type ReturnTuple<'a> = (DutchDeployment,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "run()"; + const SELECTOR: [u8; 4] = [192u8, 64u8, 98u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setUp()` and selector `0x0a9254e4`. +```solidity +function setUp() external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setUpCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setUpReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setUp()"; + const SELECTOR: [u8; 4] = [10u8, 146u8, 84u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`DeployDutch`](self) function calls. + pub enum DeployDutchCalls { + IS_SCRIPT(IS_SCRIPTCall), + run(runCall), + setUp(setUpCall), + } + #[automatically_derived] + impl DeployDutchCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [10u8, 146u8, 84u8, 228u8], + [192u8, 64u8, 98u8, 38u8], + [248u8, 204u8, 191u8, 71u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DeployDutchCalls { + const NAME: &'static str = "DeployDutchCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => { + ::SELECTOR + } + Self::run(_) => ::SELECTOR, + Self::setUp(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployDutchCalls::setUp) + } + setUp + }, + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployDutchCalls::run) + } + run + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployDutchCalls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::run(inner) => { + ::abi_encoded_size(inner) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::run(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DeployDutch`](self) contract instance. + +See the [wrapper's documentation](`DeployDutchInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DeployDutchInstance { + DeployDutchInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DeployDutchInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + DeployDutchInstance::::deploy_builder(provider) + } + /**A [`DeployDutch`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DeployDutch`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DeployDutchInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DeployDutchInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DeployDutchInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployDutchInstance { + /**Creates a new wrapper around an on-chain [`DeployDutch`](self) contract instance. + +See the [wrapper's documentation](`DeployDutchInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DeployDutchInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DeployDutchInstance { + DeployDutchInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployDutchInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`run`] function. + pub fn run(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&runCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployDutchInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/deploydutchv2.rs b/crates/bindings-uniswapx/src/deploydutchv2.rs new file mode 100644 index 0000000..c0e5db6 --- /dev/null +++ b/crates/bindings-uniswapx/src/deploydutchv2.rs @@ -0,0 +1,973 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DeployDutchV2 { + struct V2DutchOrderDeployment { + address permit2; + address reactor; + } + + function IS_SCRIPT() external view returns (bool); + function run() external returns (V2DutchOrderDeployment memory deployment); + function setUp() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "run", + "inputs": [], + "outputs": [ + { + "name": "deployment", + "type": "tuple", + "internalType": "struct V2DutchOrderDeployment", + "components": [ + { + "name": "permit2", + "type": "address", + "internalType": "contract IPermit2" + }, + { + "name": "reactor", + "type": "address", + "internalType": "contract V2DutchOrderReactor" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DeployDutchV2 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50613b77806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610089575b600080fd5b005b6100506100ac565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252015b60405180910390f35b600c5461009c9062010000900460ff1681565b6040519015158152602001610080565b60408051808201909152600080825260208201526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e455200000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017d9190610493565b90506101be6040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561022957600080fd5b505af115801561023d573d6000803e3d6000fd5b5050505060008060001b6e22d473030f116ddee9f6b43ac78ba38360405161026490610486565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156102a8573d6000803e3d6000fd5b5090506102ea6040518060400160405280600781526020017f52656163746f7200000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035557600080fd5b505af1158015610369573d6000803e3d6000fd5b5050505060405180604001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b61045582826040516024016103da9291906104d0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610459565b5050565b61046281610465565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6135e88061055a83390190565b6000602082840312156104a557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104c957600080fd5b9392505050565b604081526000835180604084015260005b818110156104fe57602081870181015160608684010152016104e1565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b50604051620035e8380380620035e88339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b6080516134cf620001196000396000818160e00152611a5301526134cf6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046124e4565b6101eb565b005b6100b96100c9366004612592565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96101393660046125d4565b6104c5565b34801561014a57600080fd5b506100b9610159366004612672565b610683565b6100b961016c366004612696565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612672565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56126fa565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016128fd565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff811115610388576103886126cb565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666126fa565b905060200281019061047891906129c3565b6109f6565b82828151811061048f5761048f6126fa565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e96126cb565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666126fa565b8282815181106105d9576105d96126fa565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016128fd565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696126fa565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612a01565b810190610a7c9190612e40565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b089190612a01565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e6126fa565b60200260200101519050610ba181611468565b610bab8133611958565b610bb58133611a51565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf6126fa565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c166126fa565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d5d9092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca96126fa565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611da4565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061338d60208301396040518060c00160405280608d815260200161340d608d9139604051602001610e9193929190612f3d565b60405160208183030381529060405280519060200120610eb48360000151611e3e565b6020808501516040808701518051938101519101516060880151929392610eda90611ed8565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612f80565b9150915060008360a00151604081518110610fc257610fc26126fa565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612fa4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001613034565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a6126fa565b602002602001015190506000836080015160a001518381518110611240576112406126fa565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686611f76565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611392576113926126cb565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e6126fa565b60200260200101518686611ff3565b83828151811061143f5761143f6126fa565b6020908102919091010152600101611401565b50509392505050565b61067d84848484426120c3565b60015473ffffffffffffffffffffffffffffffffffffffff166114885750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906114df90859060040161305a565b600060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611542919081019061306d565b604083015151815191925090600061155a828461316c565b67ffffffffffffffff811115611572576115726126cb565b6040519080825280602002602001820160405280156115db57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115905790505b50905060005b8381101561162c57856040015181815181106115ff576115ff6126fa565b6020026020010151828281518110611619576116196126fa565b60209081029190910101526001016115e1565b5060008060005b8481101561194757600087828151811061164f5761164f6126fa565b6020026020010151905060005b8281101561170d57888181518110611676576116766126fa565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117055781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161165c565b506000805b888110156117ce5760008b604001518281518110611732576117326126fa565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036117c55785156117af576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117be908461316c565b9250600196505b50600101611712565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361184757841561182e576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b01510151611840908261316c565b9050600193505b8060000361189c5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6118aa81600561271061216f565b8260200151111561191d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611932576119326126fa565b60209081029190910101525050600101611633565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146119a9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611a25908490869060040161317f565b60006040518083038186803b158015611a3d57600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611b11846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b611b1b85856121ab565b856000015160200151866080015160405180608001604052806052815260200161338d605291396040518060c00160405280608d815260200161340d608d91396040518060600160405280602e81526020016133df602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611cc2949392916020016131ae565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611d2f9695949392600401613237565b600060405180830381600087803b158015611d4957600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d825761035f8282611da4565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846121f2565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dfe576040519150601f19603f3d011682016040523d82523d6000602084013e611e03565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d815260200161340d608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ef857611ef86126cb565b6040519080825280601f01601f191660200182016040528015611f22576020820181803683370190505b50905060005b8351811015611f67576000611f55858381518110611f4857611f486126fa565b60200260200101516122dd565b60208381028501015250600101611f28565b50805160209091012092915050565b6000838503611f86575083611feb565b828211611fbf576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611fcd575082611feb565b428310611fdb575083611feb565b611fe88383428888612354565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612052576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612068856020015186604001518686611f76565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b6120ce84848361236f565b6121685781612109576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561216557600082828151811061212e5761212e6126fa565b6020026020010151905061215785612710612149919061316c565b6020830151906127106123ba565b602090910152600101612111565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026121a457600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b600060405180608001604052806052815260200161338d60529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600061236386868686866123fe565b90505b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416158061239357508282115b80611feb575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123ef57600080fd5b50910281810615159190040190565b600084841061240e575080612366565b600061241a87866132f2565b9050600061242888886132f2565b905060008585121561245a5761244a8383612443888a613305565b919061216f565b6124539061332c565b905061246c565b61246983836124438989613305565b90505b6124768187613364565b9998505050505050505050565b60006040828403121561249557600080fd5b50919050565b60008083601f8401126124ad57600080fd5b50813567ffffffffffffffff8111156124c557600080fd5b6020830191508360208285010111156124dd57600080fd5b9250929050565b6000806000604084860312156124f957600080fd5b833567ffffffffffffffff8082111561251157600080fd5b61251d87838801612483565b9450602086013591508082111561253357600080fd5b506125408682870161249b565b9497909650939450505050565b60008083601f84011261255f57600080fd5b50813567ffffffffffffffff81111561257757600080fd5b6020830191508360208260051b85010111156124dd57600080fd5b600080602083850312156125a557600080fd5b823567ffffffffffffffff8111156125bc57600080fd5b6125c88582860161254d565b90969095509350505050565b600080600080604085870312156125ea57600080fd5b843567ffffffffffffffff8082111561260257600080fd5b61260e8883890161254d565b9096509450602087013591508082111561262757600080fd5b506126348782880161249b565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b803561266d81612640565b919050565b60006020828403121561268457600080fd5b813561268f81612640565b9392505050565b6000602082840312156126a857600080fd5b813567ffffffffffffffff8111156126bf57600080fd5b611feb84828501612483565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561274457818101518382015260200161272c565b50506000910152565b60008151808452612765816020860160208601612729565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156127f7578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016127ac565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526128766101a085018261274d565b905060208301516128b46020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128cc8282612797565b915050606083015184820360a08601526128e6828261274d565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612960868351612802565b95509382019390820190600101612926565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126129f757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a3657600080fd5b83018035915067ffffffffffffffff821115612a5157600080fd5b6020019150368190038213156124dd57600080fd5b60405160c0810167ffffffffffffffff81118282101715612a8957612a896126cb565b60405290565b6040516060810167ffffffffffffffff81118282101715612a8957612a896126cb565b6040516080810167ffffffffffffffff81118282101715612a8957612a896126cb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b1c57612b1c6126cb565b604052919050565b600082601f830112612b3557600080fd5b813567ffffffffffffffff811115612b4f57612b4f6126cb565b612b8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ad5565b818152846020838601011115612b9557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612bc457600080fd5b612bcc612a66565b90508135612bd981612640565b81526020820135612be981612640565b8060208301525060408201356040820152606082013560608201526080820135612c1281612640565b608082015260a082013567ffffffffffffffff811115612c3157600080fd5b612c3d84828501612b24565b60a08301525092915050565b600060608284031215612c5b57600080fd5b612c63612a8f565b90508135612c7081612640565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612ca857612ca86126cb565b5060051b60200190565b600082601f830112612cc357600080fd5b81356020612cd8612cd383612c8e565b612ad5565b82815260079290921b84018101918181019086841115612cf757600080fd5b8286015b84811015612d5c5760808189031215612d145760008081fd5b612d1c612ab2565b8135612d2781612640565b8152818501358582015260408083013590820152606080830135612d4a81612640565b90820152835291830191608001612cfb565b509695505050505050565b600060c08284031215612d7957600080fd5b612d81612a66565b905081358152602080830135818301526040830135612d9f81612640565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612dd457600080fd5b8301601f81018513612de557600080fd5b8035612df3612cd382612c8e565b81815260059190911b82018301908381019087831115612e1257600080fd5b928401925b82841015612e3057833582529284019290840190612e17565b60a0860152509295945050505050565b600060208284031215612e5257600080fd5b813567ffffffffffffffff80821115612e6a57600080fd5b908301906101008286031215612e7f57600080fd5b612e87612a66565b823582811115612e9657600080fd5b612ea287828601612bb2565b825250612eb160208401612662565b6020820152612ec38660408501612c49565b604082015260a083013582811115612eda57600080fd5b612ee687828601612cb2565b60608301525060c083013582811115612efe57600080fd5b612f0a87828601612d67565b60808301525060e083013582811115612f2257600080fd5b612f2e87828601612b24565b60a08301525095945050505050565b60008451612f4f818460208901612729565b845190830190612f63818360208901612729565b8451910190612f76818360208801612729565b0195945050505050565b60008060408385031215612f9357600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612d5c5783518252928401926001929092019190840190613014565b8281526000825161304c816020850160208701612729565b919091016020019392505050565b60208152600061268f6020830184612802565b6000602080838503121561308057600080fd5b825167ffffffffffffffff81111561309757600080fd5b8301601f810185136130a857600080fd5b80516130b6612cd382612c8e565b818152606091820283018401918482019190888411156130d557600080fd5b938501935b838510156131315780858a0312156130f25760008081fd5b6130fa612a8f565b855161310581612640565b8152858701518782015260408087015161311e81612640565b90820152835293840193918501916130da565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156121ec576121ec61313d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611feb6040830184612802565b7f563244757463684f72646572207769746e6573732900000000000000000000008152600085516131e6816015850160208a01612729565b8551908301906131fd816015840160208a01612729565b8551910190613213816015840160208901612729565b8451910190613229816015840160208801612729565b016015019695505050505050565b6000610140613267838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526132a86080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526132dd8184018661274d565b9050828103610120840152612476818561274d565b818103818111156121ec576121ec61313d565b81810360008312801583831316838312821617156133255761332561313d565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361335d5761335d61313d565b5060000390565b80820182811260008312801582168215821617156133845761338461313d565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212201b7d41a288872094e2643d8efd2d7d2fa97b6432325500b0029b8b9a405d2e4464736f6c63430008180033a2646970667358221220d977387c71933d37a95ee423c1cb1752881fa04482ea060251331dd8edd9bbf964736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pa;w\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x89W[`\0\x80\xFD[\0[a\0Pa\0\xACV[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x9C\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x80V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01YW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01}\x91\x90a\x04\x93V[\x90Pa\x01\xBE`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02)W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02=W=`\0\x80>=`\0\xFD[PPPP`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02d\x90a\x04\x86V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02\xA8W=`\0\x80>=`\0\xFD[P\x90Pa\x02\xEA`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03UW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03iW=`\0\x80>=`\0\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04U\x82\x82`@Q`$\x01a\x03\xDA\x92\x91\x90a\x04\xD0V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04YV[PPV[a\x04b\x81a\x04eV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a5\xE8\x80a\x05Z\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x04\xA5W`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xC9W`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0\x83Q\x80`@\x84\x01R`\0[\x81\x81\x10\x15a\x04\xFEW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xE1V[P`\0``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x005\xE88\x03\x80b\x005\xE8\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa4\xCFb\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x1AS\x01Ra4\xCF`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$\xE4V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a%\x92V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%\xD4V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a&rV[a\x06\x83V[a\0\xB9a\x01l6`\x04a&\x96V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a&rV[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&\xFAV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xBEV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\xC3V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BmV[a\x04\xB5\x81a\x0B\xBEV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xBEV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&\xFAV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BmV[a\x08\x86\x81a\x0B\xBEV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a*\x01V[\x81\x01\x90a\n|\x91\x90a.@V[\x90P`\0a\n\x89\x82a\r\x11V[\x90Pa\n\x95\x81\x83a\x0FCV[a\n\x9E\x82a\x11BV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xCF\x92\x90\x91\x90a\x12\xA2V[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xF3\x92\x91\x90a\x13tV[\x81R` \x01\x85\x80` \x01\x90a\x0B\x08\x91\x90a*\x01V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0Bf\x92\x86\x92\x90a\x14[V[PP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x8EWa\x0B\x8Ea&\xFAV[` \x02` \x01\x01Q\x90Pa\x0B\xA1\x81a\x14hV[a\x0B\xAB\x813a\x19XV[a\x0B\xB5\x813a\x1AQV[P`\x01\x01a\x0BrV[\x80Q`\0[\x81\x81\x10\x15a\r\0W`\0\x83\x82\x81Q\x81\x10a\x0B\xDFWa\x0B\xDFa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C`W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x16Wa\x0C\x16a&\xFAV[` \x02` \x01\x01Q\x90Pa\x0CW\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D]\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xF6V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\xA9Wa\x0C\xA9a&\xFAV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xEE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xC3V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1D\xA4V[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\0\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a3\x8D` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q` \x01a\x0E\x91\x93\x92\x91\x90a/=V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\xB4\x83`\0\x01Qa\x1E>V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xDA\x90a\x1E\xD8V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0F\x8AW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0F\xA5\x91\x90a/\x80V[\x91P\x91P`\0\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\xC2Wa\x0F\xC2a&\xFAV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P`\0`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xEC\x91\x90a/\xA4V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10(\x92\x91` \x01a04V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10\xA4W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x11\x03WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11:W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11\xABW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11\x99W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xF2W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0[\x81``\x01QQ\x81\x10\x15a\x04\xC1W`\0\x82``\x01Q\x82\x81Q\x81\x10a\x12\x1AWa\x12\x1Aa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12@Wa\x12@a&\xFAV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12\x98W\x81` \x01Q\x81\x10\x15a\x12\x90W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xF5V[a\x12\xDC`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x13\x1EW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x134\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x92Wa\x13\x92a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB0W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x14RWa\x14-\x86\x82\x81Q\x81\x10a\x14\x1EWa\x14\x1Ea&\xFAV[` \x02` \x01\x01Q\x86\x86a\x1F\xF3V[\x83\x82\x81Q\x81\x10a\x14?Wa\x14?a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x01V[PP\x93\x92PPPV[a\x06}\x84\x84\x84\x84Ba \xC3V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14\x88WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\xDF\x90\x85\x90`\x04\x01a0ZV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xFCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a0mV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x15Z\x82\x84a1lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15rWa\x15ra&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\xDBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15\x90W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x16,W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xFFWa\x15\xFFa&\xFAV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x19Wa\x16\x19a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\xE1V[P`\0\x80`\0[\x84\x81\x10\x15a\x19GW`\0\x87\x82\x81Q\x81\x10a\x16OWa\x16Oa&\xFAV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\rW\x88\x81\x81Q\x81\x10a\x16vWa\x16va&\xFAV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x05W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x16\\V[P`\0\x80[\x88\x81\x10\x15a\x17\xCEW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x172Wa\x172a&\xFAV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xC5W\x85\x15a\x17\xAFW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17\xBE\x90\x84a1lV[\x92P`\x01\x96P[P`\x01\x01a\x17\x12V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18GW\x84\x15a\x18.W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18@\x90\x82a1lV[\x90P`\x01\x93P[\x80`\0\x03a\x18\x9CW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18\xAA\x81`\x05a'\x10a!oV[\x82` \x01Q\x11\x15a\x19\x1DW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x192Wa\x192a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x163V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19\xA9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A%\x90\x84\x90\x86\x90`\x04\x01a1\x7FV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A=W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x11\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1B\x1B\x85\x85a!\xABV[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a3\xDF`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xC2\x94\x93\x92\x91` \x01a1\xAEV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1D/\x96\x95\x94\x93\x92`\x04\x01a27V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1DIW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D\x82Wa\x03_\x82\x82a\x1D\xA4V[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xF2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1E\x03V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0F&\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xF8Wa\x1E\xF8a&\xCBV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1F\"W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1FgW`\0a\x1FU\x85\x83\x81Q\x81\x10a\x1FHWa\x1FHa&\xFAV[` \x02` \x01\x01Qa\"\xDDV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1F(V[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x83\x85\x03a\x1F\x86WP\x83a\x1F\xEBV[\x82\x82\x11a\x1F\xBFW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1F\xCDWP\x82a\x1F\xEBV[B\x83\x10a\x1F\xDBWP\x83a\x1F\xEBV[a\x1F\xE8\x83\x83B\x88\x88a#TV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a RW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a h\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a \xCE\x84\x84\x83a#oV[a!hW\x81a!\tW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a!eW`\0\x82\x82\x81Q\x81\x10a!.Wa!.a&\xFAV[` \x02` \x01\x01Q\x90Pa!W\x85a'\x10a!I\x91\x90a1lV[` \x83\x01Q\x90a'\x10a#\xBAV[` \x90\x91\x01R`\x01\x01a!\x11V[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xA4W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a!hW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0F&\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0a#c\x86\x86\x86\x86\x86a#\xFEV[\x90P[\x95\x94PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x93WP\x82\x82\x11[\x80a\x1F\xEBWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xEFW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a$\x0EWP\x80a#fV[`\0a$\x1A\x87\x86a2\xF2V[\x90P`\0a$(\x88\x88a2\xF2V[\x90P`\0\x85\x85\x12\x15a$ZWa$J\x83\x83a$C\x88\x8Aa3\x05V[\x91\x90a!oV[a$S\x90a3,V[\x90Pa$lV[a$i\x83\x83a$C\x89\x89a3\x05V[\x90P[a$v\x81\x87a3dV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a$\x95W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\xADW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xC5W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$\xF9W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%\x11W`\0\x80\xFD[a%\x1D\x87\x83\x88\x01a$\x83V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a%3W`\0\x80\xFD[Pa%@\x86\x82\x87\x01a$\x9BV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a%_W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%wW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\xA5W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xBCW`\0\x80\xFD[a%\xC8\x85\x82\x86\x01a%MV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%\xEAW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a&\x02W`\0\x80\xFD[a&\x0E\x88\x83\x89\x01a%MV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a&'W`\0\x80\xFD[Pa&4\x87\x82\x88\x01a$\x9BV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a&m\x81a&@V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a&\x84W`\0\x80\xFD[\x815a&\x8F\x81a&@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a&\xA8W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\xBFW`\0\x80\xFD[a\x1F\xEB\x84\x82\x85\x01a$\x83V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a'DW\x81\x81\x01Q\x83\x82\x01R` \x01a',V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra'e\x81` \x86\x01` \x86\x01a')V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'\xF7W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\xACV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra(va\x01\xA0\x85\x01\x82a'MV[\x90P` \x83\x01Qa(\xB4` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(\xCC\x82\x82a'\x97V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(\xE6\x82\x82a'MV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a)rW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra)`\x86\x83Qa(\x02V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a)&V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)\xF7W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a*6W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*QW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$\xDDW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a+\x1CWa+\x1Ca&\xCBV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a+5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+OWa+Oa&\xCBV[a+\x80` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*\xD5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a+\x95W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+\xC4W`\0\x80\xFD[a+\xCCa*fV[\x90P\x815a+\xD9\x81a&@V[\x81R` \x82\x015a+\xE9\x81a&@V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a,\x12\x81a&@V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,1W`\0\x80\xFD[a,=\x84\x82\x85\x01a+$V[`\xA0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a,[W`\0\x80\xFD[a,ca*\x8FV[\x90P\x815a,p\x81a&@V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xA8Wa,\xA8a&\xCBV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,\xC3W`\0\x80\xFD[\x815` a,\xD8a,\xD3\x83a,\x8EV[a*\xD5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\xF7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a-\\W`\x80\x81\x89\x03\x12\x15a-\x14W`\0\x80\x81\xFD[a-\x1Ca*\xB2V[\x815a-'\x81a&@V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a-J\x81a&@V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,\xFBV[P\x96\x95PPPPPPV[`\0`\xC0\x82\x84\x03\x12\x15a-yW`\0\x80\xFD[a-\x81a*fV[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a-\x9F\x81a&@V[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\xD4W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-\xE5W`\0\x80\xFD[\x805a-\xF3a,\xD3\x82a,\x8EV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a.\x12W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a.0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a.\x17V[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.RW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a.jW`\0\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a.\x7FW`\0\x80\xFD[a.\x87a*fV[\x825\x82\x81\x11\x15a.\x96W`\0\x80\xFD[a.\xA2\x87\x82\x86\x01a+\xB2V[\x82RPa.\xB1` \x84\x01a&bV[` \x82\x01Ra.\xC3\x86`@\x85\x01a,IV[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\xDAW`\0\x80\xFD[a.\xE6\x87\x82\x86\x01a,\xB2V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.\xFEW`\0\x80\xFD[a/\n\x87\x82\x86\x01a-gV[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a/\"W`\0\x80\xFD[a/.\x87\x82\x86\x01a+$V[`\xA0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa/O\x81\x84` \x89\x01a')V[\x84Q\x90\x83\x01\x90a/c\x81\x83` \x89\x01a')V[\x84Q\x91\x01\x90a/v\x81\x83` \x88\x01a')V[\x01\x95\x94PPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a/\x93W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a-\\W\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a0\x14V[\x82\x81R`\0\x82Qa0L\x81` \x85\x01` \x87\x01a')V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R`\0a&\x8F` \x83\x01\x84a(\x02V[`\0` \x80\x83\x85\x03\x12\x15a0\x80W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\x97W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a0\xA8W`\0\x80\xFD[\x80Qa0\xB6a,\xD3\x82a,\x8EV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a0\xD5W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a11W\x80\x85\x8A\x03\x12\x15a0\xF2W`\0\x80\x81\xFD[a0\xFAa*\x8FV[\x85Qa1\x05\x81a&@V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa1\x1E\x81a&@V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\xDAV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a!\xECWa!\xECa1=V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1F\xEB`@\x83\x01\x84a(\x02V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x85Qa1\xE6\x81`\x15\x85\x01` \x8A\x01a')V[\x85Q\x90\x83\x01\x90a1\xFD\x81`\x15\x84\x01` \x8A\x01a')V[\x85Q\x91\x01\x90a2\x13\x81`\x15\x84\x01` \x89\x01a')V[\x84Q\x91\x01\x90a2)\x81`\x15\x84\x01` \x88\x01a')V[\x01`\x15\x01\x96\x95PPPPPPV[`\0a\x01@a2g\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra2\xA8`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra2\xDD\x81\x84\x01\x86a'MV[\x90P\x82\x81\x03a\x01 \x84\x01Ra$v\x81\x85a'MV[\x81\x81\x03\x81\x81\x11\x15a!\xECWa!\xECa1=V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a3%Wa3%a1=V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a3]Wa3]a1=V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a3\x84Wa3\x84a1=V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x1B}A\xA2\x88\x87 \x94\xE2d=\x8E\xFD-}/\xA9{d22U\0\xB0\x02\x9B\x8B\x9A@].DdsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xD9w8|q\x93=7\xA9^\xE4#\xC1\xCB\x17R\x88\x1F\xA0D\x82\xEA\x06\x02Q3\x1D\xD8\xED\xD9\xBB\xF9dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610089575b600080fd5b005b6100506100ac565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252015b60405180910390f35b600c5461009c9062010000900460ff1681565b6040519015158152602001610080565b60408051808201909152600080825260208201526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e455200000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017d9190610493565b90506101be6040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561022957600080fd5b505af115801561023d573d6000803e3d6000fd5b5050505060008060001b6e22d473030f116ddee9f6b43ac78ba38360405161026490610486565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156102a8573d6000803e3d6000fd5b5090506102ea6040518060400160405280600781526020017f52656163746f7200000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035557600080fd5b505af1158015610369573d6000803e3d6000fd5b5050505060405180604001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b61045582826040516024016103da9291906104d0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610459565b5050565b61046281610465565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6135e88061055a83390190565b6000602082840312156104a557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104c957600080fd5b9392505050565b604081526000835180604084015260005b818110156104fe57602081870181015160608684010152016104e1565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b50604051620035e8380380620035e88339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b6080516134cf620001196000396000818160e00152611a5301526134cf6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046124e4565b6101eb565b005b6100b96100c9366004612592565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96101393660046125d4565b6104c5565b34801561014a57600080fd5b506100b9610159366004612672565b610683565b6100b961016c366004612696565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612672565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56126fa565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016128fd565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff811115610388576103886126cb565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666126fa565b905060200281019061047891906129c3565b6109f6565b82828151811061048f5761048f6126fa565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e96126cb565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666126fa565b8282815181106105d9576105d96126fa565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016128fd565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696126fa565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612a01565b810190610a7c9190612e40565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b089190612a01565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e6126fa565b60200260200101519050610ba181611468565b610bab8133611958565b610bb58133611a51565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf6126fa565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c166126fa565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d5d9092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca96126fa565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611da4565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061338d60208301396040518060c00160405280608d815260200161340d608d9139604051602001610e9193929190612f3d565b60405160208183030381529060405280519060200120610eb48360000151611e3e565b6020808501516040808701518051938101519101516060880151929392610eda90611ed8565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612f80565b9150915060008360a00151604081518110610fc257610fc26126fa565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612fa4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001613034565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a6126fa565b602002602001015190506000836080015160a001518381518110611240576112406126fa565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686611f76565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611392576113926126cb565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e6126fa565b60200260200101518686611ff3565b83828151811061143f5761143f6126fa565b6020908102919091010152600101611401565b50509392505050565b61067d84848484426120c3565b60015473ffffffffffffffffffffffffffffffffffffffff166114885750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906114df90859060040161305a565b600060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611542919081019061306d565b604083015151815191925090600061155a828461316c565b67ffffffffffffffff811115611572576115726126cb565b6040519080825280602002602001820160405280156115db57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115905790505b50905060005b8381101561162c57856040015181815181106115ff576115ff6126fa565b6020026020010151828281518110611619576116196126fa565b60209081029190910101526001016115e1565b5060008060005b8481101561194757600087828151811061164f5761164f6126fa565b6020026020010151905060005b8281101561170d57888181518110611676576116766126fa565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117055781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161165c565b506000805b888110156117ce5760008b604001518281518110611732576117326126fa565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036117c55785156117af576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117be908461316c565b9250600196505b50600101611712565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361184757841561182e576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b01510151611840908261316c565b9050600193505b8060000361189c5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6118aa81600561271061216f565b8260200151111561191d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611932576119326126fa565b60209081029190910101525050600101611633565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146119a9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611a25908490869060040161317f565b60006040518083038186803b158015611a3d57600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611b11846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b611b1b85856121ab565b856000015160200151866080015160405180608001604052806052815260200161338d605291396040518060c00160405280608d815260200161340d608d91396040518060600160405280602e81526020016133df602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611cc2949392916020016131ae565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611d2f9695949392600401613237565b600060405180830381600087803b158015611d4957600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d825761035f8282611da4565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846121f2565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dfe576040519150601f19603f3d011682016040523d82523d6000602084013e611e03565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d815260200161340d608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ef857611ef86126cb565b6040519080825280601f01601f191660200182016040528015611f22576020820181803683370190505b50905060005b8351811015611f67576000611f55858381518110611f4857611f486126fa565b60200260200101516122dd565b60208381028501015250600101611f28565b50805160209091012092915050565b6000838503611f86575083611feb565b828211611fbf576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611fcd575082611feb565b428310611fdb575083611feb565b611fe88383428888612354565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612052576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612068856020015186604001518686611f76565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b6120ce84848361236f565b6121685781612109576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561216557600082828151811061212e5761212e6126fa565b6020026020010151905061215785612710612149919061316c565b6020830151906127106123ba565b602090910152600101612111565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026121a457600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b600060405180608001604052806052815260200161338d60529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600061236386868686866123fe565b90505b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416158061239357508282115b80611feb575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123ef57600080fd5b50910281810615159190040190565b600084841061240e575080612366565b600061241a87866132f2565b9050600061242888886132f2565b905060008585121561245a5761244a8383612443888a613305565b919061216f565b6124539061332c565b905061246c565b61246983836124438989613305565b90505b6124768187613364565b9998505050505050505050565b60006040828403121561249557600080fd5b50919050565b60008083601f8401126124ad57600080fd5b50813567ffffffffffffffff8111156124c557600080fd5b6020830191508360208285010111156124dd57600080fd5b9250929050565b6000806000604084860312156124f957600080fd5b833567ffffffffffffffff8082111561251157600080fd5b61251d87838801612483565b9450602086013591508082111561253357600080fd5b506125408682870161249b565b9497909650939450505050565b60008083601f84011261255f57600080fd5b50813567ffffffffffffffff81111561257757600080fd5b6020830191508360208260051b85010111156124dd57600080fd5b600080602083850312156125a557600080fd5b823567ffffffffffffffff8111156125bc57600080fd5b6125c88582860161254d565b90969095509350505050565b600080600080604085870312156125ea57600080fd5b843567ffffffffffffffff8082111561260257600080fd5b61260e8883890161254d565b9096509450602087013591508082111561262757600080fd5b506126348782880161249b565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b803561266d81612640565b919050565b60006020828403121561268457600080fd5b813561268f81612640565b9392505050565b6000602082840312156126a857600080fd5b813567ffffffffffffffff8111156126bf57600080fd5b611feb84828501612483565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561274457818101518382015260200161272c565b50506000910152565b60008151808452612765816020860160208601612729565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156127f7578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016127ac565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526128766101a085018261274d565b905060208301516128b46020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128cc8282612797565b915050606083015184820360a08601526128e6828261274d565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612960868351612802565b95509382019390820190600101612926565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126129f757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a3657600080fd5b83018035915067ffffffffffffffff821115612a5157600080fd5b6020019150368190038213156124dd57600080fd5b60405160c0810167ffffffffffffffff81118282101715612a8957612a896126cb565b60405290565b6040516060810167ffffffffffffffff81118282101715612a8957612a896126cb565b6040516080810167ffffffffffffffff81118282101715612a8957612a896126cb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b1c57612b1c6126cb565b604052919050565b600082601f830112612b3557600080fd5b813567ffffffffffffffff811115612b4f57612b4f6126cb565b612b8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ad5565b818152846020838601011115612b9557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612bc457600080fd5b612bcc612a66565b90508135612bd981612640565b81526020820135612be981612640565b8060208301525060408201356040820152606082013560608201526080820135612c1281612640565b608082015260a082013567ffffffffffffffff811115612c3157600080fd5b612c3d84828501612b24565b60a08301525092915050565b600060608284031215612c5b57600080fd5b612c63612a8f565b90508135612c7081612640565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612ca857612ca86126cb565b5060051b60200190565b600082601f830112612cc357600080fd5b81356020612cd8612cd383612c8e565b612ad5565b82815260079290921b84018101918181019086841115612cf757600080fd5b8286015b84811015612d5c5760808189031215612d145760008081fd5b612d1c612ab2565b8135612d2781612640565b8152818501358582015260408083013590820152606080830135612d4a81612640565b90820152835291830191608001612cfb565b509695505050505050565b600060c08284031215612d7957600080fd5b612d81612a66565b905081358152602080830135818301526040830135612d9f81612640565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612dd457600080fd5b8301601f81018513612de557600080fd5b8035612df3612cd382612c8e565b81815260059190911b82018301908381019087831115612e1257600080fd5b928401925b82841015612e3057833582529284019290840190612e17565b60a0860152509295945050505050565b600060208284031215612e5257600080fd5b813567ffffffffffffffff80821115612e6a57600080fd5b908301906101008286031215612e7f57600080fd5b612e87612a66565b823582811115612e9657600080fd5b612ea287828601612bb2565b825250612eb160208401612662565b6020820152612ec38660408501612c49565b604082015260a083013582811115612eda57600080fd5b612ee687828601612cb2565b60608301525060c083013582811115612efe57600080fd5b612f0a87828601612d67565b60808301525060e083013582811115612f2257600080fd5b612f2e87828601612b24565b60a08301525095945050505050565b60008451612f4f818460208901612729565b845190830190612f63818360208901612729565b8451910190612f76818360208801612729565b0195945050505050565b60008060408385031215612f9357600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612d5c5783518252928401926001929092019190840190613014565b8281526000825161304c816020850160208701612729565b919091016020019392505050565b60208152600061268f6020830184612802565b6000602080838503121561308057600080fd5b825167ffffffffffffffff81111561309757600080fd5b8301601f810185136130a857600080fd5b80516130b6612cd382612c8e565b818152606091820283018401918482019190888411156130d557600080fd5b938501935b838510156131315780858a0312156130f25760008081fd5b6130fa612a8f565b855161310581612640565b8152858701518782015260408087015161311e81612640565b90820152835293840193918501916130da565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156121ec576121ec61313d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611feb6040830184612802565b7f563244757463684f72646572207769746e6573732900000000000000000000008152600085516131e6816015850160208a01612729565b8551908301906131fd816015840160208a01612729565b8551910190613213816015840160208901612729565b8451910190613229816015840160208801612729565b016015019695505050505050565b6000610140613267838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526132a86080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526132dd8184018661274d565b9050828103610120840152612476818561274d565b818103818111156121ec576121ec61313d565b81810360008312801583831316838312821617156133255761332561313d565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361335d5761335d61313d565b5060000390565b80820182811260008312801582168215821617156133845761338461313d565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212201b7d41a288872094e2643d8efd2d7d2fa97b6432325500b0029b8b9a405d2e4464736f6c63430008180033a2646970667358221220d977387c71933d37a95ee423c1cb1752881fa04482ea060251331dd8edd9bbf964736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x89W[`\0\x80\xFD[\0[a\0Pa\0\xACV[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x9C\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x80V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01YW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01}\x91\x90a\x04\x93V[\x90Pa\x01\xBE`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02)W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02=W=`\0\x80>=`\0\xFD[PPPP`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02d\x90a\x04\x86V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02\xA8W=`\0\x80>=`\0\xFD[P\x90Pa\x02\xEA`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03UW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03iW=`\0\x80>=`\0\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04U\x82\x82`@Q`$\x01a\x03\xDA\x92\x91\x90a\x04\xD0V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04YV[PPV[a\x04b\x81a\x04eV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a5\xE8\x80a\x05Z\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x04\xA5W`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xC9W`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0\x83Q\x80`@\x84\x01R`\0[\x81\x81\x10\x15a\x04\xFEW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xE1V[P`\0``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x005\xE88\x03\x80b\x005\xE8\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa4\xCFb\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x1AS\x01Ra4\xCF`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$\xE4V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a%\x92V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%\xD4V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a&rV[a\x06\x83V[a\0\xB9a\x01l6`\x04a&\x96V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a&rV[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&\xFAV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xBEV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\xC3V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BmV[a\x04\xB5\x81a\x0B\xBEV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xBEV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&\xFAV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BmV[a\x08\x86\x81a\x0B\xBEV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a*\x01V[\x81\x01\x90a\n|\x91\x90a.@V[\x90P`\0a\n\x89\x82a\r\x11V[\x90Pa\n\x95\x81\x83a\x0FCV[a\n\x9E\x82a\x11BV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xCF\x92\x90\x91\x90a\x12\xA2V[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xF3\x92\x91\x90a\x13tV[\x81R` \x01\x85\x80` \x01\x90a\x0B\x08\x91\x90a*\x01V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0Bf\x92\x86\x92\x90a\x14[V[PP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x8EWa\x0B\x8Ea&\xFAV[` \x02` \x01\x01Q\x90Pa\x0B\xA1\x81a\x14hV[a\x0B\xAB\x813a\x19XV[a\x0B\xB5\x813a\x1AQV[P`\x01\x01a\x0BrV[\x80Q`\0[\x81\x81\x10\x15a\r\0W`\0\x83\x82\x81Q\x81\x10a\x0B\xDFWa\x0B\xDFa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C`W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x16Wa\x0C\x16a&\xFAV[` \x02` \x01\x01Q\x90Pa\x0CW\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D]\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xF6V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\xA9Wa\x0C\xA9a&\xFAV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xEE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xC3V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1D\xA4V[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\0\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a3\x8D` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q` \x01a\x0E\x91\x93\x92\x91\x90a/=V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\xB4\x83`\0\x01Qa\x1E>V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xDA\x90a\x1E\xD8V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0F\x8AW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0F\xA5\x91\x90a/\x80V[\x91P\x91P`\0\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\xC2Wa\x0F\xC2a&\xFAV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P`\0`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xEC\x91\x90a/\xA4V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10(\x92\x91` \x01a04V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10\xA4W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x11\x03WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11:W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11\xABW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11\x99W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xF2W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0[\x81``\x01QQ\x81\x10\x15a\x04\xC1W`\0\x82``\x01Q\x82\x81Q\x81\x10a\x12\x1AWa\x12\x1Aa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12@Wa\x12@a&\xFAV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12\x98W\x81` \x01Q\x81\x10\x15a\x12\x90W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xF5V[a\x12\xDC`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x13\x1EW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x134\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x92Wa\x13\x92a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB0W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x14RWa\x14-\x86\x82\x81Q\x81\x10a\x14\x1EWa\x14\x1Ea&\xFAV[` \x02` \x01\x01Q\x86\x86a\x1F\xF3V[\x83\x82\x81Q\x81\x10a\x14?Wa\x14?a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x01V[PP\x93\x92PPPV[a\x06}\x84\x84\x84\x84Ba \xC3V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14\x88WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\xDF\x90\x85\x90`\x04\x01a0ZV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xFCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a0mV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x15Z\x82\x84a1lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15rWa\x15ra&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\xDBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15\x90W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x16,W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xFFWa\x15\xFFa&\xFAV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x19Wa\x16\x19a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\xE1V[P`\0\x80`\0[\x84\x81\x10\x15a\x19GW`\0\x87\x82\x81Q\x81\x10a\x16OWa\x16Oa&\xFAV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\rW\x88\x81\x81Q\x81\x10a\x16vWa\x16va&\xFAV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x05W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x16\\V[P`\0\x80[\x88\x81\x10\x15a\x17\xCEW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x172Wa\x172a&\xFAV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xC5W\x85\x15a\x17\xAFW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17\xBE\x90\x84a1lV[\x92P`\x01\x96P[P`\x01\x01a\x17\x12V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18GW\x84\x15a\x18.W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18@\x90\x82a1lV[\x90P`\x01\x93P[\x80`\0\x03a\x18\x9CW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18\xAA\x81`\x05a'\x10a!oV[\x82` \x01Q\x11\x15a\x19\x1DW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x192Wa\x192a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x163V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19\xA9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A%\x90\x84\x90\x86\x90`\x04\x01a1\x7FV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A=W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x11\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1B\x1B\x85\x85a!\xABV[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a3\xDF`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xC2\x94\x93\x92\x91` \x01a1\xAEV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1D/\x96\x95\x94\x93\x92`\x04\x01a27V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1DIW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D\x82Wa\x03_\x82\x82a\x1D\xA4V[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xF2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1E\x03V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0F&\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xF8Wa\x1E\xF8a&\xCBV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1F\"W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1FgW`\0a\x1FU\x85\x83\x81Q\x81\x10a\x1FHWa\x1FHa&\xFAV[` \x02` \x01\x01Qa\"\xDDV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1F(V[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x83\x85\x03a\x1F\x86WP\x83a\x1F\xEBV[\x82\x82\x11a\x1F\xBFW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1F\xCDWP\x82a\x1F\xEBV[B\x83\x10a\x1F\xDBWP\x83a\x1F\xEBV[a\x1F\xE8\x83\x83B\x88\x88a#TV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a RW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a h\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a \xCE\x84\x84\x83a#oV[a!hW\x81a!\tW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a!eW`\0\x82\x82\x81Q\x81\x10a!.Wa!.a&\xFAV[` \x02` \x01\x01Q\x90Pa!W\x85a'\x10a!I\x91\x90a1lV[` \x83\x01Q\x90a'\x10a#\xBAV[` \x90\x91\x01R`\x01\x01a!\x11V[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xA4W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a!hW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0F&\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0a#c\x86\x86\x86\x86\x86a#\xFEV[\x90P[\x95\x94PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x93WP\x82\x82\x11[\x80a\x1F\xEBWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xEFW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a$\x0EWP\x80a#fV[`\0a$\x1A\x87\x86a2\xF2V[\x90P`\0a$(\x88\x88a2\xF2V[\x90P`\0\x85\x85\x12\x15a$ZWa$J\x83\x83a$C\x88\x8Aa3\x05V[\x91\x90a!oV[a$S\x90a3,V[\x90Pa$lV[a$i\x83\x83a$C\x89\x89a3\x05V[\x90P[a$v\x81\x87a3dV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a$\x95W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\xADW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xC5W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$\xF9W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%\x11W`\0\x80\xFD[a%\x1D\x87\x83\x88\x01a$\x83V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a%3W`\0\x80\xFD[Pa%@\x86\x82\x87\x01a$\x9BV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a%_W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%wW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\xA5W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xBCW`\0\x80\xFD[a%\xC8\x85\x82\x86\x01a%MV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%\xEAW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a&\x02W`\0\x80\xFD[a&\x0E\x88\x83\x89\x01a%MV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a&'W`\0\x80\xFD[Pa&4\x87\x82\x88\x01a$\x9BV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a&m\x81a&@V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a&\x84W`\0\x80\xFD[\x815a&\x8F\x81a&@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a&\xA8W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\xBFW`\0\x80\xFD[a\x1F\xEB\x84\x82\x85\x01a$\x83V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a'DW\x81\x81\x01Q\x83\x82\x01R` \x01a',V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra'e\x81` \x86\x01` \x86\x01a')V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'\xF7W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\xACV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra(va\x01\xA0\x85\x01\x82a'MV[\x90P` \x83\x01Qa(\xB4` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(\xCC\x82\x82a'\x97V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(\xE6\x82\x82a'MV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a)rW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra)`\x86\x83Qa(\x02V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a)&V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)\xF7W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a*6W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*QW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$\xDDW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a+\x1CWa+\x1Ca&\xCBV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a+5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+OWa+Oa&\xCBV[a+\x80` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*\xD5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a+\x95W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+\xC4W`\0\x80\xFD[a+\xCCa*fV[\x90P\x815a+\xD9\x81a&@V[\x81R` \x82\x015a+\xE9\x81a&@V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a,\x12\x81a&@V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,1W`\0\x80\xFD[a,=\x84\x82\x85\x01a+$V[`\xA0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a,[W`\0\x80\xFD[a,ca*\x8FV[\x90P\x815a,p\x81a&@V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xA8Wa,\xA8a&\xCBV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,\xC3W`\0\x80\xFD[\x815` a,\xD8a,\xD3\x83a,\x8EV[a*\xD5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\xF7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a-\\W`\x80\x81\x89\x03\x12\x15a-\x14W`\0\x80\x81\xFD[a-\x1Ca*\xB2V[\x815a-'\x81a&@V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a-J\x81a&@V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,\xFBV[P\x96\x95PPPPPPV[`\0`\xC0\x82\x84\x03\x12\x15a-yW`\0\x80\xFD[a-\x81a*fV[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a-\x9F\x81a&@V[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\xD4W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-\xE5W`\0\x80\xFD[\x805a-\xF3a,\xD3\x82a,\x8EV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a.\x12W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a.0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a.\x17V[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.RW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a.jW`\0\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a.\x7FW`\0\x80\xFD[a.\x87a*fV[\x825\x82\x81\x11\x15a.\x96W`\0\x80\xFD[a.\xA2\x87\x82\x86\x01a+\xB2V[\x82RPa.\xB1` \x84\x01a&bV[` \x82\x01Ra.\xC3\x86`@\x85\x01a,IV[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\xDAW`\0\x80\xFD[a.\xE6\x87\x82\x86\x01a,\xB2V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.\xFEW`\0\x80\xFD[a/\n\x87\x82\x86\x01a-gV[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a/\"W`\0\x80\xFD[a/.\x87\x82\x86\x01a+$V[`\xA0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa/O\x81\x84` \x89\x01a')V[\x84Q\x90\x83\x01\x90a/c\x81\x83` \x89\x01a')V[\x84Q\x91\x01\x90a/v\x81\x83` \x88\x01a')V[\x01\x95\x94PPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a/\x93W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a-\\W\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a0\x14V[\x82\x81R`\0\x82Qa0L\x81` \x85\x01` \x87\x01a')V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R`\0a&\x8F` \x83\x01\x84a(\x02V[`\0` \x80\x83\x85\x03\x12\x15a0\x80W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\x97W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a0\xA8W`\0\x80\xFD[\x80Qa0\xB6a,\xD3\x82a,\x8EV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a0\xD5W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a11W\x80\x85\x8A\x03\x12\x15a0\xF2W`\0\x80\x81\xFD[a0\xFAa*\x8FV[\x85Qa1\x05\x81a&@V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa1\x1E\x81a&@V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\xDAV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a!\xECWa!\xECa1=V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1F\xEB`@\x83\x01\x84a(\x02V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x85Qa1\xE6\x81`\x15\x85\x01` \x8A\x01a')V[\x85Q\x90\x83\x01\x90a1\xFD\x81`\x15\x84\x01` \x8A\x01a')V[\x85Q\x91\x01\x90a2\x13\x81`\x15\x84\x01` \x89\x01a')V[\x84Q\x91\x01\x90a2)\x81`\x15\x84\x01` \x88\x01a')V[\x01`\x15\x01\x96\x95PPPPPPV[`\0a\x01@a2g\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra2\xA8`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra2\xDD\x81\x84\x01\x86a'MV[\x90P\x82\x81\x03a\x01 \x84\x01Ra$v\x81\x85a'MV[\x81\x81\x03\x81\x81\x11\x15a!\xECWa!\xECa1=V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a3%Wa3%a1=V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a3]Wa3]a1=V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a3\x84Wa3\x84a1=V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x1B}A\xA2\x88\x87 \x94\xE2d=\x8E\xFD-}/\xA9{d22U\0\xB0\x02\x9B\x8B\x9A@].DdsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xD9w8|q\x93=7\xA9^\xE4#\xC1\xCB\x17R\x88\x1F\xA0D\x82\xEA\x06\x02Q3\x1D\xD8\xED\xD9\xBB\xF9dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct V2DutchOrderDeployment { address permit2; address reactor; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct V2DutchOrderDeployment { + pub permit2: alloy::sol_types::private::Address, + pub reactor: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: V2DutchOrderDeployment) -> Self { + (value.permit2, value.reactor) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for V2DutchOrderDeployment { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit2: tuple.0, + reactor: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for V2DutchOrderDeployment { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for V2DutchOrderDeployment { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.permit2, + ), + ::tokenize( + &self.reactor, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for V2DutchOrderDeployment { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for V2DutchOrderDeployment { + const NAME: &'static str = "V2DutchOrderDeployment"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "V2DutchOrderDeployment(address permit2,address reactor)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.permit2, + ) + .0, + ::eip712_data_word( + &self.reactor, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for V2DutchOrderDeployment { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.permit2, + ) + + ::topic_preimage_length( + &rust.reactor, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.permit2, + out, + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. +```solidity +function IS_SCRIPT() external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `run()` and selector `0xc0406226`. +```solidity +function run() external returns (V2DutchOrderDeployment memory deployment); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runReturn { + pub deployment: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (V2DutchOrderDeployment,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runReturn) -> Self { + (value.deployment,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { deployment: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for runCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = runReturn; + type ReturnTuple<'a> = (V2DutchOrderDeployment,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "run()"; + const SELECTOR: [u8; 4] = [192u8, 64u8, 98u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setUp()` and selector `0x0a9254e4`. +```solidity +function setUp() external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setUpCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setUpReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setUp()"; + const SELECTOR: [u8; 4] = [10u8, 146u8, 84u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`DeployDutchV2`](self) function calls. + pub enum DeployDutchV2Calls { + IS_SCRIPT(IS_SCRIPTCall), + run(runCall), + setUp(setUpCall), + } + #[automatically_derived] + impl DeployDutchV2Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [10u8, 146u8, 84u8, 228u8], + [192u8, 64u8, 98u8, 38u8], + [248u8, 204u8, 191u8, 71u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DeployDutchV2Calls { + const NAME: &'static str = "DeployDutchV2Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => { + ::SELECTOR + } + Self::run(_) => ::SELECTOR, + Self::setUp(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployDutchV2Calls::setUp) + } + setUp + }, + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployDutchV2Calls::run) + } + run + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployDutchV2Calls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::run(inner) => { + ::abi_encoded_size(inner) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::run(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DeployDutchV2`](self) contract instance. + +See the [wrapper's documentation](`DeployDutchV2Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DeployDutchV2Instance { + DeployDutchV2Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DeployDutchV2Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + DeployDutchV2Instance::::deploy_builder(provider) + } + /**A [`DeployDutchV2`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DeployDutchV2`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DeployDutchV2Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DeployDutchV2Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DeployDutchV2Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployDutchV2Instance { + /**Creates a new wrapper around an on-chain [`DeployDutchV2`](self) contract instance. + +See the [wrapper's documentation](`DeployDutchV2Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DeployDutchV2Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DeployDutchV2Instance { + DeployDutchV2Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployDutchV2Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`run`] function. + pub fn run(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&runCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployDutchV2Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/deploydutchv3.rs b/crates/bindings-uniswapx/src/deploydutchv3.rs new file mode 100644 index 0000000..169e3eb --- /dev/null +++ b/crates/bindings-uniswapx/src/deploydutchv3.rs @@ -0,0 +1,973 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DeployDutchV3 { + struct V3DutchOrderDeployment { + address permit2; + address reactor; + } + + function IS_SCRIPT() external view returns (bool); + function run() external returns (V3DutchOrderDeployment memory deployment); + function setUp() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "run", + "inputs": [], + "outputs": [ + { + "name": "deployment", + "type": "tuple", + "internalType": "struct V3DutchOrderDeployment", + "components": [ + { + "name": "permit2", + "type": "address", + "internalType": "contract IPermit2" + }, + { + "name": "reactor", + "type": "address", + "internalType": "contract V3DutchOrderReactor" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DeployDutchV3 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50614c53806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610089575b600080fd5b005b6100506100ac565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252015b60405180910390f35b600c5461009c9062010000900460ff1681565b6040519015158152602001610080565b60408051808201909152600080825260208201526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e455200000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017d9190610493565b90506101be6040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561022957600080fd5b505af115801561023d573d6000803e3d6000fd5b5050505060008060001b6e22d473030f116ddee9f6b43ac78ba38360405161026490610486565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156102a8573d6000803e3d6000fd5b5090506102ea6040518060400160405280600781526020017f52656163746f7200000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035557600080fd5b505af1158015610369573d6000803e3d6000fd5b5050505060405180604001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b61045582826040516024016103da9291906104d0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610459565b5050565b61046281610465565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6146c48061055a83390190565b6000602082840312156104a557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104c957600080fd5b9392505050565b604081526000835180604084015260005b818110156104fe57602081870181015160608684010152016104e1565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60c06040523480156200001157600080fd5b50604051620046c4380380620046c483398101604081905262000034916200016a565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805261a4b0194601620000bf576001600160401b0362000985620000e060201b171660a052620000d8565b6001600160401b03620009fc6200014d60201b171660a0525b5050620001c3565b600060646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001489190620001a9565b905090565b4390565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b600060208284031215620001bc57600080fd5b5051919050565b60805160a0516144d5620001ef6000396000610b2901526000818160e00152611b3201526144d56000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004613047565b6101eb565b005b6100b96100c93660046130f5565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004613137565b6104c5565b34801561014a57600080fd5b506100b96101593660046131d5565b610683565b6100b961016c3660046131f2565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046131d5565b610894565b6101f3610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b284610a71565b816000815181106102c5576102c5613256565b60200260200101819052506102d981610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401613459565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610c73565b5061035f6001600255565b505050565b61036c610a00565b8060008167ffffffffffffffff81111561038857610388613227565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466613256565b9050602002810190610478919061351f565b610a71565b82828151811061048f5761048f613256565b6020908102919091010152600101610449565b506104ac81610c22565b6104b581610c73565b50506104c16001600255565b5050565b6104cd610a00565b8260008167ffffffffffffffff8111156104e9576104e9613227565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466613256565b8282815181106105d9576105d9613256565b60209081029190910101526001016105aa565b506105f681610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401613459565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610c73565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae57905050905061085682610a71565b8160008151811061086957610869613256565b602002602001018190525061087d81610c22565b61088681610c73565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f7919061355d565b905090565b4390565b6002805403610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610aea8380613576565b810190610af79190613b44565b90506000610b0482610dc6565b9050610b1081836110ac565b610b1982611108565b610b228261126c565b6000610b507f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b90506040518060a0016040528084600001518152602001610b888560a00151600001518487606001516113799092919063ffffffff16565b815260a0850151516080860151602090920191610ba59185611444565b8152602001868060200190610bba9190613576565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602090810184905260a0850151908101518151604090920151929650610c1a928792908561152b565b505050919050565b805160005b8181101561035f576000838281518110610c4357610c43613256565b60200260200101519050610c568161153f565b610c608133611a2f565b610c6a8133611b30565b50600101610c27565b805160005b81811015610db5576000838281518110610c9457610c94613256565b602002602001015190506000816040015151905060005b81811015610d1557600083604001518281518110610ccb57610ccb613256565b60200260200101519050610d0c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611f329092919063ffffffff16565b50600101610cab565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610d5e57610d5e613256565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610da391815260200190565b60405180910390a45050600101610c78565b5047156104c1576104c13347611f79565b6040517f563344757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8201527f56334475746368496e7075742062617365496e7075742c00000000000000000060658201527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c820152600090609801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208301527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348301527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b83015290606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906144136020830139604051602001610fa990613c5c565b604051602081830303815290604052604051602001610fc790613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110069594939291602001613ea6565b604051602081830303815290604052805190602001206110298360000151612013565b8360200151846040015161104086606001516120ad565b61104d87608001516121fe565b60408051602081019790975286019490945273ffffffffffffffffffffffffffffffffffffffff9092166060850152608084015260a083015260c082015260e0015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110eb576040517fb08ce5b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516104c1906110fe838561229f565b8360c00151612314565b60a08101516060015115611174578060600151602001518160a00151606001511115611160576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160609081015190820151602001525b8060800151518160a001516080015151146111bb576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808101515160005b8181101561035f576000836080015182815181106111e4576111e4613256565b6020026020010151905060008460a0015160800151838151811061120a5761120a613256565b602002602001015190508060001461126257816020015181101561125a576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111c4565b600061128582604001514861243c90919063ffffffff16565b90508160600151608001516000146112e05760006112ab83606001516080015183612477565b90506112d58160008560600151606001518660600151602001516124b0909392919063ffffffff16565b606084015160200152505b60808201515160005b8181101561067d5760008460800151828151811061130957611309613256565b602002602001015190508060a0015160001461137057600061132f8260a0015186612477565b60808301516020840151919250611369919083907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6124d0565b6020830152505b506001016112e9565b6113b36040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001600081526020018660600151815260200161256281525090506000611404826125ee565b6040805160608082018352895173ffffffffffffffffffffffffffffffffffffffff16825260208201939093529790910151908701525093949350505050565b82516060908067ffffffffffffffff81111561146257611462613227565b6040519080825280602002602001820160405280156114cb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114805790505b50915060005b81811015611522576114fd8682815181106114ee576114ee613256565b602002602001015186866126fa565b83828151811061150f5761150f613256565b60209081029190910101526001016114d1565b50509392505050565b61153885858585856127e3565b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661155f5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906115b6908590600401613f11565b600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116199190810190613f24565b60408301515181519192509060006116318284614023565b67ffffffffffffffff81111561164957611649613227565b6040519080825280602002602001820160405280156116b257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116675790505b50905060005b8381101561170357856040015181815181106116d6576116d6613256565b60200260200101518282815181106116f0576116f0613256565b60209081029190910101526001016116b8565b5060008060005b84811015611a1e57600087828151811061172657611726613256565b6020026020010151905060005b828110156117e45788818151811061174d5761174d613256565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117dc5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b600101611733565b506000805b888110156118a55760008b60400151828151811061180957611809613256565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361189c578515611886576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118959084614023565b9250600196505b506001016117e9565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361191e578415611905576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516119179082614023565b9050600193505b806000036119735781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611981816005612710612885565b826020015111156119f4578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611a0957611a09613256565b6020908102919091010152505060010161170a565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a80576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611afc9084908690600401614036565b60006040518083038186803b158015611b1457600080fd5b505afa158015611b28573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611bf0846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051602001611cbd907f4e6f6e6c696e656172447574636844656361792800000000000000000000000081527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060148201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000602b82015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061441360208301396040518060600160405280602e81526020016143e5602e9139604051602001611d2790613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f563344757463684f72646572280000000000000000000000000000000000000060208401527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8401527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8401527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8401527f56334475746368496e7075742062617365496e7075742c00000000000000000060658401527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c840152815160788185030181526098840190925291611e579060b801613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e97969594939291602001614065565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611f049695949392600401614118565b600060405180830381600087803b158015611f1e57600080fd5b505af1158015611b28573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611f575761035f8282611f79565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846128c1565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611fd3576040519150601f19603f3d011682016040523d82523d6000602084013e611fd8565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001614413608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161108f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040516020016120be90613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b840152815160448185030181526064840190925261217e929091906084016141d3565b60405160208183030381529060405280519060200120826000015183602001516121ab85604001516129ac565b60608087015160808089015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff909716968801969096529186019390935284015260a083015260c082015260e00161108f565b600080825160200267ffffffffffffffff81111561221e5761221e613227565b6040519080825280601f01601f191660200182016040528015612248576020820181803683370190505b50835190915060005b8181101561228f57600061227d86838151811061227057612270613256565b6020026020010151612aaa565b60208381028601015250600101612251565b5050805160209091012092915050565b600081468460a001516040516020016122b89190614202565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526122f5939291602001614287565b6040516020818303038152906040528051906020012090505b92915050565b6000808280602001905181019061232b91906142b4565b9150915060008360408151811061234457612344613256565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156123a1573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415806123fc575073ffffffffffffffffffffffffffffffffffffffff8116155b15612433576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b60008183101561246a5761245861245384846142d8565b612c0e565b6124639060006142eb565b905061230e565b61246361245383856142d8565b600080821261248f576124638383633b9aca00612885565b6124a761249b83614312565b8490633b9aca00612cc4565b61246390614312565b60006124c7856124c086846142eb565b85856124d0565b95945050505050565b6000808412156125335760006124e585614312565b905085612512827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6142d8565b1015612521578291505061255a565b61252b8187614023565b91505061254f565b8385101561254257508161255a565b61254c84866142d8565b90505b6124c7818484612d08565b949350505050565b60008484106125725750806124c7565b600061257e87866142d8565b9050600061258c88886142d8565b90506000858512156125be576125ae83836125a7888a6142eb565b9190612885565b6125b790614312565b90506125d7565b6125d483836125cd89896142eb565b9190612cc4565b90505b6125e1818761434a565b9998505050505050505050565b60006010826000015160200151511115612634576040517f0e99676600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160600151826040015110158061264f575081516020015151155b1561266e57608082015160a0830151602084015161230e929091612d08565b600061268f8360400151846060015161268791906142d8565b61ffff612d19565b90506000806000806126a5876000015186612d31565b935093509350935060006126d08561ffff168561ffff168861ffff1686868d60c0015163ffffffff16565b608089015160a08a015160208b01519293506126ee929184916124d0565b98975050505050505050565b604080516060810182526000808252602082018190529181019190915260006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001866080015181526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001612ef381525090506000612787826125ee565b90506040518060600160405280876000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001876060015173ffffffffffffffffffffffffffffffffffffffff16815250925050509392505050565b6127ee848483612f47565b6115385781612829576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561243357600082828151811061284e5761284e613256565b60200260200101519050612877856127106128699190614023565b602083015190612710612cc4565b602090910152600101612831565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026128ba57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b6040517f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208201527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8201526000906064016040516020818303038152906040528051906020012082600001518360200151604051602001612a579190614372565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830194909452810191909152606081019190915260800161108f565b6000604051602001612abb90613d6e565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8401528151604481850301815260648401909252612b7b929091906084016141d3565b6040516020818303038152906040528051906020012082600001518360200151612ba885604001516129ac565b60608087015160808089015160a0808b015160408051602081019b909b5273ffffffffffffffffffffffffffffffffffffffff998a16908b01529489019690965290870193909352939093169184019190915260c083015260e08201526101000161108f565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401610700565b5090565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612cf957600080fd5b50910281810615159190040190565b600061255a612d178585612f93565b835b6000818310612d285781612d2a565b825b9392505050565b6000806000806000612d44876000015190565b905061ffff8616612d56826000612fa2565b61ffff1610612d9a576000612d6b8282612fa2565b60008960200151600081518110612d8457612d84613256565b6020026020010151945094509450945050612eea565b60006001886020015151612dae91906143a8565b905060015b8161ffff168161ffff1611612e7e578761ffff16612dde8261ffff1685612fa290919063ffffffff16565b61ffff1610612e6c57612e00612df56001836143a8565b849061ffff16612fa2565b612e0e8461ffff8416612fa2565b60208b0151612e1e6001856143a8565b61ffff1681518110612e3257612e32613256565b60200260200101518b602001518461ffff1681518110612e5457612e54613256565b60200260200101519650965096509650505050612eea565b80612e76816143c3565b915050612db3565b50612e8d8261ffff8316612fa2565b612e9b8361ffff8416612fa2565b89602001518361ffff1681518110612eb557612eb5613256565b60200260200101518a602001518461ffff1681518110612ed757612ed7613256565b6020026020010151955095509550955050505b92959194509250565b6000848410612f035750806124c7565b6000612f0f87866142d8565b90506000612f1d88886142d8565b9050600085851215612f38576125ae83836125cd888a6142eb565b6125d483836125a789896142eb565b600073ffffffffffffffffffffffffffffffffffffffff84161580612f6b57508282115b8061255a575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b6000818311612d285781612d2a565b600060108210612fde576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506010021c90565b600060408284031215612ff857600080fd5b50919050565b60008083601f84011261301057600080fd5b50813567ffffffffffffffff81111561302857600080fd5b60208301915083602082850101111561304057600080fd5b9250929050565b60008060006040848603121561305c57600080fd5b833567ffffffffffffffff8082111561307457600080fd5b61308087838801612fe6565b9450602086013591508082111561309657600080fd5b506130a386828701612ffe565b9497909650939450505050565b60008083601f8401126130c257600080fd5b50813567ffffffffffffffff8111156130da57600080fd5b6020830191508360208260051b850101111561304057600080fd5b6000806020838503121561310857600080fd5b823567ffffffffffffffff81111561311f57600080fd5b61312b858286016130b0565b90969095509350505050565b6000806000806040858703121561314d57600080fd5b843567ffffffffffffffff8082111561316557600080fd5b613171888389016130b0565b9096509450602087013591508082111561318a57600080fd5b5061319787828801612ffe565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356131d0816131a3565b919050565b6000602082840312156131e757600080fd5b8135612d2a816131a3565b60006020828403121561320457600080fd5b813567ffffffffffffffff81111561321b57600080fd5b61255a84828501612fe6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156132a0578181015183820152602001613288565b50506000910152565b600081518084526132c1816020860160208601613285565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015613353578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101613308565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526133d26101a08501826132a9565b905060208301516134106020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261342882826132f3565b915050606083015184820360a086015261344282826132a9565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156134ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526134bc86835161335e565b95509382019390820190600101613482565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261355357600080fd5b9190910192915050565b60006020828403121561356f57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135ab57600080fd5b83018035915067ffffffffffffffff8211156135c657600080fd5b60200191503681900382131561304057600080fd5b60405160c0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405290565b6040805190810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160a0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160e0810167ffffffffffffffff811182821017156135fe576135fe613227565b6040516060810167ffffffffffffffff811182821017156135fe576135fe613227565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156136d7576136d7613227565b604052919050565b600082601f8301126136f057600080fd5b813567ffffffffffffffff81111561370a5761370a613227565b61373b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613690565b81815284602083860101111561375057600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561377f57600080fd5b6137876135db565b90508135613794816131a3565b815260208201356137a4816131a3565b80602083015250604082013560408201526060820135606082015260808201356137cd816131a3565b608082015260a082013567ffffffffffffffff8111156137ec57600080fd5b6137f8848285016136df565b60a08301525092915050565b600067ffffffffffffffff82111561381e5761381e613227565b5060051b60200190565b60006040828403121561383a57600080fd5b613842613604565b90508135815260208083013567ffffffffffffffff81111561386357600080fd5b8301601f8101851361387457600080fd5b803561388761388282613804565b613690565b81815260059190911b820183019083810190878311156138a657600080fd5b928401925b828410156138c4578335825292840192908401906138ab565b8085870152505050505092915050565b600060a082840312156138e657600080fd5b6138ee613627565b905081356138fb816131a3565b815260208281013590820152604082013567ffffffffffffffff81111561392157600080fd5b61392d84828501613828565b604083015250606082013560608201526080820135608082015292915050565b600082601f83011261395e57600080fd5b8135602061396e61388283613804565b82815260059290921b8401810191818101908684111561398d57600080fd5b8286015b84811015613a6a57803567ffffffffffffffff808211156139b25760008081fd5b818901915060c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156139eb5760008081fd5b6139f36135db565b87840135613a00816131a3565b81526040848101358983015260608086013585811115613a205760008081fd5b613a2e8f8c838a0101613828565b838501525060809450848601359150613a46826131a3565b82015260a08481013593820193909352920135908201528352918301918301613991565b509695505050505050565b600060a08284031215613a8757600080fd5b613a8f613627565b905081358152602080830135613aa4816131a3565b8082840152506040830135604083015260608301356060830152608083013567ffffffffffffffff811115613ad857600080fd5b8301601f81018513613ae957600080fd5b8035613af761388282613804565b81815260059190911b82018301908381019087831115613b1657600080fd5b928401925b82841015613b3457833582529284019290840190613b1b565b6080860152509295945050505050565b600060208284031215613b5657600080fd5b813567ffffffffffffffff80821115613b6e57600080fd5b9083019060e08286031215613b8257600080fd5b613b8a61364a565b823582811115613b9957600080fd5b613ba58782860161376d565b825250613bb4602084016131c5565b602082015260408301356040820152606083013582811115613bd557600080fd5b613be1878286016138d4565b606083015250608083013582811115613bf957600080fd5b613c058782860161394d565b60808301525060a083013582811115613c1d57600080fd5b613c2987828601613a75565b60a08301525060c083013582811115613c4157600080fd5b613c4d878286016136df565b60c08301525095945050505050565b7f56334475746368496e707574280000000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600d8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601b8201527f4e6f6e6c696e656172447574636844656361792063757276652c000000000000602f8201527f75696e74323536206d6178416d6f756e742c000000000000000000000000000060498201527f75696e743235362061646a7573746d656e745065724777656942617365466565605b8201527f2900000000000000000000000000000000000000000000000000000000000000607b8201526000607c820161230e565b7f563344757463684f75747075742800000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600e8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601c8201527f4e6f6e6c696e656172447574636844656361792063757276652c00000000000060308201527f6164647265737320726563697069656e742c0000000000000000000000000000604a8201527f75696e74323536206d696e416d6f756e742c0000000000000000000000000000605c8201527f75696e743235362061646a7573746d656e745065724777656942617365466565606e8201527f2900000000000000000000000000000000000000000000000000000000000000608e8201526000608f820161230e565b60008651613eb8818460208b01613285565b865190830190613ecc818360208b01613285565b8651910190613edf818360208a01613285565b8551910190613ef2818360208901613285565b8451910190613f05818360208801613285565b01979650505050505050565b602081526000612d2a602083018461335e565b60006020808385031215613f3757600080fd5b825167ffffffffffffffff811115613f4e57600080fd5b8301601f81018513613f5f57600080fd5b8051613f6d61388282613804565b81815260609182028301840191848201919088841115613f8c57600080fd5b938501935b83851015613fe85780858a031215613fa95760008081fd5b613fb161366d565b8551613fbc816131a3565b81528587015187820152604080870151613fd5816131a3565b9082015283529384019391850191613f91565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561230e5761230e613ff4565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061255a604083018461335e565b7f563344757463684f72646572207769746e6573732900000000000000000000008152600060158851602061409f82848701838e01613285565b8951918501916140b481858501848e01613285565b89519201916140c881858501848d01613285565b88519201916140dc81858501848c01613285565b87519201916140f081858501848b01613285565b865192019161410481858501848a01613285565b919091019091019998505050505050505050565b6000610140614148838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526141896080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526141be818401866132a9565b90508281036101208401526125e181856132a9565b600083516141e5818460208801613285565b8351908301906141f9818360208801613285565b01949350505050565b6000602080835260c0830184518285015273ffffffffffffffffffffffffffffffffffffffff828601511660408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e0870191508483019350600092505b80831015613a6a5783518252928401926001929092019190840190614267565b838152826020820152600082516142a5816040850160208701613285565b91909101604001949350505050565b600080604083850312156142c757600080fd5b505080516020909101519092909150565b8181038181111561230e5761230e613ff4565b818103600083128015838313168383128216171561430b5761430b613ff4565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361434357614343613ff4565b5060000390565b808201828112600083128015821682158216171561436a5761436a613ff4565b505092915050565b815160009082906020808601845b8381101561439c57815185529382019390820190600101614380565b50929695505050505050565b61ffff82811682821603908082111561430b5761430b613ff4565b600061ffff8083168181036143da576143da613ff4565b600101939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220a83088cf8ce7734a1a4fd473e15da5dd40de922f9f237cdcd5a3258bdb21af8564736f6c63430008180033a2646970667358221220a94a4ff36a9a74240a86219b7d2500442f7f9fe2277bbc043279ed4e146a578464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[PaLS\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x89W[`\0\x80\xFD[\0[a\0Pa\0\xACV[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x9C\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x80V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01YW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01}\x91\x90a\x04\x93V[\x90Pa\x01\xBE`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02)W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02=W=`\0\x80>=`\0\xFD[PPPP`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02d\x90a\x04\x86V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02\xA8W=`\0\x80>=`\0\xFD[P\x90Pa\x02\xEA`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03UW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03iW=`\0\x80>=`\0\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04U\x82\x82`@Q`$\x01a\x03\xDA\x92\x91\x90a\x04\xD0V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04YV[PPV[a\x04b\x81a\x04eV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[aF\xC4\x80a\x05Z\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x04\xA5W`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xC9W`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0\x83Q\x80`@\x84\x01R`\0[\x81\x81\x10\x15a\x04\xFEW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xE1V[P`\0``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0F\xC48\x03\x80b\0F\xC4\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01jV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\xA4\xB0\x19F\x01b\0\0\xBFW`\x01`\x01`@\x1B\x03b\0\t\x85b\0\0\xE0` \x1B\x17\x16`\xA0Rb\0\0\xD8V[`\x01`\x01`@\x1B\x03b\0\t\xFCb\0\x01M` \x1B\x17\x16`\xA0R[PPb\0\x01\xC3V[`\0`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01H\x91\x90b\0\x01\xA9V[\x90P\x90V[C\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01gW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\x01~W`\0\x80\xFD[\x82Qb\0\x01\x8B\x81b\0\x01QV[` \x84\x01Q\x90\x92Pb\0\x01\x9E\x81b\0\x01QV[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15b\0\x01\xBCW`\0\x80\xFD[PQ\x91\x90PV[`\x80Q`\xA0QaD\xD5b\0\x01\xEF`\09`\0a\x0B)\x01R`\0\x81\x81`\xE0\x01Ra\x1B2\x01RaD\xD5`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a0GV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a0\xF5V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a17V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a1\xD5V[a\x06\x83V[a\0\xB9a\x01l6`\x04a1\xF2V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a1\xD5V[a\x08\x94V[a\x01\xF3a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\nqV[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a2VV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0CsV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\n\0V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a5\x1FV[a\nqV[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0C\"V[a\x04\xB5\x81a\x0CsV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\n\0V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0CsV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\nqV[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia2VV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0C\"V[a\x08\x86\x81a\x0CsV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF7\x91\x90a5]V[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nkW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xEA\x83\x80a5vV[\x81\x01\x90a\n\xF7\x91\x90a;DV[\x90P`\0a\x0B\x04\x82a\r\xC6V[\x90Pa\x0B\x10\x81\x83a\x10\xACV[a\x0B\x19\x82a\x11\x08V[a\x0B\"\x82a\x12lV[`\0a\x0BP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\x0B\x88\x85`\xA0\x01Q`\0\x01Q\x84\x87``\x01Qa\x13y\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0B\xA5\x91\x85a\x14DV[\x81R` \x01\x86\x80` \x01\x90a\x0B\xBA\x91\x90a5vV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0C\x1A\x92\x87\x92\x90\x85a\x15+V[PPP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0CCWa\x0CCa2VV[` \x02` \x01\x01Q\x90Pa\x0CV\x81a\x15?V[a\x0C`\x813a\x1A/V[a\x0Cj\x813a\x1B0V[P`\x01\x01a\x0C'V[\x80Q`\0[\x81\x81\x10\x15a\r\xB5W`\0\x83\x82\x81Q\x81\x10a\x0C\x94Wa\x0C\x94a2VV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\r\x15W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\xCBWa\x0C\xCBa2VV[` \x02` \x01\x01Q\x90Pa\r\x0C\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1F2\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0C\xABV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r^Wa\r^a2VV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\r\xA3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CxV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1FyV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R`\0\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q` \x01a\x0F\xA9\x90a<\\V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\xC7\x90a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10\x06\x95\x94\x93\x92\x91` \x01a>\xA6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x10)\x83`\0\x01Qa \x13V[\x83` \x01Q\x84`@\x01Qa\x10@\x86``\x01Qa \xADV[a\x10M\x87`\x80\x01Qa!\xFEV[`@\x80Q` \x81\x01\x97\x90\x97R\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16``\x85\x01R`\x80\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xEBW`@Q\x7F\xB0\x8C\xE5\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x04\xC1\x90a\x10\xFE\x83\x85a\"\x9FV[\x83`\xC0\x01Qa#\x14V[`\xA0\x81\x01Q``\x01Q\x15a\x11tW\x80``\x01Q` \x01Q\x81`\xA0\x01Q``\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q``\x90\x81\x01Q\x90\x82\x01Q` \x01R[\x80`\x80\x01QQ\x81`\xA0\x01Q`\x80\x01QQ\x14a\x11\xBBW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x81\x01QQ`\0[\x81\x81\x10\x15a\x03_W`\0\x83`\x80\x01Q\x82\x81Q\x81\x10a\x11\xE4Wa\x11\xE4a2VV[` \x02` \x01\x01Q\x90P`\0\x84`\xA0\x01Q`\x80\x01Q\x83\x81Q\x81\x10a\x12\nWa\x12\na2VV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12bW\x81` \x01Q\x81\x10\x15a\x12ZW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xC4V[`\0a\x12\x85\x82`@\x01QHa$<\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x81``\x01Q`\x80\x01Q`\0\x14a\x12\xE0W`\0a\x12\xAB\x83``\x01Q`\x80\x01Q\x83a$wV[\x90Pa\x12\xD5\x81`\0\x85``\x01Q``\x01Q\x86``\x01Q` \x01Qa$\xB0\x90\x93\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[``\x84\x01Q` \x01RP[`\x80\x82\x01QQ`\0[\x81\x81\x10\x15a\x06}W`\0\x84`\x80\x01Q\x82\x81Q\x81\x10a\x13\tWa\x13\ta2VV[` \x02` \x01\x01Q\x90P\x80`\xA0\x01Q`\0\x14a\x13pW`\0a\x13/\x82`\xA0\x01Q\x86a$wV[`\x80\x83\x01Q` \x84\x01Q\x91\x92Pa\x13i\x91\x90\x83\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa$\xD0V[` \x83\x01RP[P`\x01\x01a\x12\xE9V[a\x13\xB3`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01`\0\x81R` \x01\x86``\x01Q\x81R` \x01a%b\x81RP\x90P`\0a\x14\x04\x82a%\xEEV[`@\x80Q``\x80\x82\x01\x83R\x89Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x82\x01\x93\x90\x93R\x97\x90\x91\x01Q\x90\x87\x01RP\x93\x94\x93PPPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14bWa\x14ba2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x14\xCBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\x80W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x15\"Wa\x14\xFD\x86\x82\x81Q\x81\x10a\x14\xEEWa\x14\xEEa2VV[` \x02` \x01\x01Q\x86\x86a&\xFAV[\x83\x82\x81Q\x81\x10a\x15\x0FWa\x15\x0Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\xD1V[PP\x93\x92PPPV[a\x158\x85\x85\x85\x85\x85a'\xE3V[PPPPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15_WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x15\xB6\x90\x85\x90`\x04\x01a?\x11V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x16\x19\x91\x90\x81\x01\x90a?$V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x161\x82\x84a@#V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16IWa\x16Ia2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16\xB2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16gW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x17\x03W\x85`@\x01Q\x81\x81Q\x81\x10a\x16\xD6Wa\x16\xD6a2VV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\xF0Wa\x16\xF0a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16\xB8V[P`\0\x80`\0[\x84\x81\x10\x15a\x1A\x1EW`\0\x87\x82\x81Q\x81\x10a\x17&Wa\x17&a2VV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\xE4W\x88\x81\x81Q\x81\x10a\x17MWa\x17Ma2VV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xDCW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x173V[P`\0\x80[\x88\x81\x10\x15a\x18\xA5W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x18\tWa\x18\ta2VV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18\x9CW\x85\x15a\x18\x86W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x18\x95\x90\x84a@#V[\x92P`\x01\x96P[P`\x01\x01a\x17\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x19\x1EW\x84\x15a\x19\x05W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x19\x17\x90\x82a@#V[\x90P`\x01\x93P[\x80`\0\x03a\x19sW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x19\x81\x81`\x05a'\x10a(\x85V[\x82` \x01Q\x11\x15a\x19\xF4W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x1A\tWa\x1A\ta2VV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x17\nV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A\x80W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\xFC\x90\x84\x90\x86\x90`\x04\x01a@6V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1B\x14W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\xF0\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1C\xBD\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aC\xE5`.\x919`@Q` \x01a\x1D'\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1EW\x90`\xB8\x01a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x97\x96\x95\x94\x93\x92\x91` \x01a@eV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1F\x04\x96\x95\x94\x93\x92`\x04\x01aA\x18V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x1EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1FWWa\x03_\x82\x82a\x1FyV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(\xC1V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1F\xD3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xD8V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aD\x13`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x8F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q` \x01a \xBE\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!~\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa!\xAB\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10\x8FV[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x1EWa\"\x1Ea2'V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\"HW` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P`\0[\x81\x81\x10\x15a\"\x8FW`\0a\"}\x86\x83\x81Q\x81\x10a\"pWa\"pa2VV[` \x02` \x01\x01Qa*\xAAV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a\"QV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xA0\x01Q`@Q` \x01a\"\xB8\x91\x90aB\x02V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xF5\x93\x92\x91` \x01aB\x87V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a#+\x91\x90aB\xB4V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a#DWa#Da2VV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#\xA1W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\xFCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a$3W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x81\x83\x10\x15a$jWa$Xa$S\x84\x84aB\xD8V[a,\x0EV[a$c\x90`\0aB\xEBV[\x90Pa#\x0EV[a$ca$S\x83\x85aB\xD8V[`\0\x80\x82\x12a$\x8FWa$c\x83\x83c;\x9A\xCA\0a(\x85V[a$\xA7a$\x9B\x83aC\x12V[\x84\x90c;\x9A\xCA\0a,\xC4V[a$c\x90aC\x12V[`\0a$\xC7\x85a$\xC0\x86\x84aB\xEBV[\x85\x85a$\xD0V[\x95\x94PPPPPV[`\0\x80\x84\x12\x15a%3W`\0a$\xE5\x85aC\x12V[\x90P\x85a%\x12\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaB\xD8V[\x10\x15a%!W\x82\x91PPa%ZV[a%+\x81\x87a@#V[\x91PPa%OV[\x83\x85\x10\x15a%BWP\x81a%ZV[a%L\x84\x86aB\xD8V[\x90P[a$\xC7\x81\x84\x84a-\x08V[\x94\x93PPPPV[`\0\x84\x84\x10a%rWP\x80a$\xC7V[`\0a%~\x87\x86aB\xD8V[\x90P`\0a%\x8C\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a%\xBEWa%\xAE\x83\x83a%\xA7\x88\x8AaB\xEBV[\x91\x90a(\x85V[a%\xB7\x90aC\x12V[\x90Pa%\xD7V[a%\xD4\x83\x83a%\xCD\x89\x89aB\xEBV[\x91\x90a,\xC4V[\x90P[a%\xE1\x81\x87aCJV[\x99\x98PPPPPPPPPV[`\0`\x10\x82`\0\x01Q` \x01QQ\x11\x15a&4W`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a&OWP\x81Q` \x01QQ\x15[\x15a&nW`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa#\x0E\x92\x90\x91a-\x08V[`\0a&\x8F\x83`@\x01Q\x84``\x01Qa&\x87\x91\x90aB\xD8V[a\xFF\xFFa-\x19V[\x90P`\0\x80`\0\x80a&\xA5\x87`\0\x01Q\x86a-1V[\x93P\x93P\x93P\x93P`\0a&\xD0\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&\xEE\x92\x91\x84\x91a$\xD0V[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.\xF3\x81RP\x90P`\0a'\x87\x82a%\xEEV[\x90P`@Q\x80``\x01`@R\x80\x87`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a'\xEE\x84\x84\x83a/GV[a\x158W\x81a()W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a$3W`\0\x82\x82\x81Q\x81\x10a(NWa(Na2VV[` \x02` \x01\x01Q\x90Pa(w\x85a'\x10a(i\x91\x90a@#V[` \x83\x01Q\x90a'\x10a,\xC4V[` \x90\x91\x01R`\x01\x01a(1V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(\xBAW`\0\x80\xFD[P\x91\x02\x04\x90V[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x158W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R`\0\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Q`@Q` \x01a*W\x91\x90aCrV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10\x8FV[`\0`@Q` \x01a*\xBB\x90a=nV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra+{\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa+\xA8\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`\xA0\x80\x8B\x01Q`@\x80Q` \x81\x01\x9B\x90\x9BRs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\x8A\x16\x90\x8B\x01R\x94\x89\x01\x96\x90\x96R\x90\x87\x01\x93\x90\x93R\x93\x90\x93\x16\x91\x84\x01\x91\x90\x91R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01a\x10\x8FV[`\0\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xC0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FSafeCast: value doesn't fit in a`D\x82\x01R\x7Fn int256\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x07\0V[P\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a,\xF9W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0a%Za-\x17\x85\x85a/\x93V[\x83[`\0\x81\x83\x10a-(W\x81a-*V[\x82[\x93\x92PPPV[`\0\x80`\0\x80`\0a-D\x87`\0\x01Q\x90V[\x90Pa\xFF\xFF\x86\x16a-V\x82`\0a/\xA2V[a\xFF\xFF\x16\x10a-\x9AW`\0a-k\x82\x82a/\xA2V[`\0\x89` \x01Q`\0\x81Q\x81\x10a-\x84Wa-\x84a2VV[` \x02` \x01\x01Q\x94P\x94P\x94P\x94PPa.\xEAV[`\0`\x01\x88` \x01QQa-\xAE\x91\x90aC\xA8V[\x90P`\x01[\x81a\xFF\xFF\x16\x81a\xFF\xFF\x16\x11a.~W\x87a\xFF\xFF\x16a-\xDE\x82a\xFF\xFF\x16\x85a/\xA2\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[a\xFF\xFF\x16\x10a.lWa.\0a-\xF5`\x01\x83aC\xA8V[\x84\x90a\xFF\xFF\x16a/\xA2V[a.\x0E\x84a\xFF\xFF\x84\x16a/\xA2V[` \x8B\x01Qa.\x1E`\x01\x85aC\xA8V[a\xFF\xFF\x16\x81Q\x81\x10a.2Wa.2a2VV[` \x02` \x01\x01Q\x8B` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.TWa.Ta2VV[` \x02` \x01\x01Q\x96P\x96P\x96P\x96PPPPa.\xEAV[\x80a.v\x81aC\xC3V[\x91PPa-\xB3V[Pa.\x8D\x82a\xFF\xFF\x83\x16a/\xA2V[a.\x9B\x83a\xFF\xFF\x84\x16a/\xA2V[\x89` \x01Q\x83a\xFF\xFF\x16\x81Q\x81\x10a.\xB5Wa.\xB5a2VV[` \x02` \x01\x01Q\x8A` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.\xD7Wa.\xD7a2VV[` \x02` \x01\x01Q\x95P\x95P\x95P\x95PPP[\x92\x95\x91\x94P\x92PV[`\0\x84\x84\x10a/\x03WP\x80a$\xC7V[`\0a/\x0F\x87\x86aB\xD8V[\x90P`\0a/\x1D\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a/8Wa%\xAE\x83\x83a%\xCD\x88\x8AaB\xEBV[a%\xD4\x83\x83a%\xA7\x89\x89aB\xEBV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a/kWP\x82\x82\x11[\x80a%ZWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[`\0\x81\x83\x11a-(W\x81a-*V[`\0`\x10\x82\x10a/\xDEW`@Q\x7FN#\xD05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x10\x02\x1C\x90V[`\0`@\x82\x84\x03\x12\x15a/\xF8W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a0\x10W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0(W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\\W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a0tW`\0\x80\xFD[a0\x80\x87\x83\x88\x01a/\xE6V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a0\x96W`\0\x80\xFD[Pa0\xA3\x86\x82\x87\x01a/\xFEV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a0\xC2W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\xDAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a1\x08W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\x1FW`\0\x80\xFD[a1+\x85\x82\x86\x01a0\xB0V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a1MW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a1eW`\0\x80\xFD[a1q\x88\x83\x89\x01a0\xB0V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a1\x8AW`\0\x80\xFD[Pa1\x97\x87\x82\x88\x01a/\xFEV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a1\xD0\x81a1\xA3V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a1\xE7W`\0\x80\xFD[\x815a-*\x81a1\xA3V[`\0` \x82\x84\x03\x12\x15a2\x04W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a2\x1BW`\0\x80\xFD[a%Z\x84\x82\x85\x01a/\xE6V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a2\xA0W\x81\x81\x01Q\x83\x82\x01R` \x01a2\x88V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra2\xC1\x81` \x86\x01` \x86\x01a2\x85V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a3SW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a3\x08V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra3\xD2a\x01\xA0\x85\x01\x82a2\xA9V[\x90P` \x83\x01Qa4\x10` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra4(\x82\x82a2\xF3V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra4B\x82\x82a2\xA9V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a4\xCEW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra4\xBC\x86\x83Qa3^V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a4\x82V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a5SW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a5oW`\0\x80\xFD[PQ\x91\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a5\xABW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a5\xC6W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a0@W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@R\x90V[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a6\xD7Wa6\xD7a2'V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a6\xF0W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\nWa7\na2'V[a7;` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a6\x90V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a7PW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a7\x7FW`\0\x80\xFD[a7\x87a5\xDBV[\x90P\x815a7\x94\x81a1\xA3V[\x81R` \x82\x015a7\xA4\x81a1\xA3V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a7\xCD\x81a1\xA3V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\xECW`\0\x80\xFD[a7\xF8\x84\x82\x85\x01a6\xDFV[`\xA0\x83\x01RP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a8\x1EWa8\x1Ea2'V[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15a8:W`\0\x80\xFD[a8Ba6\x04V[\x90P\x815\x81R` \x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a8cW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a8tW`\0\x80\xFD[\x805a8\x87a8\x82\x82a8\x04V[a6\x90V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a8\xA6W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a8\xC4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a8\xABV[\x80\x85\x87\x01RPPPPP\x92\x91PPV[`\0`\xA0\x82\x84\x03\x12\x15a8\xE6W`\0\x80\xFD[a8\xEEa6'V[\x90P\x815a8\xFB\x81a1\xA3V[\x81R` \x82\x81\x015\x90\x82\x01R`@\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a9!W`\0\x80\xFD[a9-\x84\x82\x85\x01a8(V[`@\x83\x01RP``\x82\x015``\x82\x01R`\x80\x82\x015`\x80\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a9^W`\0\x80\xFD[\x815` a9na8\x82\x83a8\x04V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a9\x8DW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a:jW\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a9\xB2W`\0\x80\x81\xFD[\x81\x89\x01\x91P`\xC0\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x84\x8D\x03\x01\x12\x15a9\xEBW`\0\x80\x81\xFD[a9\xF3a5\xDBV[\x87\x84\x015a:\0\x81a1\xA3V[\x81R`@\x84\x81\x015\x89\x83\x01R``\x80\x86\x015\x85\x81\x11\x15a: W`\0\x80\x81\xFD[a:.\x8F\x8C\x83\x8A\x01\x01a8(V[\x83\x85\x01RP`\x80\x94P\x84\x86\x015\x91Pa:F\x82a1\xA3V[\x82\x01R`\xA0\x84\x81\x015\x93\x82\x01\x93\x90\x93R\x92\x015\x90\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a9\x91V[P\x96\x95PPPPPPV[`\0`\xA0\x82\x84\x03\x12\x15a:\x87W`\0\x80\xFD[a:\x8Fa6'V[\x90P\x815\x81R` \x80\x83\x015a:\xA4\x81a1\xA3V[\x80\x82\x84\x01RP`@\x83\x015`@\x83\x01R``\x83\x015``\x83\x01R`\x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a:\xD8W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a:\xE9W`\0\x80\xFD[\x805a:\xF7a8\x82\x82a8\x04V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a;\x16W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a;4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a;\x1BV[`\x80\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a;VW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a;nW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a;\x82W`\0\x80\xFD[a;\x8Aa6JV[\x825\x82\x81\x11\x15a;\x99W`\0\x80\xFD[a;\xA5\x87\x82\x86\x01a7mV[\x82RPa;\xB4` \x84\x01a1\xC5V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015\x82\x81\x11\x15a;\xD5W`\0\x80\xFD[a;\xE1\x87\x82\x86\x01a8\xD4V[``\x83\x01RP`\x80\x83\x015\x82\x81\x11\x15a;\xF9W`\0\x80\xFD[a<\x05\x87\x82\x86\x01a9MV[`\x80\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a<\x1DW`\0\x80\xFD[a<)\x87\x82\x86\x01a:uV[`\xA0\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a\xB8\x81\x84` \x8B\x01a2\x85V[\x86Q\x90\x83\x01\x90a>\xCC\x81\x83` \x8B\x01a2\x85V[\x86Q\x91\x01\x90a>\xDF\x81\x83` \x8A\x01a2\x85V[\x85Q\x91\x01\x90a>\xF2\x81\x83` \x89\x01a2\x85V[\x84Q\x91\x01\x90a?\x05\x81\x83` \x88\x01a2\x85V[\x01\x97\x96PPPPPPPV[` \x81R`\0a-*` \x83\x01\x84a3^V[`\0` \x80\x83\x85\x03\x12\x15a?7W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a?NW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a?_W`\0\x80\xFD[\x80Qa?ma8\x82\x82a8\x04V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a?\x8CW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a?\xE8W\x80\x85\x8A\x03\x12\x15a?\xA9W`\0\x80\x81\xFD[a?\xB1a6mV[\x85Qa?\xBC\x81a1\xA3V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa?\xD5\x81a1\xA3V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a?\x91V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a#\x0EWa#\x0Ea?\xF4V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a%Z`@\x83\x01\x84a3^V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x15\x88Q` a@\x9F\x82\x84\x87\x01\x83\x8E\x01a2\x85V[\x89Q\x91\x85\x01\x91a@\xB4\x81\x85\x85\x01\x84\x8E\x01a2\x85V[\x89Q\x92\x01\x91a@\xC8\x81\x85\x85\x01\x84\x8D\x01a2\x85V[\x88Q\x92\x01\x91a@\xDC\x81\x85\x85\x01\x84\x8C\x01a2\x85V[\x87Q\x92\x01\x91a@\xF0\x81\x85\x85\x01\x84\x8B\x01a2\x85V[\x86Q\x92\x01\x91aA\x04\x81\x85\x85\x01\x84\x8A\x01a2\x85V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[`\0a\x01@aAH\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01RaA\x89`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01RaA\xBE\x81\x84\x01\x86a2\xA9V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%\xE1\x81\x85a2\xA9V[`\0\x83QaA\xE5\x81\x84` \x88\x01a2\x85V[\x83Q\x90\x83\x01\x90aA\xF9\x81\x83` \x88\x01a2\x85V[\x01\x94\x93PPPPV[`\0` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a:jW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aBgV[\x83\x81R\x82` \x82\x01R`\0\x82QaB\xA5\x81`@\x85\x01` \x87\x01a2\x85V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15aB\xC7W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a#\x0EWa#\x0Ea?\xF4V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aC\x0BWaC\x0Ba?\xF4V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aCCWaCCa?\xF4V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aCjWaCja?\xF4V[PP\x92\x91PPV[\x81Q`\0\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aC\x9CW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aC\x80V[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aC\x0BWaC\x0Ba?\xF4V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x03aC\xDAWaC\xDAa?\xF4V[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xA80\x88\xCF\x8C\xE7sJ\x1AO\xD4s\xE1]\xA5\xDD@\xDE\x92/\x9F#|\xDC\xD5\xA3%\x8B\xDB!\xAF\x85dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xA9JO\xF3j\x9At$\n\x86!\x9B}%\0D/\x7F\x9F\xE2'{\xBC\x042y\xEDN\x14jW\x84dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610089575b600080fd5b005b6100506100ac565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252015b60405180910390f35b600c5461009c9062010000900460ff1681565b6040519015158152602001610080565b60408051808201909152600080825260208201526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e455200000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017d9190610493565b90506101be6040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561022957600080fd5b505af115801561023d573d6000803e3d6000fd5b5050505060008060001b6e22d473030f116ddee9f6b43ac78ba38360405161026490610486565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156102a8573d6000803e3d6000fd5b5090506102ea6040518060400160405280600781526020017f52656163746f7200000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035557600080fd5b505af1158015610369573d6000803e3d6000fd5b5050505060405180604001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b61045582826040516024016103da9291906104d0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610459565b5050565b61046281610465565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6146c48061055a83390190565b6000602082840312156104a557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104c957600080fd5b9392505050565b604081526000835180604084015260005b818110156104fe57602081870181015160608684010152016104e1565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60c06040523480156200001157600080fd5b50604051620046c4380380620046c483398101604081905262000034916200016a565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805261a4b0194601620000bf576001600160401b0362000985620000e060201b171660a052620000d8565b6001600160401b03620009fc6200014d60201b171660a0525b5050620001c3565b600060646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001489190620001a9565b905090565b4390565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b600060208284031215620001bc57600080fd5b5051919050565b60805160a0516144d5620001ef6000396000610b2901526000818160e00152611b3201526144d56000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004613047565b6101eb565b005b6100b96100c93660046130f5565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004613137565b6104c5565b34801561014a57600080fd5b506100b96101593660046131d5565b610683565b6100b961016c3660046131f2565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046131d5565b610894565b6101f3610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b284610a71565b816000815181106102c5576102c5613256565b60200260200101819052506102d981610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401613459565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610c73565b5061035f6001600255565b505050565b61036c610a00565b8060008167ffffffffffffffff81111561038857610388613227565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466613256565b9050602002810190610478919061351f565b610a71565b82828151811061048f5761048f613256565b6020908102919091010152600101610449565b506104ac81610c22565b6104b581610c73565b50506104c16001600255565b5050565b6104cd610a00565b8260008167ffffffffffffffff8111156104e9576104e9613227565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466613256565b8282815181106105d9576105d9613256565b60209081029190910101526001016105aa565b506105f681610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401613459565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610c73565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae57905050905061085682610a71565b8160008151811061086957610869613256565b602002602001018190525061087d81610c22565b61088681610c73565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f7919061355d565b905090565b4390565b6002805403610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610aea8380613576565b810190610af79190613b44565b90506000610b0482610dc6565b9050610b1081836110ac565b610b1982611108565b610b228261126c565b6000610b507f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b90506040518060a0016040528084600001518152602001610b888560a00151600001518487606001516113799092919063ffffffff16565b815260a0850151516080860151602090920191610ba59185611444565b8152602001868060200190610bba9190613576565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602090810184905260a0850151908101518151604090920151929650610c1a928792908561152b565b505050919050565b805160005b8181101561035f576000838281518110610c4357610c43613256565b60200260200101519050610c568161153f565b610c608133611a2f565b610c6a8133611b30565b50600101610c27565b805160005b81811015610db5576000838281518110610c9457610c94613256565b602002602001015190506000816040015151905060005b81811015610d1557600083604001518281518110610ccb57610ccb613256565b60200260200101519050610d0c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611f329092919063ffffffff16565b50600101610cab565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610d5e57610d5e613256565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610da391815260200190565b60405180910390a45050600101610c78565b5047156104c1576104c13347611f79565b6040517f563344757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8201527f56334475746368496e7075742062617365496e7075742c00000000000000000060658201527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c820152600090609801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208301527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348301527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b83015290606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906144136020830139604051602001610fa990613c5c565b604051602081830303815290604052604051602001610fc790613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110069594939291602001613ea6565b604051602081830303815290604052805190602001206110298360000151612013565b8360200151846040015161104086606001516120ad565b61104d87608001516121fe565b60408051602081019790975286019490945273ffffffffffffffffffffffffffffffffffffffff9092166060850152608084015260a083015260c082015260e0015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110eb576040517fb08ce5b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516104c1906110fe838561229f565b8360c00151612314565b60a08101516060015115611174578060600151602001518160a00151606001511115611160576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160609081015190820151602001525b8060800151518160a001516080015151146111bb576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808101515160005b8181101561035f576000836080015182815181106111e4576111e4613256565b6020026020010151905060008460a0015160800151838151811061120a5761120a613256565b602002602001015190508060001461126257816020015181101561125a576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111c4565b600061128582604001514861243c90919063ffffffff16565b90508160600151608001516000146112e05760006112ab83606001516080015183612477565b90506112d58160008560600151606001518660600151602001516124b0909392919063ffffffff16565b606084015160200152505b60808201515160005b8181101561067d5760008460800151828151811061130957611309613256565b602002602001015190508060a0015160001461137057600061132f8260a0015186612477565b60808301516020840151919250611369919083907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6124d0565b6020830152505b506001016112e9565b6113b36040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001600081526020018660600151815260200161256281525090506000611404826125ee565b6040805160608082018352895173ffffffffffffffffffffffffffffffffffffffff16825260208201939093529790910151908701525093949350505050565b82516060908067ffffffffffffffff81111561146257611462613227565b6040519080825280602002602001820160405280156114cb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114805790505b50915060005b81811015611522576114fd8682815181106114ee576114ee613256565b602002602001015186866126fa565b83828151811061150f5761150f613256565b60209081029190910101526001016114d1565b50509392505050565b61153885858585856127e3565b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661155f5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906115b6908590600401613f11565b600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116199190810190613f24565b60408301515181519192509060006116318284614023565b67ffffffffffffffff81111561164957611649613227565b6040519080825280602002602001820160405280156116b257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116675790505b50905060005b8381101561170357856040015181815181106116d6576116d6613256565b60200260200101518282815181106116f0576116f0613256565b60209081029190910101526001016116b8565b5060008060005b84811015611a1e57600087828151811061172657611726613256565b6020026020010151905060005b828110156117e45788818151811061174d5761174d613256565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117dc5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b600101611733565b506000805b888110156118a55760008b60400151828151811061180957611809613256565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361189c578515611886576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118959084614023565b9250600196505b506001016117e9565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361191e578415611905576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516119179082614023565b9050600193505b806000036119735781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611981816005612710612885565b826020015111156119f4578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611a0957611a09613256565b6020908102919091010152505060010161170a565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a80576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611afc9084908690600401614036565b60006040518083038186803b158015611b1457600080fd5b505afa158015611b28573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611bf0846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051602001611cbd907f4e6f6e6c696e656172447574636844656361792800000000000000000000000081527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060148201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000602b82015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061441360208301396040518060600160405280602e81526020016143e5602e9139604051602001611d2790613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f563344757463684f72646572280000000000000000000000000000000000000060208401527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8401527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8401527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8401527f56334475746368496e7075742062617365496e7075742c00000000000000000060658401527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c840152815160788185030181526098840190925291611e579060b801613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e97969594939291602001614065565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611f049695949392600401614118565b600060405180830381600087803b158015611f1e57600080fd5b505af1158015611b28573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611f575761035f8282611f79565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846128c1565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611fd3576040519150601f19603f3d011682016040523d82523d6000602084013e611fd8565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001614413608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161108f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040516020016120be90613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b840152815160448185030181526064840190925261217e929091906084016141d3565b60405160208183030381529060405280519060200120826000015183602001516121ab85604001516129ac565b60608087015160808089015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff909716968801969096529186019390935284015260a083015260c082015260e00161108f565b600080825160200267ffffffffffffffff81111561221e5761221e613227565b6040519080825280601f01601f191660200182016040528015612248576020820181803683370190505b50835190915060005b8181101561228f57600061227d86838151811061227057612270613256565b6020026020010151612aaa565b60208381028601015250600101612251565b5050805160209091012092915050565b600081468460a001516040516020016122b89190614202565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526122f5939291602001614287565b6040516020818303038152906040528051906020012090505b92915050565b6000808280602001905181019061232b91906142b4565b9150915060008360408151811061234457612344613256565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156123a1573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415806123fc575073ffffffffffffffffffffffffffffffffffffffff8116155b15612433576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b60008183101561246a5761245861245384846142d8565b612c0e565b6124639060006142eb565b905061230e565b61246361245383856142d8565b600080821261248f576124638383633b9aca00612885565b6124a761249b83614312565b8490633b9aca00612cc4565b61246390614312565b60006124c7856124c086846142eb565b85856124d0565b95945050505050565b6000808412156125335760006124e585614312565b905085612512827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6142d8565b1015612521578291505061255a565b61252b8187614023565b91505061254f565b8385101561254257508161255a565b61254c84866142d8565b90505b6124c7818484612d08565b949350505050565b60008484106125725750806124c7565b600061257e87866142d8565b9050600061258c88886142d8565b90506000858512156125be576125ae83836125a7888a6142eb565b9190612885565b6125b790614312565b90506125d7565b6125d483836125cd89896142eb565b9190612cc4565b90505b6125e1818761434a565b9998505050505050505050565b60006010826000015160200151511115612634576040517f0e99676600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160600151826040015110158061264f575081516020015151155b1561266e57608082015160a0830151602084015161230e929091612d08565b600061268f8360400151846060015161268791906142d8565b61ffff612d19565b90506000806000806126a5876000015186612d31565b935093509350935060006126d08561ffff168561ffff168861ffff1686868d60c0015163ffffffff16565b608089015160a08a015160208b01519293506126ee929184916124d0565b98975050505050505050565b604080516060810182526000808252602082018190529181019190915260006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001866080015181526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001612ef381525090506000612787826125ee565b90506040518060600160405280876000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001876060015173ffffffffffffffffffffffffffffffffffffffff16815250925050509392505050565b6127ee848483612f47565b6115385781612829576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561243357600082828151811061284e5761284e613256565b60200260200101519050612877856127106128699190614023565b602083015190612710612cc4565b602090910152600101612831565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026128ba57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b6040517f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208201527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8201526000906064016040516020818303038152906040528051906020012082600001518360200151604051602001612a579190614372565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830194909452810191909152606081019190915260800161108f565b6000604051602001612abb90613d6e565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8401528151604481850301815260648401909252612b7b929091906084016141d3565b6040516020818303038152906040528051906020012082600001518360200151612ba885604001516129ac565b60608087015160808089015160a0808b015160408051602081019b909b5273ffffffffffffffffffffffffffffffffffffffff998a16908b01529489019690965290870193909352939093169184019190915260c083015260e08201526101000161108f565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401610700565b5090565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612cf957600080fd5b50910281810615159190040190565b600061255a612d178585612f93565b835b6000818310612d285781612d2a565b825b9392505050565b6000806000806000612d44876000015190565b905061ffff8616612d56826000612fa2565b61ffff1610612d9a576000612d6b8282612fa2565b60008960200151600081518110612d8457612d84613256565b6020026020010151945094509450945050612eea565b60006001886020015151612dae91906143a8565b905060015b8161ffff168161ffff1611612e7e578761ffff16612dde8261ffff1685612fa290919063ffffffff16565b61ffff1610612e6c57612e00612df56001836143a8565b849061ffff16612fa2565b612e0e8461ffff8416612fa2565b60208b0151612e1e6001856143a8565b61ffff1681518110612e3257612e32613256565b60200260200101518b602001518461ffff1681518110612e5457612e54613256565b60200260200101519650965096509650505050612eea565b80612e76816143c3565b915050612db3565b50612e8d8261ffff8316612fa2565b612e9b8361ffff8416612fa2565b89602001518361ffff1681518110612eb557612eb5613256565b60200260200101518a602001518461ffff1681518110612ed757612ed7613256565b6020026020010151955095509550955050505b92959194509250565b6000848410612f035750806124c7565b6000612f0f87866142d8565b90506000612f1d88886142d8565b9050600085851215612f38576125ae83836125cd888a6142eb565b6125d483836125a789896142eb565b600073ffffffffffffffffffffffffffffffffffffffff84161580612f6b57508282115b8061255a575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b6000818311612d285781612d2a565b600060108210612fde576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506010021c90565b600060408284031215612ff857600080fd5b50919050565b60008083601f84011261301057600080fd5b50813567ffffffffffffffff81111561302857600080fd5b60208301915083602082850101111561304057600080fd5b9250929050565b60008060006040848603121561305c57600080fd5b833567ffffffffffffffff8082111561307457600080fd5b61308087838801612fe6565b9450602086013591508082111561309657600080fd5b506130a386828701612ffe565b9497909650939450505050565b60008083601f8401126130c257600080fd5b50813567ffffffffffffffff8111156130da57600080fd5b6020830191508360208260051b850101111561304057600080fd5b6000806020838503121561310857600080fd5b823567ffffffffffffffff81111561311f57600080fd5b61312b858286016130b0565b90969095509350505050565b6000806000806040858703121561314d57600080fd5b843567ffffffffffffffff8082111561316557600080fd5b613171888389016130b0565b9096509450602087013591508082111561318a57600080fd5b5061319787828801612ffe565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356131d0816131a3565b919050565b6000602082840312156131e757600080fd5b8135612d2a816131a3565b60006020828403121561320457600080fd5b813567ffffffffffffffff81111561321b57600080fd5b61255a84828501612fe6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156132a0578181015183820152602001613288565b50506000910152565b600081518084526132c1816020860160208601613285565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015613353578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101613308565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526133d26101a08501826132a9565b905060208301516134106020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261342882826132f3565b915050606083015184820360a086015261344282826132a9565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156134ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526134bc86835161335e565b95509382019390820190600101613482565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261355357600080fd5b9190910192915050565b60006020828403121561356f57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135ab57600080fd5b83018035915067ffffffffffffffff8211156135c657600080fd5b60200191503681900382131561304057600080fd5b60405160c0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405290565b6040805190810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160a0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160e0810167ffffffffffffffff811182821017156135fe576135fe613227565b6040516060810167ffffffffffffffff811182821017156135fe576135fe613227565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156136d7576136d7613227565b604052919050565b600082601f8301126136f057600080fd5b813567ffffffffffffffff81111561370a5761370a613227565b61373b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613690565b81815284602083860101111561375057600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561377f57600080fd5b6137876135db565b90508135613794816131a3565b815260208201356137a4816131a3565b80602083015250604082013560408201526060820135606082015260808201356137cd816131a3565b608082015260a082013567ffffffffffffffff8111156137ec57600080fd5b6137f8848285016136df565b60a08301525092915050565b600067ffffffffffffffff82111561381e5761381e613227565b5060051b60200190565b60006040828403121561383a57600080fd5b613842613604565b90508135815260208083013567ffffffffffffffff81111561386357600080fd5b8301601f8101851361387457600080fd5b803561388761388282613804565b613690565b81815260059190911b820183019083810190878311156138a657600080fd5b928401925b828410156138c4578335825292840192908401906138ab565b8085870152505050505092915050565b600060a082840312156138e657600080fd5b6138ee613627565b905081356138fb816131a3565b815260208281013590820152604082013567ffffffffffffffff81111561392157600080fd5b61392d84828501613828565b604083015250606082013560608201526080820135608082015292915050565b600082601f83011261395e57600080fd5b8135602061396e61388283613804565b82815260059290921b8401810191818101908684111561398d57600080fd5b8286015b84811015613a6a57803567ffffffffffffffff808211156139b25760008081fd5b818901915060c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156139eb5760008081fd5b6139f36135db565b87840135613a00816131a3565b81526040848101358983015260608086013585811115613a205760008081fd5b613a2e8f8c838a0101613828565b838501525060809450848601359150613a46826131a3565b82015260a08481013593820193909352920135908201528352918301918301613991565b509695505050505050565b600060a08284031215613a8757600080fd5b613a8f613627565b905081358152602080830135613aa4816131a3565b8082840152506040830135604083015260608301356060830152608083013567ffffffffffffffff811115613ad857600080fd5b8301601f81018513613ae957600080fd5b8035613af761388282613804565b81815260059190911b82018301908381019087831115613b1657600080fd5b928401925b82841015613b3457833582529284019290840190613b1b565b6080860152509295945050505050565b600060208284031215613b5657600080fd5b813567ffffffffffffffff80821115613b6e57600080fd5b9083019060e08286031215613b8257600080fd5b613b8a61364a565b823582811115613b9957600080fd5b613ba58782860161376d565b825250613bb4602084016131c5565b602082015260408301356040820152606083013582811115613bd557600080fd5b613be1878286016138d4565b606083015250608083013582811115613bf957600080fd5b613c058782860161394d565b60808301525060a083013582811115613c1d57600080fd5b613c2987828601613a75565b60a08301525060c083013582811115613c4157600080fd5b613c4d878286016136df565b60c08301525095945050505050565b7f56334475746368496e707574280000000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600d8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601b8201527f4e6f6e6c696e656172447574636844656361792063757276652c000000000000602f8201527f75696e74323536206d6178416d6f756e742c000000000000000000000000000060498201527f75696e743235362061646a7573746d656e745065724777656942617365466565605b8201527f2900000000000000000000000000000000000000000000000000000000000000607b8201526000607c820161230e565b7f563344757463684f75747075742800000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600e8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601c8201527f4e6f6e6c696e656172447574636844656361792063757276652c00000000000060308201527f6164647265737320726563697069656e742c0000000000000000000000000000604a8201527f75696e74323536206d696e416d6f756e742c0000000000000000000000000000605c8201527f75696e743235362061646a7573746d656e745065724777656942617365466565606e8201527f2900000000000000000000000000000000000000000000000000000000000000608e8201526000608f820161230e565b60008651613eb8818460208b01613285565b865190830190613ecc818360208b01613285565b8651910190613edf818360208a01613285565b8551910190613ef2818360208901613285565b8451910190613f05818360208801613285565b01979650505050505050565b602081526000612d2a602083018461335e565b60006020808385031215613f3757600080fd5b825167ffffffffffffffff811115613f4e57600080fd5b8301601f81018513613f5f57600080fd5b8051613f6d61388282613804565b81815260609182028301840191848201919088841115613f8c57600080fd5b938501935b83851015613fe85780858a031215613fa95760008081fd5b613fb161366d565b8551613fbc816131a3565b81528587015187820152604080870151613fd5816131a3565b9082015283529384019391850191613f91565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561230e5761230e613ff4565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061255a604083018461335e565b7f563344757463684f72646572207769746e6573732900000000000000000000008152600060158851602061409f82848701838e01613285565b8951918501916140b481858501848e01613285565b89519201916140c881858501848d01613285565b88519201916140dc81858501848c01613285565b87519201916140f081858501848b01613285565b865192019161410481858501848a01613285565b919091019091019998505050505050505050565b6000610140614148838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526141896080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526141be818401866132a9565b90508281036101208401526125e181856132a9565b600083516141e5818460208801613285565b8351908301906141f9818360208801613285565b01949350505050565b6000602080835260c0830184518285015273ffffffffffffffffffffffffffffffffffffffff828601511660408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e0870191508483019350600092505b80831015613a6a5783518252928401926001929092019190840190614267565b838152826020820152600082516142a5816040850160208701613285565b91909101604001949350505050565b600080604083850312156142c757600080fd5b505080516020909101519092909150565b8181038181111561230e5761230e613ff4565b818103600083128015838313168383128216171561430b5761430b613ff4565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361434357614343613ff4565b5060000390565b808201828112600083128015821682158216171561436a5761436a613ff4565b505092915050565b815160009082906020808601845b8381101561439c57815185529382019390820190600101614380565b50929695505050505050565b61ffff82811682821603908082111561430b5761430b613ff4565b600061ffff8083168181036143da576143da613ff4565b600101939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220a83088cf8ce7734a1a4fd473e15da5dd40de922f9f237cdcd5a3258bdb21af8564736f6c63430008180033a2646970667358221220a94a4ff36a9a74240a86219b7d2500442f7f9fe2277bbc043279ed4e146a578464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x89W[`\0\x80\xFD[\0[a\0Pa\0\xACV[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x9C\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x80V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01YW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01}\x91\x90a\x04\x93V[\x90Pa\x01\xBE`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02)W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02=W=`\0\x80>=`\0\xFD[PPPP`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02d\x90a\x04\x86V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02\xA8W=`\0\x80>=`\0\xFD[P\x90Pa\x02\xEA`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03UW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03iW=`\0\x80>=`\0\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04U\x82\x82`@Q`$\x01a\x03\xDA\x92\x91\x90a\x04\xD0V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04YV[PPV[a\x04b\x81a\x04eV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[aF\xC4\x80a\x05Z\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x04\xA5W`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xC9W`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0\x83Q\x80`@\x84\x01R`\0[\x81\x81\x10\x15a\x04\xFEW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xE1V[P`\0``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0F\xC48\x03\x80b\0F\xC4\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01jV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\xA4\xB0\x19F\x01b\0\0\xBFW`\x01`\x01`@\x1B\x03b\0\t\x85b\0\0\xE0` \x1B\x17\x16`\xA0Rb\0\0\xD8V[`\x01`\x01`@\x1B\x03b\0\t\xFCb\0\x01M` \x1B\x17\x16`\xA0R[PPb\0\x01\xC3V[`\0`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01H\x91\x90b\0\x01\xA9V[\x90P\x90V[C\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01gW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\x01~W`\0\x80\xFD[\x82Qb\0\x01\x8B\x81b\0\x01QV[` \x84\x01Q\x90\x92Pb\0\x01\x9E\x81b\0\x01QV[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15b\0\x01\xBCW`\0\x80\xFD[PQ\x91\x90PV[`\x80Q`\xA0QaD\xD5b\0\x01\xEF`\09`\0a\x0B)\x01R`\0\x81\x81`\xE0\x01Ra\x1B2\x01RaD\xD5`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a0GV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a0\xF5V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a17V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a1\xD5V[a\x06\x83V[a\0\xB9a\x01l6`\x04a1\xF2V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a1\xD5V[a\x08\x94V[a\x01\xF3a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\nqV[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a2VV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0CsV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\n\0V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a5\x1FV[a\nqV[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0C\"V[a\x04\xB5\x81a\x0CsV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\n\0V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0CsV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\nqV[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia2VV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0C\"V[a\x08\x86\x81a\x0CsV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF7\x91\x90a5]V[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nkW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xEA\x83\x80a5vV[\x81\x01\x90a\n\xF7\x91\x90a;DV[\x90P`\0a\x0B\x04\x82a\r\xC6V[\x90Pa\x0B\x10\x81\x83a\x10\xACV[a\x0B\x19\x82a\x11\x08V[a\x0B\"\x82a\x12lV[`\0a\x0BP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\x0B\x88\x85`\xA0\x01Q`\0\x01Q\x84\x87``\x01Qa\x13y\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0B\xA5\x91\x85a\x14DV[\x81R` \x01\x86\x80` \x01\x90a\x0B\xBA\x91\x90a5vV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0C\x1A\x92\x87\x92\x90\x85a\x15+V[PPP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0CCWa\x0CCa2VV[` \x02` \x01\x01Q\x90Pa\x0CV\x81a\x15?V[a\x0C`\x813a\x1A/V[a\x0Cj\x813a\x1B0V[P`\x01\x01a\x0C'V[\x80Q`\0[\x81\x81\x10\x15a\r\xB5W`\0\x83\x82\x81Q\x81\x10a\x0C\x94Wa\x0C\x94a2VV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\r\x15W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\xCBWa\x0C\xCBa2VV[` \x02` \x01\x01Q\x90Pa\r\x0C\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1F2\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0C\xABV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r^Wa\r^a2VV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\r\xA3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CxV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1FyV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R`\0\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q` \x01a\x0F\xA9\x90a<\\V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\xC7\x90a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10\x06\x95\x94\x93\x92\x91` \x01a>\xA6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x10)\x83`\0\x01Qa \x13V[\x83` \x01Q\x84`@\x01Qa\x10@\x86``\x01Qa \xADV[a\x10M\x87`\x80\x01Qa!\xFEV[`@\x80Q` \x81\x01\x97\x90\x97R\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16``\x85\x01R`\x80\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xEBW`@Q\x7F\xB0\x8C\xE5\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x04\xC1\x90a\x10\xFE\x83\x85a\"\x9FV[\x83`\xC0\x01Qa#\x14V[`\xA0\x81\x01Q``\x01Q\x15a\x11tW\x80``\x01Q` \x01Q\x81`\xA0\x01Q``\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q``\x90\x81\x01Q\x90\x82\x01Q` \x01R[\x80`\x80\x01QQ\x81`\xA0\x01Q`\x80\x01QQ\x14a\x11\xBBW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x81\x01QQ`\0[\x81\x81\x10\x15a\x03_W`\0\x83`\x80\x01Q\x82\x81Q\x81\x10a\x11\xE4Wa\x11\xE4a2VV[` \x02` \x01\x01Q\x90P`\0\x84`\xA0\x01Q`\x80\x01Q\x83\x81Q\x81\x10a\x12\nWa\x12\na2VV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12bW\x81` \x01Q\x81\x10\x15a\x12ZW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xC4V[`\0a\x12\x85\x82`@\x01QHa$<\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x81``\x01Q`\x80\x01Q`\0\x14a\x12\xE0W`\0a\x12\xAB\x83``\x01Q`\x80\x01Q\x83a$wV[\x90Pa\x12\xD5\x81`\0\x85``\x01Q``\x01Q\x86``\x01Q` \x01Qa$\xB0\x90\x93\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[``\x84\x01Q` \x01RP[`\x80\x82\x01QQ`\0[\x81\x81\x10\x15a\x06}W`\0\x84`\x80\x01Q\x82\x81Q\x81\x10a\x13\tWa\x13\ta2VV[` \x02` \x01\x01Q\x90P\x80`\xA0\x01Q`\0\x14a\x13pW`\0a\x13/\x82`\xA0\x01Q\x86a$wV[`\x80\x83\x01Q` \x84\x01Q\x91\x92Pa\x13i\x91\x90\x83\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa$\xD0V[` \x83\x01RP[P`\x01\x01a\x12\xE9V[a\x13\xB3`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01`\0\x81R` \x01\x86``\x01Q\x81R` \x01a%b\x81RP\x90P`\0a\x14\x04\x82a%\xEEV[`@\x80Q``\x80\x82\x01\x83R\x89Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x82\x01\x93\x90\x93R\x97\x90\x91\x01Q\x90\x87\x01RP\x93\x94\x93PPPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14bWa\x14ba2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x14\xCBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\x80W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x15\"Wa\x14\xFD\x86\x82\x81Q\x81\x10a\x14\xEEWa\x14\xEEa2VV[` \x02` \x01\x01Q\x86\x86a&\xFAV[\x83\x82\x81Q\x81\x10a\x15\x0FWa\x15\x0Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\xD1V[PP\x93\x92PPPV[a\x158\x85\x85\x85\x85\x85a'\xE3V[PPPPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15_WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x15\xB6\x90\x85\x90`\x04\x01a?\x11V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x16\x19\x91\x90\x81\x01\x90a?$V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x161\x82\x84a@#V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16IWa\x16Ia2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16\xB2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16gW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x17\x03W\x85`@\x01Q\x81\x81Q\x81\x10a\x16\xD6Wa\x16\xD6a2VV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\xF0Wa\x16\xF0a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16\xB8V[P`\0\x80`\0[\x84\x81\x10\x15a\x1A\x1EW`\0\x87\x82\x81Q\x81\x10a\x17&Wa\x17&a2VV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\xE4W\x88\x81\x81Q\x81\x10a\x17MWa\x17Ma2VV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xDCW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x173V[P`\0\x80[\x88\x81\x10\x15a\x18\xA5W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x18\tWa\x18\ta2VV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18\x9CW\x85\x15a\x18\x86W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x18\x95\x90\x84a@#V[\x92P`\x01\x96P[P`\x01\x01a\x17\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x19\x1EW\x84\x15a\x19\x05W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x19\x17\x90\x82a@#V[\x90P`\x01\x93P[\x80`\0\x03a\x19sW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x19\x81\x81`\x05a'\x10a(\x85V[\x82` \x01Q\x11\x15a\x19\xF4W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x1A\tWa\x1A\ta2VV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x17\nV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A\x80W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\xFC\x90\x84\x90\x86\x90`\x04\x01a@6V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1B\x14W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\xF0\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1C\xBD\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aC\xE5`.\x919`@Q` \x01a\x1D'\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1EW\x90`\xB8\x01a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x97\x96\x95\x94\x93\x92\x91` \x01a@eV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1F\x04\x96\x95\x94\x93\x92`\x04\x01aA\x18V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x1EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1FWWa\x03_\x82\x82a\x1FyV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(\xC1V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1F\xD3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xD8V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aD\x13`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x8F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q` \x01a \xBE\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!~\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa!\xAB\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10\x8FV[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x1EWa\"\x1Ea2'V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\"HW` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P`\0[\x81\x81\x10\x15a\"\x8FW`\0a\"}\x86\x83\x81Q\x81\x10a\"pWa\"pa2VV[` \x02` \x01\x01Qa*\xAAV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a\"QV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xA0\x01Q`@Q` \x01a\"\xB8\x91\x90aB\x02V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xF5\x93\x92\x91` \x01aB\x87V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a#+\x91\x90aB\xB4V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a#DWa#Da2VV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#\xA1W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\xFCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a$3W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x81\x83\x10\x15a$jWa$Xa$S\x84\x84aB\xD8V[a,\x0EV[a$c\x90`\0aB\xEBV[\x90Pa#\x0EV[a$ca$S\x83\x85aB\xD8V[`\0\x80\x82\x12a$\x8FWa$c\x83\x83c;\x9A\xCA\0a(\x85V[a$\xA7a$\x9B\x83aC\x12V[\x84\x90c;\x9A\xCA\0a,\xC4V[a$c\x90aC\x12V[`\0a$\xC7\x85a$\xC0\x86\x84aB\xEBV[\x85\x85a$\xD0V[\x95\x94PPPPPV[`\0\x80\x84\x12\x15a%3W`\0a$\xE5\x85aC\x12V[\x90P\x85a%\x12\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaB\xD8V[\x10\x15a%!W\x82\x91PPa%ZV[a%+\x81\x87a@#V[\x91PPa%OV[\x83\x85\x10\x15a%BWP\x81a%ZV[a%L\x84\x86aB\xD8V[\x90P[a$\xC7\x81\x84\x84a-\x08V[\x94\x93PPPPV[`\0\x84\x84\x10a%rWP\x80a$\xC7V[`\0a%~\x87\x86aB\xD8V[\x90P`\0a%\x8C\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a%\xBEWa%\xAE\x83\x83a%\xA7\x88\x8AaB\xEBV[\x91\x90a(\x85V[a%\xB7\x90aC\x12V[\x90Pa%\xD7V[a%\xD4\x83\x83a%\xCD\x89\x89aB\xEBV[\x91\x90a,\xC4V[\x90P[a%\xE1\x81\x87aCJV[\x99\x98PPPPPPPPPV[`\0`\x10\x82`\0\x01Q` \x01QQ\x11\x15a&4W`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a&OWP\x81Q` \x01QQ\x15[\x15a&nW`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa#\x0E\x92\x90\x91a-\x08V[`\0a&\x8F\x83`@\x01Q\x84``\x01Qa&\x87\x91\x90aB\xD8V[a\xFF\xFFa-\x19V[\x90P`\0\x80`\0\x80a&\xA5\x87`\0\x01Q\x86a-1V[\x93P\x93P\x93P\x93P`\0a&\xD0\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&\xEE\x92\x91\x84\x91a$\xD0V[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.\xF3\x81RP\x90P`\0a'\x87\x82a%\xEEV[\x90P`@Q\x80``\x01`@R\x80\x87`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a'\xEE\x84\x84\x83a/GV[a\x158W\x81a()W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a$3W`\0\x82\x82\x81Q\x81\x10a(NWa(Na2VV[` \x02` \x01\x01Q\x90Pa(w\x85a'\x10a(i\x91\x90a@#V[` \x83\x01Q\x90a'\x10a,\xC4V[` \x90\x91\x01R`\x01\x01a(1V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(\xBAW`\0\x80\xFD[P\x91\x02\x04\x90V[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x158W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R`\0\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Q`@Q` \x01a*W\x91\x90aCrV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10\x8FV[`\0`@Q` \x01a*\xBB\x90a=nV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra+{\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa+\xA8\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`\xA0\x80\x8B\x01Q`@\x80Q` \x81\x01\x9B\x90\x9BRs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\x8A\x16\x90\x8B\x01R\x94\x89\x01\x96\x90\x96R\x90\x87\x01\x93\x90\x93R\x93\x90\x93\x16\x91\x84\x01\x91\x90\x91R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01a\x10\x8FV[`\0\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xC0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FSafeCast: value doesn't fit in a`D\x82\x01R\x7Fn int256\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x07\0V[P\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a,\xF9W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0a%Za-\x17\x85\x85a/\x93V[\x83[`\0\x81\x83\x10a-(W\x81a-*V[\x82[\x93\x92PPPV[`\0\x80`\0\x80`\0a-D\x87`\0\x01Q\x90V[\x90Pa\xFF\xFF\x86\x16a-V\x82`\0a/\xA2V[a\xFF\xFF\x16\x10a-\x9AW`\0a-k\x82\x82a/\xA2V[`\0\x89` \x01Q`\0\x81Q\x81\x10a-\x84Wa-\x84a2VV[` \x02` \x01\x01Q\x94P\x94P\x94P\x94PPa.\xEAV[`\0`\x01\x88` \x01QQa-\xAE\x91\x90aC\xA8V[\x90P`\x01[\x81a\xFF\xFF\x16\x81a\xFF\xFF\x16\x11a.~W\x87a\xFF\xFF\x16a-\xDE\x82a\xFF\xFF\x16\x85a/\xA2\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[a\xFF\xFF\x16\x10a.lWa.\0a-\xF5`\x01\x83aC\xA8V[\x84\x90a\xFF\xFF\x16a/\xA2V[a.\x0E\x84a\xFF\xFF\x84\x16a/\xA2V[` \x8B\x01Qa.\x1E`\x01\x85aC\xA8V[a\xFF\xFF\x16\x81Q\x81\x10a.2Wa.2a2VV[` \x02` \x01\x01Q\x8B` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.TWa.Ta2VV[` \x02` \x01\x01Q\x96P\x96P\x96P\x96PPPPa.\xEAV[\x80a.v\x81aC\xC3V[\x91PPa-\xB3V[Pa.\x8D\x82a\xFF\xFF\x83\x16a/\xA2V[a.\x9B\x83a\xFF\xFF\x84\x16a/\xA2V[\x89` \x01Q\x83a\xFF\xFF\x16\x81Q\x81\x10a.\xB5Wa.\xB5a2VV[` \x02` \x01\x01Q\x8A` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.\xD7Wa.\xD7a2VV[` \x02` \x01\x01Q\x95P\x95P\x95P\x95PPP[\x92\x95\x91\x94P\x92PV[`\0\x84\x84\x10a/\x03WP\x80a$\xC7V[`\0a/\x0F\x87\x86aB\xD8V[\x90P`\0a/\x1D\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a/8Wa%\xAE\x83\x83a%\xCD\x88\x8AaB\xEBV[a%\xD4\x83\x83a%\xA7\x89\x89aB\xEBV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a/kWP\x82\x82\x11[\x80a%ZWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[`\0\x81\x83\x11a-(W\x81a-*V[`\0`\x10\x82\x10a/\xDEW`@Q\x7FN#\xD05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x10\x02\x1C\x90V[`\0`@\x82\x84\x03\x12\x15a/\xF8W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a0\x10W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0(W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\\W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a0tW`\0\x80\xFD[a0\x80\x87\x83\x88\x01a/\xE6V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a0\x96W`\0\x80\xFD[Pa0\xA3\x86\x82\x87\x01a/\xFEV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a0\xC2W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\xDAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a1\x08W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\x1FW`\0\x80\xFD[a1+\x85\x82\x86\x01a0\xB0V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a1MW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a1eW`\0\x80\xFD[a1q\x88\x83\x89\x01a0\xB0V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a1\x8AW`\0\x80\xFD[Pa1\x97\x87\x82\x88\x01a/\xFEV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a1\xD0\x81a1\xA3V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a1\xE7W`\0\x80\xFD[\x815a-*\x81a1\xA3V[`\0` \x82\x84\x03\x12\x15a2\x04W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a2\x1BW`\0\x80\xFD[a%Z\x84\x82\x85\x01a/\xE6V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a2\xA0W\x81\x81\x01Q\x83\x82\x01R` \x01a2\x88V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra2\xC1\x81` \x86\x01` \x86\x01a2\x85V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a3SW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a3\x08V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra3\xD2a\x01\xA0\x85\x01\x82a2\xA9V[\x90P` \x83\x01Qa4\x10` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra4(\x82\x82a2\xF3V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra4B\x82\x82a2\xA9V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a4\xCEW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra4\xBC\x86\x83Qa3^V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a4\x82V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a5SW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a5oW`\0\x80\xFD[PQ\x91\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a5\xABW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a5\xC6W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a0@W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@R\x90V[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a6\xD7Wa6\xD7a2'V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a6\xF0W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\nWa7\na2'V[a7;` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a6\x90V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a7PW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a7\x7FW`\0\x80\xFD[a7\x87a5\xDBV[\x90P\x815a7\x94\x81a1\xA3V[\x81R` \x82\x015a7\xA4\x81a1\xA3V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a7\xCD\x81a1\xA3V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\xECW`\0\x80\xFD[a7\xF8\x84\x82\x85\x01a6\xDFV[`\xA0\x83\x01RP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a8\x1EWa8\x1Ea2'V[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15a8:W`\0\x80\xFD[a8Ba6\x04V[\x90P\x815\x81R` \x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a8cW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a8tW`\0\x80\xFD[\x805a8\x87a8\x82\x82a8\x04V[a6\x90V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a8\xA6W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a8\xC4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a8\xABV[\x80\x85\x87\x01RPPPPP\x92\x91PPV[`\0`\xA0\x82\x84\x03\x12\x15a8\xE6W`\0\x80\xFD[a8\xEEa6'V[\x90P\x815a8\xFB\x81a1\xA3V[\x81R` \x82\x81\x015\x90\x82\x01R`@\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a9!W`\0\x80\xFD[a9-\x84\x82\x85\x01a8(V[`@\x83\x01RP``\x82\x015``\x82\x01R`\x80\x82\x015`\x80\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a9^W`\0\x80\xFD[\x815` a9na8\x82\x83a8\x04V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a9\x8DW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a:jW\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a9\xB2W`\0\x80\x81\xFD[\x81\x89\x01\x91P`\xC0\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x84\x8D\x03\x01\x12\x15a9\xEBW`\0\x80\x81\xFD[a9\xF3a5\xDBV[\x87\x84\x015a:\0\x81a1\xA3V[\x81R`@\x84\x81\x015\x89\x83\x01R``\x80\x86\x015\x85\x81\x11\x15a: W`\0\x80\x81\xFD[a:.\x8F\x8C\x83\x8A\x01\x01a8(V[\x83\x85\x01RP`\x80\x94P\x84\x86\x015\x91Pa:F\x82a1\xA3V[\x82\x01R`\xA0\x84\x81\x015\x93\x82\x01\x93\x90\x93R\x92\x015\x90\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a9\x91V[P\x96\x95PPPPPPV[`\0`\xA0\x82\x84\x03\x12\x15a:\x87W`\0\x80\xFD[a:\x8Fa6'V[\x90P\x815\x81R` \x80\x83\x015a:\xA4\x81a1\xA3V[\x80\x82\x84\x01RP`@\x83\x015`@\x83\x01R``\x83\x015``\x83\x01R`\x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a:\xD8W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a:\xE9W`\0\x80\xFD[\x805a:\xF7a8\x82\x82a8\x04V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a;\x16W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a;4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a;\x1BV[`\x80\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a;VW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a;nW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a;\x82W`\0\x80\xFD[a;\x8Aa6JV[\x825\x82\x81\x11\x15a;\x99W`\0\x80\xFD[a;\xA5\x87\x82\x86\x01a7mV[\x82RPa;\xB4` \x84\x01a1\xC5V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015\x82\x81\x11\x15a;\xD5W`\0\x80\xFD[a;\xE1\x87\x82\x86\x01a8\xD4V[``\x83\x01RP`\x80\x83\x015\x82\x81\x11\x15a;\xF9W`\0\x80\xFD[a<\x05\x87\x82\x86\x01a9MV[`\x80\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a<\x1DW`\0\x80\xFD[a<)\x87\x82\x86\x01a:uV[`\xA0\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a\xB8\x81\x84` \x8B\x01a2\x85V[\x86Q\x90\x83\x01\x90a>\xCC\x81\x83` \x8B\x01a2\x85V[\x86Q\x91\x01\x90a>\xDF\x81\x83` \x8A\x01a2\x85V[\x85Q\x91\x01\x90a>\xF2\x81\x83` \x89\x01a2\x85V[\x84Q\x91\x01\x90a?\x05\x81\x83` \x88\x01a2\x85V[\x01\x97\x96PPPPPPPV[` \x81R`\0a-*` \x83\x01\x84a3^V[`\0` \x80\x83\x85\x03\x12\x15a?7W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a?NW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a?_W`\0\x80\xFD[\x80Qa?ma8\x82\x82a8\x04V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a?\x8CW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a?\xE8W\x80\x85\x8A\x03\x12\x15a?\xA9W`\0\x80\x81\xFD[a?\xB1a6mV[\x85Qa?\xBC\x81a1\xA3V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa?\xD5\x81a1\xA3V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a?\x91V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a#\x0EWa#\x0Ea?\xF4V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a%Z`@\x83\x01\x84a3^V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x15\x88Q` a@\x9F\x82\x84\x87\x01\x83\x8E\x01a2\x85V[\x89Q\x91\x85\x01\x91a@\xB4\x81\x85\x85\x01\x84\x8E\x01a2\x85V[\x89Q\x92\x01\x91a@\xC8\x81\x85\x85\x01\x84\x8D\x01a2\x85V[\x88Q\x92\x01\x91a@\xDC\x81\x85\x85\x01\x84\x8C\x01a2\x85V[\x87Q\x92\x01\x91a@\xF0\x81\x85\x85\x01\x84\x8B\x01a2\x85V[\x86Q\x92\x01\x91aA\x04\x81\x85\x85\x01\x84\x8A\x01a2\x85V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[`\0a\x01@aAH\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01RaA\x89`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01RaA\xBE\x81\x84\x01\x86a2\xA9V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%\xE1\x81\x85a2\xA9V[`\0\x83QaA\xE5\x81\x84` \x88\x01a2\x85V[\x83Q\x90\x83\x01\x90aA\xF9\x81\x83` \x88\x01a2\x85V[\x01\x94\x93PPPPV[`\0` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a:jW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aBgV[\x83\x81R\x82` \x82\x01R`\0\x82QaB\xA5\x81`@\x85\x01` \x87\x01a2\x85V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15aB\xC7W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a#\x0EWa#\x0Ea?\xF4V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aC\x0BWaC\x0Ba?\xF4V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aCCWaCCa?\xF4V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aCjWaCja?\xF4V[PP\x92\x91PPV[\x81Q`\0\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aC\x9CW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aC\x80V[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aC\x0BWaC\x0Ba?\xF4V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x03aC\xDAWaC\xDAa?\xF4V[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xA80\x88\xCF\x8C\xE7sJ\x1AO\xD4s\xE1]\xA5\xDD@\xDE\x92/\x9F#|\xDC\xD5\xA3%\x8B\xDB!\xAF\x85dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xA9JO\xF3j\x9At$\n\x86!\x9B}%\0D/\x7F\x9F\xE2'{\xBC\x042y\xEDN\x14jW\x84dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct V3DutchOrderDeployment { address permit2; address reactor; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct V3DutchOrderDeployment { + pub permit2: alloy::sol_types::private::Address, + pub reactor: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: V3DutchOrderDeployment) -> Self { + (value.permit2, value.reactor) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for V3DutchOrderDeployment { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit2: tuple.0, + reactor: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for V3DutchOrderDeployment { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for V3DutchOrderDeployment { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.permit2, + ), + ::tokenize( + &self.reactor, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for V3DutchOrderDeployment { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for V3DutchOrderDeployment { + const NAME: &'static str = "V3DutchOrderDeployment"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "V3DutchOrderDeployment(address permit2,address reactor)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.permit2, + ) + .0, + ::eip712_data_word( + &self.reactor, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for V3DutchOrderDeployment { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.permit2, + ) + + ::topic_preimage_length( + &rust.reactor, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.permit2, + out, + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. +```solidity +function IS_SCRIPT() external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `run()` and selector `0xc0406226`. +```solidity +function run() external returns (V3DutchOrderDeployment memory deployment); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runReturn { + pub deployment: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (V3DutchOrderDeployment,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runReturn) -> Self { + (value.deployment,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { deployment: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for runCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = runReturn; + type ReturnTuple<'a> = (V3DutchOrderDeployment,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "run()"; + const SELECTOR: [u8; 4] = [192u8, 64u8, 98u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setUp()` and selector `0x0a9254e4`. +```solidity +function setUp() external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setUpCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setUpReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setUp()"; + const SELECTOR: [u8; 4] = [10u8, 146u8, 84u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`DeployDutchV3`](self) function calls. + pub enum DeployDutchV3Calls { + IS_SCRIPT(IS_SCRIPTCall), + run(runCall), + setUp(setUpCall), + } + #[automatically_derived] + impl DeployDutchV3Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [10u8, 146u8, 84u8, 228u8], + [192u8, 64u8, 98u8, 38u8], + [248u8, 204u8, 191u8, 71u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DeployDutchV3Calls { + const NAME: &'static str = "DeployDutchV3Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => { + ::SELECTOR + } + Self::run(_) => ::SELECTOR, + Self::setUp(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployDutchV3Calls::setUp) + } + setUp + }, + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployDutchV3Calls::run) + } + run + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployDutchV3Calls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::run(inner) => { + ::abi_encoded_size(inner) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::run(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DeployDutchV3`](self) contract instance. + +See the [wrapper's documentation](`DeployDutchV3Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DeployDutchV3Instance { + DeployDutchV3Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DeployDutchV3Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + DeployDutchV3Instance::::deploy_builder(provider) + } + /**A [`DeployDutchV3`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DeployDutchV3`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DeployDutchV3Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DeployDutchV3Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DeployDutchV3Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployDutchV3Instance { + /**Creates a new wrapper around an on-chain [`DeployDutchV3`](self) contract instance. + +See the [wrapper's documentation](`DeployDutchV3Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DeployDutchV3Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DeployDutchV3Instance { + DeployDutchV3Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployDutchV3Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`run`] function. + pub fn run(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&runCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployDutchV3Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/deployexclusivedutch.rs b/crates/bindings-uniswapx/src/deployexclusivedutch.rs new file mode 100644 index 0000000..ab0a5e7 --- /dev/null +++ b/crates/bindings-uniswapx/src/deployexclusivedutch.rs @@ -0,0 +1,1003 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DeployExclusiveDutch { + struct ExclusiveDutchDeployment { + address permit2; + address reactor; + address quoter; + } + + function IS_SCRIPT() external view returns (bool); + function run() external returns (ExclusiveDutchDeployment memory deployment); + function setUp() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "run", + "inputs": [], + "outputs": [ + { + "name": "deployment", + "type": "tuple", + "internalType": "struct ExclusiveDutchDeployment", + "components": [ + { + "name": "permit2", + "type": "address", + "internalType": "contract IPermit2" + }, + { + "name": "reactor", + "type": "address", + "internalType": "contract ExclusiveDutchOrderReactor" + }, + { + "name": "quoter", + "type": "address", + "internalType": "contract OrderQuoter" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DeployExclusiveDutch { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50616acd806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610094575b600080fd5b005b6100506100b7565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a79062010000900460ff1681565b604051901515815260200161008b565b60408051606081018252600080825260208201819052918101919091527f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561013f57600080fd5b505af1158015610153573d6000803e3d6000fd5b5050506e22d473030f116ddee9f6b43ac78ba33b600003905061017a576101786103a1565b505b60008060001b6e22d473030f116ddee9f6b43ac78ba3731a9c8182c09f50c8318d769245bea52c32be35bc6040516101b19061052e565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156101f5573d6000803e3d6000fd5b5090506102376040518060400160405280600781526020017f52656163746f72000000000000000000000000000000000000000000000000008152508261046c565b60008060001b6040516102499061053b565b8190604051809103906000f5905080158015610269573d6000803e3d6000fd5b5090506102ab6040518060400160405280600681526020017f51756f74657200000000000000000000000000000000000000000000000000008152508261046c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561031657600080fd5b505af115801561032a573d6000803e3d6000fd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b600080604051806123e001604052806123c081526020016146d86123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290610424906e22d473030f116ddee9f6b43ac78ba39085906004016105ac565b600060405180830381600087803b15801561043e57600080fd5b505af1158015610452573d6000803e3d6000fd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6104fd82826040516024016104829291906105e3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610501565b5050565b61050a8161050d565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6132a38061061c83390190565b610e19806138bf83390190565b6000815180845260005b8181101561056e57602081850181015186830182015201610552565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006105db6040830184610548565b949350505050565b6040815260006105f66040830185610548565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b50604051620032a3380380620032a38339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b60805161318a620001196000396000818160e0015261187c015261318a6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612358565b6101eb565b005b6100b96100c9366004612406565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612448565b6104c5565b34801561014a57600080fd5b506100b96101593660046124e6565b610683565b6100b961016c36600461250a565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046124e6565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561256e565b60200260200101819052506102d981610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612771565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb3565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861253f565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661256e565b90506020028101906104789190612837565b6109f6565b82828151811061048f5761048f61256e565b6020908102919091010152600101610449565b506104ac81610b62565b6104b581610bb3565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961253f565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661256e565b8282815181106105d9576105d961256e565b60209081029190910101526001016105aa565b506105f681610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612771565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb3565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961256e565b602002602001018190525061087d81610b62565b61088681610bb3565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612875565b810190610a7c9190612bfe565b9050610a8781610d06565b6040518060a0016040528082600001518152602001610abd836020015184604001518560a00151610df19092919063ffffffff16565b8152602001610ae3836020015184604001518560c00151610ec39092919063ffffffff16565b8152602001848060200190610af89190612875565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610faa565b9052606082015160208301516080840151929450610b5c928592919061127c565b50919050565b805160005b8181101561035f576000838281518110610b8357610b8361256e565b60200260200101519050610b9681611289565b610ba08133611779565b610baa813361187a565b50600101610b67565b805160005b81811015610cf5576000838281518110610bd457610bd461256e565b602002602001015190506000816040015151905060005b81811015610c5557600083604001518281518110610c0b57610c0b61256e565b60200260200101519050610c4c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611bd79092919063ffffffff16565b50600101610beb565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9e57610c9e61256e565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce391815260200190565b60405180910390a45050600101610bb8565b5047156104c1576104c13347611c1e565b60408101518151606001511015610d49576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a08101516040810151602090910151146108915760005b8160c00151518110156104c1578160c001518181518110610d8457610d8461256e565b6020026020010151604001518260c001518281518110610da657610da661256e565b60200260200101516020015114610de9576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d61565b610e2b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e6d576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e83856020015186604001518686611cb8565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ee157610ee161253f565b604051908082528060200260200182016040528015610f4a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eff5790505b50915060005b81811015610fa157610f7c868281518110610f6d57610f6d61256e565b60200260200101518686611d35565b838281518110610f8e57610f8e61256e565b6020908102919091010152600101610f50565b50509392505050565b6040517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e982015260009060ff01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061304860208301396040518060c00160405280608d81526020016130c8608d913960405160200161119c93929190612cd2565b604051602081830303815290604052805190602001206111bf8360000151611e05565b83602001518460400151856060015186608001518760a00151600001518860a00151602001518960a00151604001516111fb8b60c00151611e9f565b60408051602081019b909b528a01989098526060890196909652608088019490945273ffffffffffffffffffffffffffffffffffffffff92831660a088015260c08701919091521660e0850152610100840152610120830152610140820152610160015b604051602081830303815290604052805190602001209050919050565b61067d8484848442611f3d565b60015473ffffffffffffffffffffffffffffffffffffffff166112a95750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611300908590600401612d15565b600060405180830381865afa15801561131d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113639190810190612d28565b604083015151815191925090600061137b8284612e27565b67ffffffffffffffff8111156113935761139361253f565b6040519080825280602002602001820160405280156113fc57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b15790505b50905060005b8381101561144d57856040015181815181106114205761142061256e565b602002602001015182828151811061143a5761143a61256e565b6020908102919091010152600101611402565b5060008060005b848110156117685760008782815181106114705761147061256e565b6020026020010151905060005b8281101561152e578881815181106114975761149761256e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036115265781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161147d565b506000805b888110156115ef5760008b6040015182815181106115535761155361256e565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036115e65785156115d0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516115df9084612e27565b9250600196505b50600101611533565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361166857841561164f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116619082612e27565b9050600193505b806000036116bd5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6116cb816005612710611fe9565b8260200151111561173e578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106117535761175361256e565b60209081029190910101525050600101611454565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146117ca576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906118469084908690600401612e3a565b60006040518083038186803b15801561185e57600080fd5b505afa158015611872573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61193a846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6119448585612025565b856000015160200151866080015160405180608001604052806052815260200161304860529139604080517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e9820152815160df8183030181526101bf8201909252608d60ff8201818152916130c89061011f01396040518060600160405280602e815260200161309a602e9139604051602001611b3c9493929190612e69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611ba99695949392600401612ef2565b600060405180830381600087803b158015611bc357600080fd5b505af1158015611872573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611bfc5761035f8282611c1e565b61035f73ffffffffffffffffffffffffffffffffffffffff841633848461206c565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611c78576040519150601f19603f3d011682016040523d82523d6000602084013e611c7d565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611cc8575083611d2d565b828211611d01576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611d0f575082611d2d565b428310611d1d575083611d2d565b611d2a8383428888612157565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d94576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611daa856020015186604001518686611cb8565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d81526020016130c8608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161125f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ebf57611ebf61253f565b6040519080825280601f01601f191660200182016040528015611ee9576020820181803683370190505b50905060005b8351811015611f2e576000611f1c858381518110611f0f57611f0f61256e565b6020026020010151612172565b60208381028501015250600101611eef565b50805160209091012092915050565b611f488484836121e9565b611fe25781611f83576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b8151811015611fdf576000828281518110611fa857611fa861256e565b60200260200101519050611fd185612710611fc39190612e27565b602083015190612710612234565b602090910152600101611f8b565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261201e57600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b60006121668686868686612278565b90505b95945050505050565b60006040518060800160405280605281526020016130486052913980516020918201208351848301516040808701516060880151915161125f969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600073ffffffffffffffffffffffffffffffffffffffff8416158061220d57508282115b80611d2d575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261226957600080fd5b50910281810615159190040190565b6000848410612288575080612169565b60006122948786612fad565b905060006122a28888612fad565b90506000858512156122d4576122c483836122bd888a612fc0565b9190611fe9565b6122cd90612fe7565b90506122e6565b6122e383836122bd8989612fc0565b90505b6122f0818761301f565b9998505050505050505050565b600060408284031215610b5c57600080fd5b60008083601f84011261232157600080fd5b50813567ffffffffffffffff81111561233957600080fd5b60208301915083602082850101111561235157600080fd5b9250929050565b60008060006040848603121561236d57600080fd5b833567ffffffffffffffff8082111561238557600080fd5b612391878388016122fd565b945060208601359150808211156123a757600080fd5b506123b48682870161230f565b9497909650939450505050565b60008083601f8401126123d357600080fd5b50813567ffffffffffffffff8111156123eb57600080fd5b6020830191508360208260051b850101111561235157600080fd5b6000806020838503121561241957600080fd5b823567ffffffffffffffff81111561243057600080fd5b61243c858286016123c1565b90969095509350505050565b6000806000806040858703121561245e57600080fd5b843567ffffffffffffffff8082111561247657600080fd5b612482888389016123c1565b9096509450602087013591508082111561249b57600080fd5b506124a88782880161230f565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356124e1816124b4565b919050565b6000602082840312156124f857600080fd5b8135612503816124b4565b9392505050565b60006020828403121561251c57600080fd5b813567ffffffffffffffff81111561253357600080fd5b611d2d848285016122fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156125b85781810151838201526020016125a0565b50506000910152565b600081518084526125d981602086016020860161259d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b8381101561266b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612620565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526126ea6101a08501826125c1565b905060208301516127286020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612740828261260b565b915050606083015184820360a086015261275a82826125c1565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156127e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526127d4868351612676565b9550938201939082019060010161279a565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261286b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128aa57600080fd5b83018035915067ffffffffffffffff8211156128c557600080fd5b60200191503681900382131561235157600080fd5b6040516060810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405290565b6040516080810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405160e0810167ffffffffffffffff811182821017156128fd576128fd61253f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129905761299061253f565b604052919050565b600082601f8301126129a957600080fd5b813567ffffffffffffffff8111156129c3576129c361253f565b6129f460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612949565b818152846020838601011115612a0957600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612a3857600080fd5b60405160c0810167ffffffffffffffff8282108183111715612a5c57612a5c61253f565b8160405282935084359150612a70826124b4565b908252602084013590612a82826124b4565b816020840152604085013560408401526060850135606084015260808501359150612aac826124b4565b81608084015260a0850135915080821115612ac657600080fd5b50612ad385828601612998565b60a0830152505092915050565b600060608284031215612af257600080fd5b612afa6128da565b90508135612b07816124b4565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612b3f57612b3f61253f565b5060051b60200190565b600082601f830112612b5a57600080fd5b81356020612b6f612b6a83612b25565b612949565b82815260079290921b84018101918181019086841115612b8e57600080fd5b8286015b84811015612bf35760808189031215612bab5760008081fd5b612bb3612903565b8135612bbe816124b4565b8152818501358582015260408083013590820152606080830135612be1816124b4565b90820152835291830191608001612b92565b509695505050505050565b600060208284031215612c1057600080fd5b813567ffffffffffffffff80821115612c2857600080fd5b908301906101208286031215612c3d57600080fd5b612c45612926565b823582811115612c5457600080fd5b612c6087828601612a26565b8252506020830135602082015260408301356040820152612c83606084016124d6565b606082015260808301356080820152612c9f8660a08501612ae0565b60a082015261010083013582811115612cb757600080fd5b612cc387828601612b49565b60c08301525095945050505050565b60008451612ce481846020890161259d565b845190830190612cf881836020890161259d565b8451910190612d0b81836020880161259d565b0195945050505050565b6020815260006125036020830184612676565b60006020808385031215612d3b57600080fd5b825167ffffffffffffffff811115612d5257600080fd5b8301601f81018513612d6357600080fd5b8051612d71612b6a82612b25565b81815260609182028301840191848201919088841115612d9057600080fd5b938501935b83851015612dec5780858a031215612dad5760008081fd5b612db56128da565b8551612dc0816124b4565b81528587015187820152604080870151612dd9816124b4565b9082015283529384019391850191612d95565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561206657612066612df8565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611d2d6040830184612676565b7f4578636c757369766544757463684f72646572207769746e6573732900000000815260008551612ea181601c850160208a0161259d565b855190830190612eb881601c840160208a0161259d565b8551910190612ece81601c84016020890161259d565b8451910190612ee481601c84016020880161259d565b01601c019695505050505050565b6000610140612f22838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612f636080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612f98818401866125c1565b90508281036101208401526122f081856125c1565b8181038181111561206657612066612df8565b8181036000831280158383131683831282161715612fe057612fe0612df8565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361301857613018612df8565b5060000390565b808201828112600083128015821682158216171561303f5761303f612df8565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220bc5333daef38e70e8a6ea612125c596542d6e839278b2c906bbabc6c6e70329b64736f6c63430008180033608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212204be2476098894d6ec3c58573f3d1bb2c5345602a6172512ca6fdf7ae53f7f66164736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Paj\xCD\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x94W[`\0\x80\xFD[\0[a\0Pa\0\xB7V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA7\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8BV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01?W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01SW=`\0\x80>=`\0\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;`\0\x03\x90Pa\x01zWa\x01xa\x03\xA1V[P[`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xB1\x90a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x01\xF5W=`\0\x80>=`\0\xFD[P\x90Pa\x027`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[`\0\x80`\0\x1B`@Qa\x02I\x90a\x05;V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02iW=`\0\x80>=`\0\xFD[P\x90Pa\x02\xAB`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\x16W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03*W=`\0\x80>=`\0\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[`\0\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aF\xD8a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04$\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\xACV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04>W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04RW=`\0\x80>=`\0\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xFD\x82\x82`@Q`$\x01a\x04\x82\x92\x91\x90a\x05\xE3V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x05\x01V[PPV[a\x05\n\x81a\x05\rV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a2\xA3\x80a\x06\x1C\x839\x01\x90V[a\x0E\x19\x80a8\xBF\x839\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x05nW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05RV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x05\xDB`@\x83\x01\x84a\x05HV[\x94\x93PPPPV[`@\x81R`\0a\x05\xF6`@\x83\x01\x85a\x05HV[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x002\xA38\x03\x80b\x002\xA3\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa1\x8Ab\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x18|\x01Ra1\x8A`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a#XV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\x06V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a$HV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a$\xE6V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\nV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a$\xE6V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a%nV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB3V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a(7V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BbV[a\x04\xB5\x81a\x0B\xB3V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB3V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia%nV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BbV[a\x08\x86\x81a\x0B\xB3V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a(uV[\x81\x01\x90a\n|\x91\x90a+\xFEV[\x90Pa\n\x87\x81a\r\x06V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xF1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\xC3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a(uV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\xAAV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B\\\x92\x85\x92\x91\x90a\x12|V[P\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x83Wa\x0B\x83a%nV[` \x02` \x01\x01Q\x90Pa\x0B\x96\x81a\x12\x89V[a\x0B\xA0\x813a\x17yV[a\x0B\xAA\x813a\x18zV[P`\x01\x01a\x0BgV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF5W`\0\x83\x82\x81Q\x81\x10a\x0B\xD4Wa\x0B\xD4a%nV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CUW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x0BWa\x0C\x0Ba%nV[` \x02` \x01\x01Q\x90Pa\x0CL\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B\xD7\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xEBV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9EWa\x0C\x9Ea%nV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB8V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1C\x1EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\rIW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xC1W\x81`\xC0\x01Q\x81\x81Q\x81\x10a\r\x84Wa\r\x84a%nV[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\r\xA6Wa\r\xA6a%nV[` \x02` \x01\x01Q` \x01Q\x14a\r\xE9W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\raV[a\x0E+`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EmW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0E\x83\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xE1Wa\x0E\xE1a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0FJW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xFFW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\xA1Wa\x0F|\x86\x82\x81Q\x81\x10a\x0FmWa\x0Fma%nV[` \x02` \x01\x01Q\x86\x86a\x1D5V[\x83\x82\x81Q\x81\x10a\x0F\x8EWa\x0F\x8Ea%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0FPV[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R`\0\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a0H` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919`@Q` \x01a\x11\x9C\x93\x92\x91\x90a,\xD2V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\xBF\x83`\0\x01Qa\x1E\x05V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q`\0\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xFB\x8B`\xC0\x01Qa\x1E\x9FV[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06}\x84\x84\x84\x84Ba\x1F=V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\xA9WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x13\0\x90\x85\x90`\x04\x01a-\x15V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13c\x91\x90\x81\x01\x90a-(V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x13{\x82\x84a.'V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x93Wa\x13\x93a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFCW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB1W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x14MW\x85`@\x01Q\x81\x81Q\x81\x10a\x14 Wa\x14 a%nV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x14:Wa\x14:a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x02V[P`\0\x80`\0[\x84\x81\x10\x15a\x17hW`\0\x87\x82\x81Q\x81\x10a\x14pWa\x14pa%nV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x15.W\x88\x81\x81Q\x81\x10a\x14\x97Wa\x14\x97a%nV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15&W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x14}V[P`\0\x80[\x88\x81\x10\x15a\x15\xEFW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x15SWa\x15Sa%nV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\xE6W\x85\x15a\x15\xD0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\xDF\x90\x84a.'V[\x92P`\x01\x96P[P`\x01\x01a\x153V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16hW\x84\x15a\x16OW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16a\x90\x82a.'V[\x90P`\x01\x93P[\x80`\0\x03a\x16\xBDW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x16\xCB\x81`\x05a'\x10a\x1F\xE9V[\x82` \x01Q\x11\x15a\x17>W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17SWa\x17Sa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14TV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17\xCAW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x18F\x90\x84\x90\x86\x90`\x04\x01a.:V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18^W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x19:\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x19D\x85\x85a %V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a0\xC8\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a0\x9A`.\x919`@Q` \x01a\x1B<\x94\x93\x92\x91\x90a.iV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B\xA9\x96\x95\x94\x93\x92`\x04\x01a.\xF2V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1B\xC3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xFCWa\x03_\x82\x82a\x1C\x1EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a lV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1CxW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1C}V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1C\xC8WP\x83a\x1D-V[\x82\x82\x11a\x1D\x01W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1D\x0FWP\x82a\x1D-V[B\x83\x10a\x1D\x1DWP\x83a\x1D-V[a\x1D*\x83\x83B\x88\x88a!WV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x94W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D\xAA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12_\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBFWa\x1E\xBFa%?V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE9W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F.W`\0a\x1F\x1C\x85\x83\x81Q\x81\x10a\x1F\x0FWa\x1F\x0Fa%nV[` \x02` \x01\x01Qa!rV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xEFV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1FH\x84\x84\x83a!\xE9V[a\x1F\xE2W\x81a\x1F\x83W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a\x1F\xDFW`\0\x82\x82\x81Q\x81\x10a\x1F\xA8Wa\x1F\xA8a%nV[` \x02` \x01\x01Q\x90Pa\x1F\xD1\x85a'\x10a\x1F\xC3\x91\x90a.'V[` \x83\x01Q\x90a'\x10a\"4V[` \x90\x91\x01R`\x01\x01a\x1F\x8BV[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a \x1EW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x1F\xE2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0a!f\x86\x86\x86\x86\x86a\"xV[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12_\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\"\rWP\x82\x82\x11[\x80a\x1D-WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\"iW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a\"\x88WP\x80a!iV[`\0a\"\x94\x87\x86a/\xADV[\x90P`\0a\"\xA2\x88\x88a/\xADV[\x90P`\0\x85\x85\x12\x15a\"\xD4Wa\"\xC4\x83\x83a\"\xBD\x88\x8Aa/\xC0V[\x91\x90a\x1F\xE9V[a\"\xCD\x90a/\xE7V[\x90Pa\"\xE6V[a\"\xE3\x83\x83a\"\xBD\x89\x89a/\xC0V[\x90P[a\"\xF0\x81\x87a0\x1FV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a\x0B\\W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a#!W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a#mW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x85W`\0\x80\xFD[a#\x91\x87\x83\x88\x01a\"\xFDV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#\xA7W`\0\x80\xFD[Pa#\xB4\x86\x82\x87\x01a#\x0FV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a#\xD3W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xEBW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a$\x19W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$0W`\0\x80\xFD[a$<\x85\x82\x86\x01a#\xC1V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a$^W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$vW`\0\x80\xFD[a$\x82\x88\x83\x89\x01a#\xC1V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\x9BW`\0\x80\xFD[Pa$\xA8\x87\x82\x88\x01a#\x0FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a$\xE1\x81a$\xB4V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a$\xF8W`\0\x80\xFD[\x815a%\x03\x81a$\xB4V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\x1CW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%3W`\0\x80\xFD[a\x1D-\x84\x82\x85\x01a\"\xFDV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a%\xB8W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xA0V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra%\xD9\x81` \x86\x01` \x86\x01a%\x9DV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a&kW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a& V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&\xEAa\x01\xA0\x85\x01\x82a%\xC1V[\x90P` \x83\x01Qa'(` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'@\x82\x82a&\x0BV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'Z\x82\x82a%\xC1V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a'\xE6W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'\xD4\x86\x83Qa&vV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\x9AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(kW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xAAW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xC5W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#QW`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\x90Wa)\x90a%?V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a)\xA9W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\xC3Wa)\xC3a%?V[a)\xF4` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)IV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\tW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a*8W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\\Wa*\\a%?V[\x81`@R\x82\x93P\x845\x91Pa*p\x82a$\xB4V[\x90\x82R` \x84\x015\x90a*\x82\x82a$\xB4V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xAC\x82a$\xB4V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xC6W`\0\x80\xFD[Pa*\xD3\x85\x82\x86\x01a)\x98V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a*\xF2W`\0\x80\xFD[a*\xFAa(\xDAV[\x90P\x815a+\x07\x81a$\xB4V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+?Wa+?a%?V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a+ZW`\0\x80\xFD[\x815` a+oa+j\x83a+%V[a)IV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\x8EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+\xF3W`\x80\x81\x89\x03\x12\x15a+\xABW`\0\x80\x81\xFD[a+\xB3a)\x03V[\x815a+\xBE\x81a$\xB4V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a+\xE1\x81a$\xB4V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\x92V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\x10W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,(W`\0\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a,=W`\0\x80\xFD[a,Ea)&V[\x825\x82\x81\x11\x15a,TW`\0\x80\xFD[a,`\x87\x82\x86\x01a*&V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra,\x83``\x84\x01a$\xD6V[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra,\x9F\x86`\xA0\x85\x01a*\xE0V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a,\xB7W`\0\x80\xFD[a,\xC3\x87\x82\x86\x01a+IV[`\xC0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa,\xE4\x81\x84` \x89\x01a%\x9DV[\x84Q\x90\x83\x01\x90a,\xF8\x81\x83` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a-\x0B\x81\x83` \x88\x01a%\x9DV[\x01\x95\x94PPPPPV[` \x81R`\0a%\x03` \x83\x01\x84a&vV[`\0` \x80\x83\x85\x03\x12\x15a-;W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-RW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-cW`\0\x80\xFD[\x80Qa-qa+j\x82a+%V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a-\x90W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-\xECW\x80\x85\x8A\x03\x12\x15a-\xADW`\0\x80\x81\xFD[a-\xB5a(\xDAV[\x85Qa-\xC0\x81a$\xB4V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\xD9\x81a$\xB4V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a-\x95V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a fWa fa-\xF8V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1D-`@\x83\x01\x84a&vV[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R`\0\x85Qa.\xA1\x81`\x1C\x85\x01` \x8A\x01a%\x9DV[\x85Q\x90\x83\x01\x90a.\xB8\x81`\x1C\x84\x01` \x8A\x01a%\x9DV[\x85Q\x91\x01\x90a.\xCE\x81`\x1C\x84\x01` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a.\xE4\x81`\x1C\x84\x01` \x88\x01a%\x9DV[\x01`\x1C\x01\x96\x95PPPPPPV[`\0a\x01@a/\"\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra/c`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra/\x98\x81\x84\x01\x86a%\xC1V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"\xF0\x81\x85a%\xC1V[\x81\x81\x03\x81\x81\x11\x15a fWa fa-\xF8V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\xE0Wa/\xE0a-\xF8V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a0\x18Wa0\x18a-\xF8V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a0?Wa0?a-\xF8V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xBCS3\xDA\xEF8\xE7\x0E\x8An\xA6\x12\x12\\YeB\xD6\xE89'\x8B,\x90k\xBA\xBClnp2\x9BdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 K\xE2G`\x98\x89Mn\xC3\xC5\x85s\xF3\xD1\xBB,SE`*arQ,\xA6\xFD\xF7\xAES\xF7\xF6adsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610094575b600080fd5b005b6100506100b7565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a79062010000900460ff1681565b604051901515815260200161008b565b60408051606081018252600080825260208201819052918101919091527f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561013f57600080fd5b505af1158015610153573d6000803e3d6000fd5b5050506e22d473030f116ddee9f6b43ac78ba33b600003905061017a576101786103a1565b505b60008060001b6e22d473030f116ddee9f6b43ac78ba3731a9c8182c09f50c8318d769245bea52c32be35bc6040516101b19061052e565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156101f5573d6000803e3d6000fd5b5090506102376040518060400160405280600781526020017f52656163746f72000000000000000000000000000000000000000000000000008152508261046c565b60008060001b6040516102499061053b565b8190604051809103906000f5905080158015610269573d6000803e3d6000fd5b5090506102ab6040518060400160405280600681526020017f51756f74657200000000000000000000000000000000000000000000000000008152508261046c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561031657600080fd5b505af115801561032a573d6000803e3d6000fd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b600080604051806123e001604052806123c081526020016146d86123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290610424906e22d473030f116ddee9f6b43ac78ba39085906004016105ac565b600060405180830381600087803b15801561043e57600080fd5b505af1158015610452573d6000803e3d6000fd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6104fd82826040516024016104829291906105e3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610501565b5050565b61050a8161050d565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6132a38061061c83390190565b610e19806138bf83390190565b6000815180845260005b8181101561056e57602081850181015186830182015201610552565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006105db6040830184610548565b949350505050565b6040815260006105f66040830185610548565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b50604051620032a3380380620032a38339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b60805161318a620001196000396000818160e0015261187c015261318a6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612358565b6101eb565b005b6100b96100c9366004612406565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612448565b6104c5565b34801561014a57600080fd5b506100b96101593660046124e6565b610683565b6100b961016c36600461250a565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046124e6565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561256e565b60200260200101819052506102d981610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612771565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb3565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861253f565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661256e565b90506020028101906104789190612837565b6109f6565b82828151811061048f5761048f61256e565b6020908102919091010152600101610449565b506104ac81610b62565b6104b581610bb3565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961253f565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661256e565b8282815181106105d9576105d961256e565b60209081029190910101526001016105aa565b506105f681610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612771565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb3565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961256e565b602002602001018190525061087d81610b62565b61088681610bb3565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612875565b810190610a7c9190612bfe565b9050610a8781610d06565b6040518060a0016040528082600001518152602001610abd836020015184604001518560a00151610df19092919063ffffffff16565b8152602001610ae3836020015184604001518560c00151610ec39092919063ffffffff16565b8152602001848060200190610af89190612875565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610faa565b9052606082015160208301516080840151929450610b5c928592919061127c565b50919050565b805160005b8181101561035f576000838281518110610b8357610b8361256e565b60200260200101519050610b9681611289565b610ba08133611779565b610baa813361187a565b50600101610b67565b805160005b81811015610cf5576000838281518110610bd457610bd461256e565b602002602001015190506000816040015151905060005b81811015610c5557600083604001518281518110610c0b57610c0b61256e565b60200260200101519050610c4c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611bd79092919063ffffffff16565b50600101610beb565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9e57610c9e61256e565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce391815260200190565b60405180910390a45050600101610bb8565b5047156104c1576104c13347611c1e565b60408101518151606001511015610d49576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a08101516040810151602090910151146108915760005b8160c00151518110156104c1578160c001518181518110610d8457610d8461256e565b6020026020010151604001518260c001518281518110610da657610da661256e565b60200260200101516020015114610de9576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d61565b610e2b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e6d576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e83856020015186604001518686611cb8565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ee157610ee161253f565b604051908082528060200260200182016040528015610f4a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eff5790505b50915060005b81811015610fa157610f7c868281518110610f6d57610f6d61256e565b60200260200101518686611d35565b838281518110610f8e57610f8e61256e565b6020908102919091010152600101610f50565b50509392505050565b6040517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e982015260009060ff01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061304860208301396040518060c00160405280608d81526020016130c8608d913960405160200161119c93929190612cd2565b604051602081830303815290604052805190602001206111bf8360000151611e05565b83602001518460400151856060015186608001518760a00151600001518860a00151602001518960a00151604001516111fb8b60c00151611e9f565b60408051602081019b909b528a01989098526060890196909652608088019490945273ffffffffffffffffffffffffffffffffffffffff92831660a088015260c08701919091521660e0850152610100840152610120830152610140820152610160015b604051602081830303815290604052805190602001209050919050565b61067d8484848442611f3d565b60015473ffffffffffffffffffffffffffffffffffffffff166112a95750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611300908590600401612d15565b600060405180830381865afa15801561131d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113639190810190612d28565b604083015151815191925090600061137b8284612e27565b67ffffffffffffffff8111156113935761139361253f565b6040519080825280602002602001820160405280156113fc57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b15790505b50905060005b8381101561144d57856040015181815181106114205761142061256e565b602002602001015182828151811061143a5761143a61256e565b6020908102919091010152600101611402565b5060008060005b848110156117685760008782815181106114705761147061256e565b6020026020010151905060005b8281101561152e578881815181106114975761149761256e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036115265781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161147d565b506000805b888110156115ef5760008b6040015182815181106115535761155361256e565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036115e65785156115d0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516115df9084612e27565b9250600196505b50600101611533565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361166857841561164f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116619082612e27565b9050600193505b806000036116bd5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6116cb816005612710611fe9565b8260200151111561173e578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106117535761175361256e565b60209081029190910101525050600101611454565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146117ca576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906118469084908690600401612e3a565b60006040518083038186803b15801561185e57600080fd5b505afa158015611872573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61193a846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6119448585612025565b856000015160200151866080015160405180608001604052806052815260200161304860529139604080517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e9820152815160df8183030181526101bf8201909252608d60ff8201818152916130c89061011f01396040518060600160405280602e815260200161309a602e9139604051602001611b3c9493929190612e69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611ba99695949392600401612ef2565b600060405180830381600087803b158015611bc357600080fd5b505af1158015611872573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611bfc5761035f8282611c1e565b61035f73ffffffffffffffffffffffffffffffffffffffff841633848461206c565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611c78576040519150601f19603f3d011682016040523d82523d6000602084013e611c7d565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611cc8575083611d2d565b828211611d01576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611d0f575082611d2d565b428310611d1d575083611d2d565b611d2a8383428888612157565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d94576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611daa856020015186604001518686611cb8565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d81526020016130c8608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161125f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ebf57611ebf61253f565b6040519080825280601f01601f191660200182016040528015611ee9576020820181803683370190505b50905060005b8351811015611f2e576000611f1c858381518110611f0f57611f0f61256e565b6020026020010151612172565b60208381028501015250600101611eef565b50805160209091012092915050565b611f488484836121e9565b611fe25781611f83576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b8151811015611fdf576000828281518110611fa857611fa861256e565b60200260200101519050611fd185612710611fc39190612e27565b602083015190612710612234565b602090910152600101611f8b565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261201e57600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b60006121668686868686612278565b90505b95945050505050565b60006040518060800160405280605281526020016130486052913980516020918201208351848301516040808701516060880151915161125f969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600073ffffffffffffffffffffffffffffffffffffffff8416158061220d57508282115b80611d2d575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261226957600080fd5b50910281810615159190040190565b6000848410612288575080612169565b60006122948786612fad565b905060006122a28888612fad565b90506000858512156122d4576122c483836122bd888a612fc0565b9190611fe9565b6122cd90612fe7565b90506122e6565b6122e383836122bd8989612fc0565b90505b6122f0818761301f565b9998505050505050505050565b600060408284031215610b5c57600080fd5b60008083601f84011261232157600080fd5b50813567ffffffffffffffff81111561233957600080fd5b60208301915083602082850101111561235157600080fd5b9250929050565b60008060006040848603121561236d57600080fd5b833567ffffffffffffffff8082111561238557600080fd5b612391878388016122fd565b945060208601359150808211156123a757600080fd5b506123b48682870161230f565b9497909650939450505050565b60008083601f8401126123d357600080fd5b50813567ffffffffffffffff8111156123eb57600080fd5b6020830191508360208260051b850101111561235157600080fd5b6000806020838503121561241957600080fd5b823567ffffffffffffffff81111561243057600080fd5b61243c858286016123c1565b90969095509350505050565b6000806000806040858703121561245e57600080fd5b843567ffffffffffffffff8082111561247657600080fd5b612482888389016123c1565b9096509450602087013591508082111561249b57600080fd5b506124a88782880161230f565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356124e1816124b4565b919050565b6000602082840312156124f857600080fd5b8135612503816124b4565b9392505050565b60006020828403121561251c57600080fd5b813567ffffffffffffffff81111561253357600080fd5b611d2d848285016122fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156125b85781810151838201526020016125a0565b50506000910152565b600081518084526125d981602086016020860161259d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b8381101561266b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612620565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526126ea6101a08501826125c1565b905060208301516127286020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612740828261260b565b915050606083015184820360a086015261275a82826125c1565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156127e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526127d4868351612676565b9550938201939082019060010161279a565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261286b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128aa57600080fd5b83018035915067ffffffffffffffff8211156128c557600080fd5b60200191503681900382131561235157600080fd5b6040516060810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405290565b6040516080810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405160e0810167ffffffffffffffff811182821017156128fd576128fd61253f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129905761299061253f565b604052919050565b600082601f8301126129a957600080fd5b813567ffffffffffffffff8111156129c3576129c361253f565b6129f460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612949565b818152846020838601011115612a0957600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612a3857600080fd5b60405160c0810167ffffffffffffffff8282108183111715612a5c57612a5c61253f565b8160405282935084359150612a70826124b4565b908252602084013590612a82826124b4565b816020840152604085013560408401526060850135606084015260808501359150612aac826124b4565b81608084015260a0850135915080821115612ac657600080fd5b50612ad385828601612998565b60a0830152505092915050565b600060608284031215612af257600080fd5b612afa6128da565b90508135612b07816124b4565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612b3f57612b3f61253f565b5060051b60200190565b600082601f830112612b5a57600080fd5b81356020612b6f612b6a83612b25565b612949565b82815260079290921b84018101918181019086841115612b8e57600080fd5b8286015b84811015612bf35760808189031215612bab5760008081fd5b612bb3612903565b8135612bbe816124b4565b8152818501358582015260408083013590820152606080830135612be1816124b4565b90820152835291830191608001612b92565b509695505050505050565b600060208284031215612c1057600080fd5b813567ffffffffffffffff80821115612c2857600080fd5b908301906101208286031215612c3d57600080fd5b612c45612926565b823582811115612c5457600080fd5b612c6087828601612a26565b8252506020830135602082015260408301356040820152612c83606084016124d6565b606082015260808301356080820152612c9f8660a08501612ae0565b60a082015261010083013582811115612cb757600080fd5b612cc387828601612b49565b60c08301525095945050505050565b60008451612ce481846020890161259d565b845190830190612cf881836020890161259d565b8451910190612d0b81836020880161259d565b0195945050505050565b6020815260006125036020830184612676565b60006020808385031215612d3b57600080fd5b825167ffffffffffffffff811115612d5257600080fd5b8301601f81018513612d6357600080fd5b8051612d71612b6a82612b25565b81815260609182028301840191848201919088841115612d9057600080fd5b938501935b83851015612dec5780858a031215612dad5760008081fd5b612db56128da565b8551612dc0816124b4565b81528587015187820152604080870151612dd9816124b4565b9082015283529384019391850191612d95565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561206657612066612df8565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611d2d6040830184612676565b7f4578636c757369766544757463684f72646572207769746e6573732900000000815260008551612ea181601c850160208a0161259d565b855190830190612eb881601c840160208a0161259d565b8551910190612ece81601c84016020890161259d565b8451910190612ee481601c84016020880161259d565b01601c019695505050505050565b6000610140612f22838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612f636080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612f98818401866125c1565b90508281036101208401526122f081856125c1565b8181038181111561206657612066612df8565b8181036000831280158383131683831282161715612fe057612fe0612df8565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361301857613018612df8565b5060000390565b808201828112600083128015821682158216171561303f5761303f612df8565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220bc5333daef38e70e8a6ea612125c596542d6e839278b2c906bbabc6c6e70329b64736f6c63430008180033608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212204be2476098894d6ec3c58573f3d1bb2c5345602a6172512ca6fdf7ae53f7f66164736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x94W[`\0\x80\xFD[\0[a\0Pa\0\xB7V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA7\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8BV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01?W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01SW=`\0\x80>=`\0\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;`\0\x03\x90Pa\x01zWa\x01xa\x03\xA1V[P[`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xB1\x90a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x01\xF5W=`\0\x80>=`\0\xFD[P\x90Pa\x027`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[`\0\x80`\0\x1B`@Qa\x02I\x90a\x05;V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02iW=`\0\x80>=`\0\xFD[P\x90Pa\x02\xAB`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\x16W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03*W=`\0\x80>=`\0\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[`\0\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aF\xD8a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04$\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\xACV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04>W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04RW=`\0\x80>=`\0\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xFD\x82\x82`@Q`$\x01a\x04\x82\x92\x91\x90a\x05\xE3V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x05\x01V[PPV[a\x05\n\x81a\x05\rV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a2\xA3\x80a\x06\x1C\x839\x01\x90V[a\x0E\x19\x80a8\xBF\x839\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x05nW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05RV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x05\xDB`@\x83\x01\x84a\x05HV[\x94\x93PPPPV[`@\x81R`\0a\x05\xF6`@\x83\x01\x85a\x05HV[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x002\xA38\x03\x80b\x002\xA3\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa1\x8Ab\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x18|\x01Ra1\x8A`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a#XV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\x06V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a$HV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a$\xE6V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\nV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a$\xE6V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a%nV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB3V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a(7V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BbV[a\x04\xB5\x81a\x0B\xB3V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB3V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia%nV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BbV[a\x08\x86\x81a\x0B\xB3V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a(uV[\x81\x01\x90a\n|\x91\x90a+\xFEV[\x90Pa\n\x87\x81a\r\x06V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xF1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\xC3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a(uV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\xAAV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B\\\x92\x85\x92\x91\x90a\x12|V[P\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x83Wa\x0B\x83a%nV[` \x02` \x01\x01Q\x90Pa\x0B\x96\x81a\x12\x89V[a\x0B\xA0\x813a\x17yV[a\x0B\xAA\x813a\x18zV[P`\x01\x01a\x0BgV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF5W`\0\x83\x82\x81Q\x81\x10a\x0B\xD4Wa\x0B\xD4a%nV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CUW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x0BWa\x0C\x0Ba%nV[` \x02` \x01\x01Q\x90Pa\x0CL\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B\xD7\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xEBV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9EWa\x0C\x9Ea%nV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB8V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1C\x1EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\rIW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xC1W\x81`\xC0\x01Q\x81\x81Q\x81\x10a\r\x84Wa\r\x84a%nV[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\r\xA6Wa\r\xA6a%nV[` \x02` \x01\x01Q` \x01Q\x14a\r\xE9W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\raV[a\x0E+`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EmW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0E\x83\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xE1Wa\x0E\xE1a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0FJW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xFFW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\xA1Wa\x0F|\x86\x82\x81Q\x81\x10a\x0FmWa\x0Fma%nV[` \x02` \x01\x01Q\x86\x86a\x1D5V[\x83\x82\x81Q\x81\x10a\x0F\x8EWa\x0F\x8Ea%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0FPV[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R`\0\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a0H` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919`@Q` \x01a\x11\x9C\x93\x92\x91\x90a,\xD2V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\xBF\x83`\0\x01Qa\x1E\x05V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q`\0\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xFB\x8B`\xC0\x01Qa\x1E\x9FV[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06}\x84\x84\x84\x84Ba\x1F=V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\xA9WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x13\0\x90\x85\x90`\x04\x01a-\x15V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13c\x91\x90\x81\x01\x90a-(V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x13{\x82\x84a.'V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x93Wa\x13\x93a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFCW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB1W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x14MW\x85`@\x01Q\x81\x81Q\x81\x10a\x14 Wa\x14 a%nV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x14:Wa\x14:a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x02V[P`\0\x80`\0[\x84\x81\x10\x15a\x17hW`\0\x87\x82\x81Q\x81\x10a\x14pWa\x14pa%nV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x15.W\x88\x81\x81Q\x81\x10a\x14\x97Wa\x14\x97a%nV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15&W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x14}V[P`\0\x80[\x88\x81\x10\x15a\x15\xEFW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x15SWa\x15Sa%nV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\xE6W\x85\x15a\x15\xD0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\xDF\x90\x84a.'V[\x92P`\x01\x96P[P`\x01\x01a\x153V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16hW\x84\x15a\x16OW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16a\x90\x82a.'V[\x90P`\x01\x93P[\x80`\0\x03a\x16\xBDW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x16\xCB\x81`\x05a'\x10a\x1F\xE9V[\x82` \x01Q\x11\x15a\x17>W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17SWa\x17Sa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14TV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17\xCAW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x18F\x90\x84\x90\x86\x90`\x04\x01a.:V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18^W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x19:\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x19D\x85\x85a %V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a0\xC8\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a0\x9A`.\x919`@Q` \x01a\x1B<\x94\x93\x92\x91\x90a.iV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B\xA9\x96\x95\x94\x93\x92`\x04\x01a.\xF2V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1B\xC3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xFCWa\x03_\x82\x82a\x1C\x1EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a lV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1CxW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1C}V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1C\xC8WP\x83a\x1D-V[\x82\x82\x11a\x1D\x01W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1D\x0FWP\x82a\x1D-V[B\x83\x10a\x1D\x1DWP\x83a\x1D-V[a\x1D*\x83\x83B\x88\x88a!WV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x94W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D\xAA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12_\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBFWa\x1E\xBFa%?V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE9W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F.W`\0a\x1F\x1C\x85\x83\x81Q\x81\x10a\x1F\x0FWa\x1F\x0Fa%nV[` \x02` \x01\x01Qa!rV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xEFV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1FH\x84\x84\x83a!\xE9V[a\x1F\xE2W\x81a\x1F\x83W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a\x1F\xDFW`\0\x82\x82\x81Q\x81\x10a\x1F\xA8Wa\x1F\xA8a%nV[` \x02` \x01\x01Q\x90Pa\x1F\xD1\x85a'\x10a\x1F\xC3\x91\x90a.'V[` \x83\x01Q\x90a'\x10a\"4V[` \x90\x91\x01R`\x01\x01a\x1F\x8BV[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a \x1EW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x1F\xE2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0a!f\x86\x86\x86\x86\x86a\"xV[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12_\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\"\rWP\x82\x82\x11[\x80a\x1D-WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\"iW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a\"\x88WP\x80a!iV[`\0a\"\x94\x87\x86a/\xADV[\x90P`\0a\"\xA2\x88\x88a/\xADV[\x90P`\0\x85\x85\x12\x15a\"\xD4Wa\"\xC4\x83\x83a\"\xBD\x88\x8Aa/\xC0V[\x91\x90a\x1F\xE9V[a\"\xCD\x90a/\xE7V[\x90Pa\"\xE6V[a\"\xE3\x83\x83a\"\xBD\x89\x89a/\xC0V[\x90P[a\"\xF0\x81\x87a0\x1FV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a\x0B\\W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a#!W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a#mW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x85W`\0\x80\xFD[a#\x91\x87\x83\x88\x01a\"\xFDV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#\xA7W`\0\x80\xFD[Pa#\xB4\x86\x82\x87\x01a#\x0FV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a#\xD3W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xEBW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a$\x19W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$0W`\0\x80\xFD[a$<\x85\x82\x86\x01a#\xC1V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a$^W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$vW`\0\x80\xFD[a$\x82\x88\x83\x89\x01a#\xC1V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\x9BW`\0\x80\xFD[Pa$\xA8\x87\x82\x88\x01a#\x0FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a$\xE1\x81a$\xB4V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a$\xF8W`\0\x80\xFD[\x815a%\x03\x81a$\xB4V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\x1CW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%3W`\0\x80\xFD[a\x1D-\x84\x82\x85\x01a\"\xFDV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a%\xB8W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xA0V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra%\xD9\x81` \x86\x01` \x86\x01a%\x9DV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a&kW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a& V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&\xEAa\x01\xA0\x85\x01\x82a%\xC1V[\x90P` \x83\x01Qa'(` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'@\x82\x82a&\x0BV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'Z\x82\x82a%\xC1V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a'\xE6W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'\xD4\x86\x83Qa&vV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\x9AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(kW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xAAW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xC5W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#QW`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\x90Wa)\x90a%?V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a)\xA9W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\xC3Wa)\xC3a%?V[a)\xF4` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)IV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\tW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a*8W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\\Wa*\\a%?V[\x81`@R\x82\x93P\x845\x91Pa*p\x82a$\xB4V[\x90\x82R` \x84\x015\x90a*\x82\x82a$\xB4V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xAC\x82a$\xB4V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xC6W`\0\x80\xFD[Pa*\xD3\x85\x82\x86\x01a)\x98V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a*\xF2W`\0\x80\xFD[a*\xFAa(\xDAV[\x90P\x815a+\x07\x81a$\xB4V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+?Wa+?a%?V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a+ZW`\0\x80\xFD[\x815` a+oa+j\x83a+%V[a)IV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\x8EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+\xF3W`\x80\x81\x89\x03\x12\x15a+\xABW`\0\x80\x81\xFD[a+\xB3a)\x03V[\x815a+\xBE\x81a$\xB4V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a+\xE1\x81a$\xB4V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\x92V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\x10W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,(W`\0\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a,=W`\0\x80\xFD[a,Ea)&V[\x825\x82\x81\x11\x15a,TW`\0\x80\xFD[a,`\x87\x82\x86\x01a*&V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra,\x83``\x84\x01a$\xD6V[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra,\x9F\x86`\xA0\x85\x01a*\xE0V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a,\xB7W`\0\x80\xFD[a,\xC3\x87\x82\x86\x01a+IV[`\xC0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa,\xE4\x81\x84` \x89\x01a%\x9DV[\x84Q\x90\x83\x01\x90a,\xF8\x81\x83` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a-\x0B\x81\x83` \x88\x01a%\x9DV[\x01\x95\x94PPPPPV[` \x81R`\0a%\x03` \x83\x01\x84a&vV[`\0` \x80\x83\x85\x03\x12\x15a-;W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-RW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-cW`\0\x80\xFD[\x80Qa-qa+j\x82a+%V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a-\x90W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-\xECW\x80\x85\x8A\x03\x12\x15a-\xADW`\0\x80\x81\xFD[a-\xB5a(\xDAV[\x85Qa-\xC0\x81a$\xB4V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\xD9\x81a$\xB4V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a-\x95V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a fWa fa-\xF8V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1D-`@\x83\x01\x84a&vV[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R`\0\x85Qa.\xA1\x81`\x1C\x85\x01` \x8A\x01a%\x9DV[\x85Q\x90\x83\x01\x90a.\xB8\x81`\x1C\x84\x01` \x8A\x01a%\x9DV[\x85Q\x91\x01\x90a.\xCE\x81`\x1C\x84\x01` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a.\xE4\x81`\x1C\x84\x01` \x88\x01a%\x9DV[\x01`\x1C\x01\x96\x95PPPPPPV[`\0a\x01@a/\"\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra/c`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra/\x98\x81\x84\x01\x86a%\xC1V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"\xF0\x81\x85a%\xC1V[\x81\x81\x03\x81\x81\x11\x15a fWa fa-\xF8V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\xE0Wa/\xE0a-\xF8V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a0\x18Wa0\x18a-\xF8V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a0?Wa0?a-\xF8V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xBCS3\xDA\xEF8\xE7\x0E\x8An\xA6\x12\x12\\YeB\xD6\xE89'\x8B,\x90k\xBA\xBClnp2\x9BdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 K\xE2G`\x98\x89Mn\xC3\xC5\x85s\xF3\xD1\xBB,SE`*arQ,\xA6\xFD\xF7\xAES\xF7\xF6adsolcC\0\x08\x18\x003", + ); + /**```solidity +struct ExclusiveDutchDeployment { address permit2; address reactor; address quoter; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ExclusiveDutchDeployment { + pub permit2: alloy::sol_types::private::Address, + pub reactor: alloy::sol_types::private::Address, + pub quoter: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: ExclusiveDutchDeployment) -> Self { + (value.permit2, value.reactor, value.quoter) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for ExclusiveDutchDeployment { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit2: tuple.0, + reactor: tuple.1, + quoter: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ExclusiveDutchDeployment { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ExclusiveDutchDeployment { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.permit2, + ), + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.quoter, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ExclusiveDutchDeployment { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ExclusiveDutchDeployment { + const NAME: &'static str = "ExclusiveDutchDeployment"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ExclusiveDutchDeployment(address permit2,address reactor,address quoter)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.permit2, + ) + .0, + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.quoter, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ExclusiveDutchDeployment { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.permit2, + ) + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.quoter, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.permit2, + out, + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.quoter, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. +```solidity +function IS_SCRIPT() external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `run()` and selector `0xc0406226`. +```solidity +function run() external returns (ExclusiveDutchDeployment memory deployment); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runReturn { + pub deployment: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ExclusiveDutchDeployment,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runReturn) -> Self { + (value.deployment,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { deployment: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for runCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = runReturn; + type ReturnTuple<'a> = (ExclusiveDutchDeployment,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "run()"; + const SELECTOR: [u8; 4] = [192u8, 64u8, 98u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setUp()` and selector `0x0a9254e4`. +```solidity +function setUp() external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setUpCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setUpReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setUp()"; + const SELECTOR: [u8; 4] = [10u8, 146u8, 84u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`DeployExclusiveDutch`](self) function calls. + pub enum DeployExclusiveDutchCalls { + IS_SCRIPT(IS_SCRIPTCall), + run(runCall), + setUp(setUpCall), + } + #[automatically_derived] + impl DeployExclusiveDutchCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [10u8, 146u8, 84u8, 228u8], + [192u8, 64u8, 98u8, 38u8], + [248u8, 204u8, 191u8, 71u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DeployExclusiveDutchCalls { + const NAME: &'static str = "DeployExclusiveDutchCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => { + ::SELECTOR + } + Self::run(_) => ::SELECTOR, + Self::setUp(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployExclusiveDutchCalls::setUp) + } + setUp + }, + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployExclusiveDutchCalls::run) + } + run + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployExclusiveDutchCalls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::run(inner) => { + ::abi_encoded_size(inner) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::run(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DeployExclusiveDutch`](self) contract instance. + +See the [wrapper's documentation](`DeployExclusiveDutchInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DeployExclusiveDutchInstance { + DeployExclusiveDutchInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DeployExclusiveDutchInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + DeployExclusiveDutchInstance::::deploy_builder(provider) + } + /**A [`DeployExclusiveDutch`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DeployExclusiveDutch`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DeployExclusiveDutchInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DeployExclusiveDutchInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DeployExclusiveDutchInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployExclusiveDutchInstance { + /**Creates a new wrapper around an on-chain [`DeployExclusiveDutch`](self) contract instance. + +See the [wrapper's documentation](`DeployExclusiveDutchInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DeployExclusiveDutchInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DeployExclusiveDutchInstance { + DeployExclusiveDutchInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployExclusiveDutchInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`run`] function. + pub fn run(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&runCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployExclusiveDutchInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/deploymultifillerexecutor.rs b/crates/bindings-uniswapx/src/deploymultifillerexecutor.rs new file mode 100644 index 0000000..2f83dd3 --- /dev/null +++ b/crates/bindings-uniswapx/src/deploymultifillerexecutor.rs @@ -0,0 +1,749 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DeployMultiFillerExecutor { + function IS_SCRIPT() external view returns (bool); + function run() external returns (address executor); + function setUp() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "run", + "inputs": [], + "outputs": [ + { + "name": "executor", + "type": "address", + "internalType": "contract MultiFillerSwapRouter02Executor" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DeployMultiFillerExecutor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50612d49806100316000396000f3fe60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c0406226146200004d578063f8ccbf471462000081575b600080fd5b005b62000057620000a6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600c54620000959062010000900460ff1681565b604051901515815260200162000078565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f464f554e4452595f505249564154455f4b45590000000000000000000000000060448201526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa15801562000142573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000168919062000b00565b6040517f350d56bf000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f464f554e4452595f4d554c544946494c4c45525f52454143544f525f554e494360448201527f4841494e000000000000000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156200022a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000250919062000b44565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f464f554e4452595f53574150524f5554455230325f55430000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015620002ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000313919062000b44565b6040517f4d7baf0600000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f464f554e4452595f4d554c544946494c4c45525f4144445245535345535f454e60448201527f434f4445440000000000000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90634d7baf0690608401600060405180830381865afa158015620003d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200041e919081019062000c10565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f464f554e4452595f4d554c544946494c4c45525f4445504c4f595f4f574e455260448201527f5f50524f440000000000000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015620004e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000507919062000b44565b905060008280602001905181019062000521919062000ccd565b9050620005646040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250836200090e565b620005a56040518060400160405280600781526020017f72656163746f7200000000000000000000000000000000000000000000000000815250866200090e565b620005e56040518060400160405280600e81526020017f696e697420636f64652068617368000000000000000000000000000000000000815250620009a7565b600060405180602001620005f99062000af2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905262000642908490899087908a9060200162000d87565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000680929160200162000e12565b6040516020818303038152906040529050620006a3818051906020012062000a3d565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101889052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b1580156200070a57600080fd5b505af11580156200071f573d6000803e3d6000fd5b505050507f6df8bfe7bd972f95e2aacb4320733e99c3c961125f069fc9d64426d8e743c20160001b82878588604051620007599062000af2565b62000768949392919062000d87565b8190604051809103906000f590508015801562000789573d6000803e3d6000fd5b5097507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007f857600080fd5b505af11580156200080d573d6000803e3d6000fd5b50505050620008526040518060400160405280601481526020017f53776170526f7574657230324578656375746f72000000000000000000000000815250896200090e565b620009046040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508973ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008fe919062000b44565b6200090e565b5050505050505090565b620009a382826040516024016200092792919062000e91565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af3330000000000000000000000000000000000000000000000000000000017905262000acc565b5050565b62000a3a81604051602401620009be919062000ecb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262000acc565b50565b62000a3a8160405160240162000a5591815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f27b7cf85000000000000000000000000000000000000000000000000000000001790525b62000a3a8160006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b611e338062000ee183390190565b60006020828403121562000b1357600080fd5b5051919050565b805173ffffffffffffffffffffffffffffffffffffffff8116811462000b3f57600080fd5b919050565b60006020828403121562000b5757600080fd5b62000b628262000b1a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562000be25762000be262000b69565b604052919050565b60005b8381101562000c0757818101518382015260200162000bed565b50506000910152565b60006020828403121562000c2357600080fd5b815167ffffffffffffffff8082111562000c3c57600080fd5b818401915084601f83011262000c5157600080fd5b81518181111562000c665762000c6662000b69565b62000c9960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160162000b98565b915080825285602082850101111562000cb157600080fd5b62000cc481602084016020860162000bea565b50949350505050565b6000602080838503121562000ce157600080fd5b825167ffffffffffffffff8082111562000cfa57600080fd5b818501915085601f83011262000d0f57600080fd5b81518181111562000d245762000d2462000b69565b8060051b915062000d3784830162000b98565b818152918301840191848101908884111562000d5257600080fd5b938501935b8385101562000d7b5762000d6b8562000b1a565b8252938501939085019062000d57565b98975050505050505050565b6080808252855190820181905260009060209060a0840190828901845b8281101562000dd857815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010162000da4565b50505073ffffffffffffffffffffffffffffffffffffffff9687166020850152948616604084015250509216606090920191909152919050565b6000835162000e2681846020880162000bea565b83519083019062000e3c81836020880162000bea565b01949350505050565b6000815180845262000e5f81602086016020860162000bea565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152600062000ea6604083018562000e45565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60208152600062000b62602083018462000e4556fe60c06040523480156200001157600080fd5b5060405162001e3338038062001e338339810160408190526200003491620001c1565b600080546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060005b8451811015620000df576001806000878481518110620000a457620000a4620002cc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010162000080565b50600280546001600160a01b0319166001600160a01b038581169190911790915581166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001699190620002e2565b6001600160a01b031660a052506200030992505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620001ac57600080fd5b50565b8051620001bc8162000196565b919050565b60008060008060808587031215620001d857600080fd5b84516001600160401b0380821115620001f057600080fd5b818701915087601f8301126200020557600080fd5b81516020828211156200021c576200021c62000180565b8160051b604051601f19603f8301168101818110868211171562000244576200024462000180565b60405292835281830193508481018201928b8411156200026357600080fd5b948201945b838610156200028c576200027c86620001af565b8552948201949382019362000268565b98506200029d9050898201620001af565b965050505050620002b160408601620001af565b9150620002c160608601620001af565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b600060208284031215620002f557600080fd5b8151620003028162000196565b9392505050565b60805160a051611ae86200034b600039600081816109870152610a390152600081816102e901528181610417015281816106b801526107820152611ae86000f3fe6080604052600436106100c05760003560e01c80638da5cb5b11610074578063d0f2d8ac1161004e578063d0f2d8ac14610211578063e5135ec614610231578063f2fde38b1461025157600080fd5b80638da5cb5b1461016e5780639456fbcc146101c4578063ab572650146101e457600080fd5b806363fb0b96116100a557806363fb0b961461010e578063690d83201461012e57806389a3f1361461014e57600080fd5b8063585da628146100cc5780635c8f9bf6146100ee57600080fd5b366100c757005b600080fd5b3480156100d857600080fd5b506100ec6100e73660046111d8565b610271565b005b3480156100fa57600080fd5b506100ec610109366004611266565b610506565b34801561011a57600080fd5b506100ec61012936600461128a565b610627565b34801561013a57600080fd5b506100ec610149366004611266565b610847565b34801561015a57600080fd5b506100ec610169366004611266565b6108d5565b34801561017a57600080fd5b5060005461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101d057600080fd5b506100ec6101df3660046112ea565b610ab8565b3480156101f057600080fd5b5060025461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561021d57600080fd5b506100ec61022c366004611323565b610beb565b34801561023d57600080fd5b506100ec61024c3660046111d8565b610cc0565b34801561025d57600080fd5b506100ec61026c366004611266565b610da1565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102c2576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806102d2848601866114f4565b92509250925060005b8351811015610370576103687f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061033b5761033b61162a565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610e929092919063ffffffff16565b6001016102db565b5060005b82518110156103d95760025483516103d19173ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908590811061033b5761033b61162a565b600101610374565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc9061046e907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161167d565b6000604051808303816000875af115801561048d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104d3919081019061173b565b5047156104fd576002546104fd9073ffffffffffffffffffffffffffffffffffffffff1647610f67565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff808516825290921660208301527f3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b60005b838110156107445761073c7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87878581811061070a5761070a61162a565b905060200201602081019061071f9190611266565b73ffffffffffffffffffffffffffffffffffffffff169190610e92565b6001016106ab565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906107db907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869086906004016118d5565b6000604051808303816000875af11580156107fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610840919081019061173b565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6108d28147611006565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a079190611966565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b50505050610ab48247611006565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610ab490829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611966565b73ffffffffffffffffffffffffffffffffffffffff8516919061107b565b3360009081526001602052604081205460ff1615159003610c38576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d33588490610c92908690869086906004016119ca565b600060405180830381600087803b158015610cac57600080fd5b505af11580156104fd573d6000803e3d6000fd5b3360009081526001602052604081205460ff1615159003610d0d576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906313fb72c790610d699087908790879087906004016119f0565b600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610583565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610fc1576040519150601f19603f3d011682016040523d82523d6000602084013e610fc6565b606091505b5050905080611001576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080611001576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610583565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610583565b60008083601f84011261115c57600080fd5b50813567ffffffffffffffff81111561117457600080fd5b6020830191508360208260051b850101111561118f57600080fd5b9250929050565b60008083601f8401126111a857600080fd5b50813567ffffffffffffffff8111156111c057600080fd5b60208301915083602082850101111561118f57600080fd5b600080600080604085870312156111ee57600080fd5b843567ffffffffffffffff8082111561120657600080fd5b6112128883890161114a565b9096509450602087013591508082111561122b57600080fd5b5061123887828801611196565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108d257600080fd5b60006020828403121561127857600080fd5b813561128381611244565b9392505050565b600080600080604085870312156112a057600080fd5b843567ffffffffffffffff808211156112b857600080fd5b6112c48883890161114a565b909650945060208701359150808211156112dd57600080fd5b506112388782880161114a565b600080604083850312156112fd57600080fd5b823561130881611244565b9150602083013561131881611244565b809150509250929050565b60008060006040848603121561133857600080fd5b833567ffffffffffffffff8082111561135057600080fd5b908501906040828803121561136457600080fd5b9093506020850135908082111561137a57600080fd5b5061138786828701611196565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561140a5761140a611394565b604052919050565b600067ffffffffffffffff82111561142c5761142c611394565b5060051b60200190565b600082601f83011261144757600080fd5b8135602061145c61145783611412565b6113c3565b8083825260208201915060208460051b87010193508684111561147e57600080fd5b602086015b848110156114a357803561149681611244565b8352918301918301611483565b509695505050505050565b600067ffffffffffffffff8211156114c8576114c8611394565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060006060848603121561150957600080fd5b833567ffffffffffffffff8082111561152157600080fd5b61152d87838801611436565b945060209150818601358181111561154457600080fd5b61155088828901611436565b9450506040808701358281111561156657600080fd5b8701601f8101891361157757600080fd5b803561158561145782611412565b81815260059190911b8201850190858101908b8311156115a457600080fd5b8684015b83811015611618578035878111156115c05760008081fd5b8501603f81018e136115d25760008081fd5b888101356115e2611457826114ae565b8181528f898385010111156115f75760008081fd5b818984018c83013760009181018b01919091528452509187019187016115a8565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561167457818101518382015260200161165c565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b8281101561172d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452815180518088526116f081888a01898501611659565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016969096018501955092840192908401906001016116ab565b509398975050505050505050565b6000602080838503121561174e57600080fd5b825167ffffffffffffffff8082111561176657600080fd5b818501915085601f83011261177a57600080fd5b815161178861145782611412565b81815260059190911b830184019084810190888311156117a757600080fd5b8585015b8381101561181b578051858111156117c35760008081fd5b8601603f81018b136117d55760008081fd5b8781015160406117e7611457836114ae565b8281528d828486010111156117fc5760008081fd5b61180b838c8301848701611659565b86525050509186019186016117ab565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126118a657600080fd5b830160208101925035905067ffffffffffffffff8111156118c657600080fd5b80360382131561118f57600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b87811015611958577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018352611939828a611871565b611944878284611828565b965050509183019190830190600101611900565b509298975050505050505050565b60006020828403121561197857600080fd5b5051919050565b600061198b8283611871565b6040855261199d604086018284611828565b9150506119ad6020840184611871565b85830360208701526119c0838284611828565b9695505050505050565b6040815260006119dd604083018661197f565b82810360208401526119c0818587611828565b6040808252810184905260006060600586901b830181019083018783805b89811015611a90577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112611a6e578283fd5b611a7a868d830161197f565b9550506020938401939290920191600101611a0e565b505050508281036020840152611aa7818587611828565b97965050505050505056fea26469706673582212200b39cb1d4ed27a99075eb0ba2bd0956359096764fc5d36462a8d461ef0c3820864736f6c63430008180033a2646970667358221220278a9d7e45e34340d84a33fa478c7f6d15ed79646679ffb21e5c774760a0629664736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pa-I\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`\x046\x10b\0\0FW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14b\0\0KW\x80c\xC0@b&\x14b\0\0MW\x80c\xF8\xCC\xBFG\x14b\0\0\x81W[`\0\x80\xFD[\0[b\0\0Wb\0\0\xA6V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTb\0\0\x95\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01b\0\0xV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01h\x91\x90b\0\x0B\0V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FFOUNDRY_MULTIFILLER_REACTOR_UNIC`D\x82\x01R\x7FHAIN\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02P\x91\x90b\0\x0BDV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02_UC\0\0\0\0\0\0\0\0\0`D\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\x13\x91\x90b\0\x0BDV[`@Q\x7FM{\xAF\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FFOUNDRY_MULTIFILLER_ADDRESSES_EN`D\x82\x01R\x7FCODED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cM{\xAF\x06\x90`\x84\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Rb\0\x04\x1E\x91\x90\x81\x01\x90b\0\x0C\x10V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FFOUNDRY_MULTIFILLER_DEPLOY_OWNER`D\x82\x01R\x7F_PROD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x04\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x07\x91\x90b\0\x0BDV[\x90P`\0\x82\x80` \x01\x90Q\x81\x01\x90b\0\x05!\x91\x90b\0\x0C\xCDV[\x90Pb\0\x05d`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x83b\0\t\x0EV[b\0\x05\xA5`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7Freactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86b\0\t\x0EV[b\0\x05\xE5`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01\x7Finit code hash\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RPb\0\t\xA7V[`\0`@Q\x80` \x01b\0\x05\xF9\x90b\0\n\xF2V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x82\x82\x03\x81\x01\x83R`\x1F\x90\x91\x01\x16`@\x81\x90Rb\0\x06B\x90\x84\x90\x89\x90\x87\x90\x8A\x90` \x01b\0\r\x87V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x06\x80\x92\x91` \x01b\0\x0E\x12V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x06\xA3\x81\x80Q\x90` \x01 b\0\n=V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x88\x90Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x07\nW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x07\x1FW=`\0\x80>=`\0\xFD[PPPP\x7Fm\xF8\xBF\xE7\xBD\x97/\x95\xE2\xAA\xCBC s>\x99\xC3\xC9a\x12_\x06\x9F\xC9\xD6D&\xD8\xE7C\xC2\x01`\0\x1B\x82\x87\x85\x88`@Qb\0\x07Y\x90b\0\n\xF2V[b\0\x07h\x94\x93\x92\x91\x90b\0\r\x87V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15b\0\x07\x89W=`\0\x80>=`\0\xFD[P\x97P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x07\xF8W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x08\rW=`\0\x80>=`\0\xFD[PPPPb\0\x08R`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x89b\0\t\x0EV[b\0\t\x04`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x89s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x08\xD8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x08\xFE\x91\x90b\0\x0BDV[b\0\t\x0EV[PPPPPPP\x90V[b\0\t\xA3\x82\x82`@Q`$\x01b\0\t'\x92\x91\x90b\0\x0E\x91V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Rb\0\n\xCCV[PPV[b\0\n:\x81`@Q`$\x01b\0\t\xBE\x91\x90b\0\x0E\xCBV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7FA0O\xAC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Rb\0\n\xCCV[PV[b\0\n:\x81`@Q`$\x01b\0\nU\x91\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F'\xB7\xCF\x85\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90R[b\0\n:\x81`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x1E3\x80b\0\x0E\xE1\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15b\0\x0B\x13W`\0\x80\xFD[PQ\x91\x90PV[\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14b\0\x0B?W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15b\0\x0BWW`\0\x80\xFD[b\0\x0Bb\x82b\0\x0B\x1AV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15b\0\x0B\xE2Wb\0\x0B\xE2b\0\x0BiV[`@R\x91\x90PV[`\0[\x83\x81\x10\x15b\0\x0C\x07W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x0B\xEDV[PP`\0\x91\x01RV[`\0` \x82\x84\x03\x12\x15b\0\x0C#W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\0\x0C=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x02\xE2V[`\x01`\x01`\xA0\x1B\x03\x16`\xA0RPb\0\x03\t\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01\xACW`\0\x80\xFD[PV[\x80Qb\0\x01\xBC\x81b\0\x01\x96V[\x91\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x01\xD8W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xF0W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12b\0\x02\x05W`\0\x80\xFD[\x81Q` \x82\x82\x11\x15b\0\x02\x1CWb\0\x02\x1Cb\0\x01\x80V[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15b\0\x02DWb\0\x02Db\0\x01\x80V[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x8B\x84\x11\x15b\0\x02cW`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15b\0\x02\x8CWb\0\x02|\x86b\0\x01\xAFV[\x85R\x94\x82\x01\x94\x93\x82\x01\x93b\0\x02hV[\x98Pb\0\x02\x9D\x90P\x89\x82\x01b\0\x01\xAFV[\x96PPPPPb\0\x02\xB1`@\x86\x01b\0\x01\xAFV[\x91Pb\0\x02\xC1``\x86\x01b\0\x01\xAFV[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15b\0\x02\xF5W`\0\x80\xFD[\x81Qb\0\x03\x02\x81b\0\x01\x96V[\x93\x92PPPV[`\x80Q`\xA0Qa\x1A\xE8b\0\x03K`\09`\0\x81\x81a\t\x87\x01Ra\n9\x01R`\0\x81\x81a\x02\xE9\x01R\x81\x81a\x04\x17\x01R\x81\x81a\x06\xB8\x01Ra\x07\x82\x01Ra\x1A\xE8`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xC0W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0tW\x80c\xD0\xF2\xD8\xAC\x11a\0NW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x11W\x80c\xE5\x13^\xC6\x14a\x021W\x80c\xF2\xFD\xE3\x8B\x14a\x02QW`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01nW\x80c\x94V\xFB\xCC\x14a\x01\xC4W\x80c\xABW&P\x14a\x01\xE4W`\0\x80\xFD[\x80cc\xFB\x0B\x96\x11a\0\xA5W\x80cc\xFB\x0B\x96\x14a\x01\x0EW\x80ci\r\x83 \x14a\x01.W\x80c\x89\xA3\xF16\x14a\x01NW`\0\x80\xFD[\x80cX]\xA6(\x14a\0\xCCW\x80c\\\x8F\x9B\xF6\x14a\0\xEEW`\0\x80\xFD[6a\0\xC7W\0[`\0\x80\xFD[4\x80\x15a\0\xD8W`\0\x80\xFD[Pa\0\xECa\0\xE76`\x04a\x11\xD8V[a\x02qV[\0[4\x80\x15a\0\xFAW`\0\x80\xFD[Pa\0\xECa\x01\t6`\x04a\x12fV[a\x05\x06V[4\x80\x15a\x01\x1AW`\0\x80\xFD[Pa\0\xECa\x01)6`\x04a\x12\x8AV[a\x06'V[4\x80\x15a\x01:W`\0\x80\xFD[Pa\0\xECa\x01I6`\x04a\x12fV[a\x08GV[4\x80\x15a\x01ZW`\0\x80\xFD[Pa\0\xECa\x01i6`\x04a\x12fV[a\x08\xD5V[4\x80\x15a\x01zW`\0\x80\xFD[P`\0Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xD0W`\0\x80\xFD[Pa\0\xECa\x01\xDF6`\x04a\x12\xEAV[a\n\xB8V[4\x80\x15a\x01\xF0W`\0\x80\xFD[P`\x02Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\0\xECa\x02,6`\x04a\x13#V[a\x0B\xEBV[4\x80\x15a\x02=W`\0\x80\xFD[Pa\0\xECa\x02L6`\x04a\x11\xD8V[a\x0C\xC0V[4\x80\x15a\x02]W`\0\x80\xFD[Pa\0\xECa\x02l6`\x04a\x12fV[a\r\xA1V[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02\xC2W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02\xD2\x84\x86\x01\x86a\x14\xF4V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x03pWa\x03h\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03;Wa\x03;a\x16*V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0E\x92\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02\xDBV[P`\0[\x82Q\x81\x10\x15a\x03\xD9W`\x02T\x83Qa\x03\xD1\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x85\x90\x81\x10a\x03;Wa\x03;a\x16*V[`\x01\x01a\x03tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x04n\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x16}V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\x8DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xD3\x91\x90\x81\x01\x90a\x17;V[PG\x15a\x04\xFDW`\x02Ta\x04\xFD\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16Ga\x0FgV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x82R\x90\x92\x16` \x83\x01R\x7F?Gi\xCBf\xE4,\x90\x99\x80\x90'}]r\xEEh>\xF1v\xA1\xF5o\xB1\x852\x8FUJ*\xB7\xDC\x91\x01`@Q\x80\x91\x03\x90\xA1`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0[\x83\x81\x10\x15a\x07DWa\x07<\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x07\nWa\x07\na\x16*V[\x90P` \x02\x01` \x81\x01\x90a\x07\x1F\x91\x90a\x12fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0E\x92V[`\x01\x01a\x06\xABV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x07\xDB\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x18\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x08@\x91\x90\x81\x01\x90a\x17;V[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xC8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[a\x08\xD2\x81Ga\x10\x06V[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\tVW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xE3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x07\x91\x90a\x19fV[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\n\xA6W=`\0\x80>=`\0\xFD[PPPPa\n\xB4\x82Ga\x10\x06V[PPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\n\xB4\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xA9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xCD\x91\x90a\x19fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x10{V[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C8W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\r3X\x84\x90a\x0C\x92\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x19\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\xACW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xFDW=`\0\x80>=`\0\xFD[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\r\rW`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x13\xFBr\xC7\x90a\ri\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x19\xF0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\x97W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0E\"W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x0F\xC1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0F\xC6V[``\x91P[PP\x90P\x80a\x10\x01W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x10\x01W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80\x83`\x1F\x84\x01\x12a\x11\\W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11tW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x11\xA8W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xC0W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x11\xEEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\x06W`\0\x80\xFD[a\x12\x12\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12+W`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xD2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12xW`\0\x80\xFD[\x815a\x12\x83\x81a\x12DV[\x93\x92PPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x12\xA0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\xB8W`\0\x80\xFD[a\x12\xC4\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12\xDDW`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11JV[`\0\x80`@\x83\x85\x03\x12\x15a\x12\xFDW`\0\x80\xFD[\x825a\x13\x08\x81a\x12DV[\x91P` \x83\x015a\x13\x18\x81a\x12DV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x138W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13PW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x13dW`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x13zW`\0\x80\xFD[Pa\x13\x87\x86\x82\x87\x01a\x11\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x14\nWa\x14\na\x13\x94V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14,Wa\x14,a\x13\x94V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x14GW`\0\x80\xFD[\x815` a\x14\\a\x14W\x83a\x14\x12V[a\x13\xC3V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x14~W`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x14\xA3W\x805a\x14\x96\x81a\x12DV[\x83R\x91\x83\x01\x91\x83\x01a\x14\x83V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14\xC8Wa\x14\xC8a\x13\x94V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15\tW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15!W`\0\x80\xFD[a\x15-\x87\x83\x88\x01a\x146V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x15DW`\0\x80\xFD[a\x15P\x88\x82\x89\x01a\x146V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x15fW`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x15wW`\0\x80\xFD[\x805a\x15\x85a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x15\xA4W`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x16\x18W\x805\x87\x81\x11\x15a\x15\xC0W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x15\xD2W`\0\x80\x81\xFD[\x88\x81\x015a\x15\xE2a\x14W\x82a\x14\xAEV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x15\xF7W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x15\xA8V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x16tW\x81\x81\x01Q\x83\x82\x01R` \x01a\x16\\V[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x17-W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x16\xF0\x81\x88\x8A\x01\x89\x85\x01a\x16YV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x16\xABV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17NW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x17fW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x17zW`\0\x80\xFD[\x81Qa\x17\x88a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x17\xA7W`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x18\x1BW\x80Q\x85\x81\x11\x15a\x17\xC3W`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x17\xD5W`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x17\xE7a\x14W\x83a\x14\xAEV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x17\xFCW`\0\x80\x81\xFD[a\x18\x0B\x83\x8C\x83\x01\x84\x87\x01a\x16YV[\x86RPPP\x91\x86\x01\x91\x86\x01a\x17\xABV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x18\xA6W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x18\xC6W`\0\x80\xFD[\x806\x03\x82\x13\x15a\x11\x8FW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x19XW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x199\x82\x8Aa\x18qV[a\x19D\x87\x82\x84a\x18(V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x19\0V[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x19xW`\0\x80\xFD[PQ\x91\x90PV[`\0a\x19\x8B\x82\x83a\x18qV[`@\x85Ra\x19\x9D`@\x86\x01\x82\x84a\x18(V[\x91PPa\x19\xAD` \x84\x01\x84a\x18qV[\x85\x83\x03` \x87\x01Ra\x19\xC0\x83\x82\x84a\x18(V[\x96\x95PPPPPPV[`@\x81R`\0a\x19\xDD`@\x83\x01\x86a\x19\x7FV[\x82\x81\x03` \x84\x01Ra\x19\xC0\x81\x85\x87a\x18(V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x1A\x90W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x1AnW\x82\x83\xFD[a\x1Az\x86\x8D\x83\x01a\x19\x7FV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x1A\x0EV[PPPP\x82\x81\x03` \x84\x01Ra\x1A\xA7\x81\x85\x87a\x18(V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 \x0B9\xCB\x1DN\xD2z\x99\x07^\xB0\xBA+\xD0\x95cY\tgd\xFC]6F*\x8DF\x1E\xF0\xC3\x82\x08dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 '\x8A\x9D~E\xE3C@\xD8J3\xFAG\x8C\x7Fm\x15\xEDydfy\xFF\xB2\x1E\\wG`\xA0b\x96dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c0406226146200004d578063f8ccbf471462000081575b600080fd5b005b62000057620000a6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600c54620000959062010000900460ff1681565b604051901515815260200162000078565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f464f554e4452595f505249564154455f4b45590000000000000000000000000060448201526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa15801562000142573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000168919062000b00565b6040517f350d56bf000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f464f554e4452595f4d554c544946494c4c45525f52454143544f525f554e494360448201527f4841494e000000000000000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156200022a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000250919062000b44565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f464f554e4452595f53574150524f5554455230325f55430000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015620002ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000313919062000b44565b6040517f4d7baf0600000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f464f554e4452595f4d554c544946494c4c45525f4144445245535345535f454e60448201527f434f4445440000000000000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90634d7baf0690608401600060405180830381865afa158015620003d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200041e919081019062000c10565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f464f554e4452595f4d554c544946494c4c45525f4445504c4f595f4f574e455260448201527f5f50524f440000000000000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015620004e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000507919062000b44565b905060008280602001905181019062000521919062000ccd565b9050620005646040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250836200090e565b620005a56040518060400160405280600781526020017f72656163746f7200000000000000000000000000000000000000000000000000815250866200090e565b620005e56040518060400160405280600e81526020017f696e697420636f64652068617368000000000000000000000000000000000000815250620009a7565b600060405180602001620005f99062000af2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905262000642908490899087908a9060200162000d87565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000680929160200162000e12565b6040516020818303038152906040529050620006a3818051906020012062000a3d565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101889052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b1580156200070a57600080fd5b505af11580156200071f573d6000803e3d6000fd5b505050507f6df8bfe7bd972f95e2aacb4320733e99c3c961125f069fc9d64426d8e743c20160001b82878588604051620007599062000af2565b62000768949392919062000d87565b8190604051809103906000f590508015801562000789573d6000803e3d6000fd5b5097507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007f857600080fd5b505af11580156200080d573d6000803e3d6000fd5b50505050620008526040518060400160405280601481526020017f53776170526f7574657230324578656375746f72000000000000000000000000815250896200090e565b620009046040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508973ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008fe919062000b44565b6200090e565b5050505050505090565b620009a382826040516024016200092792919062000e91565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af3330000000000000000000000000000000000000000000000000000000017905262000acc565b5050565b62000a3a81604051602401620009be919062000ecb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262000acc565b50565b62000a3a8160405160240162000a5591815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f27b7cf85000000000000000000000000000000000000000000000000000000001790525b62000a3a8160006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b611e338062000ee183390190565b60006020828403121562000b1357600080fd5b5051919050565b805173ffffffffffffffffffffffffffffffffffffffff8116811462000b3f57600080fd5b919050565b60006020828403121562000b5757600080fd5b62000b628262000b1a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562000be25762000be262000b69565b604052919050565b60005b8381101562000c0757818101518382015260200162000bed565b50506000910152565b60006020828403121562000c2357600080fd5b815167ffffffffffffffff8082111562000c3c57600080fd5b818401915084601f83011262000c5157600080fd5b81518181111562000c665762000c6662000b69565b62000c9960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160162000b98565b915080825285602082850101111562000cb157600080fd5b62000cc481602084016020860162000bea565b50949350505050565b6000602080838503121562000ce157600080fd5b825167ffffffffffffffff8082111562000cfa57600080fd5b818501915085601f83011262000d0f57600080fd5b81518181111562000d245762000d2462000b69565b8060051b915062000d3784830162000b98565b818152918301840191848101908884111562000d5257600080fd5b938501935b8385101562000d7b5762000d6b8562000b1a565b8252938501939085019062000d57565b98975050505050505050565b6080808252855190820181905260009060209060a0840190828901845b8281101562000dd857815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010162000da4565b50505073ffffffffffffffffffffffffffffffffffffffff9687166020850152948616604084015250509216606090920191909152919050565b6000835162000e2681846020880162000bea565b83519083019062000e3c81836020880162000bea565b01949350505050565b6000815180845262000e5f81602086016020860162000bea565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152600062000ea6604083018562000e45565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60208152600062000b62602083018462000e4556fe60c06040523480156200001157600080fd5b5060405162001e3338038062001e338339810160408190526200003491620001c1565b600080546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060005b8451811015620000df576001806000878481518110620000a457620000a4620002cc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010162000080565b50600280546001600160a01b0319166001600160a01b038581169190911790915581166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001699190620002e2565b6001600160a01b031660a052506200030992505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620001ac57600080fd5b50565b8051620001bc8162000196565b919050565b60008060008060808587031215620001d857600080fd5b84516001600160401b0380821115620001f057600080fd5b818701915087601f8301126200020557600080fd5b81516020828211156200021c576200021c62000180565b8160051b604051601f19603f8301168101818110868211171562000244576200024462000180565b60405292835281830193508481018201928b8411156200026357600080fd5b948201945b838610156200028c576200027c86620001af565b8552948201949382019362000268565b98506200029d9050898201620001af565b965050505050620002b160408601620001af565b9150620002c160608601620001af565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b600060208284031215620002f557600080fd5b8151620003028162000196565b9392505050565b60805160a051611ae86200034b600039600081816109870152610a390152600081816102e901528181610417015281816106b801526107820152611ae86000f3fe6080604052600436106100c05760003560e01c80638da5cb5b11610074578063d0f2d8ac1161004e578063d0f2d8ac14610211578063e5135ec614610231578063f2fde38b1461025157600080fd5b80638da5cb5b1461016e5780639456fbcc146101c4578063ab572650146101e457600080fd5b806363fb0b96116100a557806363fb0b961461010e578063690d83201461012e57806389a3f1361461014e57600080fd5b8063585da628146100cc5780635c8f9bf6146100ee57600080fd5b366100c757005b600080fd5b3480156100d857600080fd5b506100ec6100e73660046111d8565b610271565b005b3480156100fa57600080fd5b506100ec610109366004611266565b610506565b34801561011a57600080fd5b506100ec61012936600461128a565b610627565b34801561013a57600080fd5b506100ec610149366004611266565b610847565b34801561015a57600080fd5b506100ec610169366004611266565b6108d5565b34801561017a57600080fd5b5060005461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101d057600080fd5b506100ec6101df3660046112ea565b610ab8565b3480156101f057600080fd5b5060025461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561021d57600080fd5b506100ec61022c366004611323565b610beb565b34801561023d57600080fd5b506100ec61024c3660046111d8565b610cc0565b34801561025d57600080fd5b506100ec61026c366004611266565b610da1565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102c2576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806102d2848601866114f4565b92509250925060005b8351811015610370576103687f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061033b5761033b61162a565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610e929092919063ffffffff16565b6001016102db565b5060005b82518110156103d95760025483516103d19173ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908590811061033b5761033b61162a565b600101610374565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc9061046e907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161167d565b6000604051808303816000875af115801561048d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104d3919081019061173b565b5047156104fd576002546104fd9073ffffffffffffffffffffffffffffffffffffffff1647610f67565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff808516825290921660208301527f3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b60005b838110156107445761073c7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87878581811061070a5761070a61162a565b905060200201602081019061071f9190611266565b73ffffffffffffffffffffffffffffffffffffffff169190610e92565b6001016106ab565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906107db907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869086906004016118d5565b6000604051808303816000875af11580156107fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610840919081019061173b565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6108d28147611006565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a079190611966565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b50505050610ab48247611006565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610ab490829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611966565b73ffffffffffffffffffffffffffffffffffffffff8516919061107b565b3360009081526001602052604081205460ff1615159003610c38576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d33588490610c92908690869086906004016119ca565b600060405180830381600087803b158015610cac57600080fd5b505af11580156104fd573d6000803e3d6000fd5b3360009081526001602052604081205460ff1615159003610d0d576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906313fb72c790610d699087908790879087906004016119f0565b600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610583565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610fc1576040519150601f19603f3d011682016040523d82523d6000602084013e610fc6565b606091505b5050905080611001576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080611001576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610583565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610583565b60008083601f84011261115c57600080fd5b50813567ffffffffffffffff81111561117457600080fd5b6020830191508360208260051b850101111561118f57600080fd5b9250929050565b60008083601f8401126111a857600080fd5b50813567ffffffffffffffff8111156111c057600080fd5b60208301915083602082850101111561118f57600080fd5b600080600080604085870312156111ee57600080fd5b843567ffffffffffffffff8082111561120657600080fd5b6112128883890161114a565b9096509450602087013591508082111561122b57600080fd5b5061123887828801611196565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108d257600080fd5b60006020828403121561127857600080fd5b813561128381611244565b9392505050565b600080600080604085870312156112a057600080fd5b843567ffffffffffffffff808211156112b857600080fd5b6112c48883890161114a565b909650945060208701359150808211156112dd57600080fd5b506112388782880161114a565b600080604083850312156112fd57600080fd5b823561130881611244565b9150602083013561131881611244565b809150509250929050565b60008060006040848603121561133857600080fd5b833567ffffffffffffffff8082111561135057600080fd5b908501906040828803121561136457600080fd5b9093506020850135908082111561137a57600080fd5b5061138786828701611196565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561140a5761140a611394565b604052919050565b600067ffffffffffffffff82111561142c5761142c611394565b5060051b60200190565b600082601f83011261144757600080fd5b8135602061145c61145783611412565b6113c3565b8083825260208201915060208460051b87010193508684111561147e57600080fd5b602086015b848110156114a357803561149681611244565b8352918301918301611483565b509695505050505050565b600067ffffffffffffffff8211156114c8576114c8611394565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060006060848603121561150957600080fd5b833567ffffffffffffffff8082111561152157600080fd5b61152d87838801611436565b945060209150818601358181111561154457600080fd5b61155088828901611436565b9450506040808701358281111561156657600080fd5b8701601f8101891361157757600080fd5b803561158561145782611412565b81815260059190911b8201850190858101908b8311156115a457600080fd5b8684015b83811015611618578035878111156115c05760008081fd5b8501603f81018e136115d25760008081fd5b888101356115e2611457826114ae565b8181528f898385010111156115f75760008081fd5b818984018c83013760009181018b01919091528452509187019187016115a8565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561167457818101518382015260200161165c565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b8281101561172d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452815180518088526116f081888a01898501611659565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016969096018501955092840192908401906001016116ab565b509398975050505050505050565b6000602080838503121561174e57600080fd5b825167ffffffffffffffff8082111561176657600080fd5b818501915085601f83011261177a57600080fd5b815161178861145782611412565b81815260059190911b830184019084810190888311156117a757600080fd5b8585015b8381101561181b578051858111156117c35760008081fd5b8601603f81018b136117d55760008081fd5b8781015160406117e7611457836114ae565b8281528d828486010111156117fc5760008081fd5b61180b838c8301848701611659565b86525050509186019186016117ab565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126118a657600080fd5b830160208101925035905067ffffffffffffffff8111156118c657600080fd5b80360382131561118f57600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b87811015611958577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018352611939828a611871565b611944878284611828565b965050509183019190830190600101611900565b509298975050505050505050565b60006020828403121561197857600080fd5b5051919050565b600061198b8283611871565b6040855261199d604086018284611828565b9150506119ad6020840184611871565b85830360208701526119c0838284611828565b9695505050505050565b6040815260006119dd604083018661197f565b82810360208401526119c0818587611828565b6040808252810184905260006060600586901b830181019083018783805b89811015611a90577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112611a6e578283fd5b611a7a868d830161197f565b9550506020938401939290920191600101611a0e565b505050508281036020840152611aa7818587611828565b97965050505050505056fea26469706673582212200b39cb1d4ed27a99075eb0ba2bd0956359096764fc5d36462a8d461ef0c3820864736f6c63430008180033a2646970667358221220278a9d7e45e34340d84a33fa478c7f6d15ed79646679ffb21e5c774760a0629664736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`\x046\x10b\0\0FW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14b\0\0KW\x80c\xC0@b&\x14b\0\0MW\x80c\xF8\xCC\xBFG\x14b\0\0\x81W[`\0\x80\xFD[\0[b\0\0Wb\0\0\xA6V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTb\0\0\x95\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01b\0\0xV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01h\x91\x90b\0\x0B\0V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FFOUNDRY_MULTIFILLER_REACTOR_UNIC`D\x82\x01R\x7FHAIN\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02P\x91\x90b\0\x0BDV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02_UC\0\0\0\0\0\0\0\0\0`D\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\x13\x91\x90b\0\x0BDV[`@Q\x7FM{\xAF\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FFOUNDRY_MULTIFILLER_ADDRESSES_EN`D\x82\x01R\x7FCODED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cM{\xAF\x06\x90`\x84\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Rb\0\x04\x1E\x91\x90\x81\x01\x90b\0\x0C\x10V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FFOUNDRY_MULTIFILLER_DEPLOY_OWNER`D\x82\x01R\x7F_PROD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x04\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x07\x91\x90b\0\x0BDV[\x90P`\0\x82\x80` \x01\x90Q\x81\x01\x90b\0\x05!\x91\x90b\0\x0C\xCDV[\x90Pb\0\x05d`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x83b\0\t\x0EV[b\0\x05\xA5`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7Freactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86b\0\t\x0EV[b\0\x05\xE5`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01\x7Finit code hash\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RPb\0\t\xA7V[`\0`@Q\x80` \x01b\0\x05\xF9\x90b\0\n\xF2V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x82\x82\x03\x81\x01\x83R`\x1F\x90\x91\x01\x16`@\x81\x90Rb\0\x06B\x90\x84\x90\x89\x90\x87\x90\x8A\x90` \x01b\0\r\x87V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x06\x80\x92\x91` \x01b\0\x0E\x12V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x06\xA3\x81\x80Q\x90` \x01 b\0\n=V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x88\x90Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x07\nW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x07\x1FW=`\0\x80>=`\0\xFD[PPPP\x7Fm\xF8\xBF\xE7\xBD\x97/\x95\xE2\xAA\xCBC s>\x99\xC3\xC9a\x12_\x06\x9F\xC9\xD6D&\xD8\xE7C\xC2\x01`\0\x1B\x82\x87\x85\x88`@Qb\0\x07Y\x90b\0\n\xF2V[b\0\x07h\x94\x93\x92\x91\x90b\0\r\x87V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15b\0\x07\x89W=`\0\x80>=`\0\xFD[P\x97P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x07\xF8W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x08\rW=`\0\x80>=`\0\xFD[PPPPb\0\x08R`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x89b\0\t\x0EV[b\0\t\x04`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x89s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x08\xD8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x08\xFE\x91\x90b\0\x0BDV[b\0\t\x0EV[PPPPPPP\x90V[b\0\t\xA3\x82\x82`@Q`$\x01b\0\t'\x92\x91\x90b\0\x0E\x91V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Rb\0\n\xCCV[PPV[b\0\n:\x81`@Q`$\x01b\0\t\xBE\x91\x90b\0\x0E\xCBV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7FA0O\xAC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Rb\0\n\xCCV[PV[b\0\n:\x81`@Q`$\x01b\0\nU\x91\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F'\xB7\xCF\x85\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90R[b\0\n:\x81`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x1E3\x80b\0\x0E\xE1\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15b\0\x0B\x13W`\0\x80\xFD[PQ\x91\x90PV[\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14b\0\x0B?W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15b\0\x0BWW`\0\x80\xFD[b\0\x0Bb\x82b\0\x0B\x1AV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15b\0\x0B\xE2Wb\0\x0B\xE2b\0\x0BiV[`@R\x91\x90PV[`\0[\x83\x81\x10\x15b\0\x0C\x07W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x0B\xEDV[PP`\0\x91\x01RV[`\0` \x82\x84\x03\x12\x15b\0\x0C#W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\0\x0C=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x02\xE2V[`\x01`\x01`\xA0\x1B\x03\x16`\xA0RPb\0\x03\t\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01\xACW`\0\x80\xFD[PV[\x80Qb\0\x01\xBC\x81b\0\x01\x96V[\x91\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x01\xD8W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xF0W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12b\0\x02\x05W`\0\x80\xFD[\x81Q` \x82\x82\x11\x15b\0\x02\x1CWb\0\x02\x1Cb\0\x01\x80V[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15b\0\x02DWb\0\x02Db\0\x01\x80V[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x8B\x84\x11\x15b\0\x02cW`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15b\0\x02\x8CWb\0\x02|\x86b\0\x01\xAFV[\x85R\x94\x82\x01\x94\x93\x82\x01\x93b\0\x02hV[\x98Pb\0\x02\x9D\x90P\x89\x82\x01b\0\x01\xAFV[\x96PPPPPb\0\x02\xB1`@\x86\x01b\0\x01\xAFV[\x91Pb\0\x02\xC1``\x86\x01b\0\x01\xAFV[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15b\0\x02\xF5W`\0\x80\xFD[\x81Qb\0\x03\x02\x81b\0\x01\x96V[\x93\x92PPPV[`\x80Q`\xA0Qa\x1A\xE8b\0\x03K`\09`\0\x81\x81a\t\x87\x01Ra\n9\x01R`\0\x81\x81a\x02\xE9\x01R\x81\x81a\x04\x17\x01R\x81\x81a\x06\xB8\x01Ra\x07\x82\x01Ra\x1A\xE8`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xC0W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0tW\x80c\xD0\xF2\xD8\xAC\x11a\0NW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x11W\x80c\xE5\x13^\xC6\x14a\x021W\x80c\xF2\xFD\xE3\x8B\x14a\x02QW`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01nW\x80c\x94V\xFB\xCC\x14a\x01\xC4W\x80c\xABW&P\x14a\x01\xE4W`\0\x80\xFD[\x80cc\xFB\x0B\x96\x11a\0\xA5W\x80cc\xFB\x0B\x96\x14a\x01\x0EW\x80ci\r\x83 \x14a\x01.W\x80c\x89\xA3\xF16\x14a\x01NW`\0\x80\xFD[\x80cX]\xA6(\x14a\0\xCCW\x80c\\\x8F\x9B\xF6\x14a\0\xEEW`\0\x80\xFD[6a\0\xC7W\0[`\0\x80\xFD[4\x80\x15a\0\xD8W`\0\x80\xFD[Pa\0\xECa\0\xE76`\x04a\x11\xD8V[a\x02qV[\0[4\x80\x15a\0\xFAW`\0\x80\xFD[Pa\0\xECa\x01\t6`\x04a\x12fV[a\x05\x06V[4\x80\x15a\x01\x1AW`\0\x80\xFD[Pa\0\xECa\x01)6`\x04a\x12\x8AV[a\x06'V[4\x80\x15a\x01:W`\0\x80\xFD[Pa\0\xECa\x01I6`\x04a\x12fV[a\x08GV[4\x80\x15a\x01ZW`\0\x80\xFD[Pa\0\xECa\x01i6`\x04a\x12fV[a\x08\xD5V[4\x80\x15a\x01zW`\0\x80\xFD[P`\0Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xD0W`\0\x80\xFD[Pa\0\xECa\x01\xDF6`\x04a\x12\xEAV[a\n\xB8V[4\x80\x15a\x01\xF0W`\0\x80\xFD[P`\x02Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\0\xECa\x02,6`\x04a\x13#V[a\x0B\xEBV[4\x80\x15a\x02=W`\0\x80\xFD[Pa\0\xECa\x02L6`\x04a\x11\xD8V[a\x0C\xC0V[4\x80\x15a\x02]W`\0\x80\xFD[Pa\0\xECa\x02l6`\x04a\x12fV[a\r\xA1V[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02\xC2W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02\xD2\x84\x86\x01\x86a\x14\xF4V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x03pWa\x03h\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03;Wa\x03;a\x16*V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0E\x92\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02\xDBV[P`\0[\x82Q\x81\x10\x15a\x03\xD9W`\x02T\x83Qa\x03\xD1\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x85\x90\x81\x10a\x03;Wa\x03;a\x16*V[`\x01\x01a\x03tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x04n\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x16}V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\x8DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xD3\x91\x90\x81\x01\x90a\x17;V[PG\x15a\x04\xFDW`\x02Ta\x04\xFD\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16Ga\x0FgV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x82R\x90\x92\x16` \x83\x01R\x7F?Gi\xCBf\xE4,\x90\x99\x80\x90'}]r\xEEh>\xF1v\xA1\xF5o\xB1\x852\x8FUJ*\xB7\xDC\x91\x01`@Q\x80\x91\x03\x90\xA1`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0[\x83\x81\x10\x15a\x07DWa\x07<\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x07\nWa\x07\na\x16*V[\x90P` \x02\x01` \x81\x01\x90a\x07\x1F\x91\x90a\x12fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0E\x92V[`\x01\x01a\x06\xABV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x07\xDB\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x18\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x08@\x91\x90\x81\x01\x90a\x17;V[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xC8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[a\x08\xD2\x81Ga\x10\x06V[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\tVW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xE3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x07\x91\x90a\x19fV[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\n\xA6W=`\0\x80>=`\0\xFD[PPPPa\n\xB4\x82Ga\x10\x06V[PPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\n\xB4\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xA9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xCD\x91\x90a\x19fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x10{V[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C8W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\r3X\x84\x90a\x0C\x92\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x19\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\xACW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xFDW=`\0\x80>=`\0\xFD[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\r\rW`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x13\xFBr\xC7\x90a\ri\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x19\xF0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\x97W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0E\"W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x0F\xC1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0F\xC6V[``\x91P[PP\x90P\x80a\x10\x01W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x10\x01W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80\x83`\x1F\x84\x01\x12a\x11\\W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11tW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x11\xA8W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xC0W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x11\xEEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\x06W`\0\x80\xFD[a\x12\x12\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12+W`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xD2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12xW`\0\x80\xFD[\x815a\x12\x83\x81a\x12DV[\x93\x92PPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x12\xA0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\xB8W`\0\x80\xFD[a\x12\xC4\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12\xDDW`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11JV[`\0\x80`@\x83\x85\x03\x12\x15a\x12\xFDW`\0\x80\xFD[\x825a\x13\x08\x81a\x12DV[\x91P` \x83\x015a\x13\x18\x81a\x12DV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x138W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13PW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x13dW`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x13zW`\0\x80\xFD[Pa\x13\x87\x86\x82\x87\x01a\x11\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x14\nWa\x14\na\x13\x94V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14,Wa\x14,a\x13\x94V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x14GW`\0\x80\xFD[\x815` a\x14\\a\x14W\x83a\x14\x12V[a\x13\xC3V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x14~W`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x14\xA3W\x805a\x14\x96\x81a\x12DV[\x83R\x91\x83\x01\x91\x83\x01a\x14\x83V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14\xC8Wa\x14\xC8a\x13\x94V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15\tW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15!W`\0\x80\xFD[a\x15-\x87\x83\x88\x01a\x146V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x15DW`\0\x80\xFD[a\x15P\x88\x82\x89\x01a\x146V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x15fW`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x15wW`\0\x80\xFD[\x805a\x15\x85a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x15\xA4W`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x16\x18W\x805\x87\x81\x11\x15a\x15\xC0W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x15\xD2W`\0\x80\x81\xFD[\x88\x81\x015a\x15\xE2a\x14W\x82a\x14\xAEV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x15\xF7W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x15\xA8V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x16tW\x81\x81\x01Q\x83\x82\x01R` \x01a\x16\\V[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x17-W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x16\xF0\x81\x88\x8A\x01\x89\x85\x01a\x16YV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x16\xABV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17NW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x17fW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x17zW`\0\x80\xFD[\x81Qa\x17\x88a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x17\xA7W`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x18\x1BW\x80Q\x85\x81\x11\x15a\x17\xC3W`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x17\xD5W`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x17\xE7a\x14W\x83a\x14\xAEV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x17\xFCW`\0\x80\x81\xFD[a\x18\x0B\x83\x8C\x83\x01\x84\x87\x01a\x16YV[\x86RPPP\x91\x86\x01\x91\x86\x01a\x17\xABV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x18\xA6W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x18\xC6W`\0\x80\xFD[\x806\x03\x82\x13\x15a\x11\x8FW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x19XW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x199\x82\x8Aa\x18qV[a\x19D\x87\x82\x84a\x18(V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x19\0V[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x19xW`\0\x80\xFD[PQ\x91\x90PV[`\0a\x19\x8B\x82\x83a\x18qV[`@\x85Ra\x19\x9D`@\x86\x01\x82\x84a\x18(V[\x91PPa\x19\xAD` \x84\x01\x84a\x18qV[\x85\x83\x03` \x87\x01Ra\x19\xC0\x83\x82\x84a\x18(V[\x96\x95PPPPPPV[`@\x81R`\0a\x19\xDD`@\x83\x01\x86a\x19\x7FV[\x82\x81\x03` \x84\x01Ra\x19\xC0\x81\x85\x87a\x18(V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x1A\x90W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x1AnW\x82\x83\xFD[a\x1Az\x86\x8D\x83\x01a\x19\x7FV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x1A\x0EV[PPPP\x82\x81\x03` \x84\x01Ra\x1A\xA7\x81\x85\x87a\x18(V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 \x0B9\xCB\x1DN\xD2z\x99\x07^\xB0\xBA+\xD0\x95cY\tgd\xFC]6F*\x8DF\x1E\xF0\xC3\x82\x08dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 '\x8A\x9D~E\xE3C@\xD8J3\xFAG\x8C\x7Fm\x15\xEDydfy\xFF\xB2\x1E\\wG`\xA0b\x96dsolcC\0\x08\x18\x003", + ); + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. +```solidity +function IS_SCRIPT() external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `run()` and selector `0xc0406226`. +```solidity +function run() external returns (address executor); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runReturn { + pub executor: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runReturn) -> Self { + (value.executor,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { executor: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for runCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = runReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "run()"; + const SELECTOR: [u8; 4] = [192u8, 64u8, 98u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setUp()` and selector `0x0a9254e4`. +```solidity +function setUp() external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setUpCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setUpReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setUp()"; + const SELECTOR: [u8; 4] = [10u8, 146u8, 84u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`DeployMultiFillerExecutor`](self) function calls. + pub enum DeployMultiFillerExecutorCalls { + IS_SCRIPT(IS_SCRIPTCall), + run(runCall), + setUp(setUpCall), + } + #[automatically_derived] + impl DeployMultiFillerExecutorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [10u8, 146u8, 84u8, 228u8], + [192u8, 64u8, 98u8, 38u8], + [248u8, 204u8, 191u8, 71u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DeployMultiFillerExecutorCalls { + const NAME: &'static str = "DeployMultiFillerExecutorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => { + ::SELECTOR + } + Self::run(_) => ::SELECTOR, + Self::setUp(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployMultiFillerExecutorCalls::setUp) + } + setUp + }, + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployMultiFillerExecutorCalls::run) + } + run + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployMultiFillerExecutorCalls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::run(inner) => { + ::abi_encoded_size(inner) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::run(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DeployMultiFillerExecutor`](self) contract instance. + +See the [wrapper's documentation](`DeployMultiFillerExecutorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DeployMultiFillerExecutorInstance { + DeployMultiFillerExecutorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DeployMultiFillerExecutorInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + DeployMultiFillerExecutorInstance::::deploy_builder(provider) + } + /**A [`DeployMultiFillerExecutor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DeployMultiFillerExecutor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DeployMultiFillerExecutorInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DeployMultiFillerExecutorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DeployMultiFillerExecutorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployMultiFillerExecutorInstance { + /**Creates a new wrapper around an on-chain [`DeployMultiFillerExecutor`](self) contract instance. + +See the [wrapper's documentation](`DeployMultiFillerExecutorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DeployMultiFillerExecutorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DeployMultiFillerExecutorInstance { + DeployMultiFillerExecutorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployMultiFillerExecutorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`run`] function. + pub fn run(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&runCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployMultiFillerExecutorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/deploypermit2.rs b/crates/bindings-uniswapx/src/deploypermit2.rs new file mode 100644 index 0000000..52a8e4c --- /dev/null +++ b/crates/bindings-uniswapx/src/deploypermit2.rs @@ -0,0 +1,443 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DeployPermit2 { + function IS_SCRIPT() external view returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DeployPermit2 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff191662010001179055348015602057600080fd5b5060898061002f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea26469706673582212201fa3ed5120b21127aba2b1f96d9dd54f597a23165c1f545aca256ea08b4bb91464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15` W`\0\x80\xFD[P`\x89\x80a\0/`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`-W[`\0\x80\xFD[`\x0CT`?\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x1F\xA3\xEDQ \xB2\x11'\xAB\xA2\xB1\xF9m\x9D\xD5OYz#\x16\\\x1FTZ\xCA%n\xA0\x8BK\xB9\x14dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea26469706673582212201fa3ed5120b21127aba2b1f96d9dd54f597a23165c1f545aca256ea08b4bb91464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`-W[`\0\x80\xFD[`\x0CT`?\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x1F\xA3\xEDQ \xB2\x11'\xAB\xA2\xB1\xF9m\x9D\xD5OYz#\x16\\\x1FTZ\xCA%n\xA0\x8BK\xB9\x14dsolcC\0\x08\x18\x003", + ); + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. +```solidity +function IS_SCRIPT() external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`DeployPermit2`](self) function calls. + pub enum DeployPermit2Calls { + IS_SCRIPT(IS_SCRIPTCall), + } + #[automatically_derived] + impl DeployPermit2Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[248u8, 204u8, 191u8, 71u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DeployPermit2Calls { + const NAME: &'static str = "DeployPermit2Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployPermit2Calls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DeployPermit2`](self) contract instance. + +See the [wrapper's documentation](`DeployPermit2Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DeployPermit2Instance { + DeployPermit2Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DeployPermit2Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + DeployPermit2Instance::::deploy_builder(provider) + } + /**A [`DeployPermit2`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DeployPermit2`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DeployPermit2Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DeployPermit2Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DeployPermit2Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployPermit2Instance { + /**Creates a new wrapper around an on-chain [`DeployPermit2`](self) contract instance. + +See the [wrapper's documentation](`DeployPermit2Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DeployPermit2Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DeployPermit2Instance { + DeployPermit2Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployPermit2Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployPermit2Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/deploypriorityorderreactor.rs b/crates/bindings-uniswapx/src/deploypriorityorderreactor.rs new file mode 100644 index 0000000..ae914f7 --- /dev/null +++ b/crates/bindings-uniswapx/src/deploypriorityorderreactor.rs @@ -0,0 +1,1008 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DeployPriorityOrderReactor { + struct PriorityOrderReactorDeployment { + address permit2; + address reactor; + address quoter; + } + + function IS_SCRIPT() external view returns (bool); + function run() external returns (PriorityOrderReactorDeployment memory deployment); + function setUp() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "run", + "inputs": [], + "outputs": [ + { + "name": "deployment", + "type": "tuple", + "internalType": "struct PriorityOrderReactorDeployment", + "components": [ + { + "name": "permit2", + "type": "address", + "internalType": "contract IPermit2" + }, + { + "name": "reactor", + "type": "address", + "internalType": "contract PriorityOrderReactor" + }, + { + "name": "quoter", + "type": "address", + "internalType": "contract OrderQuoter" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DeployPriorityOrderReactor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50617018806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610094575b600080fd5b005b6100506100b7565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a79062010000900460ff1681565b604051901515815260200161008b565b60408051606081018252600080825260208201819052918101919091526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e455200000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa15801561016d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610191919061083d565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156101fe57600080fd5b505af1158015610212573d6000803e3d6000fd5b5050506e22d473030f116ddee9f6b43ac78ba33b60000390506102395761023761057b565b505b60007fb0059e9187daac70f2c765cfc99a03f9bf4321c11b7ab784ee3e310292724c1860001b6e22d473030f116ddee9f6b43ac78ba38360405161027c90610823565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156102c0573d6000803e3d6000fd5b5090506103016040518060400160405280600e81526020017f696e697420636f64652068617368000000000000000000000000000000000000815250610646565b6103d16040518060200161031490610823565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408181526e22d473030f116ddee9f6b43ac78ba3602083015273ffffffffffffffffffffffffffffffffffffffff861690820152606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526103b6929160200161089e565b604051602081830303815290604052805190602001206106d8565b6104106040518060400160405280600781526020017f52656163746f720000000000000000000000000000000000000000000000000081525082610769565b60008060001b60405161042290610830565b8190604051809103906000f5905080158015610442573d6000803e3d6000fd5b5090506104846040518060400160405280600681526020017f51756f746572000000000000000000000000000000000000000000000000000081525082610769565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104ef57600080fd5b505af1158015610503573d6000803e3d6000fd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815250935050505090565b600080604051806123e001604052806123c08152602001614c236123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c782906105fe906e22d473030f116ddee9f6b43ac78ba3908590600401610917565b600060405180830381600087803b15801561061857600080fd5b505af115801561062c573d6000803e3d6000fd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6106d58160405160240161065a919061094e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526107fe565b50565b6106d5816040516024016106ee91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f27b7cf85000000000000000000000000000000000000000000000000000000001790526107fe565b6107fa828260405160240161077f929190610961565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526107fe565b5050565b6106d58160006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6134708061099a83390190565b610e1980613e0a83390190565b60006020828403121561084f57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461087357600080fd5b9392505050565b60005b8381101561089557818101518382015260200161087d565b50506000910152565b600083516108b081846020880161087a565b8351908301906108c481836020880161087a565b01949350505050565b600081518084526108e581602086016020860161087a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061094660408301846108cd565b949350505050565b60208152600061087360208301846108cd565b60408152600061097460408301856108cd565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b5060405162003470380380620034708339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051613350620001206000396000818160e001528181610d6101526119eb01526133506000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612440565b6101eb565b005b6100b96100c93660046124ee565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612530565b6104c5565b34801561014a57600080fd5b506100b96101593660046125c9565b610683565b6100b961016c3660046125ed565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125c9565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612659565b60200260200101819052506102d981610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161285c565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb1565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861262a565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612659565b90506020028101906104789190612922565b6109f6565b82828151811061048f5761048f612659565b6020908102919091010152600101610449565b506104ac81610b60565b6104b581610bb1565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961262a565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612659565b8282815181106105d9576105d9612659565b60209081029190910101526001016105aa565b506105f681610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161285c565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb1565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612659565b602002602001018190525061087d81610b60565b61088681610bb1565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612960565b810190610a7c9190612d2c565b80516020810151604090910151919250610a9591610d04565b6000610aa082610e17565b9050610aac8183611065565b6000610abb83606001516111c7565b90506040518060a0016040528084600001518152602001610ae983866080015161121c90919063ffffffff16565b8152602001610b05838660a0015161131b90919063ffffffff16565b8152602001868060200190610b1a9190612960565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b8157610b81612659565b60200260200101519050610b9481611400565b610b9e81336118f0565b610ba881336119e9565b50600101610b65565b805160005b81811015610cf3576000838281518110610bd257610bd2612659565b602002602001015190506000816040015151905060005b81811015610c5357600083604001518281518110610c0957610c09612659565b60200260200101519050610c4a81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d239092919063ffffffff16565b50600101610be9565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9c57610c9c612659565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce191815260200190565b60405180910390a45050600101610bb6565b5047156104c1576104c13347611d6a565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b916000917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce9190612e2d565b9050818118808316600003610e0f576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061323360208301396040518060800160405280604881526020016131bd604891396040518060800160405280605b81526020016132c0605b9139604051602001610fb19493929190612e46565b60405160208183030381529060405280519060200120610fd48360000151611e04565b836020015184604001518560600151610ff08760800151611e9e565b610ffd8860a00151611f05565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110a4576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff16158015906110d157508043105b80156110e1575060c08201515181115b1561110b576020820151611103906110f98486611fa3565b8460e0015161201a565b5060c0810151515b80431015611145576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a00151828151811061117b5761117b612659565b60200260200101516040015111156111bf576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611156565b6000483a1015611203576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a0381811115611213570390565b5060005b919050565b6112566040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60008360400151836112689190612ecc565b90506298968081106112b6576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018560200151815250915050611315565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156113005760208601516112fb906298968085810390612142565b611306565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156113395761133961262a565b6040519080825280602002602001820160405280156113a257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113575790505b50915060005b818110156113f8576113d38582815181106113c5576113c5612659565b60200260200101518561217e565b8382815181106113e5576113e5612659565b60209081029190910101526001016113a8565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166114205750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611477908590600401612ee3565b600060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114da9190810190612ef6565b60408301515181519192509060006114f28284612fc6565b67ffffffffffffffff81111561150a5761150a61262a565b60405190808252806020026020018201604052801561157357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115285790505b50905060005b838110156115c4578560400151818151811061159757611597612659565b60200260200101518282815181106115b1576115b1612659565b6020908102919091010152600101611579565b5060008060005b848110156118df5760008782815181106115e7576115e7612659565b6020026020010151905060005b828110156116a55788818151811061160e5761160e612659565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361169d5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016115f4565b506000805b888110156117665760008b6040015182815181106116ca576116ca612659565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361175d578515611747576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117569084612fc6565b9250600196505b506001016116aa565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117df5784156117c6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117d89082612fc6565b9050600193505b806000036118345781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611842816005612710612142565b826020015111156118b5578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106118ca576118ca612659565b602090810291909101015250506001016115cb565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611941576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119bd9084908690600401612fd9565b60006040518083038186803b1580156119d557600080fd5b505afa158015610e0f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611aa9846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d8152602001613233608d91396040518060800160405280604881526020016131bd60489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916132c09060d401396040518060600160405280602e8152602001613205602e9139604051602001611c88959493929190613008565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cf596959493926004016130a3565b600060405180830381600087803b158015611d0f57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d485761035f8282611d6a565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612232565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613233608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161104898939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016131bd6048913980516020918201208351848301516040808701519051611048950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611f2557611f2561262a565b6040519080825280601f01601f191660200182016040528015611f4f576020820181803683370190505b50905060005b8351811015611f94576000611f82858381518110611f7557611f75612659565b6020026020010151612324565b60208381028501015250600101611f55565b50805160209091012092915050565b600081468460c00151604051602001611fbf9151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ffc93929160200161316b565b60405160208183030381529060405280519060200120905092915050565b600080828060200190518101906120319190613198565b9150915060008360408151811061204a5761204a612659565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156120a7573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612102575073ffffffffffffffffffffffffffffffffffffffff8116155b15612139576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261217757600080fd5b5091020490565b604080516060810182526000808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff16815290840151602082019015612201576121fc8560400151856121e09190612ecc565b6121ed9062989680612fc6565b6020870151906298968061239b565b612207565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061231d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b81526020016132c0605b9139805160209182012083518483015160408087015160608801519151611048969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123d057600080fd5b50910281810615159190040190565b6000604082840312156123f157600080fd5b50919050565b60008083601f84011261240957600080fd5b50813567ffffffffffffffff81111561242157600080fd5b60208301915083602082850101111561243957600080fd5b9250929050565b60008060006040848603121561245557600080fd5b833567ffffffffffffffff8082111561246d57600080fd5b612479878388016123df565b9450602086013591508082111561248f57600080fd5b5061249c868287016123f7565b9497909650939450505050565b60008083601f8401126124bb57600080fd5b50813567ffffffffffffffff8111156124d357600080fd5b6020830191508360208260051b850101111561243957600080fd5b6000806020838503121561250157600080fd5b823567ffffffffffffffff81111561251857600080fd5b612524858286016124a9565b90969095509350505050565b6000806000806040858703121561254657600080fd5b843567ffffffffffffffff8082111561255e57600080fd5b61256a888389016124a9565b9096509450602087013591508082111561258357600080fd5b50612590878288016123f7565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356112178161259c565b6000602082840312156125db57600080fd5b81356125e68161259c565b9392505050565b6000602082840312156125ff57600080fd5b813567ffffffffffffffff81111561261657600080fd5b612622848285016123df565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126a357818101518382015260200161268b565b50506000910152565b600081518084526126c4816020860160208601612688565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612756578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161270b565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d56101a08501826126ac565b905060208301516128136020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282b82826126f6565b915050606083015184820360a086015261284582826126ac565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128bf868351612761565b95509382019390820190600101612885565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261295657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261299557600080fd5b83018035915067ffffffffffffffff8211156129b057600080fd5b60200191503681900382131561243957600080fd5b6040516060810167ffffffffffffffff811182821017156129e8576129e861262a565b60405290565b6040516080810167ffffffffffffffff811182821017156129e8576129e861262a565b604051610100810167ffffffffffffffff811182821017156129e8576129e861262a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a7c57612a7c61262a565b604052919050565b600082601f830112612a9557600080fd5b813567ffffffffffffffff811115612aaf57612aaf61262a565b612ae060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a35565b818152846020838601011115612af557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2457600080fd5b60405160c0810167ffffffffffffffff8282108183111715612b4857612b4861262a565b8160405282935084359150612b5c8261259c565b908252602084013590612b6e8261259c565b816020840152604085013560408401526060850135606084015260808501359150612b988261259c565b81608084015260a0850135915080821115612bb257600080fd5b50612bbf85828601612a84565b60a0830152505092915050565b600060608284031215612bde57600080fd5b612be66129c5565b90508135612bf38161259c565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c2b57612c2b61262a565b5060051b60200190565b600082601f830112612c4657600080fd5b81356020612c5b612c5683612c11565b612a35565b82815260079290921b84018101918181019086841115612c7a57600080fd5b8286015b84811015612cdf5760808189031215612c975760008081fd5b612c9f6129ee565b8135612caa8161259c565b8152818501358582015260408083013590820152606080830135612ccd8161259c565b90820152835291830191608001612c7e565b509695505050505050565b600060208284031215612cfc57600080fd5b6040516020810181811067ffffffffffffffff82111715612d1f57612d1f61262a565b6040529135825250919050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff80821115612d5657600080fd5b908301906101408286031215612d6b57600080fd5b612d73612a11565b823582811115612d8257600080fd5b612d8e87828601612b12565b825250612d9d602084016125be565b60208201526040830135604082015260608301356060820152612dc38660808501612bcc565b608082015260e083013582811115612dda57600080fd5b612de687828601612c35565b60a083015250612dfa866101008501612cea565b60c082015261012083013582811115612e1257600080fd5b612e1e87828601612a84565b60e08301525095945050505050565b600060208284031215612e3f57600080fd5b5051919050565b60008551612e58818460208a01612688565b855190830190612e6c818360208a01612688565b8551910190612e7f818360208901612688565b8451910190612e92818360208801612688565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761131557611315612e9d565b6020815260006125e66020830184612761565b60006020808385031215612f0957600080fd5b825167ffffffffffffffff811115612f2057600080fd5b8301601f81018513612f3157600080fd5b8051612f3f612c5682612c11565b81815260609182028301840191848201919088841115612f5e57600080fd5b938501935b83851015612fba5780858a031215612f7b5760008081fd5b612f836129c5565b8551612f8e8161259c565b81528587015187820152604080870151612fa78161259c565b9082015283529384019391850191612f63565b50979650505050505050565b8082018082111561131557611315612e9d565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006126226040830184612761565b7f5072696f726974794f72646572207769746e657373290000000000000000000081526000601687516130418183860160208c01612688565b8751908401906130578184840160208c01612688565b875191019061306c8184840160208b01612688565b86519101906130818184840160208a01612688565b85519101906130968184840160208901612688565b0101979650505050505050565b60006101406130d3838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131146080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152613149818401866126ac565b905082810361012084015261315e81856126ac565b9998505050505050505050565b83815282602082015260008251613189816040850160208701612688565b91909101604001949350505050565b600080604083850312156131ab57600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220353e4a9c8af32ce67b5de33aaecb5fae198f4618ed76c7f0ec66d08df440265b64736f6c63430008180033608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212204625b71d7eed99b6b5ada47f029667231edf05e28809e554360e4da22954e8c664736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pap\x18\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x94W[`\0\x80\xFD[\0[a\0Pa\0\xB7V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA7\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8BV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01mW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x91\x91\x90a\x08=V[\x90P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xFEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x12W=`\0\x80>=`\0\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;`\0\x03\x90Pa\x029Wa\x027a\x05{V[P[`\0\x7F\xB0\x05\x9E\x91\x87\xDA\xACp\xF2\xC7e\xCF\xC9\x9A\x03\xF9\xBFC!\xC1\x1Bz\xB7\x84\xEE>1\x02\x92rL\x18`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02|\x90a\x08#V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02\xC0W=`\0\x80>=`\0\xFD[P\x90Pa\x03\x01`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01\x7Finit code hash\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RPa\x06FV[a\x03\xD1`@Q\x80` \x01a\x03\x14\x90a\x08#V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x82\x82\x03\x81\x01\x83R`\x1F\x90\x91\x01\x16`@\x81\x81Rn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3` \x83\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x90\x82\x01R``\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x03\xB6\x92\x91` \x01a\x08\x9EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x06\xD8V[a\x04\x10`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x07iV[`\0\x80`\0\x1B`@Qa\x04\"\x90a\x080V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x04BW=`\0\x80>=`\0\xFD[P\x90Pa\x04\x84`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x07iV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xEFW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\x03W=`\0\x80>=`\0\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x93PPPP\x90V[`\0\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aL#a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x05\xFE\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\t\x17V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06\x18W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06,W=`\0\x80>=`\0\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x06\xD5\x81`@Q`$\x01a\x06Z\x91\x90a\tNV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7FA0O\xAC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xFEV[PV[a\x06\xD5\x81`@Q`$\x01a\x06\xEE\x91\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F'\xB7\xCF\x85\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xFEV[a\x07\xFA\x82\x82`@Q`$\x01a\x07\x7F\x92\x91\x90a\taV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xFEV[PPV[a\x06\xD5\x81`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a4p\x80a\t\x9A\x839\x01\x90V[a\x0E\x19\x80a>\n\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x08OW`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08sW`\0\x80\xFD[\x93\x92PPPV[`\0[\x83\x81\x10\x15a\x08\x95W\x81\x81\x01Q\x83\x82\x01R` \x01a\x08}V[PP`\0\x91\x01RV[`\0\x83Qa\x08\xB0\x81\x84` \x88\x01a\x08zV[\x83Q\x90\x83\x01\x90a\x08\xC4\x81\x83` \x88\x01a\x08zV[\x01\x94\x93PPPPV[`\0\x81Q\x80\x84Ra\x08\xE5\x81` \x86\x01` \x86\x01a\x08zV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\tF`@\x83\x01\x84a\x08\xCDV[\x94\x93PPPPV[` \x81R`\0a\x08s` \x83\x01\x84a\x08\xCDV[`@\x81R`\0a\tt`@\x83\x01\x85a\x08\xCDV[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x004p8\x03\x80b\x004p\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa3Pb\0\x01 `\09`\0\x81\x81`\xE0\x01R\x81\x81a\ra\x01Ra\x19\xEB\x01Ra3P`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$@V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\xEEV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%0V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a%\xC9V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\xEDV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a%\xC9V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&YV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB1V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\"V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0B`V[a\x04\xB5\x81a\x0B\xB1V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB1V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&YV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0B`V[a\x08\x86\x81a\x0B\xB1V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a)`V[\x81\x01\x90a\n|\x91\x90a-,V[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\n\x95\x91a\r\x04V[`\0a\n\xA0\x82a\x0E\x17V[\x90Pa\n\xAC\x81\x83a\x10eV[`\0a\n\xBB\x83``\x01Qa\x11\xC7V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\n\xE9\x83\x86`\x80\x01Qa\x12\x1C\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\x0B\x05\x83\x86`\xA0\x01Qa\x13\x1B\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x1A\x91\x90a)`V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x81Wa\x0B\x81a&YV[` \x02` \x01\x01Q\x90Pa\x0B\x94\x81a\x14\0V[a\x0B\x9E\x813a\x18\xF0V[a\x0B\xA8\x813a\x19\xE9V[P`\x01\x01a\x0BeV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF3W`\0\x83\x82\x81Q\x81\x10a\x0B\xD2Wa\x0B\xD2a&YV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CSW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\tWa\x0C\ta&YV[` \x02` \x01\x01Q\x90Pa\x0CJ\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D#\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xE9V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9CWa\x0C\x9Ca&YV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE1\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB6V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1DjV[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xCE\x91\x90a.-V[\x90P\x81\x81\x18\x80\x83\x16`\0\x03a\x0E\x0FW`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R`\0\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a23` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919`@Q` \x01a\x0F\xB1\x94\x93\x92\x91\x90a.FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\xD4\x83`\0\x01Qa\x1E\x04V[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xF0\x87`\x80\x01Qa\x1E\x9EV[a\x0F\xFD\x88`\xA0\x01Qa\x1F\x05V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xA4W`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\xD1WP\x80C\x10[\x80\x15a\x10\xE1WP`\xC0\x82\x01QQ\x81\x11[\x15a\x11\x0BW` \x82\x01Qa\x11\x03\x90a\x10\xF9\x84\x86a\x1F\xA3V[\x84`\xE0\x01Qa \x1AV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11EW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03_W`\0[\x82`\xA0\x01QQ\x81\x10\x15a\x06}W`\0\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11{Wa\x11{a&YV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\xBFW`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11VV[`\0H:\x10\x15a\x12\x03W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x12\x13W\x03\x90V[P`\0[\x91\x90PV[a\x12V`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0\x83`@\x01Q\x83a\x12h\x91\x90a.\xCCV[\x90Pb\x98\x96\x80\x81\x10a\x12\xB6W`@Q\x80``\x01`@R\x80\x85`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x13\x15V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x13\0W` \x86\x01Qa\x12\xFB\x90b\x98\x96\x80\x85\x81\x03\x90a!BV[a\x13\x06V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x139Wa\x139a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xA2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13WW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x13\xF8Wa\x13\xD3\x85\x82\x81Q\x81\x10a\x13\xC5Wa\x13\xC5a&YV[` \x02` \x01\x01Q\x85a!~V[\x83\x82\x81Q\x81\x10a\x13\xE5Wa\x13\xE5a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xA8V[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14 WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14w\x90\x85\x90`\x04\x01a.\xE3V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xDA\x91\x90\x81\x01\x90a.\xF6V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x14\xF2\x82\x84a/\xC6V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\nWa\x15\na&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15sW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15(W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\xC4W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\x97Wa\x15\x97a&YV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xB1Wa\x15\xB1a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15yV[P`\0\x80`\0[\x84\x81\x10\x15a\x18\xDFW`\0\x87\x82\x81Q\x81\x10a\x15\xE7Wa\x15\xE7a&YV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x16\xA5W\x88\x81\x81Q\x81\x10a\x16\x0EWa\x16\x0Ea&YV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\x9DW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x15\xF4V[P`\0\x80[\x88\x81\x10\x15a\x17fW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xCAWa\x16\xCAa&YV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17]W\x85\x15a\x17GW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17V\x90\x84a/\xC6V[\x92P`\x01\x96P[P`\x01\x01a\x16\xAAV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xDFW\x84\x15a\x17\xC6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xD8\x90\x82a/\xC6V[\x90P`\x01\x93P[\x80`\0\x03a\x184W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18B\x81`\x05a'\x10a!BV[\x82` \x01Q\x11\x15a\x18\xB5W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xCAWa\x18\xCAa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xCBV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19AW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xBD\x90\x84\x90\x86\x90`\x04\x01a/\xD9V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xD5W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xA9\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a2\xC0\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\x05`.\x919`@Q` \x01a\x1C\x88\x95\x94\x93\x92\x91\x90a0\x08V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xF5\x96\x95\x94\x93\x92`\x04\x01a0\xA3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\x0FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1DHWa\x03_\x82\x82a\x1DjV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\"2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xC4W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1D\xC9V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10H\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10H\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1F%Wa\x1F%a&*V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1FOW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F\x94W`\0a\x1F\x82\x85\x83\x81Q\x81\x10a\x1FuWa\x1Fua&YV[` \x02` \x01\x01Qa#$V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1FUV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xC0\x01Q`@Q` \x01a\x1F\xBF\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\xFC\x93\x92\x91` \x01a1kV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a 1\x91\x90a1\x98V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a JWa Ja&YV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a \xA7W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a!\x02WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a!9W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!wW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a\"\x01Wa!\xFC\x85`@\x01Q\x85a!\xE0\x91\x90a.\xCCV[a!\xED\x90b\x98\x96\x80a/\xC6V[` \x87\x01Q\x90b\x98\x96\x80a#\x9BV[a\"\x07V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a#\x1DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10H\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xD0W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0`@\x82\x84\x03\x12\x15a#\xF1W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\tW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$!W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$UW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$mW`\0\x80\xFD[a$y\x87\x83\x88\x01a#\xDFV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x8FW`\0\x80\xFD[Pa$\x9C\x86\x82\x87\x01a#\xF7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a$\xBBW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xD3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\x01W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x18W`\0\x80\xFD[a%$\x85\x82\x86\x01a$\xA9V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%FW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%^W`\0\x80\xFD[a%j\x88\x83\x89\x01a$\xA9V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x83W`\0\x80\xFD[Pa%\x90\x87\x82\x88\x01a#\xF7V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a\x12\x17\x81a%\x9CV[`\0` \x82\x84\x03\x12\x15a%\xDBW`\0\x80\xFD[\x815a%\xE6\x81a%\x9CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\xFFW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\x16W`\0\x80\xFD[a&\"\x84\x82\x85\x01a#\xDFV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra&\xC4\x81` \x86\x01` \x86\x01a&\x88V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'VW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x0BV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD5a\x01\xA0\x85\x01\x82a&\xACV[\x90P` \x83\x01Qa(\x13` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(+\x82\x82a&\xF6V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(E\x82\x82a&\xACV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a(\xD1W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xBF\x86\x83Qa'aV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(\x85V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)VW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x95W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xB0W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$9W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*|Wa*|a&*V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a*\x95W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xAFWa*\xAFa&*V[a*\xE0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xF5W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+$W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a+HWa+Ha&*V[\x81`@R\x82\x93P\x845\x91Pa+\\\x82a%\x9CV[\x90\x82R` \x84\x015\x90a+n\x82a%\x9CV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa+\x98\x82a%\x9CV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a+\xB2W`\0\x80\xFD[Pa+\xBF\x85\x82\x86\x01a*\x84V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a+\xDEW`\0\x80\xFD[a+\xE6a)\xC5V[\x90P\x815a+\xF3\x81a%\x9CV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,+Wa,+a&*V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,FW`\0\x80\xFD[\x815` a,[a,V\x83a,\x11V[a*5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,zW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xDFW`\x80\x81\x89\x03\x12\x15a,\x97W`\0\x80\x81\xFD[a,\x9Fa)\xEEV[\x815a,\xAA\x81a%\x9CV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\xCD\x81a%\x9CV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,~V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\xFCW`\0\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a-\x1FWa-\x1Fa&*V[`@R\x915\x82RP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a->W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-VW`\0\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a-kW`\0\x80\xFD[a-sa*\x11V[\x825\x82\x81\x11\x15a-\x82W`\0\x80\xFD[a-\x8E\x87\x82\x86\x01a+\x12V[\x82RPa-\x9D` \x84\x01a%\xBEV[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\xC3\x86`\x80\x85\x01a+\xCCV[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\xDAW`\0\x80\xFD[a-\xE6\x87\x82\x86\x01a,5V[`\xA0\x83\x01RPa-\xFA\x86a\x01\0\x85\x01a,\xEAV[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a.\x12W`\0\x80\xFD[a.\x1E\x87\x82\x86\x01a*\x84V[`\xE0\x83\x01RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.?W`\0\x80\xFD[PQ\x91\x90PV[`\0\x85Qa.X\x81\x84` \x8A\x01a&\x88V[\x85Q\x90\x83\x01\x90a.l\x81\x83` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a.\x7F\x81\x83` \x89\x01a&\x88V[\x84Q\x91\x01\x90a.\x92\x81\x83` \x88\x01a&\x88V[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x13\x15Wa\x13\x15a.\x9DV[` \x81R`\0a%\xE6` \x83\x01\x84a'aV[`\0` \x80\x83\x85\x03\x12\x15a/\tW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/ W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/1W`\0\x80\xFD[\x80Qa/?a,V\x82a,\x11V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/^W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a/\xBAW\x80\x85\x8A\x03\x12\x15a/{W`\0\x80\x81\xFD[a/\x83a)\xC5V[\x85Qa/\x8E\x81a%\x9CV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa/\xA7\x81a%\x9CV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a/cV[P\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x13\x15Wa\x13\x15a.\x9DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a&\"`@\x83\x01\x84a'aV[\x7FPriorityOrder witness)\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x16\x87Qa0A\x81\x83\x86\x01` \x8C\x01a&\x88V[\x87Q\x90\x84\x01\x90a0W\x81\x84\x84\x01` \x8C\x01a&\x88V[\x87Q\x91\x01\x90a0l\x81\x84\x84\x01` \x8B\x01a&\x88V[\x86Q\x91\x01\x90a0\x81\x81\x84\x84\x01` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a0\x96\x81\x84\x84\x01` \x89\x01a&\x88V[\x01\x01\x97\x96PPPPPPPV[`\0a\x01@a0\xD3\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\x14`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1I\x81\x84\x01\x86a&\xACV[\x90P\x82\x81\x03a\x01 \x84\x01Ra1^\x81\x85a&\xACV[\x99\x98PPPPPPPPPV[\x83\x81R\x82` \x82\x01R`\0\x82Qa1\x89\x81`@\x85\x01` \x87\x01a&\x88V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a1\xABW`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV\xFEPriorityInput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)PriorityOutput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei,address recipient)\xA2dipfsX\"\x12 5>J\x9C\x8A\xF3,\xE6{]\xE3:\xAE\xCB_\xAE\x19\x8FF\x18\xEDv\xC7\xF0\xECf\xD0\x8D\xF4@&[dsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 F%\xB7\x1D~\xED\x99\xB6\xB5\xAD\xA4\x7F\x02\x96g#\x1E\xDF\x05\xE2\x88\t\xE5T6\x0EM\xA2)T\xE8\xC6dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610094575b600080fd5b005b6100506100b7565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a79062010000900460ff1681565b604051901515815260200161008b565b60408051606081018252600080825260208201819052918101919091526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e455200000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa15801561016d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610191919061083d565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156101fe57600080fd5b505af1158015610212573d6000803e3d6000fd5b5050506e22d473030f116ddee9f6b43ac78ba33b60000390506102395761023761057b565b505b60007fb0059e9187daac70f2c765cfc99a03f9bf4321c11b7ab784ee3e310292724c1860001b6e22d473030f116ddee9f6b43ac78ba38360405161027c90610823565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156102c0573d6000803e3d6000fd5b5090506103016040518060400160405280600e81526020017f696e697420636f64652068617368000000000000000000000000000000000000815250610646565b6103d16040518060200161031490610823565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408181526e22d473030f116ddee9f6b43ac78ba3602083015273ffffffffffffffffffffffffffffffffffffffff861690820152606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526103b6929160200161089e565b604051602081830303815290604052805190602001206106d8565b6104106040518060400160405280600781526020017f52656163746f720000000000000000000000000000000000000000000000000081525082610769565b60008060001b60405161042290610830565b8190604051809103906000f5905080158015610442573d6000803e3d6000fd5b5090506104846040518060400160405280600681526020017f51756f746572000000000000000000000000000000000000000000000000000081525082610769565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104ef57600080fd5b505af1158015610503573d6000803e3d6000fd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815250935050505090565b600080604051806123e001604052806123c08152602001614c236123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c782906105fe906e22d473030f116ddee9f6b43ac78ba3908590600401610917565b600060405180830381600087803b15801561061857600080fd5b505af115801561062c573d6000803e3d6000fd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6106d58160405160240161065a919061094e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526107fe565b50565b6106d5816040516024016106ee91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f27b7cf85000000000000000000000000000000000000000000000000000000001790526107fe565b6107fa828260405160240161077f929190610961565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526107fe565b5050565b6106d58160006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6134708061099a83390190565b610e1980613e0a83390190565b60006020828403121561084f57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461087357600080fd5b9392505050565b60005b8381101561089557818101518382015260200161087d565b50506000910152565b600083516108b081846020880161087a565b8351908301906108c481836020880161087a565b01949350505050565b600081518084526108e581602086016020860161087a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061094660408301846108cd565b949350505050565b60208152600061087360208301846108cd565b60408152600061097460408301856108cd565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b5060405162003470380380620034708339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051613350620001206000396000818160e001528181610d6101526119eb01526133506000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612440565b6101eb565b005b6100b96100c93660046124ee565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612530565b6104c5565b34801561014a57600080fd5b506100b96101593660046125c9565b610683565b6100b961016c3660046125ed565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125c9565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612659565b60200260200101819052506102d981610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161285c565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb1565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861262a565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612659565b90506020028101906104789190612922565b6109f6565b82828151811061048f5761048f612659565b6020908102919091010152600101610449565b506104ac81610b60565b6104b581610bb1565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961262a565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612659565b8282815181106105d9576105d9612659565b60209081029190910101526001016105aa565b506105f681610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161285c565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb1565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612659565b602002602001018190525061087d81610b60565b61088681610bb1565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612960565b810190610a7c9190612d2c565b80516020810151604090910151919250610a9591610d04565b6000610aa082610e17565b9050610aac8183611065565b6000610abb83606001516111c7565b90506040518060a0016040528084600001518152602001610ae983866080015161121c90919063ffffffff16565b8152602001610b05838660a0015161131b90919063ffffffff16565b8152602001868060200190610b1a9190612960565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b8157610b81612659565b60200260200101519050610b9481611400565b610b9e81336118f0565b610ba881336119e9565b50600101610b65565b805160005b81811015610cf3576000838281518110610bd257610bd2612659565b602002602001015190506000816040015151905060005b81811015610c5357600083604001518281518110610c0957610c09612659565b60200260200101519050610c4a81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d239092919063ffffffff16565b50600101610be9565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9c57610c9c612659565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce191815260200190565b60405180910390a45050600101610bb6565b5047156104c1576104c13347611d6a565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b916000917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce9190612e2d565b9050818118808316600003610e0f576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061323360208301396040518060800160405280604881526020016131bd604891396040518060800160405280605b81526020016132c0605b9139604051602001610fb19493929190612e46565b60405160208183030381529060405280519060200120610fd48360000151611e04565b836020015184604001518560600151610ff08760800151611e9e565b610ffd8860a00151611f05565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110a4576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff16158015906110d157508043105b80156110e1575060c08201515181115b1561110b576020820151611103906110f98486611fa3565b8460e0015161201a565b5060c0810151515b80431015611145576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a00151828151811061117b5761117b612659565b60200260200101516040015111156111bf576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611156565b6000483a1015611203576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a0381811115611213570390565b5060005b919050565b6112566040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60008360400151836112689190612ecc565b90506298968081106112b6576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018560200151815250915050611315565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156113005760208601516112fb906298968085810390612142565b611306565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156113395761133961262a565b6040519080825280602002602001820160405280156113a257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113575790505b50915060005b818110156113f8576113d38582815181106113c5576113c5612659565b60200260200101518561217e565b8382815181106113e5576113e5612659565b60209081029190910101526001016113a8565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166114205750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611477908590600401612ee3565b600060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114da9190810190612ef6565b60408301515181519192509060006114f28284612fc6565b67ffffffffffffffff81111561150a5761150a61262a565b60405190808252806020026020018201604052801561157357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115285790505b50905060005b838110156115c4578560400151818151811061159757611597612659565b60200260200101518282815181106115b1576115b1612659565b6020908102919091010152600101611579565b5060008060005b848110156118df5760008782815181106115e7576115e7612659565b6020026020010151905060005b828110156116a55788818151811061160e5761160e612659565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361169d5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016115f4565b506000805b888110156117665760008b6040015182815181106116ca576116ca612659565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361175d578515611747576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117569084612fc6565b9250600196505b506001016116aa565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117df5784156117c6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117d89082612fc6565b9050600193505b806000036118345781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611842816005612710612142565b826020015111156118b5578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106118ca576118ca612659565b602090810291909101015250506001016115cb565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611941576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119bd9084908690600401612fd9565b60006040518083038186803b1580156119d557600080fd5b505afa158015610e0f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611aa9846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d8152602001613233608d91396040518060800160405280604881526020016131bd60489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916132c09060d401396040518060600160405280602e8152602001613205602e9139604051602001611c88959493929190613008565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cf596959493926004016130a3565b600060405180830381600087803b158015611d0f57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d485761035f8282611d6a565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612232565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613233608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161104898939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016131bd6048913980516020918201208351848301516040808701519051611048950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611f2557611f2561262a565b6040519080825280601f01601f191660200182016040528015611f4f576020820181803683370190505b50905060005b8351811015611f94576000611f82858381518110611f7557611f75612659565b6020026020010151612324565b60208381028501015250600101611f55565b50805160209091012092915050565b600081468460c00151604051602001611fbf9151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ffc93929160200161316b565b60405160208183030381529060405280519060200120905092915050565b600080828060200190518101906120319190613198565b9150915060008360408151811061204a5761204a612659565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156120a7573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612102575073ffffffffffffffffffffffffffffffffffffffff8116155b15612139576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261217757600080fd5b5091020490565b604080516060810182526000808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff16815290840151602082019015612201576121fc8560400151856121e09190612ecc565b6121ed9062989680612fc6565b6020870151906298968061239b565b612207565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061231d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b81526020016132c0605b9139805160209182012083518483015160408087015160608801519151611048969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123d057600080fd5b50910281810615159190040190565b6000604082840312156123f157600080fd5b50919050565b60008083601f84011261240957600080fd5b50813567ffffffffffffffff81111561242157600080fd5b60208301915083602082850101111561243957600080fd5b9250929050565b60008060006040848603121561245557600080fd5b833567ffffffffffffffff8082111561246d57600080fd5b612479878388016123df565b9450602086013591508082111561248f57600080fd5b5061249c868287016123f7565b9497909650939450505050565b60008083601f8401126124bb57600080fd5b50813567ffffffffffffffff8111156124d357600080fd5b6020830191508360208260051b850101111561243957600080fd5b6000806020838503121561250157600080fd5b823567ffffffffffffffff81111561251857600080fd5b612524858286016124a9565b90969095509350505050565b6000806000806040858703121561254657600080fd5b843567ffffffffffffffff8082111561255e57600080fd5b61256a888389016124a9565b9096509450602087013591508082111561258357600080fd5b50612590878288016123f7565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356112178161259c565b6000602082840312156125db57600080fd5b81356125e68161259c565b9392505050565b6000602082840312156125ff57600080fd5b813567ffffffffffffffff81111561261657600080fd5b612622848285016123df565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126a357818101518382015260200161268b565b50506000910152565b600081518084526126c4816020860160208601612688565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612756578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161270b565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d56101a08501826126ac565b905060208301516128136020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282b82826126f6565b915050606083015184820360a086015261284582826126ac565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128bf868351612761565b95509382019390820190600101612885565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261295657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261299557600080fd5b83018035915067ffffffffffffffff8211156129b057600080fd5b60200191503681900382131561243957600080fd5b6040516060810167ffffffffffffffff811182821017156129e8576129e861262a565b60405290565b6040516080810167ffffffffffffffff811182821017156129e8576129e861262a565b604051610100810167ffffffffffffffff811182821017156129e8576129e861262a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a7c57612a7c61262a565b604052919050565b600082601f830112612a9557600080fd5b813567ffffffffffffffff811115612aaf57612aaf61262a565b612ae060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a35565b818152846020838601011115612af557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2457600080fd5b60405160c0810167ffffffffffffffff8282108183111715612b4857612b4861262a565b8160405282935084359150612b5c8261259c565b908252602084013590612b6e8261259c565b816020840152604085013560408401526060850135606084015260808501359150612b988261259c565b81608084015260a0850135915080821115612bb257600080fd5b50612bbf85828601612a84565b60a0830152505092915050565b600060608284031215612bde57600080fd5b612be66129c5565b90508135612bf38161259c565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c2b57612c2b61262a565b5060051b60200190565b600082601f830112612c4657600080fd5b81356020612c5b612c5683612c11565b612a35565b82815260079290921b84018101918181019086841115612c7a57600080fd5b8286015b84811015612cdf5760808189031215612c975760008081fd5b612c9f6129ee565b8135612caa8161259c565b8152818501358582015260408083013590820152606080830135612ccd8161259c565b90820152835291830191608001612c7e565b509695505050505050565b600060208284031215612cfc57600080fd5b6040516020810181811067ffffffffffffffff82111715612d1f57612d1f61262a565b6040529135825250919050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff80821115612d5657600080fd5b908301906101408286031215612d6b57600080fd5b612d73612a11565b823582811115612d8257600080fd5b612d8e87828601612b12565b825250612d9d602084016125be565b60208201526040830135604082015260608301356060820152612dc38660808501612bcc565b608082015260e083013582811115612dda57600080fd5b612de687828601612c35565b60a083015250612dfa866101008501612cea565b60c082015261012083013582811115612e1257600080fd5b612e1e87828601612a84565b60e08301525095945050505050565b600060208284031215612e3f57600080fd5b5051919050565b60008551612e58818460208a01612688565b855190830190612e6c818360208a01612688565b8551910190612e7f818360208901612688565b8451910190612e92818360208801612688565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761131557611315612e9d565b6020815260006125e66020830184612761565b60006020808385031215612f0957600080fd5b825167ffffffffffffffff811115612f2057600080fd5b8301601f81018513612f3157600080fd5b8051612f3f612c5682612c11565b81815260609182028301840191848201919088841115612f5e57600080fd5b938501935b83851015612fba5780858a031215612f7b5760008081fd5b612f836129c5565b8551612f8e8161259c565b81528587015187820152604080870151612fa78161259c565b9082015283529384019391850191612f63565b50979650505050505050565b8082018082111561131557611315612e9d565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006126226040830184612761565b7f5072696f726974794f72646572207769746e657373290000000000000000000081526000601687516130418183860160208c01612688565b8751908401906130578184840160208c01612688565b875191019061306c8184840160208b01612688565b86519101906130818184840160208a01612688565b85519101906130968184840160208901612688565b0101979650505050505050565b60006101406130d3838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131146080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152613149818401866126ac565b905082810361012084015261315e81856126ac565b9998505050505050505050565b83815282602082015260008251613189816040850160208701612688565b91909101604001949350505050565b600080604083850312156131ab57600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220353e4a9c8af32ce67b5de33aaecb5fae198f4618ed76c7f0ec66d08df440265b64736f6c63430008180033608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212204625b71d7eed99b6b5ada47f029667231edf05e28809e554360e4da22954e8c664736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x94W[`\0\x80\xFD[\0[a\0Pa\0\xB7V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA7\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8BV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01mW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x91\x91\x90a\x08=V[\x90P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xFEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x12W=`\0\x80>=`\0\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;`\0\x03\x90Pa\x029Wa\x027a\x05{V[P[`\0\x7F\xB0\x05\x9E\x91\x87\xDA\xACp\xF2\xC7e\xCF\xC9\x9A\x03\xF9\xBFC!\xC1\x1Bz\xB7\x84\xEE>1\x02\x92rL\x18`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02|\x90a\x08#V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02\xC0W=`\0\x80>=`\0\xFD[P\x90Pa\x03\x01`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01\x7Finit code hash\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RPa\x06FV[a\x03\xD1`@Q\x80` \x01a\x03\x14\x90a\x08#V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x82\x82\x03\x81\x01\x83R`\x1F\x90\x91\x01\x16`@\x81\x81Rn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3` \x83\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x90\x82\x01R``\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x03\xB6\x92\x91` \x01a\x08\x9EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x06\xD8V[a\x04\x10`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x07iV[`\0\x80`\0\x1B`@Qa\x04\"\x90a\x080V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x04BW=`\0\x80>=`\0\xFD[P\x90Pa\x04\x84`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x07iV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xEFW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\x03W=`\0\x80>=`\0\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x93PPPP\x90V[`\0\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aL#a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x05\xFE\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\t\x17V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06\x18W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06,W=`\0\x80>=`\0\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x06\xD5\x81`@Q`$\x01a\x06Z\x91\x90a\tNV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7FA0O\xAC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xFEV[PV[a\x06\xD5\x81`@Q`$\x01a\x06\xEE\x91\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F'\xB7\xCF\x85\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xFEV[a\x07\xFA\x82\x82`@Q`$\x01a\x07\x7F\x92\x91\x90a\taV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xFEV[PPV[a\x06\xD5\x81`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a4p\x80a\t\x9A\x839\x01\x90V[a\x0E\x19\x80a>\n\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x08OW`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08sW`\0\x80\xFD[\x93\x92PPPV[`\0[\x83\x81\x10\x15a\x08\x95W\x81\x81\x01Q\x83\x82\x01R` \x01a\x08}V[PP`\0\x91\x01RV[`\0\x83Qa\x08\xB0\x81\x84` \x88\x01a\x08zV[\x83Q\x90\x83\x01\x90a\x08\xC4\x81\x83` \x88\x01a\x08zV[\x01\x94\x93PPPPV[`\0\x81Q\x80\x84Ra\x08\xE5\x81` \x86\x01` \x86\x01a\x08zV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\tF`@\x83\x01\x84a\x08\xCDV[\x94\x93PPPPV[` \x81R`\0a\x08s` \x83\x01\x84a\x08\xCDV[`@\x81R`\0a\tt`@\x83\x01\x85a\x08\xCDV[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x004p8\x03\x80b\x004p\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa3Pb\0\x01 `\09`\0\x81\x81`\xE0\x01R\x81\x81a\ra\x01Ra\x19\xEB\x01Ra3P`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$@V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\xEEV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%0V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a%\xC9V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\xEDV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a%\xC9V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&YV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB1V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\"V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0B`V[a\x04\xB5\x81a\x0B\xB1V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB1V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&YV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0B`V[a\x08\x86\x81a\x0B\xB1V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a)`V[\x81\x01\x90a\n|\x91\x90a-,V[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\n\x95\x91a\r\x04V[`\0a\n\xA0\x82a\x0E\x17V[\x90Pa\n\xAC\x81\x83a\x10eV[`\0a\n\xBB\x83``\x01Qa\x11\xC7V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\n\xE9\x83\x86`\x80\x01Qa\x12\x1C\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\x0B\x05\x83\x86`\xA0\x01Qa\x13\x1B\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x1A\x91\x90a)`V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x81Wa\x0B\x81a&YV[` \x02` \x01\x01Q\x90Pa\x0B\x94\x81a\x14\0V[a\x0B\x9E\x813a\x18\xF0V[a\x0B\xA8\x813a\x19\xE9V[P`\x01\x01a\x0BeV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF3W`\0\x83\x82\x81Q\x81\x10a\x0B\xD2Wa\x0B\xD2a&YV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CSW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\tWa\x0C\ta&YV[` \x02` \x01\x01Q\x90Pa\x0CJ\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D#\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xE9V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9CWa\x0C\x9Ca&YV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE1\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB6V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1DjV[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xCE\x91\x90a.-V[\x90P\x81\x81\x18\x80\x83\x16`\0\x03a\x0E\x0FW`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R`\0\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a23` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919`@Q` \x01a\x0F\xB1\x94\x93\x92\x91\x90a.FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\xD4\x83`\0\x01Qa\x1E\x04V[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xF0\x87`\x80\x01Qa\x1E\x9EV[a\x0F\xFD\x88`\xA0\x01Qa\x1F\x05V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xA4W`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\xD1WP\x80C\x10[\x80\x15a\x10\xE1WP`\xC0\x82\x01QQ\x81\x11[\x15a\x11\x0BW` \x82\x01Qa\x11\x03\x90a\x10\xF9\x84\x86a\x1F\xA3V[\x84`\xE0\x01Qa \x1AV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11EW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03_W`\0[\x82`\xA0\x01QQ\x81\x10\x15a\x06}W`\0\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11{Wa\x11{a&YV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\xBFW`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11VV[`\0H:\x10\x15a\x12\x03W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x12\x13W\x03\x90V[P`\0[\x91\x90PV[a\x12V`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0\x83`@\x01Q\x83a\x12h\x91\x90a.\xCCV[\x90Pb\x98\x96\x80\x81\x10a\x12\xB6W`@Q\x80``\x01`@R\x80\x85`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x13\x15V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x13\0W` \x86\x01Qa\x12\xFB\x90b\x98\x96\x80\x85\x81\x03\x90a!BV[a\x13\x06V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x139Wa\x139a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xA2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13WW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x13\xF8Wa\x13\xD3\x85\x82\x81Q\x81\x10a\x13\xC5Wa\x13\xC5a&YV[` \x02` \x01\x01Q\x85a!~V[\x83\x82\x81Q\x81\x10a\x13\xE5Wa\x13\xE5a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xA8V[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14 WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14w\x90\x85\x90`\x04\x01a.\xE3V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xDA\x91\x90\x81\x01\x90a.\xF6V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x14\xF2\x82\x84a/\xC6V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\nWa\x15\na&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15sW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15(W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\xC4W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\x97Wa\x15\x97a&YV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xB1Wa\x15\xB1a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15yV[P`\0\x80`\0[\x84\x81\x10\x15a\x18\xDFW`\0\x87\x82\x81Q\x81\x10a\x15\xE7Wa\x15\xE7a&YV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x16\xA5W\x88\x81\x81Q\x81\x10a\x16\x0EWa\x16\x0Ea&YV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\x9DW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x15\xF4V[P`\0\x80[\x88\x81\x10\x15a\x17fW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xCAWa\x16\xCAa&YV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17]W\x85\x15a\x17GW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17V\x90\x84a/\xC6V[\x92P`\x01\x96P[P`\x01\x01a\x16\xAAV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xDFW\x84\x15a\x17\xC6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xD8\x90\x82a/\xC6V[\x90P`\x01\x93P[\x80`\0\x03a\x184W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18B\x81`\x05a'\x10a!BV[\x82` \x01Q\x11\x15a\x18\xB5W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xCAWa\x18\xCAa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xCBV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19AW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xBD\x90\x84\x90\x86\x90`\x04\x01a/\xD9V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xD5W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xA9\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a2\xC0\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\x05`.\x919`@Q` \x01a\x1C\x88\x95\x94\x93\x92\x91\x90a0\x08V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xF5\x96\x95\x94\x93\x92`\x04\x01a0\xA3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\x0FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1DHWa\x03_\x82\x82a\x1DjV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\"2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xC4W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1D\xC9V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10H\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10H\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1F%Wa\x1F%a&*V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1FOW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F\x94W`\0a\x1F\x82\x85\x83\x81Q\x81\x10a\x1FuWa\x1Fua&YV[` \x02` \x01\x01Qa#$V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1FUV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xC0\x01Q`@Q` \x01a\x1F\xBF\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\xFC\x93\x92\x91` \x01a1kV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a 1\x91\x90a1\x98V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a JWa Ja&YV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a \xA7W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a!\x02WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a!9W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!wW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a\"\x01Wa!\xFC\x85`@\x01Q\x85a!\xE0\x91\x90a.\xCCV[a!\xED\x90b\x98\x96\x80a/\xC6V[` \x87\x01Q\x90b\x98\x96\x80a#\x9BV[a\"\x07V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a#\x1DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10H\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xD0W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0`@\x82\x84\x03\x12\x15a#\xF1W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\tW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$!W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$UW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$mW`\0\x80\xFD[a$y\x87\x83\x88\x01a#\xDFV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x8FW`\0\x80\xFD[Pa$\x9C\x86\x82\x87\x01a#\xF7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a$\xBBW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xD3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\x01W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x18W`\0\x80\xFD[a%$\x85\x82\x86\x01a$\xA9V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%FW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%^W`\0\x80\xFD[a%j\x88\x83\x89\x01a$\xA9V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x83W`\0\x80\xFD[Pa%\x90\x87\x82\x88\x01a#\xF7V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a\x12\x17\x81a%\x9CV[`\0` \x82\x84\x03\x12\x15a%\xDBW`\0\x80\xFD[\x815a%\xE6\x81a%\x9CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\xFFW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\x16W`\0\x80\xFD[a&\"\x84\x82\x85\x01a#\xDFV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra&\xC4\x81` \x86\x01` \x86\x01a&\x88V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'VW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x0BV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD5a\x01\xA0\x85\x01\x82a&\xACV[\x90P` \x83\x01Qa(\x13` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(+\x82\x82a&\xF6V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(E\x82\x82a&\xACV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a(\xD1W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xBF\x86\x83Qa'aV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(\x85V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)VW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x95W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xB0W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$9W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*|Wa*|a&*V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a*\x95W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xAFWa*\xAFa&*V[a*\xE0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xF5W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+$W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a+HWa+Ha&*V[\x81`@R\x82\x93P\x845\x91Pa+\\\x82a%\x9CV[\x90\x82R` \x84\x015\x90a+n\x82a%\x9CV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa+\x98\x82a%\x9CV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a+\xB2W`\0\x80\xFD[Pa+\xBF\x85\x82\x86\x01a*\x84V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a+\xDEW`\0\x80\xFD[a+\xE6a)\xC5V[\x90P\x815a+\xF3\x81a%\x9CV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,+Wa,+a&*V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,FW`\0\x80\xFD[\x815` a,[a,V\x83a,\x11V[a*5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,zW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xDFW`\x80\x81\x89\x03\x12\x15a,\x97W`\0\x80\x81\xFD[a,\x9Fa)\xEEV[\x815a,\xAA\x81a%\x9CV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\xCD\x81a%\x9CV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,~V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\xFCW`\0\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a-\x1FWa-\x1Fa&*V[`@R\x915\x82RP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a->W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-VW`\0\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a-kW`\0\x80\xFD[a-sa*\x11V[\x825\x82\x81\x11\x15a-\x82W`\0\x80\xFD[a-\x8E\x87\x82\x86\x01a+\x12V[\x82RPa-\x9D` \x84\x01a%\xBEV[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\xC3\x86`\x80\x85\x01a+\xCCV[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\xDAW`\0\x80\xFD[a-\xE6\x87\x82\x86\x01a,5V[`\xA0\x83\x01RPa-\xFA\x86a\x01\0\x85\x01a,\xEAV[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a.\x12W`\0\x80\xFD[a.\x1E\x87\x82\x86\x01a*\x84V[`\xE0\x83\x01RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.?W`\0\x80\xFD[PQ\x91\x90PV[`\0\x85Qa.X\x81\x84` \x8A\x01a&\x88V[\x85Q\x90\x83\x01\x90a.l\x81\x83` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a.\x7F\x81\x83` \x89\x01a&\x88V[\x84Q\x91\x01\x90a.\x92\x81\x83` \x88\x01a&\x88V[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x13\x15Wa\x13\x15a.\x9DV[` \x81R`\0a%\xE6` \x83\x01\x84a'aV[`\0` \x80\x83\x85\x03\x12\x15a/\tW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/ W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/1W`\0\x80\xFD[\x80Qa/?a,V\x82a,\x11V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/^W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a/\xBAW\x80\x85\x8A\x03\x12\x15a/{W`\0\x80\x81\xFD[a/\x83a)\xC5V[\x85Qa/\x8E\x81a%\x9CV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa/\xA7\x81a%\x9CV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a/cV[P\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x13\x15Wa\x13\x15a.\x9DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a&\"`@\x83\x01\x84a'aV[\x7FPriorityOrder witness)\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x16\x87Qa0A\x81\x83\x86\x01` \x8C\x01a&\x88V[\x87Q\x90\x84\x01\x90a0W\x81\x84\x84\x01` \x8C\x01a&\x88V[\x87Q\x91\x01\x90a0l\x81\x84\x84\x01` \x8B\x01a&\x88V[\x86Q\x91\x01\x90a0\x81\x81\x84\x84\x01` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a0\x96\x81\x84\x84\x01` \x89\x01a&\x88V[\x01\x01\x97\x96PPPPPPPV[`\0a\x01@a0\xD3\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\x14`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1I\x81\x84\x01\x86a&\xACV[\x90P\x82\x81\x03a\x01 \x84\x01Ra1^\x81\x85a&\xACV[\x99\x98PPPPPPPPPV[\x83\x81R\x82` \x82\x01R`\0\x82Qa1\x89\x81`@\x85\x01` \x87\x01a&\x88V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a1\xABW`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV\xFEPriorityInput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)PriorityOutput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei,address recipient)\xA2dipfsX\"\x12 5>J\x9C\x8A\xF3,\xE6{]\xE3:\xAE\xCB_\xAE\x19\x8FF\x18\xEDv\xC7\xF0\xECf\xD0\x8D\xF4@&[dsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 F%\xB7\x1D~\xED\x99\xB6\xB5\xAD\xA4\x7F\x02\x96g#\x1E\xDF\x05\xE2\x88\t\xE5T6\x0EM\xA2)T\xE8\xC6dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct PriorityOrderReactorDeployment { address permit2; address reactor; address quoter; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PriorityOrderReactorDeployment { + pub permit2: alloy::sol_types::private::Address, + pub reactor: alloy::sol_types::private::Address, + pub quoter: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: PriorityOrderReactorDeployment) -> Self { + (value.permit2, value.reactor, value.quoter) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for PriorityOrderReactorDeployment { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit2: tuple.0, + reactor: tuple.1, + quoter: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PriorityOrderReactorDeployment { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue + for PriorityOrderReactorDeployment { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.permit2, + ), + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.quoter, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PriorityOrderReactorDeployment { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PriorityOrderReactorDeployment { + const NAME: &'static str = "PriorityOrderReactorDeployment"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PriorityOrderReactorDeployment(address permit2,address reactor,address quoter)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.permit2, + ) + .0, + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.quoter, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PriorityOrderReactorDeployment { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.permit2, + ) + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.quoter, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.permit2, + out, + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.quoter, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. +```solidity +function IS_SCRIPT() external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `run()` and selector `0xc0406226`. +```solidity +function run() external returns (PriorityOrderReactorDeployment memory deployment); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runReturn { + pub deployment: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (PriorityOrderReactorDeployment,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runReturn) -> Self { + (value.deployment,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { deployment: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for runCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = runReturn; + type ReturnTuple<'a> = (PriorityOrderReactorDeployment,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "run()"; + const SELECTOR: [u8; 4] = [192u8, 64u8, 98u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setUp()` and selector `0x0a9254e4`. +```solidity +function setUp() external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setUpCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setUpReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setUp()"; + const SELECTOR: [u8; 4] = [10u8, 146u8, 84u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`DeployPriorityOrderReactor`](self) function calls. + pub enum DeployPriorityOrderReactorCalls { + IS_SCRIPT(IS_SCRIPTCall), + run(runCall), + setUp(setUpCall), + } + #[automatically_derived] + impl DeployPriorityOrderReactorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [10u8, 146u8, 84u8, 228u8], + [192u8, 64u8, 98u8, 38u8], + [248u8, 204u8, 191u8, 71u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DeployPriorityOrderReactorCalls { + const NAME: &'static str = "DeployPriorityOrderReactorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => { + ::SELECTOR + } + Self::run(_) => ::SELECTOR, + Self::setUp(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployPriorityOrderReactorCalls::setUp) + } + setUp + }, + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployPriorityOrderReactorCalls::run) + } + run + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployPriorityOrderReactorCalls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::run(inner) => { + ::abi_encoded_size(inner) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::run(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DeployPriorityOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`DeployPriorityOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DeployPriorityOrderReactorInstance { + DeployPriorityOrderReactorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DeployPriorityOrderReactorInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + DeployPriorityOrderReactorInstance::::deploy_builder(provider) + } + /**A [`DeployPriorityOrderReactor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DeployPriorityOrderReactor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DeployPriorityOrderReactorInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DeployPriorityOrderReactorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DeployPriorityOrderReactorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployPriorityOrderReactorInstance { + /**Creates a new wrapper around an on-chain [`DeployPriorityOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`DeployPriorityOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DeployPriorityOrderReactorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> DeployPriorityOrderReactorInstance { + DeployPriorityOrderReactorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployPriorityOrderReactorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`run`] function. + pub fn run(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&runCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployPriorityOrderReactorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/deployswaprouter02executor.rs b/crates/bindings-uniswapx/src/deployswaprouter02executor.rs new file mode 100644 index 0000000..d9cbcc5 --- /dev/null +++ b/crates/bindings-uniswapx/src/deployswaprouter02executor.rs @@ -0,0 +1,751 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DeploySwapRouter02Executor { + function IS_SCRIPT() external view returns (bool); + function run() external returns (address executor); + function setUp() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "run", + "inputs": [], + "outputs": [ + { + "name": "executor", + "type": "address", + "internalType": "contract SwapRouter02Executor" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DeploySwapRouter02Executor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b506122f6806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf471461007a575b600080fd5b005b61005061009d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600c5461008d9062010000900460ff1681565b6040519015158152602001610071565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f464f554e4452595f505249564154455f4b45590000000000000000000000000060448201526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa158015610138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015c9190610827565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f52454143544f520000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa15801561021e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102429190610840565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f57484954454c49535445445f43414c4c4552000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103289190610840565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f4f574e455200000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156103ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040e9190610840565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f53574150524f555445523032000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156104d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f49190610840565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101879052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561055d57600080fd5b505af1158015610571573d6000803e3d6000fd5b505050506000801b838584846040516105899061081a565b73ffffffffffffffffffffffffffffffffffffffff94851681529284166020840152908316604083015290911660608201526080018190604051809103906000f59050801580156105de573d6000803e3d6000fd5b5095507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561064c57600080fd5b505af1158015610660573d6000803e3d6000fd5b505050506106a36040518060400160405280601481526020017f53776170526f7574657230324578656375746f7200000000000000000000000081525087610758565b6107506040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508773ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074b9190610840565b610758565b505050505090565b6107e9828260405160240161076e92919061087d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526107ed565b5050565b6107f6816107f9565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6119ba8061090783390190565b60006020828403121561083957600080fd5b5051919050565b60006020828403121561085257600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461087657600080fd5b9392505050565b604081526000835180604084015260005b818110156108ab576020818701810151606086840101520161088e565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe6101006040523480156200001257600080fd5b50604051620019ba380380620019ba83398101604081905262000035916200012b565b600080546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0380851660a05283811660c05281166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa158015620000d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fb919062000193565b6001600160a01b031660e05250620001ba92505050565b6001600160a01b03811681146200012857600080fd5b50565b600080600080608085870312156200014257600080fd5b84516200014f8162000112565b6020860151909450620001628162000112565b6040860151909350620001758162000112565b6060860151909250620001888162000112565b939692955090935050565b600060208284031215620001a657600080fd5b8151620001b38162000112565b9392505050565b60805160a05160c05160e05161178762000233600039600081816107e501526108970152600081816101db015281816102f201528181610452015281816109c20152610ad501526000818161092e0152610a410152600081816102590152818161038a0152818161051601526105e001526117876000f3fe60806040526004361061007f5760003560e01c80638da5cb5b1161004e5780638da5cb5b1461010d578063d0f2d8ac14610163578063e5135ec614610183578063f2fde38b146101a357600080fd5b8063585da6281461008b57806363fb0b96146100ad578063690d8320146100cd57806389a3f136146100ed57600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a6366004610eb0565b6101c3565b005b3480156100b957600080fd5b506100ab6100c8366004610f1c565b610480565b3480156100d957600080fd5b506100ab6100e8366004610f9e565b6106a5565b3480156100f957600080fd5b506100ab610108366004610f9e565b610733565b34801561011957600080fd5b5060005461013a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34801561016f57600080fd5b506100ab61017e366004610fc2565b610916565b34801561018f57600080fd5b506100ab61019e366004610eb0565b610a29565b3480156101af57600080fd5b506100ab6101be366004610f9e565b610b48565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610232576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808061024284860186611193565b92509250925060005b83518110156102e0576102d87f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8684815181106102ab576102ab6112c9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610c399092919063ffffffff16565b60010161024b565b5060005b825181101561034c576103447f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8584815181106102ab576102ab6112c9565b6001016102e4565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906103e1907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161131c565b6000604051808303816000875af1158015610400573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261044691908101906113da565b504715610477576104777f000000000000000000000000000000000000000000000000000000000000000047610d0e565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b838110156105a25761059a7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff878785818110610568576105686112c9565b905060200201602081019061057d9190610f9e565b73ffffffffffffffffffffffffffffffffffffffff169190610c39565b600101610509565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610639907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908690600401611574565b6000604051808303816000875af1158015610658573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261069e91908101906113da565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6107308147610dad565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108659190611605565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050506109128247610dad565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610985576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906109fb90869086908690600401611669565b600060405180830381600087803b158015610a1557600080fd5b505af1158015610477573d6000803e3d6000fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a98576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c790610b1090879087908790879060040161168f565b600060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c454400000000000000000000000000000000000060448201526064016104fd565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610d68576040519150601f19603f3d011682016040523d82523d6000602084013e610d6d565b606091505b5050905080610da8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064016104fd565b60008083601f840112610e3457600080fd5b50813567ffffffffffffffff811115610e4c57600080fd5b6020830191508360208260051b8501011115610e6757600080fd5b9250929050565b60008083601f840112610e8057600080fd5b50813567ffffffffffffffff811115610e9857600080fd5b602083019150836020828501011115610e6757600080fd5b60008060008060408587031215610ec657600080fd5b843567ffffffffffffffff80821115610ede57600080fd5b610eea88838901610e22565b90965094506020870135915080821115610f0357600080fd5b50610f1087828801610e6e565b95989497509550505050565b60008060008060408587031215610f3257600080fd5b843567ffffffffffffffff80821115610f4a57600080fd5b610f5688838901610e22565b90965094506020870135915080821115610f6f57600080fd5b50610f1087828801610e22565b73ffffffffffffffffffffffffffffffffffffffff8116811461073057600080fd5b600060208284031215610fb057600080fd5b8135610fbb81610f7c565b9392505050565b600080600060408486031215610fd757600080fd5b833567ffffffffffffffff80821115610fef57600080fd5b908501906040828803121561100357600080fd5b9093506020850135908082111561101957600080fd5b5061102686828701610e6e565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156110a9576110a9611033565b604052919050565b600067ffffffffffffffff8211156110cb576110cb611033565b5060051b60200190565b600082601f8301126110e657600080fd5b813560206110fb6110f6836110b1565b611062565b8083825260208201915060208460051b87010193508684111561111d57600080fd5b602086015b8481101561114257803561113581610f7c565b8352918301918301611122565b509695505050505050565b600067ffffffffffffffff82111561116757611167611033565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806000606084860312156111a857600080fd5b833567ffffffffffffffff808211156111c057600080fd5b6111cc878388016110d5565b94506020915081860135818111156111e357600080fd5b6111ef888289016110d5565b9450506040808701358281111561120557600080fd5b8701601f8101891361121657600080fd5b80356112246110f6826110b1565b81815260059190911b8201850190858101908b83111561124357600080fd5b8684015b838110156112b75780358781111561125f5760008081fd5b8501603f81018e136112715760008081fd5b888101356112816110f68261114d565b8181528f898385010111156112965760008081fd5b818984018c83013760009181018b0191909152845250918701918701611247565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156113135781810151838201526020016112fb565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b828110156113cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261138f81888a018985016112f8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169690960185019550928401929084019060010161134a565b509398975050505050505050565b600060208083850312156113ed57600080fd5b825167ffffffffffffffff8082111561140557600080fd5b818501915085601f83011261141957600080fd5b81516114276110f6826110b1565b81815260059190911b8301840190848101908883111561144657600080fd5b8585015b838110156114ba578051858111156114625760008081fd5b8601603f81018b136114745760008081fd5b8781015160406114866110f68361114d565b8281528d8284860101111561149b5760008081fd5b6114aa838c83018487016112f8565b865250505091860191860161144a565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261154557600080fd5b830160208101925035905067ffffffffffffffff81111561156557600080fd5b803603821315610e6757600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b878110156115f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08786030183526115d8828a611510565b6115e38782846114c7565b96505050918301919083019060010161159f565b509298975050505050505050565b60006020828403121561161757600080fd5b5051919050565b600061162a8283611510565b6040855261163c6040860182846114c7565b91505061164c6020840184611510565b858303602087015261165f8382846114c7565b9695505050505050565b60408152600061167c604083018661161e565b828103602084015261165f8185876114c7565b6040808252810184905260006060600586901b830181019083018783805b8981101561172f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c360301811261170d578283fd5b611719868d830161161e565b95505060209384019392909201916001016116ad565b5050505082810360208401526117468185876114c7565b97965050505050505056fea26469706673582212205640b0557ec4552053567f3573115b9ceb5d4ac286ac0a470e1e07df158e28e864736f6c63430008180033a2646970667358221220aa0b076fb349b0be212a4a8b91d6ee78cb2c991e15d5911ceb77885d5d25087864736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pa\"\xF6\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0zW[`\0\x80\xFD[\0[a\0Pa\0\x9DV[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x8D\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0qV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x018W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\\\x91\x90a\x08'V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_REACTOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02B\x91\x90a\x08@V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_WHITELISTED_CALLER\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x04W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03(\x91\x90a\x08@V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_OWNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x0E\x91\x90a\x08@V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_SWAPROUTER02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xD0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xF4\x91\x90a\x08@V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x87\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05]W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05qW=`\0\x80>=`\0\xFD[PPPP`\0\x80\x1B\x83\x85\x84\x84`@Qa\x05\x89\x90a\x08\x1AV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x90\x83\x16`@\x83\x01R\x90\x91\x16``\x82\x01R`\x80\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x05\xDEW=`\0\x80>=`\0\xFD[P\x95P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06`W=`\0\x80>=`\0\xFD[PPPPa\x06\xA3`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x87a\x07XV[a\x07P`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07K\x91\x90a\x08@V[a\x07XV[PPPPP\x90V[a\x07\xE9\x82\x82`@Q`$\x01a\x07n\x92\x91\x90a\x08}V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xEDV[PPV[a\x07\xF6\x81a\x07\xF9V[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x19\xBA\x80a\t\x07\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x089W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x08RW`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08vW`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0\x83Q\x80`@\x84\x01R`\0[\x81\x81\x10\x15a\x08\xABW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x08\x8EV[P`\0``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFEa\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\x19\xBA8\x03\x80b\0\x19\xBA\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01+V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x81\x16`\xC0R\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\xD5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xFB\x91\x90b\0\x01\x93V[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xBA\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01(W`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x01BW`\0\x80\xFD[\x84Qb\0\x01O\x81b\0\x01\x12V[` \x86\x01Q\x90\x94Pb\0\x01b\x81b\0\x01\x12V[`@\x86\x01Q\x90\x93Pb\0\x01u\x81b\0\x01\x12V[``\x86\x01Q\x90\x92Pb\0\x01\x88\x81b\0\x01\x12V[\x93\x96\x92\x95P\x90\x93PPV[`\0` \x82\x84\x03\x12\x15b\0\x01\xA6W`\0\x80\xFD[\x81Qb\0\x01\xB3\x81b\0\x01\x12V[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x17\x87b\0\x023`\09`\0\x81\x81a\x07\xE5\x01Ra\x08\x97\x01R`\0\x81\x81a\x01\xDB\x01R\x81\x81a\x02\xF2\x01R\x81\x81a\x04R\x01R\x81\x81a\t\xC2\x01Ra\n\xD5\x01R`\0\x81\x81a\t.\x01Ra\nA\x01R`\0\x81\x81a\x02Y\x01R\x81\x81a\x03\x8A\x01R\x81\x81a\x05\x16\x01Ra\x05\xE0\x01Ra\x17\x87`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x7FW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0NW\x80c\x8D\xA5\xCB[\x14a\x01\rW\x80c\xD0\xF2\xD8\xAC\x14a\x01cW\x80c\xE5\x13^\xC6\x14a\x01\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xA3W`\0\x80\xFD[\x80cX]\xA6(\x14a\0\x8BW\x80cc\xFB\x0B\x96\x14a\0\xADW\x80ci\r\x83 \x14a\0\xCDW\x80c\x89\xA3\xF16\x14a\0\xEDW`\0\x80\xFD[6a\0\x86W\0[`\0\x80\xFD[4\x80\x15a\0\x97W`\0\x80\xFD[Pa\0\xABa\0\xA66`\x04a\x0E\xB0V[a\x01\xC3V[\0[4\x80\x15a\0\xB9W`\0\x80\xFD[Pa\0\xABa\0\xC86`\x04a\x0F\x1CV[a\x04\x80V[4\x80\x15a\0\xD9W`\0\x80\xFD[Pa\0\xABa\0\xE86`\x04a\x0F\x9EV[a\x06\xA5V[4\x80\x15a\0\xF9W`\0\x80\xFD[Pa\0\xABa\x01\x086`\x04a\x0F\x9EV[a\x073V[4\x80\x15a\x01\x19W`\0\x80\xFD[P`\0Ta\x01:\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01oW`\0\x80\xFD[Pa\0\xABa\x01~6`\x04a\x0F\xC2V[a\t\x16V[4\x80\x15a\x01\x8FW`\0\x80\xFD[Pa\0\xABa\x01\x9E6`\x04a\x0E\xB0V[a\n)V[4\x80\x15a\x01\xAFW`\0\x80\xFD[Pa\0\xABa\x01\xBE6`\x04a\x0F\x9EV[a\x0BHV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x022W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02B\x84\x86\x01\x86a\x11\x93V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x02\xE0Wa\x02\xD8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0C9\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02KV[P`\0[\x82Q\x81\x10\x15a\x03LWa\x03D\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[`\x01\x01a\x02\xE4V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x03\xE1\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x13\x1CV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04F\x91\x90\x81\x01\x90a\x13\xDAV[PG\x15a\x04wWa\x04w\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\r\x0EV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a\x05\xA2Wa\x05\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x05hWa\x05ha\x12\xC9V[\x90P` \x02\x01` \x81\x01\x90a\x05}\x91\x90a\x0F\x9EV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C9V[`\x01\x01a\x05\tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x069\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x15tV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x06\x9E\x91\x90\x81\x01\x90a\x13\xDAV[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07&W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[a\x070\x81Ga\r\xADV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\xB4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08e\x91\x90a\x16\x05V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\t\x04W=`\0\x80>=`\0\xFD[PPPPa\t\x12\x82Ga\r\xADV[PPV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x85W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\t\xFB\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x16iV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x15W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04wW=`\0\x80>=`\0\xFD[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\x98W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x0B\x10\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16\x8FV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B*W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B>W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\xC9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\r\x08W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\rhW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\rmV[``\x91P[PP\x90P\x80a\r\xA8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\r\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ELW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E\x80W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x98W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0E\xC6W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xDEW`\0\x80\xFD[a\x0E\xEA\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0F\x03W`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0EnV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0F2W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0FJW`\0\x80\xFD[a\x0FV\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0FoW`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0E\"V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x070W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xB0W`\0\x80\xFD[\x815a\x0F\xBB\x81a\x0F|V[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0F\xD7W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\xEFW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x10\x03W`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x10\x19W`\0\x80\xFD[Pa\x10&\x86\x82\x87\x01a\x0EnV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10\xA9Wa\x10\xA9a\x103V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10\xCBWa\x10\xCBa\x103V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x10\xE6W`\0\x80\xFD[\x815` a\x10\xFBa\x10\xF6\x83a\x10\xB1V[a\x10bV[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x11\x1DW`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x11BW\x805a\x115\x81a\x0F|V[\x83R\x91\x83\x01\x91\x83\x01a\x11\"V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11gWa\x11ga\x103V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\xA8W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xC0W`\0\x80\xFD[a\x11\xCC\x87\x83\x88\x01a\x10\xD5V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\xE3W`\0\x80\xFD[a\x11\xEF\x88\x82\x89\x01a\x10\xD5V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x12\x05W`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x12\x16W`\0\x80\xFD[\x805a\x12$a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x12CW`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12\xB7W\x805\x87\x81\x11\x15a\x12_W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12qW`\0\x80\x81\xFD[\x88\x81\x015a\x12\x81a\x10\xF6\x82a\x11MV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12\x96W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x12GV[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x13\x13W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\xFBV[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x13\xCCW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13\x8F\x81\x88\x8A\x01\x89\x85\x01a\x12\xF8V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x13JV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x13\xEDW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\x05W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x14\x19W`\0\x80\xFD[\x81Qa\x14'a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x14FW`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14\xBAW\x80Q\x85\x81\x11\x15a\x14bW`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x14tW`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x14\x86a\x10\xF6\x83a\x11MV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14\x9BW`\0\x80\x81\xFD[a\x14\xAA\x83\x8C\x83\x01\x84\x87\x01a\x12\xF8V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x14JV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x15EW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15eW`\0\x80\xFD[\x806\x03\x82\x13\x15a\x0EgW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x15\xF7W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15\xD8\x82\x8Aa\x15\x10V[a\x15\xE3\x87\x82\x84a\x14\xC7V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15\x9FV[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x16\x17W`\0\x80\xFD[PQ\x91\x90PV[`\0a\x16*\x82\x83a\x15\x10V[`@\x85Ra\x16<`@\x86\x01\x82\x84a\x14\xC7V[\x91PPa\x16L` \x84\x01\x84a\x15\x10V[\x85\x83\x03` \x87\x01Ra\x16_\x83\x82\x84a\x14\xC7V[\x96\x95PPPPPPV[`@\x81R`\0a\x16|`@\x83\x01\x86a\x16\x1EV[\x82\x81\x03` \x84\x01Ra\x16_\x81\x85\x87a\x14\xC7V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x17/W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x17\rW\x82\x83\xFD[a\x17\x19\x86\x8D\x83\x01a\x16\x1EV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x16\xADV[PPPP\x82\x81\x03` \x84\x01Ra\x17F\x81\x85\x87a\x14\xC7V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 V@\xB0U~\xC4U SV\x7F5s\x11[\x9C\xEB]J\xC2\x86\xAC\nG\x0E\x1E\x07\xDF\x15\x8E(\xE8dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xAA\x0B\x07o\xB3I\xB0\xBE!*J\x8B\x91\xD6\xEEx\xCB,\x99\x1E\x15\xD5\x91\x1C\xEBw\x88]]%\x08xdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf471461007a575b600080fd5b005b61005061009d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600c5461008d9062010000900460ff1681565b6040519015158152602001610071565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f464f554e4452595f505249564154455f4b45590000000000000000000000000060448201526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa158015610138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015c9190610827565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f52454143544f520000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa15801561021e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102429190610840565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f57484954454c49535445445f43414c4c4552000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103289190610840565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f4f574e455200000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156103ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040e9190610840565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f53574150524f555445523032000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156104d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f49190610840565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101879052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561055d57600080fd5b505af1158015610571573d6000803e3d6000fd5b505050506000801b838584846040516105899061081a565b73ffffffffffffffffffffffffffffffffffffffff94851681529284166020840152908316604083015290911660608201526080018190604051809103906000f59050801580156105de573d6000803e3d6000fd5b5095507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561064c57600080fd5b505af1158015610660573d6000803e3d6000fd5b505050506106a36040518060400160405280601481526020017f53776170526f7574657230324578656375746f7200000000000000000000000081525087610758565b6107506040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508773ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074b9190610840565b610758565b505050505090565b6107e9828260405160240161076e92919061087d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526107ed565b5050565b6107f6816107f9565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6119ba8061090783390190565b60006020828403121561083957600080fd5b5051919050565b60006020828403121561085257600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461087657600080fd5b9392505050565b604081526000835180604084015260005b818110156108ab576020818701810151606086840101520161088e565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe6101006040523480156200001257600080fd5b50604051620019ba380380620019ba83398101604081905262000035916200012b565b600080546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0380851660a05283811660c05281166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa158015620000d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fb919062000193565b6001600160a01b031660e05250620001ba92505050565b6001600160a01b03811681146200012857600080fd5b50565b600080600080608085870312156200014257600080fd5b84516200014f8162000112565b6020860151909450620001628162000112565b6040860151909350620001758162000112565b6060860151909250620001888162000112565b939692955090935050565b600060208284031215620001a657600080fd5b8151620001b38162000112565b9392505050565b60805160a05160c05160e05161178762000233600039600081816107e501526108970152600081816101db015281816102f201528181610452015281816109c20152610ad501526000818161092e0152610a410152600081816102590152818161038a0152818161051601526105e001526117876000f3fe60806040526004361061007f5760003560e01c80638da5cb5b1161004e5780638da5cb5b1461010d578063d0f2d8ac14610163578063e5135ec614610183578063f2fde38b146101a357600080fd5b8063585da6281461008b57806363fb0b96146100ad578063690d8320146100cd57806389a3f136146100ed57600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a6366004610eb0565b6101c3565b005b3480156100b957600080fd5b506100ab6100c8366004610f1c565b610480565b3480156100d957600080fd5b506100ab6100e8366004610f9e565b6106a5565b3480156100f957600080fd5b506100ab610108366004610f9e565b610733565b34801561011957600080fd5b5060005461013a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34801561016f57600080fd5b506100ab61017e366004610fc2565b610916565b34801561018f57600080fd5b506100ab61019e366004610eb0565b610a29565b3480156101af57600080fd5b506100ab6101be366004610f9e565b610b48565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610232576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808061024284860186611193565b92509250925060005b83518110156102e0576102d87f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8684815181106102ab576102ab6112c9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610c399092919063ffffffff16565b60010161024b565b5060005b825181101561034c576103447f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8584815181106102ab576102ab6112c9565b6001016102e4565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906103e1907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161131c565b6000604051808303816000875af1158015610400573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261044691908101906113da565b504715610477576104777f000000000000000000000000000000000000000000000000000000000000000047610d0e565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b838110156105a25761059a7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff878785818110610568576105686112c9565b905060200201602081019061057d9190610f9e565b73ffffffffffffffffffffffffffffffffffffffff169190610c39565b600101610509565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610639907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908690600401611574565b6000604051808303816000875af1158015610658573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261069e91908101906113da565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6107308147610dad565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108659190611605565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050506109128247610dad565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610985576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906109fb90869086908690600401611669565b600060405180830381600087803b158015610a1557600080fd5b505af1158015610477573d6000803e3d6000fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a98576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c790610b1090879087908790879060040161168f565b600060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c454400000000000000000000000000000000000060448201526064016104fd565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610d68576040519150601f19603f3d011682016040523d82523d6000602084013e610d6d565b606091505b5050905080610da8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064016104fd565b60008083601f840112610e3457600080fd5b50813567ffffffffffffffff811115610e4c57600080fd5b6020830191508360208260051b8501011115610e6757600080fd5b9250929050565b60008083601f840112610e8057600080fd5b50813567ffffffffffffffff811115610e9857600080fd5b602083019150836020828501011115610e6757600080fd5b60008060008060408587031215610ec657600080fd5b843567ffffffffffffffff80821115610ede57600080fd5b610eea88838901610e22565b90965094506020870135915080821115610f0357600080fd5b50610f1087828801610e6e565b95989497509550505050565b60008060008060408587031215610f3257600080fd5b843567ffffffffffffffff80821115610f4a57600080fd5b610f5688838901610e22565b90965094506020870135915080821115610f6f57600080fd5b50610f1087828801610e22565b73ffffffffffffffffffffffffffffffffffffffff8116811461073057600080fd5b600060208284031215610fb057600080fd5b8135610fbb81610f7c565b9392505050565b600080600060408486031215610fd757600080fd5b833567ffffffffffffffff80821115610fef57600080fd5b908501906040828803121561100357600080fd5b9093506020850135908082111561101957600080fd5b5061102686828701610e6e565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156110a9576110a9611033565b604052919050565b600067ffffffffffffffff8211156110cb576110cb611033565b5060051b60200190565b600082601f8301126110e657600080fd5b813560206110fb6110f6836110b1565b611062565b8083825260208201915060208460051b87010193508684111561111d57600080fd5b602086015b8481101561114257803561113581610f7c565b8352918301918301611122565b509695505050505050565b600067ffffffffffffffff82111561116757611167611033565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806000606084860312156111a857600080fd5b833567ffffffffffffffff808211156111c057600080fd5b6111cc878388016110d5565b94506020915081860135818111156111e357600080fd5b6111ef888289016110d5565b9450506040808701358281111561120557600080fd5b8701601f8101891361121657600080fd5b80356112246110f6826110b1565b81815260059190911b8201850190858101908b83111561124357600080fd5b8684015b838110156112b75780358781111561125f5760008081fd5b8501603f81018e136112715760008081fd5b888101356112816110f68261114d565b8181528f898385010111156112965760008081fd5b818984018c83013760009181018b0191909152845250918701918701611247565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156113135781810151838201526020016112fb565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b828110156113cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261138f81888a018985016112f8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169690960185019550928401929084019060010161134a565b509398975050505050505050565b600060208083850312156113ed57600080fd5b825167ffffffffffffffff8082111561140557600080fd5b818501915085601f83011261141957600080fd5b81516114276110f6826110b1565b81815260059190911b8301840190848101908883111561144657600080fd5b8585015b838110156114ba578051858111156114625760008081fd5b8601603f81018b136114745760008081fd5b8781015160406114866110f68361114d565b8281528d8284860101111561149b5760008081fd5b6114aa838c83018487016112f8565b865250505091860191860161144a565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261154557600080fd5b830160208101925035905067ffffffffffffffff81111561156557600080fd5b803603821315610e6757600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b878110156115f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08786030183526115d8828a611510565b6115e38782846114c7565b96505050918301919083019060010161159f565b509298975050505050505050565b60006020828403121561161757600080fd5b5051919050565b600061162a8283611510565b6040855261163c6040860182846114c7565b91505061164c6020840184611510565b858303602087015261165f8382846114c7565b9695505050505050565b60408152600061167c604083018661161e565b828103602084015261165f8185876114c7565b6040808252810184905260006060600586901b830181019083018783805b8981101561172f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c360301811261170d578283fd5b611719868d830161161e565b95505060209384019392909201916001016116ad565b5050505082810360208401526117468185876114c7565b97965050505050505056fea26469706673582212205640b0557ec4552053567f3573115b9ceb5d4ac286ac0a470e1e07df158e28e864736f6c63430008180033a2646970667358221220aa0b076fb349b0be212a4a8b91d6ee78cb2c991e15d5911ceb77885d5d25087864736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0zW[`\0\x80\xFD[\0[a\0Pa\0\x9DV[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x8D\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0qV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x018W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\\\x91\x90a\x08'V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_REACTOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02B\x91\x90a\x08@V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_WHITELISTED_CALLER\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x04W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03(\x91\x90a\x08@V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_OWNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x0E\x91\x90a\x08@V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_SWAPROUTER02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xD0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xF4\x91\x90a\x08@V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x87\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05]W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05qW=`\0\x80>=`\0\xFD[PPPP`\0\x80\x1B\x83\x85\x84\x84`@Qa\x05\x89\x90a\x08\x1AV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x90\x83\x16`@\x83\x01R\x90\x91\x16``\x82\x01R`\x80\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x05\xDEW=`\0\x80>=`\0\xFD[P\x95P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06`W=`\0\x80>=`\0\xFD[PPPPa\x06\xA3`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x87a\x07XV[a\x07P`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07K\x91\x90a\x08@V[a\x07XV[PPPPP\x90V[a\x07\xE9\x82\x82`@Q`$\x01a\x07n\x92\x91\x90a\x08}V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xEDV[PPV[a\x07\xF6\x81a\x07\xF9V[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x19\xBA\x80a\t\x07\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x089W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x08RW`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08vW`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0\x83Q\x80`@\x84\x01R`\0[\x81\x81\x10\x15a\x08\xABW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x08\x8EV[P`\0``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFEa\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\x19\xBA8\x03\x80b\0\x19\xBA\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01+V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x81\x16`\xC0R\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\xD5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xFB\x91\x90b\0\x01\x93V[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xBA\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01(W`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x01BW`\0\x80\xFD[\x84Qb\0\x01O\x81b\0\x01\x12V[` \x86\x01Q\x90\x94Pb\0\x01b\x81b\0\x01\x12V[`@\x86\x01Q\x90\x93Pb\0\x01u\x81b\0\x01\x12V[``\x86\x01Q\x90\x92Pb\0\x01\x88\x81b\0\x01\x12V[\x93\x96\x92\x95P\x90\x93PPV[`\0` \x82\x84\x03\x12\x15b\0\x01\xA6W`\0\x80\xFD[\x81Qb\0\x01\xB3\x81b\0\x01\x12V[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x17\x87b\0\x023`\09`\0\x81\x81a\x07\xE5\x01Ra\x08\x97\x01R`\0\x81\x81a\x01\xDB\x01R\x81\x81a\x02\xF2\x01R\x81\x81a\x04R\x01R\x81\x81a\t\xC2\x01Ra\n\xD5\x01R`\0\x81\x81a\t.\x01Ra\nA\x01R`\0\x81\x81a\x02Y\x01R\x81\x81a\x03\x8A\x01R\x81\x81a\x05\x16\x01Ra\x05\xE0\x01Ra\x17\x87`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x7FW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0NW\x80c\x8D\xA5\xCB[\x14a\x01\rW\x80c\xD0\xF2\xD8\xAC\x14a\x01cW\x80c\xE5\x13^\xC6\x14a\x01\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xA3W`\0\x80\xFD[\x80cX]\xA6(\x14a\0\x8BW\x80cc\xFB\x0B\x96\x14a\0\xADW\x80ci\r\x83 \x14a\0\xCDW\x80c\x89\xA3\xF16\x14a\0\xEDW`\0\x80\xFD[6a\0\x86W\0[`\0\x80\xFD[4\x80\x15a\0\x97W`\0\x80\xFD[Pa\0\xABa\0\xA66`\x04a\x0E\xB0V[a\x01\xC3V[\0[4\x80\x15a\0\xB9W`\0\x80\xFD[Pa\0\xABa\0\xC86`\x04a\x0F\x1CV[a\x04\x80V[4\x80\x15a\0\xD9W`\0\x80\xFD[Pa\0\xABa\0\xE86`\x04a\x0F\x9EV[a\x06\xA5V[4\x80\x15a\0\xF9W`\0\x80\xFD[Pa\0\xABa\x01\x086`\x04a\x0F\x9EV[a\x073V[4\x80\x15a\x01\x19W`\0\x80\xFD[P`\0Ta\x01:\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01oW`\0\x80\xFD[Pa\0\xABa\x01~6`\x04a\x0F\xC2V[a\t\x16V[4\x80\x15a\x01\x8FW`\0\x80\xFD[Pa\0\xABa\x01\x9E6`\x04a\x0E\xB0V[a\n)V[4\x80\x15a\x01\xAFW`\0\x80\xFD[Pa\0\xABa\x01\xBE6`\x04a\x0F\x9EV[a\x0BHV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x022W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02B\x84\x86\x01\x86a\x11\x93V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x02\xE0Wa\x02\xD8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0C9\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02KV[P`\0[\x82Q\x81\x10\x15a\x03LWa\x03D\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[`\x01\x01a\x02\xE4V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x03\xE1\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x13\x1CV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04F\x91\x90\x81\x01\x90a\x13\xDAV[PG\x15a\x04wWa\x04w\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\r\x0EV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a\x05\xA2Wa\x05\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x05hWa\x05ha\x12\xC9V[\x90P` \x02\x01` \x81\x01\x90a\x05}\x91\x90a\x0F\x9EV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C9V[`\x01\x01a\x05\tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x069\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x15tV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x06\x9E\x91\x90\x81\x01\x90a\x13\xDAV[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07&W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[a\x070\x81Ga\r\xADV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\xB4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08e\x91\x90a\x16\x05V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\t\x04W=`\0\x80>=`\0\xFD[PPPPa\t\x12\x82Ga\r\xADV[PPV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x85W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\t\xFB\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x16iV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x15W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04wW=`\0\x80>=`\0\xFD[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\x98W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x0B\x10\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16\x8FV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B*W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B>W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\xC9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\r\x08W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\rhW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\rmV[``\x91P[PP\x90P\x80a\r\xA8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\r\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ELW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E\x80W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x98W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0E\xC6W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xDEW`\0\x80\xFD[a\x0E\xEA\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0F\x03W`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0EnV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0F2W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0FJW`\0\x80\xFD[a\x0FV\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0FoW`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0E\"V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x070W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xB0W`\0\x80\xFD[\x815a\x0F\xBB\x81a\x0F|V[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0F\xD7W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\xEFW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x10\x03W`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x10\x19W`\0\x80\xFD[Pa\x10&\x86\x82\x87\x01a\x0EnV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10\xA9Wa\x10\xA9a\x103V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10\xCBWa\x10\xCBa\x103V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x10\xE6W`\0\x80\xFD[\x815` a\x10\xFBa\x10\xF6\x83a\x10\xB1V[a\x10bV[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x11\x1DW`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x11BW\x805a\x115\x81a\x0F|V[\x83R\x91\x83\x01\x91\x83\x01a\x11\"V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11gWa\x11ga\x103V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\xA8W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xC0W`\0\x80\xFD[a\x11\xCC\x87\x83\x88\x01a\x10\xD5V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\xE3W`\0\x80\xFD[a\x11\xEF\x88\x82\x89\x01a\x10\xD5V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x12\x05W`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x12\x16W`\0\x80\xFD[\x805a\x12$a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x12CW`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12\xB7W\x805\x87\x81\x11\x15a\x12_W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12qW`\0\x80\x81\xFD[\x88\x81\x015a\x12\x81a\x10\xF6\x82a\x11MV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12\x96W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x12GV[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x13\x13W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\xFBV[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x13\xCCW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13\x8F\x81\x88\x8A\x01\x89\x85\x01a\x12\xF8V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x13JV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x13\xEDW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\x05W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x14\x19W`\0\x80\xFD[\x81Qa\x14'a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x14FW`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14\xBAW\x80Q\x85\x81\x11\x15a\x14bW`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x14tW`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x14\x86a\x10\xF6\x83a\x11MV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14\x9BW`\0\x80\x81\xFD[a\x14\xAA\x83\x8C\x83\x01\x84\x87\x01a\x12\xF8V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x14JV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x15EW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15eW`\0\x80\xFD[\x806\x03\x82\x13\x15a\x0EgW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x15\xF7W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15\xD8\x82\x8Aa\x15\x10V[a\x15\xE3\x87\x82\x84a\x14\xC7V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15\x9FV[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x16\x17W`\0\x80\xFD[PQ\x91\x90PV[`\0a\x16*\x82\x83a\x15\x10V[`@\x85Ra\x16<`@\x86\x01\x82\x84a\x14\xC7V[\x91PPa\x16L` \x84\x01\x84a\x15\x10V[\x85\x83\x03` \x87\x01Ra\x16_\x83\x82\x84a\x14\xC7V[\x96\x95PPPPPPV[`@\x81R`\0a\x16|`@\x83\x01\x86a\x16\x1EV[\x82\x81\x03` \x84\x01Ra\x16_\x81\x85\x87a\x14\xC7V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x17/W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x17\rW\x82\x83\xFD[a\x17\x19\x86\x8D\x83\x01a\x16\x1EV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x16\xADV[PPPP\x82\x81\x03` \x84\x01Ra\x17F\x81\x85\x87a\x14\xC7V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 V@\xB0U~\xC4U SV\x7F5s\x11[\x9C\xEB]J\xC2\x86\xAC\nG\x0E\x1E\x07\xDF\x15\x8E(\xE8dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xAA\x0B\x07o\xB3I\xB0\xBE!*J\x8B\x91\xD6\xEEx\xCB,\x99\x1E\x15\xD5\x91\x1C\xEBw\x88]]%\x08xdsolcC\0\x08\x18\x003", + ); + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. +```solidity +function IS_SCRIPT() external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `run()` and selector `0xc0406226`. +```solidity +function run() external returns (address executor); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct runReturn { + pub executor: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runReturn) -> Self { + (value.executor,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { executor: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for runCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = runReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "run()"; + const SELECTOR: [u8; 4] = [192u8, 64u8, 98u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setUp()` and selector `0x0a9254e4`. +```solidity +function setUp() external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setUpCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setUpReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setUp()"; + const SELECTOR: [u8; 4] = [10u8, 146u8, 84u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`DeploySwapRouter02Executor`](self) function calls. + pub enum DeploySwapRouter02ExecutorCalls { + IS_SCRIPT(IS_SCRIPTCall), + run(runCall), + setUp(setUpCall), + } + #[automatically_derived] + impl DeploySwapRouter02ExecutorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [10u8, 146u8, 84u8, 228u8], + [192u8, 64u8, 98u8, 38u8], + [248u8, 204u8, 191u8, 71u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DeploySwapRouter02ExecutorCalls { + const NAME: &'static str = "DeploySwapRouter02ExecutorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => { + ::SELECTOR + } + Self::run(_) => ::SELECTOR, + Self::setUp(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeploySwapRouter02ExecutorCalls::setUp) + } + setUp + }, + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeploySwapRouter02ExecutorCalls::run) + } + run + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeploySwapRouter02ExecutorCalls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::run(inner) => { + ::abi_encoded_size(inner) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::run(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DeploySwapRouter02Executor`](self) contract instance. + +See the [wrapper's documentation](`DeploySwapRouter02ExecutorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DeploySwapRouter02ExecutorInstance { + DeploySwapRouter02ExecutorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DeploySwapRouter02ExecutorInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + DeploySwapRouter02ExecutorInstance::::deploy_builder(provider) + } + /**A [`DeploySwapRouter02Executor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DeploySwapRouter02Executor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DeploySwapRouter02ExecutorInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DeploySwapRouter02ExecutorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DeploySwapRouter02ExecutorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeploySwapRouter02ExecutorInstance { + /**Creates a new wrapper around an on-chain [`DeploySwapRouter02Executor`](self) contract instance. + +See the [wrapper's documentation](`DeploySwapRouter02ExecutorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DeploySwapRouter02ExecutorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> DeploySwapRouter02ExecutorInstance { + DeploySwapRouter02ExecutorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeploySwapRouter02ExecutorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`run`] function. + pub fn run(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&runCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeploySwapRouter02ExecutorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/dutch_decay_lib.rs b/crates/bindings-uniswapx/src/dutch_decay_lib.rs deleted file mode 100644 index d491fad..0000000 --- a/crates/bindings-uniswapx/src/dutch_decay_lib.rs +++ /dev/null @@ -1,272 +0,0 @@ -pub use dutch_decay_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod dutch_decay_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("EndTimeBeforeStartTime"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "EndTimeBeforeStartTime", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("IncorrectAmounts"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("IncorrectAmounts"), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static DUTCHDECAYLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x9C\r\xC72-\x86\x0E$\xC5C\xB9\xAAx\xE3\xF0XP4>\xF6\x85}f\x82\x94\xA8\x93\xE7g8)\xAFdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static DUTCHDECAYLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x9C\r\xC72-\x86\x0E$\xC5C\xB9\xAAx\xE3\xF0XP4>\xF6\x85}f\x82\x94\xA8\x93\xE7g8)\xAFdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static DUTCHDECAYLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct DutchDecayLib(::ethers::contract::Contract); - impl ::core::clone::Clone for DutchDecayLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for DutchDecayLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for DutchDecayLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for DutchDecayLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(DutchDecayLib)) - .field(&self.address()) - .finish() - } - } - impl DutchDecayLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - DUTCHDECAYLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - DUTCHDECAYLIB_ABI.clone(), - DUTCHDECAYLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for DutchDecayLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `EndTimeBeforeStartTime` with signature `EndTimeBeforeStartTime()` and selector `0x43133453` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "EndTimeBeforeStartTime", abi = "EndTimeBeforeStartTime()")] - pub struct EndTimeBeforeStartTime; - ///Custom Error type `IncorrectAmounts` with signature `IncorrectAmounts()` and selector `0x7c1f8113` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "IncorrectAmounts", abi = "IncorrectAmounts()")] - pub struct IncorrectAmounts; - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum DutchDecayLibErrors { - EndTimeBeforeStartTime(EndTimeBeforeStartTime), - IncorrectAmounts(IncorrectAmounts), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for DutchDecayLibErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::EndTimeBeforeStartTime(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IncorrectAmounts(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for DutchDecayLibErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::EndTimeBeforeStartTime(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IncorrectAmounts(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for DutchDecayLibErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for DutchDecayLibErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::EndTimeBeforeStartTime(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::IncorrectAmounts(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for DutchDecayLibErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for DutchDecayLibErrors { - fn from(value: EndTimeBeforeStartTime) -> Self { - Self::EndTimeBeforeStartTime(value) - } - } - impl ::core::convert::From for DutchDecayLibErrors { - fn from(value: IncorrectAmounts) -> Self { - Self::IncorrectAmounts(value) - } - } -} diff --git a/crates/bindings-uniswapx/src/dutch_order_lib.rs b/crates/bindings-uniswapx/src/dutch_order_lib.rs deleted file mode 100644 index 6f5774a..0000000 --- a/crates/bindings-uniswapx/src/dutch_order_lib.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use dutch_order_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod dutch_order_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static DUTCHORDERLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 w\xE1e\0y^\x033X\x13\xF6\x08Dz\x7F\xCE\xA7\xA7!\x8E\x96\xE3\x80;L\xFC\nO>\x9C\x08^dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static DUTCHORDERLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 w\xE1e\0y^\x033X\x13\xF6\x08Dz\x7F\xCE\xA7\xA7!\x8E\x96\xE3\x80;L\xFC\nO>\x9C\x08^dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static DUTCHORDERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct DutchOrderLib(::ethers::contract::Contract); - impl ::core::clone::Clone for DutchOrderLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for DutchOrderLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for DutchOrderLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for DutchOrderLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(DutchOrderLib)) - .field(&self.address()) - .finish() - } - } - impl DutchOrderLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - DUTCHORDERLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - DUTCHORDERLIB_ABI.clone(), - DUTCHORDERLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for DutchOrderLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/dutch_order_reactor.rs b/crates/bindings-uniswapx/src/dutch_order_reactor.rs deleted file mode 100644 index b3250da..0000000 --- a/crates/bindings-uniswapx/src/dutch_order_reactor.rs +++ /dev/null @@ -1,1629 +0,0 @@ -pub use dutch_order_reactor::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod dutch_order_reactor { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_permit2"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_protocolFeeOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatchWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeBatchWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("feeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeController"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "contract IProtocolFeeController", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit2"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit2"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setProtocolFeeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "setProtocolFeeController", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Fill"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Fill"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("orderHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("swapper"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ProtocolFeeControllerSet"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "ProtocolFeeControllerSet", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("oldFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DeadlineBeforeEndTime"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "DeadlineBeforeEndTime", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("duplicateToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("EndTimeBeforeStartTime"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "EndTimeBeforeStartTime", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("recipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("IncorrectAmounts"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("IncorrectAmounts"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputDecay"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InputAndOutputDecay", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("feeToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidReactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidReactor"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static DUTCHORDERREACTOR_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0/\xB08\x03\x80b\0/\xB0\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa.\x9Fb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x17\x97\x01Ra.\x9F_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a!2V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a!\xD7V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a\"\x16V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a\"\x9EV[a\x06eV[a\0\xB4a\x01e6`\x04a\"\xC0V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a\"\x9EV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a#\x1FV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0BlV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a%\xDDV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\x1DV[a\x04\x9F\x81a\x0BlV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0BlV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga#\x1FV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\x1DV[a\x08d\x81a\x0BlV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a&\x19V[\x81\x01\x90a\nW\x91\x90a(\xFBV[\x90Pa\nb\x81a\x0C\xB7V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xA1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0Eo\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a&\x19V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FTV[\x90R\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0B=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\x90\x91\x90\x81\x01\x90a*{V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x12\xA7\x82\x84a+qV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xBFWa\x12\xBFa\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x12\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x13wW\x85`@\x01Q\x81\x81Q\x81\x10a\x13JWa\x13Ja#\x1FV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13dWa\x13da#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13,V[P_\x80_[\x84\x81\x10\x15a\x16\x87W_\x87\x82\x81Q\x81\x10a\x13\x97Wa\x13\x97a#\x1FV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14RW\x88\x81\x81Q\x81\x10a\x13\xBDWa\x13\xBDa#\x1FV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x13\xA3V[P_\x80[\x88\x81\x10\x15a\x15\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x14uWa\x14ua#\x1FV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x06W\x85\x15a\x14\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x14\xFF\x90\x84a+qV[\x92P`\x01\x96P[P`\x01\x01a\x14VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\x88W\x84\x15a\x15oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\x81\x90\x82a+qV[\x90P`\x01\x93P[\x80_\x03a\x15\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x15\xEA\x81`\x05a'\x10a\x1EXV[\x82` \x01Q\x11\x15a\x16]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16rWa\x16ra#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x16\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17e\x90\x84\x90\x86\x90`\x04\x01a+\x84V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17{W_\x80\xFD[PZ\xFA\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18T\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18^\x85\x85a\x1E\x92V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xA8\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a-]` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919`@Q` \x01a\x1A\x15\x93\x92\x91\x90a*'V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a-\xAF` \x83\x019`@Q` \x01a\x1Ah\x92\x91\x90a+\xB2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1A\xD5\x96\x95\x94\x93\x92`\x04\x01a,\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\xECW_\x80\xFD[PZ\xF1\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B#Wa\x03L\x82\x82a\x1BEV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1E\xD8V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1B\x9BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xA0V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1B\xEAWP\x83a\x1COV[\x82\x82\x11a\x1C#W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C1WP\x82a\x1COV[B\x83\x10a\x1C?WP\x83a\x1COV[a\x1CL\x83\x83B\x88\x88a\x1F\xC6V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1C\xB5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1C\xCA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1B\xDBV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\x9E\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1D\xDCWa\x1D\xDCa\"\xF2V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1EIW_a\x1E7\x85\x83\x81Q\x81\x10a\x1E*Wa\x1E*a#\x1FV[` \x02` \x01\x01Qa\x1F\xE0V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x0BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\x8BW_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F\xBFW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_a\x1F\xD4\x86\x86\x86\x86\x86a VV[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a-]`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\x9E\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x84\x84\x10a eWP\x80a\x1F\xD7V[_a p\x87\x86a,\xC6V[\x90P_a }\x88\x88a,\xC6V[\x90P_\x85\x85\x12\x15a \xAEWa \x9E\x83\x83a \x97\x88\x8Aa,\xD9V[\x91\x90a\x1EXV[a \xA7\x90a,\xFFV[\x90Pa \xC0V[a \xBD\x83\x83a \x97\x89\x89a,\xD9V[\x90P[a \xCA\x81\x87a-5V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a \xE7W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a \xFDW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x14W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!+W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a!DW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a![W_\x80\xFD[a!g\x87\x83\x88\x01a \xD7V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!|W_\x80\xFD[Pa!\x89\x86\x82\x87\x01a \xEDV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a!\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!+W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a!\xE8W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xFEW_\x80\xFD[a\"\n\x85\x82\x86\x01a!\x96V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\")W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"@W_\x80\xFD[a\"L\x88\x83\x89\x01a!\x96V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"dW_\x80\xFD[Pa\"q\x87\x82\x88\x01a \xEDV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[_` \x82\x84\x03\x12\x15a\"\xAEW_\x80\xFD[\x815a\"\xB9\x81a\"}V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\"\xD0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xE6W_\x80\xFD[a\x1CO\x84\x82\x85\x01a \xD7V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a#fW\x81\x81\x01Q\x83\x82\x01R` \x01a#NV[PP_\x91\x01RV[_\x81Q\x80\x84Ra#\x85\x81` \x86\x01` \x86\x01a#LV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a$\x15W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a#\xCAV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra$\x93a\x01\xA0\x85\x01\x82a#nV[\x90P` \x83\x01Qa$\xD1` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra$\xE9\x82\x82a#\xB7V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x03\x82\x82a#nV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a%\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra%{\x86\x83Qa$ V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\x0FW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&LW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a&fW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!+W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'SWa'Sa\"\xF2V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a'jW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'\x84Wa'\x84a\"\xF2V[a'\xB5` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\x0CV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a'\xC9W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a'\xF5W_\x80\xFD[a'\xFDa&zV[\x90P\x815a(\n\x81a\"}V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(AWa(Aa\"\xF2V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a(ZW_\x80\xFD[\x815` a(oa(j\x83a((V[a'\x0CV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a(\x8DW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a(\xF0W`\x80\x81\x89\x03\x12\x15a(\xA8W_\x80\xFD[a(\xB0a&\xA3V[\x815a(\xBB\x81a\"}V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a(\xDE\x81a\"}V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a(\x91V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a)\x0BW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\"W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)5W_\x80\xFD[a)=a&\xC6V[\x825\x82\x81\x11\x15a)KW_\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a)\\W_\x80\xFD[a)da&\xE9V[\x815a)o\x81a\"}V[\x81R` \x82\x015a)\x7F\x81a\"}V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a)\xA8\x81a\"}V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a)\xBEW_\x80\xFD[a)\xCA\x89\x82\x85\x01a'[V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra)\xF6\x86``\x85\x01a'\xE5V[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\x0CW_\x80\xFD[a*\x18\x87\x82\x86\x01a(KV[`\x80\x83\x01RP\x95\x94PPPPPV[_\x84Qa*8\x81\x84` \x89\x01a#LV[\x84Q\x90\x83\x01\x90a*L\x81\x83` \x89\x01a#LV[\x84Q\x91\x01\x90a*_\x81\x83` \x88\x01a#LV[\x01\x95\x94PPPPPV[` \x81R_a\"\xB9` \x83\x01\x84a$ V[_` \x80\x83\x85\x03\x12\x15a*\x8CW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xA2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a*\xB2W_\x80\xFD[\x80Qa*\xC0a(j\x82a((V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a*\xDEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+8W\x80\x85\x8A\x03\x12\x15a*\xF9W_\x80\xFD[a+\x01a&zV[\x85Qa+\x0C\x81a\"}V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+%\x81a\"}V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a*\xE3V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1CO`@\x83\x01\x84a$ V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x83Qa+\xE9\x81`\x13\x85\x01` \x88\x01a#LV[\x83Q\x90\x83\x01\x90a,\0\x81`\x13\x84\x01` \x88\x01a#LV[\x01`\x13\x01\x94\x93PPPPV[_a\x01@a,;\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra,|`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra,\xB1\x81\x84\x01\x86a#nV[\x90P\x82\x81\x03a\x01 \x84\x01Ra \xCA\x81\x85a#nV[\x81\x81\x03\x81\x81\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a,\xF8Wa,\xF8a+DV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-/Wa-/a+DV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a-TWa-Ta+DV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xE1\xD9wc\xD5v\xC1\x86L\"\xE3$b\x10\x08\xA6\xD9\xD7E-\xF0\xF4\x85\xBE3z\xFE\x84\x01\xBB0\x89dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static DUTCHORDERREACTOR_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a!2V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a!\xD7V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a\"\x16V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a\"\x9EV[a\x06eV[a\0\xB4a\x01e6`\x04a\"\xC0V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a\"\x9EV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a#\x1FV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0BlV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a%\xDDV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\x1DV[a\x04\x9F\x81a\x0BlV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0BlV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga#\x1FV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\x1DV[a\x08d\x81a\x0BlV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a&\x19V[\x81\x01\x90a\nW\x91\x90a(\xFBV[\x90Pa\nb\x81a\x0C\xB7V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xA1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0Eo\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a&\x19V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FTV[\x90R\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0B=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\x90\x91\x90\x81\x01\x90a*{V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x12\xA7\x82\x84a+qV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xBFWa\x12\xBFa\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x12\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x13wW\x85`@\x01Q\x81\x81Q\x81\x10a\x13JWa\x13Ja#\x1FV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13dWa\x13da#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13,V[P_\x80_[\x84\x81\x10\x15a\x16\x87W_\x87\x82\x81Q\x81\x10a\x13\x97Wa\x13\x97a#\x1FV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14RW\x88\x81\x81Q\x81\x10a\x13\xBDWa\x13\xBDa#\x1FV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x13\xA3V[P_\x80[\x88\x81\x10\x15a\x15\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x14uWa\x14ua#\x1FV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x06W\x85\x15a\x14\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x14\xFF\x90\x84a+qV[\x92P`\x01\x96P[P`\x01\x01a\x14VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\x88W\x84\x15a\x15oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\x81\x90\x82a+qV[\x90P`\x01\x93P[\x80_\x03a\x15\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x15\xEA\x81`\x05a'\x10a\x1EXV[\x82` \x01Q\x11\x15a\x16]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16rWa\x16ra#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x16\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17e\x90\x84\x90\x86\x90`\x04\x01a+\x84V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17{W_\x80\xFD[PZ\xFA\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18T\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18^\x85\x85a\x1E\x92V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xA8\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a-]` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919`@Q` \x01a\x1A\x15\x93\x92\x91\x90a*'V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a-\xAF` \x83\x019`@Q` \x01a\x1Ah\x92\x91\x90a+\xB2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1A\xD5\x96\x95\x94\x93\x92`\x04\x01a,\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\xECW_\x80\xFD[PZ\xF1\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B#Wa\x03L\x82\x82a\x1BEV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1E\xD8V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1B\x9BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xA0V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1B\xEAWP\x83a\x1COV[\x82\x82\x11a\x1C#W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C1WP\x82a\x1COV[B\x83\x10a\x1C?WP\x83a\x1COV[a\x1CL\x83\x83B\x88\x88a\x1F\xC6V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1C\xB5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1C\xCA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1B\xDBV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\x9E\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1D\xDCWa\x1D\xDCa\"\xF2V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1EIW_a\x1E7\x85\x83\x81Q\x81\x10a\x1E*Wa\x1E*a#\x1FV[` \x02` \x01\x01Qa\x1F\xE0V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x0BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\x8BW_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F\xBFW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_a\x1F\xD4\x86\x86\x86\x86\x86a VV[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a-]`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\x9E\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x84\x84\x10a eWP\x80a\x1F\xD7V[_a p\x87\x86a,\xC6V[\x90P_a }\x88\x88a,\xC6V[\x90P_\x85\x85\x12\x15a \xAEWa \x9E\x83\x83a \x97\x88\x8Aa,\xD9V[\x91\x90a\x1EXV[a \xA7\x90a,\xFFV[\x90Pa \xC0V[a \xBD\x83\x83a \x97\x89\x89a,\xD9V[\x90P[a \xCA\x81\x87a-5V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a \xE7W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a \xFDW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x14W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!+W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a!DW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a![W_\x80\xFD[a!g\x87\x83\x88\x01a \xD7V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!|W_\x80\xFD[Pa!\x89\x86\x82\x87\x01a \xEDV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a!\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!+W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a!\xE8W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xFEW_\x80\xFD[a\"\n\x85\x82\x86\x01a!\x96V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\")W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"@W_\x80\xFD[a\"L\x88\x83\x89\x01a!\x96V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"dW_\x80\xFD[Pa\"q\x87\x82\x88\x01a \xEDV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[_` \x82\x84\x03\x12\x15a\"\xAEW_\x80\xFD[\x815a\"\xB9\x81a\"}V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\"\xD0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xE6W_\x80\xFD[a\x1CO\x84\x82\x85\x01a \xD7V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a#fW\x81\x81\x01Q\x83\x82\x01R` \x01a#NV[PP_\x91\x01RV[_\x81Q\x80\x84Ra#\x85\x81` \x86\x01` \x86\x01a#LV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a$\x15W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a#\xCAV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra$\x93a\x01\xA0\x85\x01\x82a#nV[\x90P` \x83\x01Qa$\xD1` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra$\xE9\x82\x82a#\xB7V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x03\x82\x82a#nV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a%\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra%{\x86\x83Qa$ V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\x0FW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&LW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a&fW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!+W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'SWa'Sa\"\xF2V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a'jW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'\x84Wa'\x84a\"\xF2V[a'\xB5` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\x0CV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a'\xC9W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a'\xF5W_\x80\xFD[a'\xFDa&zV[\x90P\x815a(\n\x81a\"}V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(AWa(Aa\"\xF2V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a(ZW_\x80\xFD[\x815` a(oa(j\x83a((V[a'\x0CV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a(\x8DW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a(\xF0W`\x80\x81\x89\x03\x12\x15a(\xA8W_\x80\xFD[a(\xB0a&\xA3V[\x815a(\xBB\x81a\"}V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a(\xDE\x81a\"}V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a(\x91V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a)\x0BW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\"W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)5W_\x80\xFD[a)=a&\xC6V[\x825\x82\x81\x11\x15a)KW_\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a)\\W_\x80\xFD[a)da&\xE9V[\x815a)o\x81a\"}V[\x81R` \x82\x015a)\x7F\x81a\"}V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a)\xA8\x81a\"}V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a)\xBEW_\x80\xFD[a)\xCA\x89\x82\x85\x01a'[V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra)\xF6\x86``\x85\x01a'\xE5V[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\x0CW_\x80\xFD[a*\x18\x87\x82\x86\x01a(KV[`\x80\x83\x01RP\x95\x94PPPPPV[_\x84Qa*8\x81\x84` \x89\x01a#LV[\x84Q\x90\x83\x01\x90a*L\x81\x83` \x89\x01a#LV[\x84Q\x91\x01\x90a*_\x81\x83` \x88\x01a#LV[\x01\x95\x94PPPPPV[` \x81R_a\"\xB9` \x83\x01\x84a$ V[_` \x80\x83\x85\x03\x12\x15a*\x8CW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xA2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a*\xB2W_\x80\xFD[\x80Qa*\xC0a(j\x82a((V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a*\xDEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+8W\x80\x85\x8A\x03\x12\x15a*\xF9W_\x80\xFD[a+\x01a&zV[\x85Qa+\x0C\x81a\"}V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+%\x81a\"}V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a*\xE3V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1CO`@\x83\x01\x84a$ V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x83Qa+\xE9\x81`\x13\x85\x01` \x88\x01a#LV[\x83Q\x90\x83\x01\x90a,\0\x81`\x13\x84\x01` \x88\x01a#LV[\x01`\x13\x01\x94\x93PPPPV[_a\x01@a,;\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra,|`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra,\xB1\x81\x84\x01\x86a#nV[\x90P\x82\x81\x03a\x01 \x84\x01Ra \xCA\x81\x85a#nV[\x81\x81\x03\x81\x81\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a,\xF8Wa,\xF8a+DV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-/Wa-/a+DV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a-TWa-Ta+DV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xE1\xD9wc\xD5v\xC1\x86L\"\xE3$b\x10\x08\xA6\xD9\xD7E-\xF0\xF4\x85\xBE3z\xFE\x84\x01\xBB0\x89dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static DUTCHORDERREACTOR_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct DutchOrderReactor(::ethers::contract::Contract); - impl ::core::clone::Clone for DutchOrderReactor { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for DutchOrderReactor { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for DutchOrderReactor { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for DutchOrderReactor { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(DutchOrderReactor)) - .field(&self.address()) - .finish() - } - } - impl DutchOrderReactor { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - DUTCHORDERREACTOR_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - DUTCHORDERREACTOR_ABI.clone(), - DUTCHORDERREACTOR_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `execute` (0x3f62192e) function - pub fn execute( - &self, - order: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 98, 25, 46], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x0d7a16c3) function - pub fn execute_batch( - &self, - orders: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 122, 22, 195], orders) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatchWithCallback` (0x13fb72c7) function - pub fn execute_batch_with_callback( - &self, - orders: ::std::vec::Vec, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([19, 251, 114, 199], (orders, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeWithCallback` (0x0d335884) function - pub fn execute_with_callback( - &self, - order: SignedOrder, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 51, 88, 132], (order, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `feeController` (0x6999b377) function - pub fn fee_controller( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([105, 153, 179, 119], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit2` (0x12261ee7) function - pub fn permit_2( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([18, 38, 30, 231], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setProtocolFeeController` (0x2d771389) function - pub fn set_protocol_fee_controller( - &self, - new_fee_controller: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([45, 119, 19, 137], new_fee_controller) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Fill` event - pub fn fill_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, FillFilter> { - self.0.event() - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - ///Gets the contract's `ProtocolFeeControllerSet` event - pub fn protocol_fee_controller_set_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ProtocolFeeControllerSetFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - DutchOrderReactorEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for DutchOrderReactor { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `DeadlineBeforeEndTime` with signature `DeadlineBeforeEndTime()` and selector `0x773a6187` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DeadlineBeforeEndTime", abi = "DeadlineBeforeEndTime()")] - pub struct DeadlineBeforeEndTime; - ///Custom Error type `DuplicateFeeOutput` with signature `DuplicateFeeOutput(address)` and selector `0xfff08303` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DuplicateFeeOutput", abi = "DuplicateFeeOutput(address)")] - pub struct DuplicateFeeOutput { - pub duplicate_token: ::ethers::core::types::Address, - } - ///Custom Error type `EndTimeBeforeStartTime` with signature `EndTimeBeforeStartTime()` and selector `0x43133453` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "EndTimeBeforeStartTime", abi = "EndTimeBeforeStartTime()")] - pub struct EndTimeBeforeStartTime; - ///Custom Error type `FeeTooLarge` with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "FeeTooLarge", abi = "FeeTooLarge(address,uint256,address)")] - pub struct FeeTooLarge { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub recipient: ::ethers::core::types::Address, - } - ///Custom Error type `IncorrectAmounts` with signature `IncorrectAmounts()` and selector `0x7c1f8113` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "IncorrectAmounts", abi = "IncorrectAmounts()")] - pub struct IncorrectAmounts; - ///Custom Error type `InputAndOutputDecay` with signature `InputAndOutputDecay()` and selector `0xd303758b` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputDecay", abi = "InputAndOutputDecay()")] - pub struct InputAndOutputDecay; - ///Custom Error type `InputAndOutputFees` with signature `InputAndOutputFees()` and selector `0xedc7e2e4` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputFees", abi = "InputAndOutputFees()")] - pub struct InputAndOutputFees; - ///Custom Error type `InvalidFeeToken` with signature `InvalidFeeToken(address)` and selector `0xeddf07f5` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidFeeToken", abi = "InvalidFeeToken(address)")] - pub struct InvalidFeeToken { - pub fee_token: ::ethers::core::types::Address, - } - ///Custom Error type `InvalidReactor` with signature `InvalidReactor()` and selector `0x4ddf4a64` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidReactor", abi = "InvalidReactor()")] - pub struct InvalidReactor; - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum DutchOrderReactorErrors { - DeadlineBeforeEndTime(DeadlineBeforeEndTime), - DuplicateFeeOutput(DuplicateFeeOutput), - EndTimeBeforeStartTime(EndTimeBeforeStartTime), - FeeTooLarge(FeeTooLarge), - IncorrectAmounts(IncorrectAmounts), - InputAndOutputDecay(InputAndOutputDecay), - InputAndOutputFees(InputAndOutputFees), - InvalidFeeToken(InvalidFeeToken), - InvalidReactor(InvalidReactor), - NativeTransferFailed(NativeTransferFailed), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for DutchOrderReactorErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DeadlineBeforeEndTime(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DuplicateFeeOutput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::EndTimeBeforeStartTime(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeTooLarge(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IncorrectAmounts(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputDecay(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputFees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidFeeToken(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidReactor(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NativeTransferFailed(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for DutchOrderReactorErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::DeadlineBeforeEndTime(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::DuplicateFeeOutput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::EndTimeBeforeStartTime(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeTooLarge(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IncorrectAmounts(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputDecay(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputFees(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidFeeToken(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidReactor(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NativeTransferFailed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for DutchOrderReactorErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for DutchOrderReactorErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DeadlineBeforeEndTime(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::DuplicateFeeOutput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::EndTimeBeforeStartTime(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeTooLarge(element) => ::core::fmt::Display::fmt(element, f), - Self::IncorrectAmounts(element) => ::core::fmt::Display::fmt(element, f), - Self::InputAndOutputDecay(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InputAndOutputFees(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidFeeToken(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidReactor(element) => ::core::fmt::Display::fmt(element, f), - Self::NativeTransferFailed(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for DutchOrderReactorErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for DutchOrderReactorErrors { - fn from(value: DeadlineBeforeEndTime) -> Self { - Self::DeadlineBeforeEndTime(value) - } - } - impl ::core::convert::From for DutchOrderReactorErrors { - fn from(value: DuplicateFeeOutput) -> Self { - Self::DuplicateFeeOutput(value) - } - } - impl ::core::convert::From for DutchOrderReactorErrors { - fn from(value: EndTimeBeforeStartTime) -> Self { - Self::EndTimeBeforeStartTime(value) - } - } - impl ::core::convert::From for DutchOrderReactorErrors { - fn from(value: FeeTooLarge) -> Self { - Self::FeeTooLarge(value) - } - } - impl ::core::convert::From for DutchOrderReactorErrors { - fn from(value: IncorrectAmounts) -> Self { - Self::IncorrectAmounts(value) - } - } - impl ::core::convert::From for DutchOrderReactorErrors { - fn from(value: InputAndOutputDecay) -> Self { - Self::InputAndOutputDecay(value) - } - } - impl ::core::convert::From for DutchOrderReactorErrors { - fn from(value: InputAndOutputFees) -> Self { - Self::InputAndOutputFees(value) - } - } - impl ::core::convert::From for DutchOrderReactorErrors { - fn from(value: InvalidFeeToken) -> Self { - Self::InvalidFeeToken(value) - } - } - impl ::core::convert::From for DutchOrderReactorErrors { - fn from(value: InvalidReactor) -> Self { - Self::InvalidReactor(value) - } - } - impl ::core::convert::From for DutchOrderReactorErrors { - fn from(value: NativeTransferFailed) -> Self { - Self::NativeTransferFailed(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Fill", abi = "Fill(bytes32,address,address,uint256)")] - pub struct FillFilter { - #[ethevent(indexed)] - pub order_hash: [u8; 32], - #[ethevent(indexed)] - pub filler: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub swapper: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "ProtocolFeeControllerSet", - abi = "ProtocolFeeControllerSet(address,address)" - )] - pub struct ProtocolFeeControllerSetFilter { - pub old_fee_controller: ::ethers::core::types::Address, - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum DutchOrderReactorEvents { - FillFilter(FillFilter), - OwnershipTransferredFilter(OwnershipTransferredFilter), - ProtocolFeeControllerSetFilter(ProtocolFeeControllerSetFilter), - } - impl ::ethers::contract::EthLogDecode for DutchOrderReactorEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = FillFilter::decode_log(log) { - return Ok(DutchOrderReactorEvents::FillFilter(decoded)); - } - if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) { - return Ok(DutchOrderReactorEvents::OwnershipTransferredFilter(decoded)); - } - if let Ok(decoded) = ProtocolFeeControllerSetFilter::decode_log(log) { - return Ok( - DutchOrderReactorEvents::ProtocolFeeControllerSetFilter(decoded), - ); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for DutchOrderReactorEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FillFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ProtocolFeeControllerSetFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for DutchOrderReactorEvents { - fn from(value: FillFilter) -> Self { - Self::FillFilter(value) - } - } - impl ::core::convert::From for DutchOrderReactorEvents { - fn from(value: OwnershipTransferredFilter) -> Self { - Self::OwnershipTransferredFilter(value) - } - } - impl ::core::convert::From - for DutchOrderReactorEvents { - fn from(value: ProtocolFeeControllerSetFilter) -> Self { - Self::ProtocolFeeControllerSetFilter(value) - } - } - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes))` and selector `0x3f62192e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes))")] - pub struct ExecuteCall { - pub order: SignedOrder, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((bytes,bytes)[])")] - pub struct ExecuteBatchCall { - pub orders: ::std::vec::Vec, - } - ///Container type for all input parameters for the `executeBatchWithCallback` function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeBatchWithCallback", - abi = "executeBatchWithCallback((bytes,bytes)[],bytes)" - )] - pub struct ExecuteBatchWithCallbackCall { - pub orders: ::std::vec::Vec, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `executeWithCallback` function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeWithCallback", - abi = "executeWithCallback((bytes,bytes),bytes)" - )] - pub struct ExecuteWithCallbackCall { - pub order: SignedOrder, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeController", abi = "feeController()")] - pub struct FeeControllerCall; - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "permit2", abi = "permit2()")] - pub struct Permit2Call; - ///Container type for all input parameters for the `setProtocolFeeController` function with signature `setProtocolFeeController(address)` and selector `0x2d771389` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "setProtocolFeeController", - abi = "setProtocolFeeController(address)" - )] - pub struct SetProtocolFeeControllerCall { - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum DutchOrderReactorCalls { - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ExecuteBatchWithCallback(ExecuteBatchWithCallbackCall), - ExecuteWithCallback(ExecuteWithCallbackCall), - FeeController(FeeControllerCall), - Owner(OwnerCall), - Permit2(Permit2Call), - SetProtocolFeeController(SetProtocolFeeControllerCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for DutchOrderReactorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatchWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Permit2(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetProtocolFeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for DutchOrderReactorCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteBatchWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Permit2(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetProtocolFeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for DutchOrderReactorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatchWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ExecuteWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeController(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit2(element) => ::core::fmt::Display::fmt(element, f), - Self::SetProtocolFeeController(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for DutchOrderReactorCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for DutchOrderReactorCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From for DutchOrderReactorCalls { - fn from(value: ExecuteBatchWithCallbackCall) -> Self { - Self::ExecuteBatchWithCallback(value) - } - } - impl ::core::convert::From for DutchOrderReactorCalls { - fn from(value: ExecuteWithCallbackCall) -> Self { - Self::ExecuteWithCallback(value) - } - } - impl ::core::convert::From for DutchOrderReactorCalls { - fn from(value: FeeControllerCall) -> Self { - Self::FeeController(value) - } - } - impl ::core::convert::From for DutchOrderReactorCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for DutchOrderReactorCalls { - fn from(value: Permit2Call) -> Self { - Self::Permit2(value) - } - } - impl ::core::convert::From for DutchOrderReactorCalls { - fn from(value: SetProtocolFeeControllerCall) -> Self { - Self::SetProtocolFeeController(value) - } - } - impl ::core::convert::From for DutchOrderReactorCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeControllerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct Permit2Return(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/dutchdecaylib.rs b/crates/bindings-uniswapx/src/dutchdecaylib.rs new file mode 100644 index 0000000..aad08bb --- /dev/null +++ b/crates/bindings-uniswapx/src/dutchdecaylib.rs @@ -0,0 +1,473 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DutchDecayLib { + error EndTimeBeforeStartTime(); + error IncorrectAmounts(); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "error", + "name": "EndTimeBeforeStartTime", + "inputs": [] + }, + { + "type": "error", + "name": "IncorrectAmounts", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DutchDecayLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ef086961703a873805a14dbb36dc8647681a5c1852500026654927b2fad65f1564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEF\x08iap:\x878\x05\xA1M\xBB6\xDC\x86Gh\x1A\\\x18RP\0&eI'\xB2\xFA\xD6_\x15dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ef086961703a873805a14dbb36dc8647681a5c1852500026654927b2fad65f1564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEF\x08iap:\x878\x05\xA1M\xBB6\xDC\x86Gh\x1A\\\x18RP\0&eI'\xB2\xFA\xD6_\x15dsolcC\0\x08\x18\x003", + ); + /**Custom error with signature `EndTimeBeforeStartTime()` and selector `0x43133453`. +```solidity +error EndTimeBeforeStartTime(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct EndTimeBeforeStartTime {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: EndTimeBeforeStartTime) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for EndTimeBeforeStartTime { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for EndTimeBeforeStartTime { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "EndTimeBeforeStartTime()"; + const SELECTOR: [u8; 4] = [67u8, 19u8, 52u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `IncorrectAmounts()` and selector `0x7c1f8113`. +```solidity +error IncorrectAmounts(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IncorrectAmounts {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IncorrectAmounts) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IncorrectAmounts { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for IncorrectAmounts { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IncorrectAmounts()"; + const SELECTOR: [u8; 4] = [124u8, 31u8, 129u8, 19u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + ///Container for all the [`DutchDecayLib`](self) custom errors. + pub enum DutchDecayLibErrors { + EndTimeBeforeStartTime(EndTimeBeforeStartTime), + IncorrectAmounts(IncorrectAmounts), + } + #[automatically_derived] + impl DutchDecayLibErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [67u8, 19u8, 52u8, 83u8], + [124u8, 31u8, 129u8, 19u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DutchDecayLibErrors { + const NAME: &'static str = "DutchDecayLibErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::EndTimeBeforeStartTime(_) => { + ::SELECTOR + } + Self::IncorrectAmounts(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn EndTimeBeforeStartTime( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchDecayLibErrors::EndTimeBeforeStartTime) + } + EndTimeBeforeStartTime + }, + { + fn IncorrectAmounts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchDecayLibErrors::IncorrectAmounts) + } + IncorrectAmounts + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::EndTimeBeforeStartTime(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::IncorrectAmounts(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::EndTimeBeforeStartTime(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::IncorrectAmounts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DutchDecayLib`](self) contract instance. + +See the [wrapper's documentation](`DutchDecayLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DutchDecayLibInstance { + DutchDecayLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DutchDecayLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + DutchDecayLibInstance::::deploy_builder(provider) + } + /**A [`DutchDecayLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DutchDecayLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DutchDecayLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DutchDecayLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DutchDecayLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DutchDecayLibInstance { + /**Creates a new wrapper around an on-chain [`DutchDecayLib`](self) contract instance. + +See the [wrapper's documentation](`DutchDecayLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DutchDecayLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DutchDecayLibInstance { + DutchDecayLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DutchDecayLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DutchDecayLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/dutchorderlib.rs b/crates/bindings-uniswapx/src/dutchorderlib.rs new file mode 100644 index 0000000..ff655be --- /dev/null +++ b/crates/bindings-uniswapx/src/dutchorderlib.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DutchOrderLib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DutchOrderLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc90208316a6c59e263faae6762f85d37637ee9daa13ee68c8bfaf3fcf06d1f564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xFC\x90 \x83\x16\xA6\xC5\x9E&?\xAA\xE6v/\x85\xD3v7\xEE\x9D\xAA\x13\xEEh\xC8\xBF\xAF?\xCF\x06\xD1\xF5dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc90208316a6c59e263faae6762f85d37637ee9daa13ee68c8bfaf3fcf06d1f564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xFC\x90 \x83\x16\xA6\xC5\x9E&?\xAA\xE6v/\x85\xD3v7\xEE\x9D\xAA\x13\xEEh\xC8\xBF\xAF?\xCF\x06\xD1\xF5dsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DutchOrderLib`](self) contract instance. + +See the [wrapper's documentation](`DutchOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DutchOrderLibInstance { + DutchOrderLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DutchOrderLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + DutchOrderLibInstance::::deploy_builder(provider) + } + /**A [`DutchOrderLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DutchOrderLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DutchOrderLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DutchOrderLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DutchOrderLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DutchOrderLibInstance { + /**Creates a new wrapper around an on-chain [`DutchOrderLib`](self) contract instance. + +See the [wrapper's documentation](`DutchOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DutchOrderLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DutchOrderLibInstance { + DutchOrderLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DutchOrderLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DutchOrderLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/dutchorderreactor.rs b/crates/bindings-uniswapx/src/dutchorderreactor.rs new file mode 100644 index 0000000..58e1260 --- /dev/null +++ b/crates/bindings-uniswapx/src/dutchorderreactor.rs @@ -0,0 +1,3967 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DutchOrderReactor { + struct SignedOrder { + bytes order; + bytes sig; + } + + error DeadlineBeforeEndTime(); + error DuplicateFeeOutput(address duplicateToken); + error EndTimeBeforeStartTime(); + error FeeTooLarge(address token, uint256 amount, address recipient); + error IncorrectAmounts(); + error InputAndOutputDecay(); + error InputAndOutputFees(); + error InvalidFeeToken(address feeToken); + error InvalidReactor(); + error NativeTransferFailed(); + + event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); + event OwnershipTransferred(address indexed user, address indexed newOwner); + event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); + + constructor(address _permit2, address _protocolFeeOwner); + + receive() external payable; + + function execute(SignedOrder memory order) external payable; + function executeBatch(SignedOrder[] memory orders) external payable; + function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; + function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; + function feeController() external view returns (address); + function owner() external view returns (address); + function permit2() external view returns (address); + function setProtocolFeeController(address _newFeeController) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_permit2", + "type": "address", + "internalType": "contract IPermit2" + }, + { + "name": "_protocolFeeOwner", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatchWithCallback", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeWithCallback", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "feeController", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IProtocolFeeController" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit2", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPermit2" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setProtocolFeeController", + "inputs": [ + { + "name": "_newFeeController", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Fill", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "filler", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "swapper", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProtocolFeeControllerSet", + "inputs": [ + { + "name": "oldFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "DeadlineBeforeEndTime", + "inputs": [] + }, + { + "type": "error", + "name": "DuplicateFeeOutput", + "inputs": [ + { + "name": "duplicateToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "EndTimeBeforeStartTime", + "inputs": [] + }, + { + "type": "error", + "name": "FeeTooLarge", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "IncorrectAmounts", + "inputs": [] + }, + { + "type": "error", + "name": "InputAndOutputDecay", + "inputs": [] + }, + { + "type": "error", + "name": "InputAndOutputFees", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidFeeToken", + "inputs": [ + { + "name": "feeToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InvalidReactor", + "inputs": [] + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod DutchOrderReactor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a06040523480156200001157600080fd5b5060405162003080380380620030808339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051612f67620001196000396000818160e001526117e90152612f676000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046121aa565b6101eb565b005b6100b96100c9366004612258565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461229a565b6104c5565b34801561014a57600080fd5b506100b9610159366004612328565b610683565b6100b961016c36600461234c565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612328565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56123b0565b60200260200101819052506102d981610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016125b3565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b95565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612381565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666123b0565b90506020028101906104789190612679565b6109f6565b82828151811061048f5761048f6123b0565b6020908102919091010152600101610449565b506104ac81610b44565b6104b581610b95565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612381565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666123b0565b8282815181106105d9576105d96123b0565b60209081029190910101526001016105aa565b506105f681610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016125b3565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b95565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696123b0565b602002602001018190525061087d81610b44565b61088681610b95565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f83806126b7565b810190610a7c91906129a9565b9050610a8781610ce8565b6040518060a0016040528082600001518152602001610abd836020015184604001518560600151610dd39092919063ffffffff16565b8152602001610ae3836020015184604001518560800151610ea59092919063ffffffff16565b8152602001848060200190610af891906126b7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610f8c565b90529392505050565b805160005b8181101561035f576000838281518110610b6557610b656123b0565b60200260200101519050610b78816111f6565b610b8281336116e6565b610b8c81336117e7565b50600101610b49565b805160005b81811015610cd7576000838281518110610bb657610bb66123b0565b602002602001015190506000816040015151905060005b81811015610c3757600083604001518281518110610bed57610bed6123b0565b60200260200101519050610c2e81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611b579092919063ffffffff16565b50600101610bcd565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c8057610c806123b0565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cc591815260200190565b60405180910390a45050600101610b9a565b5047156104c1576104c13347611b9e565b60408101518151606001511015610d2b576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108915760005b8160800151518110156104c15781608001518181518110610d6657610d666123b0565b60200260200101516040015182608001518281518110610d8857610d886123b0565b60200260200101516020015114610dcb576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d43565b610e0d6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e4f576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e65856020015186604001518686611c38565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ec357610ec3612381565b604051908082528060200260200182016040528015610f2c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ee15790505b50915060005b81811015610f8357610f5e868281518110610f4f57610f4f6123b0565b60200260200101518686611cb5565b838281518110610f7057610f706123b0565b6020908102919091010152600101610f32565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a982015260009060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d913960405160200161113293929190612add565b604051602081830303815290604052805190602001206111558360000151611d85565b836020015184604001518560600151600001518660600151602001518760600151604001516111878960800151611e1f565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff166112165750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061126d908590600401612b20565b600060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112d09190810190612b33565b60408301515181519192509060006112e88284612c32565b67ffffffffffffffff81111561130057611300612381565b60405190808252806020026020018201604052801561136957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161131e5790505b50905060005b838110156113ba578560400151818151811061138d5761138d6123b0565b60200260200101518282815181106113a7576113a76123b0565b602090810291909101015260010161136f565b5060008060005b848110156116d55760008782815181106113dd576113dd6123b0565b6020026020010151905060005b8281101561149b57888181518110611404576114046123b0565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036114935781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016113ea565b506000805b8881101561155c5760008b6040015182815181106114c0576114c06123b0565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361155357851561153d576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161154c9084612c32565b9250600196505b506001016114a0565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036115d55784156115bc576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516115ce9082612c32565b9050600193505b8060000361162a5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611638816005612710611ebd565b826020015111156116ab578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106116c0576116c06123b0565b602090810291909101015250506001016113c1565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611737576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117b39084908690600401612c45565b60006040518083038186803b1580156117cb57600080fd5b505afa1580156117df573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6118a7846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6118b18585611ef9565b85600001516020015186608001516040516020016119fc907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d9139604051602001611a6993929190612add565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612e776020830139604051602001611abc929190612c74565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611b299695949392600401612ccf565b600060405180830381600087803b158015611b4357600080fd5b505af11580156117df573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611b7c5761035f8282611b9e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484611f40565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611bf8576040519150601f19603f3d011682016040523d82523d6000602084013e611bfd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611c48575083611cad565b828211611c81576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611c8f575082611cad565b428310611c9d575083611cad565b611caa8383428888612032565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d14576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d2a856020015186604001518686611c38565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d8152602001612ea5608d913980516020918201208351848301516040808701516060880151608089015160a08a015180519089012093516111d998939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611e3f57611e3f612381565b6040519080825280601f01601f191660200182016040528015611e69576020820181803683370190505b50905060005b8351811015611eae576000611e9c858381518110611e8f57611e8f6123b0565b602002602001015161204d565b60208381028501015250600101611e6f565b50805160209091012092915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611ef257600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600061204186868686866120c4565b90505b95945050505050565b6000604051806080016040528060528152602001612e25605291398051602091820120835184830151604080870151606088015191516111d9969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b60008484106120d4575080612044565b60006120e08786612d8a565b905060006120ee8888612d8a565b9050600085851215612120576121108383612109888a612d9d565b9190611ebd565b61211990612dc4565b9050612132565b61212f83836121098989612d9d565b90505b61213c8187612dfc565b9998505050505050505050565b60006040828403121561215b57600080fd5b50919050565b60008083601f84011261217357600080fd5b50813567ffffffffffffffff81111561218b57600080fd5b6020830191508360208285010111156121a357600080fd5b9250929050565b6000806000604084860312156121bf57600080fd5b833567ffffffffffffffff808211156121d757600080fd5b6121e387838801612149565b945060208601359150808211156121f957600080fd5b5061220686828701612161565b9497909650939450505050565b60008083601f84011261222557600080fd5b50813567ffffffffffffffff81111561223d57600080fd5b6020830191508360208260051b85010111156121a357600080fd5b6000806020838503121561226b57600080fd5b823567ffffffffffffffff81111561228257600080fd5b61228e85828601612213565b90969095509350505050565b600080600080604085870312156122b057600080fd5b843567ffffffffffffffff808211156122c857600080fd5b6122d488838901612213565b909650945060208701359150808211156122ed57600080fd5b506122fa87828801612161565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b60006020828403121561233a57600080fd5b813561234581612306565b9392505050565b60006020828403121561235e57600080fd5b813567ffffffffffffffff81111561237557600080fd5b611cad84828501612149565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156123fa5781810151838201526020016123e2565b50506000910152565b6000815180845261241b8160208601602086016123df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156124ad578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612462565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c061018085015261252c6101a0850182612403565b9050602083015161256a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612582828261244d565b915050606083015184820360a086015261259c8282612403565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612628577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526126168683516124b8565b955093820193908201906001016125dc565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126126ad57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126ec57600080fd5b83018035915067ffffffffffffffff82111561270757600080fd5b6020019150368190038213156121a357600080fd5b6040516060810167ffffffffffffffff8111828210171561273f5761273f612381565b60405290565b6040516080810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160a0810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160c0810167ffffffffffffffff8111828210171561273f5761273f612381565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127f5576127f5612381565b604052919050565b600082601f83011261280e57600080fd5b813567ffffffffffffffff81111561282857612828612381565b61285960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016127ae565b81815284602083860101111561286e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561289d57600080fd5b6128a561271c565b905081356128b281612306565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff8211156128ea576128ea612381565b5060051b60200190565b600082601f83011261290557600080fd5b8135602061291a612915836128d0565b6127ae565b82815260079290921b8401810191818101908684111561293957600080fd5b8286015b8481101561299e57608081890312156129565760008081fd5b61295e612745565b813561296981612306565b815281850135858201526040808301359082015260608083013561298c81612306565b9082015283529183019160800161293d565b509695505050505050565b6000602082840312156129bb57600080fd5b813567ffffffffffffffff808211156129d357600080fd5b9083019060e082860312156129e757600080fd5b6129ef612768565b8235828111156129fe57600080fd5b830160c08188031215612a1057600080fd5b612a1861278b565b8135612a2381612306565b81526020820135612a3381612306565b8060208301525060408201356040820152606082013560608201526080820135612a5c81612306565b608082015260a082013584811115612a7357600080fd5b612a7f898285016127fd565b60a08301525080835250506020830135602082015260408301356040820152612aab866060850161288b565b606082015260c083013582811115612ac257600080fd5b612ace878286016128f4565b60808301525095945050505050565b60008451612aef8184602089016123df565b845190830190612b038183602089016123df565b8451910190612b168183602088016123df565b0195945050505050565b60208152600061234560208301846124b8565b60006020808385031215612b4657600080fd5b825167ffffffffffffffff811115612b5d57600080fd5b8301601f81018513612b6e57600080fd5b8051612b7c612915826128d0565b81815260609182028301840191848201919088841115612b9b57600080fd5b938501935b83851015612bf75780858a031215612bb85760008081fd5b612bc061271c565b8551612bcb81612306565b81528587015187820152604080870151612be481612306565b9082015283529384019391850191612ba0565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611f3a57611f3a612c03565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611cad60408301846124b8565b7f44757463684f72646572207769746e6573732900000000000000000000000000815260008351612cac8160138501602088016123df565b835190830190612cc38160138401602088016123df565b01601301949350505050565b6000610140612cff838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612d406080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612d7581840186612403565b905082810361012084015261213c8185612403565b81810381811115611f3a57611f3a612c03565b8181036000831280158383131683831282161715612dbd57612dbd612c03565b5092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203612df557612df5612c03565b5060000390565b8082018281126000831280158216821582161715612e1c57612e1c612c03565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212200c74c65349b0af83668d860352d39f1829d5721d9019f51e2826cab1d7552ecb64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x000\x808\x03\x80b\x000\x80\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa/gb\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x17\xE9\x01Ra/g`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a!\xAAV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a\"XV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a\"\x9AV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a#(V[a\x06\x83V[a\0\xB9a\x01l6`\x04a#LV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a#(V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a#\xB0V[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\x95V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a&yV[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BDV[a\x04\xB5\x81a\x0B\x95V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\x95V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia#\xB0V[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BDV[a\x08\x86\x81a\x0B\x95V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a&\xB7V[\x81\x01\x90a\n|\x91\x90a)\xA9V[\x90Pa\n\x87\x81a\x0C\xE8V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xD3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0E\xA5\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a&\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\x8CV[\x90R\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea#\xB0V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x11\xF6V[a\x0B\x82\x813a\x16\xE6V[a\x0B\x8C\x813a\x17\xE7V[P`\x01\x01a\x0BIV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xD7W`\0\x83\x82\x81Q\x81\x10a\x0B\xB6Wa\x0B\xB6a#\xB0V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C7W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xEDWa\x0B\xEDa#\xB0V[` \x02` \x01\x01Q\x90Pa\x0C.\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1BW\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xCDV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x80Wa\x0C\x80a#\xB0V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xC5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x9AV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1B\x9EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r+W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\x80\x01QQ\x81\x10\x15a\x04\xC1W\x81`\x80\x01Q\x81\x81Q\x81\x10a\rfWa\rfa#\xB0V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\r\x88Wa\r\x88a#\xB0V[` \x02` \x01\x01Q` \x01Q\x14a\r\xCBW`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\rCV[a\x0E\r`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EOW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0Ee\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xC3Wa\x0E\xC3a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F,W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xE1W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\x83Wa\x0F^\x86\x82\x81Q\x81\x10a\x0FOWa\x0FOa#\xB0V[` \x02` \x01\x01Q\x86\x86a\x1C\xB5V[\x83\x82\x81Q\x81\x10a\x0FpWa\x0Fpa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F2V[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R`\0\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x112\x93\x92\x91\x90a*\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11U\x83`\0\x01Qa\x1D\x85V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q`\0\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x11\x87\x89`\x80\x01Qa\x1E\x1FV[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\x16WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12m\x90\x85\x90`\x04\x01a+ V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\x8AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\xD0\x91\x90\x81\x01\x90a+3V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x12\xE8\x82\x84a,2V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\0Wa\x13\0a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13iW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x1EW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x13\xBAW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\x8DWa\x13\x8Da#\xB0V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xA7Wa\x13\xA7a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13oV[P`\0\x80`\0[\x84\x81\x10\x15a\x16\xD5W`\0\x87\x82\x81Q\x81\x10a\x13\xDDWa\x13\xDDa#\xB0V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x14\x9BW\x88\x81\x81Q\x81\x10a\x14\x04Wa\x14\x04a#\xB0V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\x93W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x13\xEAV[P`\0\x80[\x88\x81\x10\x15a\x15\\W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x14\xC0Wa\x14\xC0a#\xB0V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15SW\x85\x15a\x15=W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15L\x90\x84a,2V[\x92P`\x01\x96P[P`\x01\x01a\x14\xA0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\xD5W\x84\x15a\x15\xBCW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\xCE\x90\x82a,2V[\x90P`\x01\x93P[\x80`\0\x03a\x16*W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x168\x81`\x05a'\x10a\x1E\xBDV[\x82` \x01Q\x11\x15a\x16\xABW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16\xC0Wa\x16\xC0a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13\xC1V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x177W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xB3\x90\x84\x90\x86\x90`\x04\x01a,EV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17\xCBW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xA7\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xB1\x85\x85a\x1E\xF9V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xFC\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x1Ai\x93\x92\x91\x90a*\xDDV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a.w` \x83\x019`@Q` \x01a\x1A\xBC\x92\x91\x90a,tV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B)\x96\x95\x94\x93\x92`\x04\x01a,\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B|Wa\x03_\x82\x82a\x1B\x9EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1F@V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1B\xF8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1B\xFDV[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1CHWP\x83a\x1C\xADV[\x82\x82\x11a\x1C\x81W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\x8FWP\x82a\x1C\xADV[B\x83\x10a\x1C\x9DWP\x83a\x1C\xADV[a\x1C\xAA\x83\x83B\x88\x88a 2V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x14W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D*\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\xD9\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E?Wa\x1E?a#\x81V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1EiW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1E\xAEW`\0a\x1E\x9C\x85\x83\x81Q\x81\x10a\x1E\x8FWa\x1E\x8Fa#\xB0V[` \x02` \x01\x01Qa MV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1EoV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\xF2W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a +W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0a A\x86\x86\x86\x86\x86a \xC4V[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a.%`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\xD9\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x84\x84\x10a \xD4WP\x80a DV[`\0a \xE0\x87\x86a-\x8AV[\x90P`\0a \xEE\x88\x88a-\x8AV[\x90P`\0\x85\x85\x12\x15a! Wa!\x10\x83\x83a!\t\x88\x8Aa-\x9DV[\x91\x90a\x1E\xBDV[a!\x19\x90a-\xC4V[\x90Pa!2V[a!/\x83\x83a!\t\x89\x89a-\x9DV[\x90P[a!<\x81\x87a-\xFCV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a![W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a!sW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x8BW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a!\xBFW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a!\xD7W`\0\x80\xFD[a!\xE3\x87\x83\x88\x01a!IV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!\xF9W`\0\x80\xFD[Pa\"\x06\x86\x82\x87\x01a!aV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\"%W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"=W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\"kW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x82W`\0\x80\xFD[a\"\x8E\x85\x82\x86\x01a\"\x13V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\"\xB0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"\xC8W`\0\x80\xFD[a\"\xD4\x88\x83\x89\x01a\"\x13V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"\xEDW`\0\x80\xFD[Pa\"\xFA\x87\x82\x88\x01a!aV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a#:W`\0\x80\xFD[\x815a#E\x81a#\x06V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a#^W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#uW`\0\x80\xFD[a\x1C\xAD\x84\x82\x85\x01a!IV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a#\xFAW\x81\x81\x01Q\x83\x82\x01R` \x01a#\xE2V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra$\x1B\x81` \x86\x01` \x86\x01a#\xDFV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a$\xADW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a$bV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%,a\x01\xA0\x85\x01\x82a$\x03V[\x90P` \x83\x01Qa%j` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra%\x82\x82\x82a$MV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x9C\x82\x82a$\x03V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a&(W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra&\x16\x86\x83Qa$\xB8V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%\xDCV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\xADW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&\xECW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a'\x07W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!\xA3W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xF5Wa'\xF5a#\x81V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a(\x0EW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a((Wa((a#\x81V[a(Y` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\xAEV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a(nW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a(\x9DW`\0\x80\xFD[a(\xA5a'\x1CV[\x90P\x815a(\xB2\x81a#\x06V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xEAWa(\xEAa#\x81V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a)\x05W`\0\x80\xFD[\x815` a)\x1Aa)\x15\x83a(\xD0V[a'\xAEV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a)9W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a)\x9EW`\x80\x81\x89\x03\x12\x15a)VW`\0\x80\x81\xFD[a)^a'EV[\x815a)i\x81a#\x06V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a)\x8C\x81a#\x06V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a)=V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a)\xBBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\xD3W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)\xE7W`\0\x80\xFD[a)\xEFa'hV[\x825\x82\x81\x11\x15a)\xFEW`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a*\x10W`\0\x80\xFD[a*\x18a'\x8BV[\x815a*#\x81a#\x06V[\x81R` \x82\x015a*3\x81a#\x06V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a*\\\x81a#\x06V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a*sW`\0\x80\xFD[a*\x7F\x89\x82\x85\x01a'\xFDV[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra*\xAB\x86``\x85\x01a(\x8BV[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\xC2W`\0\x80\xFD[a*\xCE\x87\x82\x86\x01a(\xF4V[`\x80\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa*\xEF\x81\x84` \x89\x01a#\xDFV[\x84Q\x90\x83\x01\x90a+\x03\x81\x83` \x89\x01a#\xDFV[\x84Q\x91\x01\x90a+\x16\x81\x83` \x88\x01a#\xDFV[\x01\x95\x94PPPPPV[` \x81R`\0a#E` \x83\x01\x84a$\xB8V[`\0` \x80\x83\x85\x03\x12\x15a+FW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+]W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a+nW`\0\x80\xFD[\x80Qa+|a)\x15\x82a(\xD0V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a+\x9BW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+\xF7W\x80\x85\x8A\x03\x12\x15a+\xB8W`\0\x80\x81\xFD[a+\xC0a'\x1CV[\x85Qa+\xCB\x81a#\x06V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+\xE4\x81a#\x06V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a+\xA0V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F:Wa\x1F:a,\x03V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1C\xAD`@\x83\x01\x84a$\xB8V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa,\xAC\x81`\x13\x85\x01` \x88\x01a#\xDFV[\x83Q\x90\x83\x01\x90a,\xC3\x81`\x13\x84\x01` \x88\x01a#\xDFV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a,\xFF\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra-@`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra-u\x81\x84\x01\x86a$\x03V[\x90P\x82\x81\x03a\x01 \x84\x01Ra!<\x81\x85a$\x03V[\x81\x81\x03\x81\x81\x11\x15a\x1F:Wa\x1F:a,\x03V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a-\xBDWa-\xBDa,\x03V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-\xF5Wa-\xF5a,\x03V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a.\x1CWa.\x1Ca,\x03V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x0Ct\xC6SI\xB0\xAF\x83f\x8D\x86\x03R\xD3\x9F\x18)\xD5r\x1D\x90\x19\xF5\x1E(&\xCA\xB1\xD7U.\xCBdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046121aa565b6101eb565b005b6100b96100c9366004612258565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461229a565b6104c5565b34801561014a57600080fd5b506100b9610159366004612328565b610683565b6100b961016c36600461234c565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612328565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56123b0565b60200260200101819052506102d981610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016125b3565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b95565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612381565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666123b0565b90506020028101906104789190612679565b6109f6565b82828151811061048f5761048f6123b0565b6020908102919091010152600101610449565b506104ac81610b44565b6104b581610b95565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612381565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666123b0565b8282815181106105d9576105d96123b0565b60209081029190910101526001016105aa565b506105f681610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016125b3565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b95565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696123b0565b602002602001018190525061087d81610b44565b61088681610b95565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f83806126b7565b810190610a7c91906129a9565b9050610a8781610ce8565b6040518060a0016040528082600001518152602001610abd836020015184604001518560600151610dd39092919063ffffffff16565b8152602001610ae3836020015184604001518560800151610ea59092919063ffffffff16565b8152602001848060200190610af891906126b7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610f8c565b90529392505050565b805160005b8181101561035f576000838281518110610b6557610b656123b0565b60200260200101519050610b78816111f6565b610b8281336116e6565b610b8c81336117e7565b50600101610b49565b805160005b81811015610cd7576000838281518110610bb657610bb66123b0565b602002602001015190506000816040015151905060005b81811015610c3757600083604001518281518110610bed57610bed6123b0565b60200260200101519050610c2e81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611b579092919063ffffffff16565b50600101610bcd565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c8057610c806123b0565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cc591815260200190565b60405180910390a45050600101610b9a565b5047156104c1576104c13347611b9e565b60408101518151606001511015610d2b576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108915760005b8160800151518110156104c15781608001518181518110610d6657610d666123b0565b60200260200101516040015182608001518281518110610d8857610d886123b0565b60200260200101516020015114610dcb576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d43565b610e0d6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e4f576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e65856020015186604001518686611c38565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ec357610ec3612381565b604051908082528060200260200182016040528015610f2c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ee15790505b50915060005b81811015610f8357610f5e868281518110610f4f57610f4f6123b0565b60200260200101518686611cb5565b838281518110610f7057610f706123b0565b6020908102919091010152600101610f32565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a982015260009060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d913960405160200161113293929190612add565b604051602081830303815290604052805190602001206111558360000151611d85565b836020015184604001518560600151600001518660600151602001518760600151604001516111878960800151611e1f565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff166112165750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061126d908590600401612b20565b600060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112d09190810190612b33565b60408301515181519192509060006112e88284612c32565b67ffffffffffffffff81111561130057611300612381565b60405190808252806020026020018201604052801561136957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161131e5790505b50905060005b838110156113ba578560400151818151811061138d5761138d6123b0565b60200260200101518282815181106113a7576113a76123b0565b602090810291909101015260010161136f565b5060008060005b848110156116d55760008782815181106113dd576113dd6123b0565b6020026020010151905060005b8281101561149b57888181518110611404576114046123b0565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036114935781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016113ea565b506000805b8881101561155c5760008b6040015182815181106114c0576114c06123b0565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361155357851561153d576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161154c9084612c32565b9250600196505b506001016114a0565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036115d55784156115bc576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516115ce9082612c32565b9050600193505b8060000361162a5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611638816005612710611ebd565b826020015111156116ab578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106116c0576116c06123b0565b602090810291909101015250506001016113c1565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611737576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117b39084908690600401612c45565b60006040518083038186803b1580156117cb57600080fd5b505afa1580156117df573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6118a7846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6118b18585611ef9565b85600001516020015186608001516040516020016119fc907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d9139604051602001611a6993929190612add565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612e776020830139604051602001611abc929190612c74565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611b299695949392600401612ccf565b600060405180830381600087803b158015611b4357600080fd5b505af11580156117df573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611b7c5761035f8282611b9e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484611f40565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611bf8576040519150601f19603f3d011682016040523d82523d6000602084013e611bfd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611c48575083611cad565b828211611c81576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611c8f575082611cad565b428310611c9d575083611cad565b611caa8383428888612032565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d14576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d2a856020015186604001518686611c38565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d8152602001612ea5608d913980516020918201208351848301516040808701516060880151608089015160a08a015180519089012093516111d998939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611e3f57611e3f612381565b6040519080825280601f01601f191660200182016040528015611e69576020820181803683370190505b50905060005b8351811015611eae576000611e9c858381518110611e8f57611e8f6123b0565b602002602001015161204d565b60208381028501015250600101611e6f565b50805160209091012092915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611ef257600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600061204186868686866120c4565b90505b95945050505050565b6000604051806080016040528060528152602001612e25605291398051602091820120835184830151604080870151606088015191516111d9969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b60008484106120d4575080612044565b60006120e08786612d8a565b905060006120ee8888612d8a565b9050600085851215612120576121108383612109888a612d9d565b9190611ebd565b61211990612dc4565b9050612132565b61212f83836121098989612d9d565b90505b61213c8187612dfc565b9998505050505050505050565b60006040828403121561215b57600080fd5b50919050565b60008083601f84011261217357600080fd5b50813567ffffffffffffffff81111561218b57600080fd5b6020830191508360208285010111156121a357600080fd5b9250929050565b6000806000604084860312156121bf57600080fd5b833567ffffffffffffffff808211156121d757600080fd5b6121e387838801612149565b945060208601359150808211156121f957600080fd5b5061220686828701612161565b9497909650939450505050565b60008083601f84011261222557600080fd5b50813567ffffffffffffffff81111561223d57600080fd5b6020830191508360208260051b85010111156121a357600080fd5b6000806020838503121561226b57600080fd5b823567ffffffffffffffff81111561228257600080fd5b61228e85828601612213565b90969095509350505050565b600080600080604085870312156122b057600080fd5b843567ffffffffffffffff808211156122c857600080fd5b6122d488838901612213565b909650945060208701359150808211156122ed57600080fd5b506122fa87828801612161565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b60006020828403121561233a57600080fd5b813561234581612306565b9392505050565b60006020828403121561235e57600080fd5b813567ffffffffffffffff81111561237557600080fd5b611cad84828501612149565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156123fa5781810151838201526020016123e2565b50506000910152565b6000815180845261241b8160208601602086016123df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156124ad578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612462565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c061018085015261252c6101a0850182612403565b9050602083015161256a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612582828261244d565b915050606083015184820360a086015261259c8282612403565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612628577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526126168683516124b8565b955093820193908201906001016125dc565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126126ad57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126ec57600080fd5b83018035915067ffffffffffffffff82111561270757600080fd5b6020019150368190038213156121a357600080fd5b6040516060810167ffffffffffffffff8111828210171561273f5761273f612381565b60405290565b6040516080810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160a0810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160c0810167ffffffffffffffff8111828210171561273f5761273f612381565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127f5576127f5612381565b604052919050565b600082601f83011261280e57600080fd5b813567ffffffffffffffff81111561282857612828612381565b61285960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016127ae565b81815284602083860101111561286e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561289d57600080fd5b6128a561271c565b905081356128b281612306565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff8211156128ea576128ea612381565b5060051b60200190565b600082601f83011261290557600080fd5b8135602061291a612915836128d0565b6127ae565b82815260079290921b8401810191818101908684111561293957600080fd5b8286015b8481101561299e57608081890312156129565760008081fd5b61295e612745565b813561296981612306565b815281850135858201526040808301359082015260608083013561298c81612306565b9082015283529183019160800161293d565b509695505050505050565b6000602082840312156129bb57600080fd5b813567ffffffffffffffff808211156129d357600080fd5b9083019060e082860312156129e757600080fd5b6129ef612768565b8235828111156129fe57600080fd5b830160c08188031215612a1057600080fd5b612a1861278b565b8135612a2381612306565b81526020820135612a3381612306565b8060208301525060408201356040820152606082013560608201526080820135612a5c81612306565b608082015260a082013584811115612a7357600080fd5b612a7f898285016127fd565b60a08301525080835250506020830135602082015260408301356040820152612aab866060850161288b565b606082015260c083013582811115612ac257600080fd5b612ace878286016128f4565b60808301525095945050505050565b60008451612aef8184602089016123df565b845190830190612b038183602089016123df565b8451910190612b168183602088016123df565b0195945050505050565b60208152600061234560208301846124b8565b60006020808385031215612b4657600080fd5b825167ffffffffffffffff811115612b5d57600080fd5b8301601f81018513612b6e57600080fd5b8051612b7c612915826128d0565b81815260609182028301840191848201919088841115612b9b57600080fd5b938501935b83851015612bf75780858a031215612bb85760008081fd5b612bc061271c565b8551612bcb81612306565b81528587015187820152604080870151612be481612306565b9082015283529384019391850191612ba0565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611f3a57611f3a612c03565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611cad60408301846124b8565b7f44757463684f72646572207769746e6573732900000000000000000000000000815260008351612cac8160138501602088016123df565b835190830190612cc38160138401602088016123df565b01601301949350505050565b6000610140612cff838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612d406080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612d7581840186612403565b905082810361012084015261213c8185612403565b81810381811115611f3a57611f3a612c03565b8181036000831280158383131683831282161715612dbd57612dbd612c03565b5092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203612df557612df5612c03565b5060000390565b8082018281126000831280158216821582161715612e1c57612e1c612c03565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212200c74c65349b0af83668d860352d39f1829d5721d9019f51e2826cab1d7552ecb64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a!\xAAV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a\"XV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a\"\x9AV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a#(V[a\x06\x83V[a\0\xB9a\x01l6`\x04a#LV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a#(V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a#\xB0V[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\x95V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a&yV[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BDV[a\x04\xB5\x81a\x0B\x95V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\x95V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia#\xB0V[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BDV[a\x08\x86\x81a\x0B\x95V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a&\xB7V[\x81\x01\x90a\n|\x91\x90a)\xA9V[\x90Pa\n\x87\x81a\x0C\xE8V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xD3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0E\xA5\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a&\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\x8CV[\x90R\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea#\xB0V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x11\xF6V[a\x0B\x82\x813a\x16\xE6V[a\x0B\x8C\x813a\x17\xE7V[P`\x01\x01a\x0BIV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xD7W`\0\x83\x82\x81Q\x81\x10a\x0B\xB6Wa\x0B\xB6a#\xB0V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C7W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xEDWa\x0B\xEDa#\xB0V[` \x02` \x01\x01Q\x90Pa\x0C.\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1BW\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xCDV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x80Wa\x0C\x80a#\xB0V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xC5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x9AV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1B\x9EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r+W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\x80\x01QQ\x81\x10\x15a\x04\xC1W\x81`\x80\x01Q\x81\x81Q\x81\x10a\rfWa\rfa#\xB0V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\r\x88Wa\r\x88a#\xB0V[` \x02` \x01\x01Q` \x01Q\x14a\r\xCBW`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\rCV[a\x0E\r`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EOW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0Ee\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xC3Wa\x0E\xC3a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F,W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xE1W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\x83Wa\x0F^\x86\x82\x81Q\x81\x10a\x0FOWa\x0FOa#\xB0V[` \x02` \x01\x01Q\x86\x86a\x1C\xB5V[\x83\x82\x81Q\x81\x10a\x0FpWa\x0Fpa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F2V[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R`\0\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x112\x93\x92\x91\x90a*\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11U\x83`\0\x01Qa\x1D\x85V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q`\0\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x11\x87\x89`\x80\x01Qa\x1E\x1FV[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\x16WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12m\x90\x85\x90`\x04\x01a+ V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\x8AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\xD0\x91\x90\x81\x01\x90a+3V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x12\xE8\x82\x84a,2V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\0Wa\x13\0a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13iW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x1EW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x13\xBAW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\x8DWa\x13\x8Da#\xB0V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xA7Wa\x13\xA7a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13oV[P`\0\x80`\0[\x84\x81\x10\x15a\x16\xD5W`\0\x87\x82\x81Q\x81\x10a\x13\xDDWa\x13\xDDa#\xB0V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x14\x9BW\x88\x81\x81Q\x81\x10a\x14\x04Wa\x14\x04a#\xB0V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\x93W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x13\xEAV[P`\0\x80[\x88\x81\x10\x15a\x15\\W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x14\xC0Wa\x14\xC0a#\xB0V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15SW\x85\x15a\x15=W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15L\x90\x84a,2V[\x92P`\x01\x96P[P`\x01\x01a\x14\xA0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\xD5W\x84\x15a\x15\xBCW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\xCE\x90\x82a,2V[\x90P`\x01\x93P[\x80`\0\x03a\x16*W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x168\x81`\x05a'\x10a\x1E\xBDV[\x82` \x01Q\x11\x15a\x16\xABW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16\xC0Wa\x16\xC0a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13\xC1V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x177W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xB3\x90\x84\x90\x86\x90`\x04\x01a,EV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17\xCBW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xA7\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xB1\x85\x85a\x1E\xF9V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xFC\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x1Ai\x93\x92\x91\x90a*\xDDV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a.w` \x83\x019`@Q` \x01a\x1A\xBC\x92\x91\x90a,tV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B)\x96\x95\x94\x93\x92`\x04\x01a,\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B|Wa\x03_\x82\x82a\x1B\x9EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1F@V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1B\xF8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1B\xFDV[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1CHWP\x83a\x1C\xADV[\x82\x82\x11a\x1C\x81W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\x8FWP\x82a\x1C\xADV[B\x83\x10a\x1C\x9DWP\x83a\x1C\xADV[a\x1C\xAA\x83\x83B\x88\x88a 2V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x14W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D*\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\xD9\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E?Wa\x1E?a#\x81V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1EiW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1E\xAEW`\0a\x1E\x9C\x85\x83\x81Q\x81\x10a\x1E\x8FWa\x1E\x8Fa#\xB0V[` \x02` \x01\x01Qa MV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1EoV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\xF2W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a +W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0a A\x86\x86\x86\x86\x86a \xC4V[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a.%`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\xD9\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x84\x84\x10a \xD4WP\x80a DV[`\0a \xE0\x87\x86a-\x8AV[\x90P`\0a \xEE\x88\x88a-\x8AV[\x90P`\0\x85\x85\x12\x15a! Wa!\x10\x83\x83a!\t\x88\x8Aa-\x9DV[\x91\x90a\x1E\xBDV[a!\x19\x90a-\xC4V[\x90Pa!2V[a!/\x83\x83a!\t\x89\x89a-\x9DV[\x90P[a!<\x81\x87a-\xFCV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a![W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a!sW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x8BW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a!\xBFW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a!\xD7W`\0\x80\xFD[a!\xE3\x87\x83\x88\x01a!IV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!\xF9W`\0\x80\xFD[Pa\"\x06\x86\x82\x87\x01a!aV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\"%W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"=W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\"kW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x82W`\0\x80\xFD[a\"\x8E\x85\x82\x86\x01a\"\x13V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\"\xB0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"\xC8W`\0\x80\xFD[a\"\xD4\x88\x83\x89\x01a\"\x13V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"\xEDW`\0\x80\xFD[Pa\"\xFA\x87\x82\x88\x01a!aV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a#:W`\0\x80\xFD[\x815a#E\x81a#\x06V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a#^W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#uW`\0\x80\xFD[a\x1C\xAD\x84\x82\x85\x01a!IV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a#\xFAW\x81\x81\x01Q\x83\x82\x01R` \x01a#\xE2V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra$\x1B\x81` \x86\x01` \x86\x01a#\xDFV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a$\xADW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a$bV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%,a\x01\xA0\x85\x01\x82a$\x03V[\x90P` \x83\x01Qa%j` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra%\x82\x82\x82a$MV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x9C\x82\x82a$\x03V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a&(W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra&\x16\x86\x83Qa$\xB8V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%\xDCV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\xADW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&\xECW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a'\x07W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!\xA3W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xF5Wa'\xF5a#\x81V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a(\x0EW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a((Wa((a#\x81V[a(Y` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\xAEV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a(nW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a(\x9DW`\0\x80\xFD[a(\xA5a'\x1CV[\x90P\x815a(\xB2\x81a#\x06V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xEAWa(\xEAa#\x81V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a)\x05W`\0\x80\xFD[\x815` a)\x1Aa)\x15\x83a(\xD0V[a'\xAEV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a)9W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a)\x9EW`\x80\x81\x89\x03\x12\x15a)VW`\0\x80\x81\xFD[a)^a'EV[\x815a)i\x81a#\x06V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a)\x8C\x81a#\x06V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a)=V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a)\xBBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\xD3W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)\xE7W`\0\x80\xFD[a)\xEFa'hV[\x825\x82\x81\x11\x15a)\xFEW`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a*\x10W`\0\x80\xFD[a*\x18a'\x8BV[\x815a*#\x81a#\x06V[\x81R` \x82\x015a*3\x81a#\x06V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a*\\\x81a#\x06V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a*sW`\0\x80\xFD[a*\x7F\x89\x82\x85\x01a'\xFDV[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra*\xAB\x86``\x85\x01a(\x8BV[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\xC2W`\0\x80\xFD[a*\xCE\x87\x82\x86\x01a(\xF4V[`\x80\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa*\xEF\x81\x84` \x89\x01a#\xDFV[\x84Q\x90\x83\x01\x90a+\x03\x81\x83` \x89\x01a#\xDFV[\x84Q\x91\x01\x90a+\x16\x81\x83` \x88\x01a#\xDFV[\x01\x95\x94PPPPPV[` \x81R`\0a#E` \x83\x01\x84a$\xB8V[`\0` \x80\x83\x85\x03\x12\x15a+FW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+]W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a+nW`\0\x80\xFD[\x80Qa+|a)\x15\x82a(\xD0V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a+\x9BW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+\xF7W\x80\x85\x8A\x03\x12\x15a+\xB8W`\0\x80\x81\xFD[a+\xC0a'\x1CV[\x85Qa+\xCB\x81a#\x06V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+\xE4\x81a#\x06V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a+\xA0V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F:Wa\x1F:a,\x03V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1C\xAD`@\x83\x01\x84a$\xB8V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa,\xAC\x81`\x13\x85\x01` \x88\x01a#\xDFV[\x83Q\x90\x83\x01\x90a,\xC3\x81`\x13\x84\x01` \x88\x01a#\xDFV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a,\xFF\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra-@`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra-u\x81\x84\x01\x86a$\x03V[\x90P\x82\x81\x03a\x01 \x84\x01Ra!<\x81\x85a$\x03V[\x81\x81\x03\x81\x81\x11\x15a\x1F:Wa\x1F:a,\x03V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a-\xBDWa-\xBDa,\x03V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-\xF5Wa-\xF5a,\x03V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a.\x1CWa.\x1Ca,\x03V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x0Ct\xC6SI\xB0\xAF\x83f\x8D\x86\x03R\xD3\x9F\x18)\xD5r\x1D\x90\x19\xF5\x1E(&\xCA\xB1\xD7U.\xCBdsolcC\0\x08\x18\x003", + ); + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `DeadlineBeforeEndTime()` and selector `0x773a6187`. +```solidity +error DeadlineBeforeEndTime(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DeadlineBeforeEndTime {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DeadlineBeforeEndTime) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DeadlineBeforeEndTime { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DeadlineBeforeEndTime { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DeadlineBeforeEndTime()"; + const SELECTOR: [u8; 4] = [119u8, 58u8, 97u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `DuplicateFeeOutput(address)` and selector `0xfff08303`. +```solidity +error DuplicateFeeOutput(address duplicateToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DuplicateFeeOutput { + pub duplicateToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DuplicateFeeOutput) -> Self { + (value.duplicateToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DuplicateFeeOutput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { duplicateToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DuplicateFeeOutput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DuplicateFeeOutput(address)"; + const SELECTOR: [u8; 4] = [255u8, 240u8, 131u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.duplicateToken, + ), + ) + } + } + }; + /**Custom error with signature `EndTimeBeforeStartTime()` and selector `0x43133453`. +```solidity +error EndTimeBeforeStartTime(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct EndTimeBeforeStartTime {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: EndTimeBeforeStartTime) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for EndTimeBeforeStartTime { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for EndTimeBeforeStartTime { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "EndTimeBeforeStartTime()"; + const SELECTOR: [u8; 4] = [67u8, 19u8, 52u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656`. +```solidity +error FeeTooLarge(address token, uint256 amount, address recipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FeeTooLarge { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FeeTooLarge) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FeeTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for FeeTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "FeeTooLarge(address,uint256,address)"; + const SELECTOR: [u8; 4] = [130u8, 231u8, 86u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + } + }; + /**Custom error with signature `IncorrectAmounts()` and selector `0x7c1f8113`. +```solidity +error IncorrectAmounts(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IncorrectAmounts {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IncorrectAmounts) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IncorrectAmounts { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for IncorrectAmounts { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IncorrectAmounts()"; + const SELECTOR: [u8; 4] = [124u8, 31u8, 129u8, 19u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputAndOutputDecay()` and selector `0xd303758b`. +```solidity +error InputAndOutputDecay(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputDecay {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputDecay) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputDecay { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputDecay { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputDecay()"; + const SELECTOR: [u8; 4] = [211u8, 3u8, 117u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputAndOutputFees()` and selector `0xedc7e2e4`. +```solidity +error InputAndOutputFees(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputFees {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputFees) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputFees { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputFees { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputFees()"; + const SELECTOR: [u8; 4] = [237u8, 199u8, 226u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidFeeToken(address)` and selector `0xeddf07f5`. +```solidity +error InvalidFeeToken(address feeToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidFeeToken { + pub feeToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidFeeToken) -> Self { + (value.feeToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidFeeToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { feeToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidFeeToken { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidFeeToken(address)"; + const SELECTOR: [u8; 4] = [237u8, 223u8, 7u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.feeToken, + ), + ) + } + } + }; + /**Custom error with signature `InvalidReactor()` and selector `0x4ddf4a64`. +```solidity +error InvalidReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReactor {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReactor()"; + const SELECTOR: [u8; 4] = [77u8, 223u8, 74u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Fill(bytes32,address,address,uint256)` and selector `0x78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66`. +```solidity +event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Fill { + #[allow(missing_docs)] + pub orderHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub filler: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub swapper: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Fill { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Fill(bytes32,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + orderHash: topics.1, + filler: topics.2, + swapper: topics.3, + nonce: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.orderHash.clone(), + self.filler.clone(), + self.swapper.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.orderHash); + out[2usize] = ::encode_topic( + &self.filler, + ); + out[3usize] = ::encode_topic( + &self.swapper, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Fill { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Fill> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Fill) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ProtocolFeeControllerSet(address,address)` and selector `0xb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0`. +```solidity +event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ProtocolFeeControllerSet { + #[allow(missing_docs)] + pub oldFeeController: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newFeeController: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProtocolFeeControllerSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ProtocolFeeControllerSet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldFeeController: data.0, + newFeeController: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldFeeController, + ), + ::tokenize( + &self.newFeeController, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ProtocolFeeControllerSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProtocolFeeControllerSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &ProtocolFeeControllerSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _permit2, address _protocolFeeOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _permit2: alloy::sol_types::private::Address, + pub _protocolFeeOwner: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._permit2, value._protocolFeeOwner) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _permit2: tuple.0, + _protocolFeeOwner: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._permit2, + ), + ::tokenize( + &self._protocolFeeOwner, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes))` and selector `0x3f62192e`. +```solidity +function execute(SignedOrder memory order) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes))"; + const SELECTOR: [u8; 4] = [63u8, 98u8, 25u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3`. +```solidity +function executeBatch(SignedOrder[] memory orders) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { orders: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[])"; + const SELECTOR: [u8; 4] = [13u8, 122u8, 22u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7`. +```solidity +function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackCall) -> Self { + (value.orders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchWithCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatchWithCallback((bytes,bytes)[],bytes)"; + const SELECTOR: [u8; 4] = [19u8, 251u8, 114u8, 199u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884`. +```solidity +function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackCall { + pub order: ::RustType, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + SignedOrder, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackCall) -> Self { + (value.order, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeWithCallbackCall { + type Parameters<'a> = (SignedOrder, alloy::sol_types::sol_data::Bytes); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeWithCallback((bytes,bytes),bytes)"; + const SELECTOR: [u8; 4] = [13u8, 51u8, 88u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `feeController()` and selector `0x6999b377`. +```solidity +function feeController() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerCall {} + ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeControllerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeControllerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeController()"; + const SELECTOR: [u8; 4] = [105u8, 153u8, 179u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit2()` and selector `0x12261ee7`. +```solidity +function permit2() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Call {} + ///Container type for the return parameters of the [`permit2()`](permit2Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Return { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit2Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit2Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit2()"; + const SELECTOR: [u8; 4] = [18u8, 38u8, 30u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setProtocolFeeController(address)` and selector `0x2d771389`. +```solidity +function setProtocolFeeController(address _newFeeController) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerCall { + pub _newFeeController: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerCall) -> Self { + (value._newFeeController,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _newFeeController: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProtocolFeeControllerCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProtocolFeeControllerReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProtocolFeeController(address)"; + const SELECTOR: [u8; 4] = [45u8, 119u8, 19u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newFeeController, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`DutchOrderReactor`](self) function calls. + pub enum DutchOrderReactorCalls { + execute(executeCall), + executeBatch(executeBatchCall), + executeBatchWithCallback(executeBatchWithCallbackCall), + executeWithCallback(executeWithCallbackCall), + feeController(feeControllerCall), + owner(ownerCall), + permit2(permit2Call), + setProtocolFeeController(setProtocolFeeControllerCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl DutchOrderReactorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 51u8, 88u8, 132u8], + [13u8, 122u8, 22u8, 195u8], + [18u8, 38u8, 30u8, 231u8], + [19u8, 251u8, 114u8, 199u8], + [45u8, 119u8, 19u8, 137u8], + [63u8, 98u8, 25u8, 46u8], + [105u8, 153u8, 179u8, 119u8], + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DutchOrderReactorCalls { + const NAME: &'static str = "DutchOrderReactorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::executeBatchWithCallback(_) => { + ::SELECTOR + } + Self::executeWithCallback(_) => { + ::SELECTOR + } + Self::feeController(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::permit2(_) => ::SELECTOR, + Self::setProtocolFeeController(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn executeWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorCalls::executeWithCallback) + } + executeWithCallback + }, + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorCalls::executeBatch) + } + executeBatch + }, + { + fn permit2( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorCalls::permit2) + } + permit2 + }, + { + fn executeBatchWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorCalls::executeBatchWithCallback) + } + executeBatchWithCallback + }, + { + fn setProtocolFeeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorCalls::setProtocolFeeController) + } + setProtocolFeeController + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorCalls::execute) + } + execute + }, + { + fn feeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorCalls::feeController) + } + feeController + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::feeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::permit2(inner) => { + ::abi_encoded_size(inner) + } + Self::setProtocolFeeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::feeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit2(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setProtocolFeeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`DutchOrderReactor`](self) custom errors. + pub enum DutchOrderReactorErrors { + DeadlineBeforeEndTime(DeadlineBeforeEndTime), + DuplicateFeeOutput(DuplicateFeeOutput), + EndTimeBeforeStartTime(EndTimeBeforeStartTime), + FeeTooLarge(FeeTooLarge), + IncorrectAmounts(IncorrectAmounts), + InputAndOutputDecay(InputAndOutputDecay), + InputAndOutputFees(InputAndOutputFees), + InvalidFeeToken(InvalidFeeToken), + InvalidReactor(InvalidReactor), + NativeTransferFailed(NativeTransferFailed), + } + #[automatically_derived] + impl DutchOrderReactorErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [67u8, 19u8, 52u8, 83u8], + [77u8, 223u8, 74u8, 100u8], + [119u8, 58u8, 97u8, 135u8], + [124u8, 31u8, 129u8, 19u8], + [130u8, 231u8, 86u8, 86u8], + [211u8, 3u8, 117u8, 139u8], + [237u8, 199u8, 226u8, 228u8], + [237u8, 223u8, 7u8, 245u8], + [244u8, 179u8, 177u8, 188u8], + [255u8, 240u8, 131u8, 3u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DutchOrderReactorErrors { + const NAME: &'static str = "DutchOrderReactorErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 10usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DeadlineBeforeEndTime(_) => { + ::SELECTOR + } + Self::DuplicateFeeOutput(_) => { + ::SELECTOR + } + Self::EndTimeBeforeStartTime(_) => { + ::SELECTOR + } + Self::FeeTooLarge(_) => { + ::SELECTOR + } + Self::IncorrectAmounts(_) => { + ::SELECTOR + } + Self::InputAndOutputDecay(_) => { + ::SELECTOR + } + Self::InputAndOutputFees(_) => { + ::SELECTOR + } + Self::InvalidFeeToken(_) => { + ::SELECTOR + } + Self::InvalidReactor(_) => { + ::SELECTOR + } + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn EndTimeBeforeStartTime( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorErrors::EndTimeBeforeStartTime) + } + EndTimeBeforeStartTime + }, + { + fn InvalidReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorErrors::InvalidReactor) + } + InvalidReactor + }, + { + fn DeadlineBeforeEndTime( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorErrors::DeadlineBeforeEndTime) + } + DeadlineBeforeEndTime + }, + { + fn IncorrectAmounts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorErrors::IncorrectAmounts) + } + IncorrectAmounts + }, + { + fn FeeTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorErrors::FeeTooLarge) + } + FeeTooLarge + }, + { + fn InputAndOutputDecay( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorErrors::InputAndOutputDecay) + } + InputAndOutputDecay + }, + { + fn InputAndOutputFees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorErrors::InputAndOutputFees) + } + InputAndOutputFees + }, + { + fn InvalidFeeToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorErrors::InvalidFeeToken) + } + InvalidFeeToken + }, + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorErrors::NativeTransferFailed) + } + NativeTransferFailed + }, + { + fn DuplicateFeeOutput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DutchOrderReactorErrors::DuplicateFeeOutput) + } + DuplicateFeeOutput + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DeadlineBeforeEndTime(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::DuplicateFeeOutput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::EndTimeBeforeStartTime(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encoded_size(inner) + } + Self::IncorrectAmounts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InputAndOutputDecay(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DeadlineBeforeEndTime(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::DuplicateFeeOutput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::EndTimeBeforeStartTime(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::IncorrectAmounts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputDecay(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`DutchOrderReactor`](self) events. + pub enum DutchOrderReactorEvents { + Fill(Fill), + OwnershipTransferred(OwnershipTransferred), + ProtocolFeeControllerSet(ProtocolFeeControllerSet), + } + #[automatically_derived] + impl DutchOrderReactorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ], + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + [ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for DutchOrderReactorEvents { + const NAME: &'static str = "DutchOrderReactorEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Fill) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ProtocolFeeControllerSet) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for DutchOrderReactorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DutchOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`DutchOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DutchOrderReactorInstance { + DutchOrderReactorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DutchOrderReactorInstance::< + T, + P, + N, + >::deploy(provider, _permit2, _protocolFeeOwner) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + DutchOrderReactorInstance::< + T, + P, + N, + >::deploy_builder(provider, _permit2, _protocolFeeOwner) + } + /**A [`DutchOrderReactor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DutchOrderReactor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DutchOrderReactorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DutchOrderReactorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DutchOrderReactorInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DutchOrderReactorInstance { + /**Creates a new wrapper around an on-chain [`DutchOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`DutchOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _permit2, + _protocolFeeOwner, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _permit2, + _protocolFeeOwner, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DutchOrderReactorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> DutchOrderReactorInstance { + DutchOrderReactorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DutchOrderReactorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeBatchCall { orders }) + } + ///Creates a new call builder for the [`executeBatchWithCallback`] function. + pub fn executeBatchWithCallback( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeBatchWithCallbackCall { + orders, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`executeWithCallback`] function. + pub fn executeWithCallback( + &self, + order: ::RustType, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeWithCallbackCall { + order, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`feeController`] function. + pub fn feeController( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeControllerCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`permit2`] function. + pub fn permit2(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&permit2Call {}) + } + ///Creates a new call builder for the [`setProtocolFeeController`] function. + pub fn setProtocolFeeController( + &self, + _newFeeController: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setProtocolFeeControllerCall { + _newFeeController, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DutchOrderReactorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Fill`] event. + pub fn Fill_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ProtocolFeeControllerSet`] event. + pub fn ProtocolFeeControllerSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/ecdsa.rs b/crates/bindings-uniswapx/src/ecdsa.rs index 4a312b4..06c0344 100644 --- a/crates/bindings-uniswapx/src/ecdsa.rs +++ b/crates/bindings-uniswapx/src/ecdsa.rs @@ -1,123 +1,218 @@ -pub use ecdsa::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod ecdsa { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ECDSA_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); +/** + +Generated by the following Solidity interface... +```solidity +interface ECDSA {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ECDSA { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220152519fdd49ff91c1a2079cfb437774dc2b7abf77c7699ba3f2f96a374a23fce64736f6c63430008180033 + /// ``` #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 en\xA8\xE2-\x91d\xFA\xF9\xE4\xB51x3&\xB8\xC3\xF3\xAB`X\xB2*\x93\xAB\x02\xDEg\xCCc\x81\x97dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static ECDSA_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x15%\x19\xFD\xD4\x9F\xF9\x1C\x1A y\xCF\xB47wM\xC2\xB7\xAB\xF7|v\x99\xBA?/\x96\xA3t\xA2?\xCEdsolcC\0\x08\x18\x003", ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220152519fdd49ff91c1a2079cfb437774dc2b7abf77c7699ba3f2f96a374a23fce64736f6c63430008180033 + /// ``` #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 en\xA8\xE2-\x91d\xFA\xF9\xE4\xB51x3&\xB8\xC3\xF3\xAB`X\xB2*\x93\xAB\x02\xDEg\xCCc\x81\x97dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static ECDSA_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x15%\x19\xFD\xD4\x9F\xF9\x1C\x1A y\xCF\xB47wM\xC2\xB7\xAB\xF7|v\x99\xBA?/\x96\xA3t\xA2?\xCEdsolcC\0\x08\x18\x003", ); - pub struct ECDSA(::ethers::contract::Contract); - impl ::core::clone::Clone for ECDSA { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ECDSA`](self) contract instance. + +See the [wrapper's documentation](`ECDSAInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ECDSAInstance { + ECDSAInstance::::new(address, provider) } - impl ::core::ops::Deref for ECDSA { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ECDSAInstance::::deploy(provider) } - impl ::core::ops::DerefMut for ECDSA { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ECDSAInstance::::deploy_builder(provider) } - impl ::core::fmt::Debug for ECDSA { + /**A [`ECDSA`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ECDSA`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ECDSAInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ECDSAInstance { + #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ECDSA)).field(&self.address()).finish() + f.debug_tuple("ECDSAInstance").field(&self.address).finish() } } - impl ECDSA { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAInstance { + /**Creates a new wrapper around an on-chain [`ECDSA`](self) contract instance. + +See the [wrapper's documentation](`ECDSAInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - ECDSA_ABI.clone(), - client, - ), + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), ) } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ECDSAInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ECDSAInstance { + ECDSAInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAInstance { + /// Creates a new call builder using this contract instance's provider and address. /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - ECDSA_ABI.clone(), - ECDSA_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) } } - impl From<::ethers::contract::Contract> - for ECDSA { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ECDSAInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) } } } diff --git a/crates/bindings-uniswapx/src/eip712.rs b/crates/bindings-uniswapx/src/eip712.rs index f0a6b20..ec23a6a 100644 --- a/crates/bindings-uniswapx/src/eip712.rs +++ b/crates/bindings-uniswapx/src/eip712.rs @@ -1,403 +1,999 @@ -pub use eip712::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod eip712 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("eip712Domain"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("eip712Domain"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("fields"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 1usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes1"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("name"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("version"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("chainId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("verifyingContract"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("salt"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("extensions"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("EIP712DomainChanged"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "EIP712DomainChanged", - ), - inputs: ::std::vec![], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("InvalidShortString"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidShortString"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("StringTooLong"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("StringTooLong"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("str"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static EIP712_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, +/** + +Generated by the following Solidity interface... +```solidity +interface EIP712 { + error InvalidShortString(); + error StringTooLong(string str); + + event EIP712DomainChanged(); + + function eip712Domain() external view returns (bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "eip712Domain", + "inputs": [], + "outputs": [ + { + "name": "fields", + "type": "bytes1", + "internalType": "bytes1" + }, + { + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "version", + "type": "string", + "internalType": "string" + }, + { + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "verifyingContract", + "type": "address", + "internalType": "address" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "extensions", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "EIP712DomainChanged", + "inputs": [], + "anonymous": false + }, + { + "type": "error", + "name": "InvalidShortString", + "inputs": [] + }, + { + "type": "error", + "name": "StringTooLong", + "inputs": [ + { + "name": "str", + "type": "string", + "internalType": "string" + } + ] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod EIP712 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", ); - pub struct EIP712(::ethers::contract::Contract); - impl ::core::clone::Clone for EIP712 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) + /**Custom error with signature `InvalidShortString()` and selector `0xb3512b0c`. +```solidity +error InvalidShortString(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidShortString {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - } - impl ::core::ops::Deref for EIP712 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidShortString) -> Self { + () + } } - } - impl ::core::ops::DerefMut for EIP712 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidShortString { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } } - } - impl ::core::fmt::Debug for EIP712 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(EIP712)).field(&self.address()).finish() + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidShortString { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidShortString()"; + const SELECTOR: [u8; 4] = [179u8, 81u8, 43u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } } + }; + /**Custom error with signature `StringTooLong(string)` and selector `0x305a27a9`. +```solidity +error StringTooLong(string str); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StringTooLong { + pub str: alloy::sol_types::private::String, } - impl EIP712 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - EIP712_ABI.clone(), - client, - ), - ) + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - ///Calls the contract's `eip712Domain` (0x84b0196e) function - pub fn eip_712_domain( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ( - [u8; 1], - ::std::string::String, - ::std::string::String, - ::ethers::core::types::U256, - ::ethers::core::types::Address, - [u8; 32], - ::std::vec::Vec<::ethers::core::types::U256>, - ), - > { - self.0 - .method_hash([132, 176, 25, 110], ()) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `EIP712DomainChanged` event - pub fn eip712_domain_changed_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - Eip712DomainChangedFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - Eip712DomainChangedFilter, - > { - self.0.event_with_filter(::core::default::Default::default()) + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StringTooLong) -> Self { + (value.str,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StringTooLong { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { str: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for StringTooLong { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "StringTooLong(string)"; + const SELECTOR: [u8; 4] = [48u8, 90u8, 39u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.str, + ), + ) + } } + }; + /**Event with signature `EIP712DomainChanged()` and selector `0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31`. +```solidity +event EIP712DomainChanged(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct EIP712DomainChanged {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for EIP712DomainChanged { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "EIP712DomainChanged()"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 10u8, + 99u8, + 135u8, + 201u8, + 234u8, + 54u8, + 40u8, + 184u8, + 138u8, + 99u8, + 59u8, + 180u8, + 243u8, + 177u8, + 81u8, + 119u8, + 15u8, + 112u8, + 8u8, + 81u8, + 23u8, + 161u8, + 95u8, + 155u8, + 243u8, + 120u8, + 124u8, + 218u8, + 83u8, + 241u8, + 61u8, + 49u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self {} + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EIP712DomainChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&EIP712DomainChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &EIP712DomainChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `eip712Domain()` and selector `0x84b0196e`. +```solidity +function eip712Domain() external view returns (bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eip712DomainCall {} + ///Container type for the return parameters of the [`eip712Domain()`](eip712DomainCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eip712DomainReturn { + pub fields: alloy::sol_types::private::FixedBytes<1>, + pub name: alloy::sol_types::private::String, + pub version: alloy::sol_types::private::String, + pub chainId: alloy::sol_types::private::U256, + pub verifyingContract: alloy::sol_types::private::Address, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub extensions: alloy::sol_types::private::Vec, } - impl From<::ethers::contract::Contract> - for EIP712 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eip712DomainCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eip712DomainCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<1>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<1>, + alloy::sol_types::private::String, + alloy::sol_types::private::String, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eip712DomainReturn) -> Self { + ( + value.fields, + value.name, + value.version, + value.chainId, + value.verifyingContract, + value.salt, + value.extensions, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eip712DomainReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + fields: tuple.0, + name: tuple.1, + version: tuple.2, + chainId: tuple.3, + verifyingContract: tuple.4, + salt: tuple.5, + extensions: tuple.6, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eip712DomainCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eip712DomainReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<1>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Array>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eip712Domain()"; + const SELECTOR: [u8; 4] = [132u8, 176u8, 25u8, 110u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + ///Container for all the [`EIP712`](self) function calls. + pub enum EIP712Calls { + eip712Domain(eip712DomainCall), } - ///Custom Error type `InvalidShortString` with signature `InvalidShortString()` and selector `0xb3512b0c` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidShortString", abi = "InvalidShortString()")] - pub struct InvalidShortString; - ///Custom Error type `StringTooLong` with signature `StringTooLong(string)` and selector `0x305a27a9` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "StringTooLong", abi = "StringTooLong(string)")] - pub struct StringTooLong { - pub str: ::std::string::String, + #[automatically_derived] + impl EIP712Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[132u8, 176u8, 25u8, 110u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for EIP712Calls { + const NAME: &'static str = "EIP712Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::eip712Domain(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn eip712Domain( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EIP712Calls::eip712Domain) + } + eip712Domain + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::eip712Domain(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::eip712Domain(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } } - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] + ///Container for all the [`EIP712`](self) custom errors. pub enum EIP712Errors { InvalidShortString(InvalidShortString), StringTooLong(StringTooLong), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), } - impl ::ethers::core::abi::AbiDecode for EIP712Errors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidShortString(decoded)); + #[automatically_derived] + impl EIP712Errors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [48u8, 90u8, 39u8, 169u8], + [179u8, 81u8, 43u8, 12u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for EIP712Errors { + const NAME: &'static str = "EIP712Errors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InvalidShortString(_) => { + ::SELECTOR + } + Self::StringTooLong(_) => { + ::SELECTOR + } } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::StringTooLong(decoded)); + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn StringTooLong( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EIP712Errors::StringTooLong) + } + StringTooLong + }, + { + fn InvalidShortString( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(EIP712Errors::InvalidShortString) + } + InvalidShortString + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InvalidShortString(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::StringTooLong(inner) => { + ::abi_encoded_size(inner) + } } - Err(::ethers::core::abi::Error::InvalidData.into()) } - } - impl ::ethers::core::abi::AbiEncode for EIP712Errors { - fn encode(self) -> ::std::vec::Vec { + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { match self { - Self::InvalidShortString(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::InvalidShortString(inner) => { + ::abi_encode_raw( + inner, + out, + ) } - Self::StringTooLong(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::StringTooLong(inner) => { + ::abi_encode_raw( + inner, + out, + ) } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), } } } - impl ::ethers::contract::ContractRevert for EIP712Errors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true + ///Container for all the [`EIP712`](self) events. + pub enum EIP712Events { + EIP712DomainChanged(EIP712DomainChanged), + } + #[automatically_derived] + impl EIP712Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 10u8, + 99u8, + 135u8, + 201u8, + 234u8, + 54u8, + 40u8, + 184u8, + 138u8, + 99u8, + 59u8, + 180u8, + 243u8, + 177u8, + 81u8, + 119u8, + 15u8, + 112u8, + 8u8, + 81u8, + 23u8, + 161u8, + 95u8, + 155u8, + 243u8, + 120u8, + 124u8, + 218u8, + 83u8, + 241u8, + 61u8, + 49u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for EIP712Events { + const NAME: &'static str = "EIP712Events"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::EIP712DomainChanged) } - _ if selector - == ::selector() => { - true + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) } - _ => false, } } } - impl ::core::fmt::Display for EIP712Errors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EIP712Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::EIP712DomainChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { match self { - Self::InvalidShortString(element) => { - ::core::fmt::Display::fmt(element, f) + Self::EIP712DomainChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) } - Self::StringTooLong(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), } } } - impl ::core::convert::From<::std::string::String> for EIP712Errors { - fn from(value: String) -> Self { - Self::RevertString(value) + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`EIP712`](self) contract instance. + +See the [wrapper's documentation](`EIP712Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> EIP712Instance { + EIP712Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + EIP712Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + EIP712Instance::::deploy_builder(provider) + } + /**A [`EIP712`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`EIP712`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct EIP712Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for EIP712Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("EIP712Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EIP712Instance { + /**Creates a new wrapper around an on-chain [`EIP712`](self) contract instance. + +See the [wrapper's documentation](`EIP712Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider } } - impl ::core::convert::From for EIP712Errors { - fn from(value: InvalidShortString) -> Self { - Self::InvalidShortString(value) + impl EIP712Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> EIP712Instance { + EIP712Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } } } - impl ::core::convert::From for EIP712Errors { - fn from(value: StringTooLong) -> Self { - Self::StringTooLong(value) + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EIP712Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`eip712Domain`] function. + pub fn eip712Domain( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&eip712DomainCall {}) } } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "EIP712DomainChanged", abi = "EIP712DomainChanged()")] - pub struct Eip712DomainChangedFilter; - ///Container type for all input parameters for the `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "eip712Domain", abi = "eip712Domain()")] - pub struct Eip712DomainCall; - ///Container type for all return fields from the `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct Eip712DomainReturn { - pub fields: [u8; 1], - pub name: ::std::string::String, - pub version: ::std::string::String, - pub chain_id: ::ethers::core::types::U256, - pub verifying_contract: ::ethers::core::types::Address, - pub salt: [u8; 32], - pub extensions: ::std::vec::Vec<::ethers::core::types::U256>, + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > EIP712Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`EIP712DomainChanged`] event. + pub fn EIP712DomainChanged_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } } } diff --git a/crates/bindings-uniswapx/src/erc20.rs b/crates/bindings-uniswapx/src/erc20.rs index 71bff00..984f03e 100644 --- a/crates/bindings-uniswapx/src/erc20.rs +++ b/crates/bindings-uniswapx/src/erc20.rs @@ -1,1307 +1,2938 @@ -pub use erc20::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod erc20 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("allowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("allowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("decimals"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("decimals"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("name"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("name"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("nonces"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("nonces"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("deadline"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("v"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("r"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("s"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("symbol"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("symbol"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("totalSupply"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("totalSupply"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ERC20_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, +/** + +Generated by the following Solidity interface... +```solidity +interface ERC20 { + event Approval(address indexed owner, address indexed spender, uint256 amount); + event Transfer(address indexed from, address indexed to, uint256 amount); + + function DOMAIN_SEPARATOR() external view returns (bytes32); + function allowance(address, address) external view returns (uint256); + function approve(address spender, uint256 amount) external returns (bool); + function balanceOf(address) external view returns (uint256); + function decimals() external view returns (uint8); + function name() external view returns (string memory); + function nonces(address) external view returns (uint256); + function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; + function symbol() external view returns (string memory); + function totalSupply() external view returns (uint256); + function transfer(address to, uint256 amount) external returns (bool); + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nonces", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "v", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "r", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "s", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ERC20 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", ); - pub struct ERC20(::ethers::contract::Contract); - impl ::core::clone::Clone for ERC20 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. +```solidity +event Approval(address indexed owner, address indexed spender, uint256 amount); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::U256, } - impl ::core::ops::Deref for ERC20 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + spender: topics.2, + amount: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.owner.clone(), self.spender.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } } - } - impl ::core::ops::DerefMut for ERC20 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } } - } - impl ::core::fmt::Debug for ERC20 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ERC20)).field(&self.address()).finish() + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. +```solidity +event Transfer(address indexed from, address indexed to, uint256 amount); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::U256, } - impl ERC20 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - ERC20_ABI.clone(), - client, - ), - ) + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + from: topics.1, + to: topics.2, + amount: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.from.clone(), self.to.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.from, + ); + out[2usize] = ::encode_topic( + &self.to, + ); + Ok(()) + } } - ///Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function - pub fn domain_separator( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([54, 68, 229, 21], ()) - .expect("method not found (this should never happen)") + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } } - ///Calls the contract's `allowance` (0xdd62ed3e) function - pub fn allowance( - &self, - p0: ::ethers::core::types::Address, - p1: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([221, 98, 237, 62], (p0, p1)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `approve` (0x095ea7b3) function - pub fn approve( - &self, - spender: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (spender, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) function - pub fn balance_of( - &self, - p0: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 160, 130, 49], p0) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `decimals` (0x313ce567) function - pub fn decimals(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([49, 60, 229, 103], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `name` (0x06fdde03) function - pub fn name( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([6, 253, 222, 3], ()) - .expect("method not found (this should never happen)") + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } } - ///Calls the contract's `nonces` (0x7ecebe00) function - pub fn nonces( - &self, - p0: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([126, 206, 190, 0], p0) - .expect("method not found (this should never happen)") + }; + /**Function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`. +```solidity +function DOMAIN_SEPARATOR() external view returns (bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORCall {} + ///Container type for the return parameters of the [`DOMAIN_SEPARATOR()`](DOMAIN_SEPARATORCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } } - ///Calls the contract's `permit` (0xd505accf) function - pub fn permit( - &self, - owner: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - value: ::ethers::core::types::U256, - deadline: ::ethers::core::types::U256, - v: u8, - r: [u8; 32], - s: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [213, 5, 172, 207], - (owner, spender, value, deadline, v, r, s), - ) - .expect("method not found (this should never happen)") + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } } - ///Calls the contract's `symbol` (0x95d89b41) function - pub fn symbol( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([149, 216, 155, 65], ()) - .expect("method not found (this should never happen)") + #[automatically_derived] + impl alloy_sol_types::SolCall for DOMAIN_SEPARATORCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DOMAIN_SEPARATORReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DOMAIN_SEPARATOR()"; + const SELECTOR: [u8; 4] = [54u8, 68u8, 229u8, 21u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } - ///Calls the contract's `totalSupply` (0x18160ddd) function - pub fn total_supply( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([24, 22, 13, 221], ()) - .expect("method not found (this should never happen)") + }; + /**Function with signature `allowance(address,address)` and selector `0xdd62ed3e`. +```solidity +function allowance(address, address) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`allowance(address,address)`](allowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0, _1: tuple.1 } + } + } } - ///Calls the contract's `transfer` (0xa9059cbb) function - pub fn transfer( - &self, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([169, 5, 156, 187], (to, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x23b872dd) function - pub fn transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, amount)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ERC20Events> { - self.0.event_with_filter(::core::default::Default::default()) + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } } - } - impl From<::ethers::contract::Contract> - for ERC20 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + #[automatically_derived] + impl alloy_sol_types::SolCall for allowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = allowanceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allowance(address,address)"; + const SELECTOR: [u8; 4] = [221u8, 98u8, 237u8, 62u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. +```solidity +function approve(address spender, uint256 amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub spender: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.spender, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. +```solidity +function balanceOf(address) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub _0: alloy::sol_types::private::Address, } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum ERC20Events { - ApprovalFilter(ApprovalFilter), - TransferFilter(TransferFilter), + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::U256, } - impl ::ethers::contract::EthLogDecode for ERC20Events { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(ERC20Events::ApprovalFilter(decoded)); + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(ERC20Events::TransferFilter(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } } - Err(::ethers::core::abi::Error::InvalidData) } - } - impl ::core::fmt::Display for ERC20Events { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } } } - } - impl ::core::convert::From for ERC20Events { - fn from(value: ApprovalFilter) -> Self { - Self::ApprovalFilter(value) + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + /**Function with signature `decimals()` and selector `0x313ce567`. +```solidity +function decimals() external view returns (uint8); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsCall {} + ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsReturn { + pub _0: u8, } - impl ::core::convert::From for ERC20Events { - fn from(value: TransferFilter) -> Self { - Self::TransferFilter(value) + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for decimalsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = decimalsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "decimals()"; + const SELECTOR: [u8; 4] = [49u8, 60u8, 229u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `name()` and selector `0x06fdde03`. +```solidity +function name() external view returns (string memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, } - ///Container type for all input parameters for the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] - pub struct DomainSeparatorCall; - ///Container type for all input parameters for the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "allowance", abi = "allowance(address,address)")] - pub struct AllowanceCall( - pub ::ethers::core::types::Address, - pub ::ethers::core::types::Address, - ); - ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall(pub ::ethers::core::types::Address); - ///Container type for all input parameters for the `decimals` function with signature `decimals()` and selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "decimals", abi = "decimals()")] - pub struct DecimalsCall; - ///Container type for all input parameters for the `name` function with signature `name()` and selector `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "name", abi = "name()")] - pub struct NameCall; - ///Container type for all input parameters for the `nonces` function with signature `nonces(address)` and selector `0x7ecebe00` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "nonces", abi = "nonces(address)")] - pub struct NoncesCall(pub ::ethers::core::types::Address); - ///Container type for all input parameters for the `permit` function with signature `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)` and selector `0xd505accf` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permit", - abi = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" - )] - pub struct PermitCall { - pub owner: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - pub deadline: ::ethers::core::types::U256, - pub v: u8, - pub r: [u8; 32], - pub s: [u8; 32], - } - ///Container type for all input parameters for the `symbol` function with signature `symbol()` and selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "symbol", abi = "symbol()")] - pub struct SymbolCall; - ///Container type for all input parameters for the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "totalSupply", abi = "totalSupply()")] - pub struct TotalSupplyCall; - ///Container type for all input parameters for the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] - pub struct TransferCall { - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] - pub struct TransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nameCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nameReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "name()"; + const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `nonces(address)` and selector `0x7ecebe00`. +```solidity +function nonces(address) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct noncesCall { + pub _0: alloy::sol_types::private::Address, } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum ERC20Calls { - DomainSeparator(DomainSeparatorCall), - Allowance(AllowanceCall), - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - Decimals(DecimalsCall), - Name(NameCall), - Nonces(NoncesCall), - Permit(PermitCall), - Symbol(SymbolCall), - TotalSupply(TotalSupplyCall), - Transfer(TransferCall), - TransferFrom(TransferFromCall), + ///Container type for the return parameters of the [`nonces(address)`](noncesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct noncesReturn { + pub _0: alloy::sol_types::private::U256, } - impl ::ethers::core::abi::AbiDecode for ERC20Calls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::DomainSeparator(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: noncesCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for noncesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Allowance(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: noncesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for noncesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for noncesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = noncesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "nonces(address)"; + const SELECTOR: [u8; 4] = [126u8, 206u8, 190u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)` and selector `0xd505accf`. +```solidity +function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitCall { + pub owner: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + pub value: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub v: u8, + pub r: alloy::sol_types::private::FixedBytes<32>, + pub s: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`permit(address,address,uint256,uint256,uint8,bytes32,bytes32)`](permitCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + u8, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Approve(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitCall) -> Self { + ( + value.owner, + value.spender, + value.value, + value.deadline, + value.v, + value.r, + value.s, + ) + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + spender: tuple.1, + value: tuple.2, + deadline: tuple.3, + v: tuple.4, + r: tuple.5, + s: tuple.6, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::BalanceOf(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [213u8, 5u8, 172u8, 207u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() } - if let Ok(decoded) = ::decode( - data, + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.value), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + as alloy_sol_types::SolType>::tokenize(&self.v), + as alloy_sol_types::SolType>::tokenize(&self.r), + as alloy_sol_types::SolType>::tokenize(&self.s), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `symbol()` and selector `0x95d89b41`. +```solidity +function symbol() external view returns (string memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Decimals(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Name(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for symbolCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = symbolReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "symbol()"; + const SELECTOR: [u8; 4] = [149u8, 216u8, 155u8, 65u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `totalSupply()` and selector `0x18160ddd`. +```solidity +function totalSupply() external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Nonces(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Permit(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSupplyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSupplyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalSupply()"; + const SELECTOR: [u8; 4] = [24u8, 22u8, 13u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) } - if let Ok(decoded) = ::decode( - data, + } + }; + /**Function with signature `transfer(address,uint256)` and selector `0xa9059cbb`. +```solidity +function transfer(address to, uint256 amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferCall { + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`transfer(address,uint256)`](transferCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Symbol(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferCall) -> Self { + (value.to, value.amount) + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + to: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::TotalSupply(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferReturn) -> Self { + (value._0,) + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transfer(address,uint256)"; + const SELECTOR: [u8; 4] = [169u8, 5u8, 156u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. +```solidity +function transferFrom(address from, address to, uint256 amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Transfer(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value.from, value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + amount: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::TransferFrom(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } } - Err(::ethers::core::abi::Error::InvalidData.into()) } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`ERC20`](self) function calls. + pub enum ERC20Calls { + DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + allowance(allowanceCall), + approve(approveCall), + balanceOf(balanceOfCall), + decimals(decimalsCall), + name(nameCall), + nonces(noncesCall), + permit(permitCall), + symbol(symbolCall), + totalSupply(totalSupplyCall), + transfer(transferCall), + transferFrom(transferFromCall), } - impl ::ethers::core::abi::AbiEncode for ERC20Calls { - fn encode(self) -> Vec { + #[automatically_derived] + impl ERC20Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [6u8, 253u8, 222u8, 3u8], + [9u8, 94u8, 167u8, 179u8], + [24u8, 22u8, 13u8, 221u8], + [35u8, 184u8, 114u8, 221u8], + [49u8, 60u8, 229u8, 103u8], + [54u8, 68u8, 229u8, 21u8], + [112u8, 160u8, 130u8, 49u8], + [126u8, 206u8, 190u8, 0u8], + [149u8, 216u8, 155u8, 65u8], + [169u8, 5u8, 156u8, 187u8], + [213u8, 5u8, 172u8, 207u8], + [221u8, 98u8, 237u8, 62u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ERC20Calls { + const NAME: &'static str = "ERC20Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 12usize; + #[inline] + fn selector(&self) -> [u8; 4] { match self { - Self::DomainSeparator(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::DOMAIN_SEPARATOR(_) => { + ::SELECTOR + } + Self::allowance(_) => { + ::SELECTOR + } + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => { + ::SELECTOR } - Self::Allowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::decimals(_) => ::SELECTOR, + Self::name(_) => ::SELECTOR, + Self::nonces(_) => ::SELECTOR, + Self::permit(_) => ::SELECTOR, + Self::symbol(_) => ::SELECTOR, + Self::totalSupply(_) => { + ::SELECTOR } - Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::transfer(_) => ::SELECTOR, + Self::transferFrom(_) => { + ::SELECTOR } - Self::Decimals(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn name( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ERC20Calls::name) + } + name + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ERC20Calls::approve) + } + approve + }, + { + fn totalSupply( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ERC20Calls::totalSupply) + } + totalSupply + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ERC20Calls::transferFrom) + } + transferFrom + }, + { + fn decimals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ERC20Calls::decimals) + } + decimals + }, + { + fn DOMAIN_SEPARATOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ERC20Calls::DOMAIN_SEPARATOR) + } + DOMAIN_SEPARATOR + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ERC20Calls::balanceOf) + } + balanceOf + }, + { + fn nonces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ERC20Calls::nonces) + } + nonces + }, + { + fn symbol( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ERC20Calls::symbol) + } + symbol + }, + { + fn transfer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ERC20Calls::transfer) + } + transfer + }, + { + fn permit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ERC20Calls::permit) + } + permit + }, + { + fn allowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ERC20Calls::allowance) + } + allowance + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encoded_size( + inner, + ) } - Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Nonces(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Permit(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TotalSupply(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::allowance(inner) => { + ::abi_encoded_size(inner) } - Self::Transfer(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::approve(inner) => { + ::abi_encoded_size(inner) } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::decimals(inner) => { + ::abi_encoded_size(inner) + } + Self::name(inner) => { + ::abi_encoded_size(inner) + } + Self::nonces(inner) => { + ::abi_encoded_size(inner) + } + Self::permit(inner) => { + ::abi_encoded_size(inner) + } + Self::symbol(inner) => { + ::abi_encoded_size(inner) + } + Self::totalSupply(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transfer(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size( + inner, + ) } } } - } - impl ::core::fmt::Display for ERC20Calls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { match self { - Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), - Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), - Self::Decimals(element) => ::core::fmt::Display::fmt(element, f), - Self::Name(element) => ::core::fmt::Display::fmt(element, f), - Self::Nonces(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit(element) => ::core::fmt::Display::fmt(element, f), - Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), - Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), - Self::Transfer(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::allowance(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::decimals(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::name(inner) => { + ::abi_encode_raw(inner, out) + } + Self::nonces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit(inner) => { + ::abi_encode_raw(inner, out) + } + Self::symbol(inner) => { + ::abi_encode_raw(inner, out) + } + Self::totalSupply(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transfer(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferFrom(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } } } } - impl ::core::convert::From for ERC20Calls { - fn from(value: DomainSeparatorCall) -> Self { - Self::DomainSeparator(value) - } + ///Container for all the [`ERC20`](self) events. + pub enum ERC20Events { + Approval(Approval), + Transfer(Transfer), } - impl ::core::convert::From for ERC20Calls { - fn from(value: AllowanceCall) -> Self { - Self::Allowance(value) - } + #[automatically_derived] + impl ERC20Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ], + [ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ], + ]; } - impl ::core::convert::From for ERC20Calls { - fn from(value: ApproveCall) -> Self { - Self::Approve(value) + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ERC20Events { + const NAME: &'static str = "ERC20Events"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Transfer) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } } } - impl ::core::convert::From for ERC20Calls { - fn from(value: BalanceOfCall) -> Self { - Self::BalanceOf(value) + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ERC20Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } } - } - impl ::core::convert::From for ERC20Calls { - fn from(value: DecimalsCall) -> Self { - Self::Decimals(value) + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } } } - impl ::core::convert::From for ERC20Calls { - fn from(value: NameCall) -> Self { - Self::Name(value) - } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ERC20`](self) contract instance. + +See the [wrapper's documentation](`ERC20Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ERC20Instance { + ERC20Instance::::new(address, provider) } - impl ::core::convert::From for ERC20Calls { - fn from(value: NoncesCall) -> Self { - Self::Nonces(value) - } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ERC20Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ERC20Instance::::deploy_builder(provider) } - impl ::core::convert::From for ERC20Calls { - fn from(value: PermitCall) -> Self { - Self::Permit(value) + /**A [`ERC20`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ERC20`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ERC20Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ERC20Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ERC20Instance").field(&self.address).finish() } } - impl ::core::convert::From for ERC20Calls { - fn from(value: SymbolCall) -> Self { - Self::Symbol(value) + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ERC20Instance { + /**Creates a new wrapper around an on-chain [`ERC20`](self) contract instance. + +See the [wrapper's documentation](`ERC20Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider } } - impl ::core::convert::From for ERC20Calls { - fn from(value: TotalSupplyCall) -> Self { - Self::TotalSupply(value) + impl ERC20Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ERC20Instance { + ERC20Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } } } - impl ::core::convert::From for ERC20Calls { - fn from(value: TransferCall) -> Self { - Self::Transfer(value) + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ERC20Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`DOMAIN_SEPARATOR`] function. + pub fn DOMAIN_SEPARATOR( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DOMAIN_SEPARATORCall {}) + } + ///Creates a new call builder for the [`allowance`] function. + pub fn allowance( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&allowanceCall { _0, _1 }) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + spender: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { spender, amount }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { _0 }) + } + ///Creates a new call builder for the [`decimals`] function. + pub fn decimals( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&decimalsCall {}) + } + ///Creates a new call builder for the [`name`] function. + pub fn name(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&nameCall {}) + } + ///Creates a new call builder for the [`nonces`] function. + pub fn nonces( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&noncesCall { _0 }) + } + ///Creates a new call builder for the [`permit`] function. + pub fn permit( + &self, + owner: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + value: alloy::sol_types::private::U256, + deadline: alloy::sol_types::private::U256, + v: u8, + r: alloy::sol_types::private::FixedBytes<32>, + s: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permitCall { + owner, + spender, + value, + deadline, + v, + r, + s, + }, + ) + } + ///Creates a new call builder for the [`symbol`] function. + pub fn symbol(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&symbolCall {}) + } + ///Creates a new call builder for the [`totalSupply`] function. + pub fn totalSupply( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSupplyCall {}) + } + ///Creates a new call builder for the [`transfer`] function. + pub fn transfer( + &self, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferCall { to, amount }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &transferFromCall { + from, + to, + amount, + }, + ) } } - impl ::core::convert::From for ERC20Calls { - fn from(value: TransferFromCall) -> Self { - Self::TransferFrom(value) + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ERC20Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() } } - ///Container type for all return fields from the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct DomainSeparatorReturn(pub [u8; 32]); - ///Container type for all return fields from the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct AllowanceReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ApproveReturn(pub bool); - ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct BalanceOfReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `decimals` function with signature `decimals()` and selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct DecimalsReturn(pub u8); - ///Container type for all return fields from the `name` function with signature `name()` and selector `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct NameReturn(pub ::std::string::String); - ///Container type for all return fields from the `nonces` function with signature `nonces(address)` and selector `0x7ecebe00` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct NoncesReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `symbol` function with signature `symbol()` and selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SymbolReturn(pub ::std::string::String); - ///Container type for all return fields from the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TransferReturn(pub bool); - ///Container type for all return fields from the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TransferFromReturn(pub bool); } diff --git a/crates/bindings-uniswapx/src/exclusive_dutch_order_lib.rs b/crates/bindings-uniswapx/src/exclusive_dutch_order_lib.rs deleted file mode 100644 index d01023c..0000000 --- a/crates/bindings-uniswapx/src/exclusive_dutch_order_lib.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use exclusive_dutch_order_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod exclusive_dutch_order_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static EXCLUSIVEDUTCHORDERLIB_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 OGs<\x87\xE9\xB8t\x9BV\x04ZC\x82\x1Aj\xC0Uq(\xAC\xA56\xD8I%\x04\xD3\xC7U\x0BWdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static EXCLUSIVEDUTCHORDERLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 OGs<\x87\xE9\xB8t\x9BV\x04ZC\x82\x1Aj\xC0Uq(\xAC\xA56\xD8I%\x04\xD3\xC7U\x0BWdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static EXCLUSIVEDUTCHORDERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct ExclusiveDutchOrderLib(::ethers::contract::Contract); - impl ::core::clone::Clone for ExclusiveDutchOrderLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ExclusiveDutchOrderLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ExclusiveDutchOrderLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ExclusiveDutchOrderLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ExclusiveDutchOrderLib)) - .field(&self.address()) - .finish() - } - } - impl ExclusiveDutchOrderLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - EXCLUSIVEDUTCHORDERLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - EXCLUSIVEDUTCHORDERLIB_ABI.clone(), - EXCLUSIVEDUTCHORDERLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for ExclusiveDutchOrderLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/exclusive_dutch_order_reactor.rs b/crates/bindings-uniswapx/src/exclusive_dutch_order_reactor.rs deleted file mode 100644 index 1f7cd31..0000000 --- a/crates/bindings-uniswapx/src/exclusive_dutch_order_reactor.rs +++ /dev/null @@ -1,1691 +0,0 @@ -pub use exclusive_dutch_order_reactor::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod exclusive_dutch_order_reactor { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_permit2"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_protocolFeeOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatchWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeBatchWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("feeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeController"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "contract IProtocolFeeController", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit2"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit2"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setProtocolFeeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "setProtocolFeeController", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Fill"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Fill"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("orderHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("swapper"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ProtocolFeeControllerSet"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "ProtocolFeeControllerSet", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("oldFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DeadlineBeforeEndTime"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "DeadlineBeforeEndTime", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("duplicateToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("EndTimeBeforeStartTime"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "EndTimeBeforeStartTime", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("recipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("IncorrectAmounts"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("IncorrectAmounts"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputDecay"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InputAndOutputDecay", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("feeToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidReactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidReactor"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NoExclusiveOverride"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NoExclusiveOverride", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static EXCLUSIVEDUTCHORDERREACTOR_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x001\xCD8\x03\x80b\x001\xCD\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa0\xBCb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x18*\x01Ra0\xBC_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a\"\xDBV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a#\x80V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a#\xBFV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a$WV[a\x06eV[a\0\xB4a\x01e6`\x04a$yV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a$WV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a$\xD8V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x8AV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a'\x96V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B;V[a\x04\x9F\x81a\x0B\x8AV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x8AV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga$\xD8V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B;V[a\x08d\x81a\x0B\x8AV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a'\xD2V[\x81\x01\x90a\nW\x91\x90a+HV[\x90Pa\nb\x81a\x0C\xD5V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\x8D\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a'\xD2V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FrV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B5\x92\x85\x92\x91\x90a\x12AV[P\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BZWa\x0BZa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0Bm\x81a\x12NV[a\x0Bw\x813a\x17+V[a\x0B\x81\x813a\x18(V[P`\x01\x01a\x0B?V[\x80Q_[\x81\x81\x10\x15a\x0C\xC4W_\x83\x82\x81Q\x81\x10a\x0B\xA9Wa\x0B\xA9a$\xD8V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C&W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xDDWa\x0B\xDDa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0C\x1D\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B~\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBEV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CnWa\x0Cna$\xD8V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xB2\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8EV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1B\xC5V[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r\x18W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08oW_[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xABW\x81`\xC0\x01Q\x81\x81Q\x81\x10a\rRWa\rRa$\xD8V[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\rtWa\rta$\xD8V[` \x02` \x01\x01Q` \x01Q\x14a\r\xB7W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\r/V[a\r\xF6`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0E8W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x0EM\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xABWa\x0E\xABa$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\x13W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xC9W\x90P[P\x91P_[\x81\x81\x10\x15a\x0FiWa\x0FD\x86\x82\x81Q\x81\x10a\x0F5Wa\x0F5a$\xD8V[` \x02` \x01\x01Q\x86\x86a\x1C\xD7V[\x83\x82\x81Q\x81\x10a\x0FVWa\x0FVa$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F\x18V[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R_\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/z` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919`@Q` \x01a\x11c\x93\x92\x91\x90a,\x16V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\x85\x83_\x01Qa\x1D\xA4V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q_\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xC0\x8B`\xC0\x01Qa\x1E=V[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06_\x84\x84\x84\x84Ba\x1E\xD8V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12nWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12\xC4\x90\x85\x90`\x04\x01a,XV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xDEW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13#\x91\x90\x81\x01\x90a,jV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x13:\x82\x84a-`V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13RWa\x13Ra$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBAW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13pW\x90P[P\x90P_[\x83\x81\x10\x15a\x14\nW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\xDDWa\x13\xDDa$\xD8V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xF7Wa\x13\xF7a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBFV[P_\x80_[\x84\x81\x10\x15a\x17\x1AW_\x87\x82\x81Q\x81\x10a\x14*Wa\x14*a$\xD8V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14\xE5W\x88\x81\x81Q\x81\x10a\x14PWa\x14Pa$\xD8V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\xDDW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x146V[P_\x80[\x88\x81\x10\x15a\x15\xA2W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x15\x08Wa\x15\x08a$\xD8V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x99W\x85\x15a\x15\x83W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\x92\x90\x84a-`V[\x92P`\x01\x96P[P`\x01\x01a\x14\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16\x1BW\x84\x15a\x16\x02W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16\x14\x90\x82a-`V[\x90P`\x01\x93P[\x80_\x03a\x16oW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x16}\x81`\x05a'\x10a\x1F\x82V[\x82` \x01Q\x11\x15a\x16\xF0W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17\x05Wa\x17\x05a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14\x0FV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17|W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xF8\x90\x84\x90\x86\x90`\x04\x01a-sV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18\x0EW_\x80\xFD[PZ\xFA\x15\x80\x15a\x18 W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xE7\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xF1\x85\x85a\x1F\xBCV[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a/\xFA\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a/\xCC`.\x919`@Q` \x01a\x1A\xE8\x94\x93\x92\x91\x90a-\xA1V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1BU\x96\x95\x94\x93\x92`\x04\x01a.)V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1BlW_\x80\xFD[PZ\xF1\x15\x80\x15a\x18 W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xA3Wa\x03L\x82\x82a\x1B\xC5V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a \x02V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1C\x1BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1CjWP\x83a\x1C\xCFV[\x82\x82\x11a\x1C\xA3W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\xB1WP\x82a\x1C\xCFV[B\x83\x10a\x1C\xBFWP\x83a\x1C\xCFV[a\x1C\xCC\x83\x83B\x88\x88a \xE9V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1DJ\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12$\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\\Wa\x1E\\a$\xABV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x86W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xC9W_a\x1E\xB7\x85\x83\x81Q\x81\x10a\x1E\xAAWa\x1E\xAAa$\xD8V[` \x02` \x01\x01Qa!\x03V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x8BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1E\xE3\x84\x84\x83a!yV[a\x1F{W\x81a\x1F\x1EW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a\x1FxW_\x82\x82\x81Q\x81\x10a\x1FAWa\x1FAa$\xD8V[` \x02` \x01\x01Q\x90Pa\x1Fj\x85a'\x10a\x1F\\\x91\x90a-`V[` \x83\x01Q\x90a'\x10a!\xC3V[` \x90\x91\x01R`\x01\x01a\x1F%V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1F\xB5W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F{W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_a \xF7\x86\x86\x86\x86\x86a\"\x05V[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12$\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a!\x9CWP\x82\x82\x11[\x80a\x1C\xCFWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xF6W_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a\"\x14WP\x80a \xFAV[_a\"\x1F\x87\x86a.\xE3V[\x90P_a\",\x88\x88a.\xE3V[\x90P_\x85\x85\x12\x15a\"]Wa\"M\x83\x83a\"F\x88\x8Aa.\xF6V[\x91\x90a\x1F\x82V[a\"V\x90a/\x1CV[\x90Pa\"oV[a\"l\x83\x83a\"F\x89\x89a.\xF6V[\x90P[a\"y\x81\x87a/RV[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a\x0B5W_\x80\xFD[_\x80\x83`\x1F\x84\x01\x12a\"\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\"\xEDW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x04W_\x80\xFD[a#\x10\x87\x83\x88\x01a\"\x86V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#%W_\x80\xFD[Pa#2\x86\x82\x87\x01a\"\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a#OW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#fW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a#\x91W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xA7W_\x80\xFD[a#\xB3\x85\x82\x86\x01a#?V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a#\xD2W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE9W_\x80\xFD[a#\xF5\x88\x83\x89\x01a#?V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\rW_\x80\xFD[Pa$\x1A\x87\x82\x88\x01a\"\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a$R\x81a$&V[\x91\x90PV[_` \x82\x84\x03\x12\x15a$gW_\x80\xFD[\x815a$r\x81a$&V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a$\x89W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x9FW_\x80\xFD[a\x1C\xCF\x84\x82\x85\x01a\"\x86V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a%\x1FW\x81\x81\x01Q\x83\x82\x01R` \x01a%\x07V[PP_\x91\x01RV[_\x81Q\x80\x84Ra%>\x81` \x86\x01` \x86\x01a%\x05V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a%\xCEW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a%\x83V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&La\x01\xA0\x85\x01\x82a%'V[\x90P` \x83\x01Qa&\x8A` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra&\xA2\x82\x82a%pV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra&\xBC\x82\x82a%'V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a'FW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'4\x86\x83Qa%\xD9V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a&\xFAV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'\xC8W_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\x05W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\x1FW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"\xD4W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xE9Wa(\xE9a$\xABV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\x1AWa)\x1Aa$\xABV[a)K` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(\xA2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)_W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a)\x8BW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a)\xAFWa)\xAFa$\xABV[\x81`@R\x82\x93P\x845\x91Pa)\xC3\x82a$&V[\x90\x82R` \x84\x015\x90a)\xD5\x82a$&V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa)\xFF\x82a$&V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\x18W_\x80\xFD[Pa*%\x85\x82\x86\x01a(\xF1V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a*BW_\x80\xFD[a*Ja(3V[\x90P\x815a*W\x81a$&V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*\x8EWa*\x8Ea$\xABV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a*\xA7W_\x80\xFD[\x815` a*\xBCa*\xB7\x83a*uV[a(\xA2V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a*\xDAW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+=W`\x80\x81\x89\x03\x12\x15a*\xF5W_\x80\xFD[a*\xFDa(\\V[\x815a+\x08\x81a$&V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a++\x81a$&V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a*\xDEV[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a+XW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a+oW_\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a+\x83W_\x80\xFD[a+\x8Ba(\x7FV[\x825\x82\x81\x11\x15a+\x99W_\x80\xFD[a+\xA5\x87\x82\x86\x01a){V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+\xC8``\x84\x01a$GV[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra+\xE4\x86`\xA0\x85\x01a*2V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a+\xFBW_\x80\xFD[a,\x07\x87\x82\x86\x01a*\x98V[`\xC0\x83\x01RP\x95\x94PPPPPV[_\x84Qa,'\x81\x84` \x89\x01a%\x05V[\x84Q\x90\x83\x01\x90a,;\x81\x83` \x89\x01a%\x05V[\x84Q\x91\x01\x90a,N\x81\x83` \x88\x01a%\x05V[\x01\x95\x94PPPPPV[` \x81R_a$r` \x83\x01\x84a%\xD9V[_` \x80\x83\x85\x03\x12\x15a,{W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,\x91W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xA1W_\x80\xFD[\x80Qa,\xAFa*\xB7\x82a*uV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a,\xCDW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-'W\x80\x85\x8A\x03\x12\x15a,\xE8W_\x80\xFD[a,\xF0a(3V[\x85Qa,\xFB\x81a$&V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\x14\x81a$&V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a,\xD2V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1C\xCF`@\x83\x01\x84a%\xD9V[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R_\x85Qa-\xD8\x81`\x1C\x85\x01` \x8A\x01a%\x05V[\x85Q\x90\x83\x01\x90a-\xEF\x81`\x1C\x84\x01` \x8A\x01a%\x05V[\x85Q\x91\x01\x90a.\x05\x81`\x1C\x84\x01` \x89\x01a%\x05V[\x84Q\x91\x01\x90a.\x1B\x81`\x1C\x84\x01` \x88\x01a%\x05V[\x01`\x1C\x01\x96\x95PPPPPPV[_a\x01@a.X\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra.\x99`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra.\xCE\x81\x84\x01\x86a%'V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"y\x81\x85a%'V[\x81\x81\x03\x81\x81\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\x15Wa/\x15a-3V[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a/LWa/La-3V[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a/qWa/qa-3V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 H3\xEBU\x835*\xC5\xCE\xDEc\"\x0C\x94\x147h\x99\x9E!#\xD94\x89\x9F=\xCB\xAC8\x03\xAFRdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static EXCLUSIVEDUTCHORDERREACTOR_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a\"\xDBV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a#\x80V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a#\xBFV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a$WV[a\x06eV[a\0\xB4a\x01e6`\x04a$yV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a$WV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a$\xD8V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x8AV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a'\x96V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B;V[a\x04\x9F\x81a\x0B\x8AV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x8AV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga$\xD8V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B;V[a\x08d\x81a\x0B\x8AV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a'\xD2V[\x81\x01\x90a\nW\x91\x90a+HV[\x90Pa\nb\x81a\x0C\xD5V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\x8D\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a'\xD2V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FrV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B5\x92\x85\x92\x91\x90a\x12AV[P\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BZWa\x0BZa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0Bm\x81a\x12NV[a\x0Bw\x813a\x17+V[a\x0B\x81\x813a\x18(V[P`\x01\x01a\x0B?V[\x80Q_[\x81\x81\x10\x15a\x0C\xC4W_\x83\x82\x81Q\x81\x10a\x0B\xA9Wa\x0B\xA9a$\xD8V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C&W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xDDWa\x0B\xDDa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0C\x1D\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B~\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBEV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CnWa\x0Cna$\xD8V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xB2\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8EV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1B\xC5V[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r\x18W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08oW_[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xABW\x81`\xC0\x01Q\x81\x81Q\x81\x10a\rRWa\rRa$\xD8V[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\rtWa\rta$\xD8V[` \x02` \x01\x01Q` \x01Q\x14a\r\xB7W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\r/V[a\r\xF6`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0E8W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x0EM\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xABWa\x0E\xABa$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\x13W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xC9W\x90P[P\x91P_[\x81\x81\x10\x15a\x0FiWa\x0FD\x86\x82\x81Q\x81\x10a\x0F5Wa\x0F5a$\xD8V[` \x02` \x01\x01Q\x86\x86a\x1C\xD7V[\x83\x82\x81Q\x81\x10a\x0FVWa\x0FVa$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F\x18V[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R_\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/z` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919`@Q` \x01a\x11c\x93\x92\x91\x90a,\x16V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\x85\x83_\x01Qa\x1D\xA4V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q_\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xC0\x8B`\xC0\x01Qa\x1E=V[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06_\x84\x84\x84\x84Ba\x1E\xD8V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12nWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12\xC4\x90\x85\x90`\x04\x01a,XV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xDEW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13#\x91\x90\x81\x01\x90a,jV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x13:\x82\x84a-`V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13RWa\x13Ra$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBAW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13pW\x90P[P\x90P_[\x83\x81\x10\x15a\x14\nW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\xDDWa\x13\xDDa$\xD8V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xF7Wa\x13\xF7a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBFV[P_\x80_[\x84\x81\x10\x15a\x17\x1AW_\x87\x82\x81Q\x81\x10a\x14*Wa\x14*a$\xD8V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14\xE5W\x88\x81\x81Q\x81\x10a\x14PWa\x14Pa$\xD8V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\xDDW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x146V[P_\x80[\x88\x81\x10\x15a\x15\xA2W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x15\x08Wa\x15\x08a$\xD8V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x99W\x85\x15a\x15\x83W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\x92\x90\x84a-`V[\x92P`\x01\x96P[P`\x01\x01a\x14\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16\x1BW\x84\x15a\x16\x02W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16\x14\x90\x82a-`V[\x90P`\x01\x93P[\x80_\x03a\x16oW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x16}\x81`\x05a'\x10a\x1F\x82V[\x82` \x01Q\x11\x15a\x16\xF0W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17\x05Wa\x17\x05a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14\x0FV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17|W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xF8\x90\x84\x90\x86\x90`\x04\x01a-sV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18\x0EW_\x80\xFD[PZ\xFA\x15\x80\x15a\x18 W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xE7\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xF1\x85\x85a\x1F\xBCV[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a/\xFA\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a/\xCC`.\x919`@Q` \x01a\x1A\xE8\x94\x93\x92\x91\x90a-\xA1V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1BU\x96\x95\x94\x93\x92`\x04\x01a.)V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1BlW_\x80\xFD[PZ\xF1\x15\x80\x15a\x18 W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xA3Wa\x03L\x82\x82a\x1B\xC5V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a \x02V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1C\x1BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1CjWP\x83a\x1C\xCFV[\x82\x82\x11a\x1C\xA3W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\xB1WP\x82a\x1C\xCFV[B\x83\x10a\x1C\xBFWP\x83a\x1C\xCFV[a\x1C\xCC\x83\x83B\x88\x88a \xE9V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1DJ\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12$\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\\Wa\x1E\\a$\xABV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x86W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xC9W_a\x1E\xB7\x85\x83\x81Q\x81\x10a\x1E\xAAWa\x1E\xAAa$\xD8V[` \x02` \x01\x01Qa!\x03V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x8BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1E\xE3\x84\x84\x83a!yV[a\x1F{W\x81a\x1F\x1EW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a\x1FxW_\x82\x82\x81Q\x81\x10a\x1FAWa\x1FAa$\xD8V[` \x02` \x01\x01Q\x90Pa\x1Fj\x85a'\x10a\x1F\\\x91\x90a-`V[` \x83\x01Q\x90a'\x10a!\xC3V[` \x90\x91\x01R`\x01\x01a\x1F%V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1F\xB5W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F{W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_a \xF7\x86\x86\x86\x86\x86a\"\x05V[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12$\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a!\x9CWP\x82\x82\x11[\x80a\x1C\xCFWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xF6W_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a\"\x14WP\x80a \xFAV[_a\"\x1F\x87\x86a.\xE3V[\x90P_a\",\x88\x88a.\xE3V[\x90P_\x85\x85\x12\x15a\"]Wa\"M\x83\x83a\"F\x88\x8Aa.\xF6V[\x91\x90a\x1F\x82V[a\"V\x90a/\x1CV[\x90Pa\"oV[a\"l\x83\x83a\"F\x89\x89a.\xF6V[\x90P[a\"y\x81\x87a/RV[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a\x0B5W_\x80\xFD[_\x80\x83`\x1F\x84\x01\x12a\"\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\"\xEDW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x04W_\x80\xFD[a#\x10\x87\x83\x88\x01a\"\x86V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#%W_\x80\xFD[Pa#2\x86\x82\x87\x01a\"\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a#OW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#fW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a#\x91W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xA7W_\x80\xFD[a#\xB3\x85\x82\x86\x01a#?V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a#\xD2W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE9W_\x80\xFD[a#\xF5\x88\x83\x89\x01a#?V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\rW_\x80\xFD[Pa$\x1A\x87\x82\x88\x01a\"\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a$R\x81a$&V[\x91\x90PV[_` \x82\x84\x03\x12\x15a$gW_\x80\xFD[\x815a$r\x81a$&V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a$\x89W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x9FW_\x80\xFD[a\x1C\xCF\x84\x82\x85\x01a\"\x86V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a%\x1FW\x81\x81\x01Q\x83\x82\x01R` \x01a%\x07V[PP_\x91\x01RV[_\x81Q\x80\x84Ra%>\x81` \x86\x01` \x86\x01a%\x05V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a%\xCEW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a%\x83V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&La\x01\xA0\x85\x01\x82a%'V[\x90P` \x83\x01Qa&\x8A` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra&\xA2\x82\x82a%pV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra&\xBC\x82\x82a%'V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a'FW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'4\x86\x83Qa%\xD9V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a&\xFAV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'\xC8W_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\x05W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\x1FW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"\xD4W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xE9Wa(\xE9a$\xABV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\x1AWa)\x1Aa$\xABV[a)K` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(\xA2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)_W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a)\x8BW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a)\xAFWa)\xAFa$\xABV[\x81`@R\x82\x93P\x845\x91Pa)\xC3\x82a$&V[\x90\x82R` \x84\x015\x90a)\xD5\x82a$&V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa)\xFF\x82a$&V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\x18W_\x80\xFD[Pa*%\x85\x82\x86\x01a(\xF1V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a*BW_\x80\xFD[a*Ja(3V[\x90P\x815a*W\x81a$&V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*\x8EWa*\x8Ea$\xABV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a*\xA7W_\x80\xFD[\x815` a*\xBCa*\xB7\x83a*uV[a(\xA2V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a*\xDAW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+=W`\x80\x81\x89\x03\x12\x15a*\xF5W_\x80\xFD[a*\xFDa(\\V[\x815a+\x08\x81a$&V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a++\x81a$&V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a*\xDEV[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a+XW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a+oW_\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a+\x83W_\x80\xFD[a+\x8Ba(\x7FV[\x825\x82\x81\x11\x15a+\x99W_\x80\xFD[a+\xA5\x87\x82\x86\x01a){V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+\xC8``\x84\x01a$GV[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra+\xE4\x86`\xA0\x85\x01a*2V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a+\xFBW_\x80\xFD[a,\x07\x87\x82\x86\x01a*\x98V[`\xC0\x83\x01RP\x95\x94PPPPPV[_\x84Qa,'\x81\x84` \x89\x01a%\x05V[\x84Q\x90\x83\x01\x90a,;\x81\x83` \x89\x01a%\x05V[\x84Q\x91\x01\x90a,N\x81\x83` \x88\x01a%\x05V[\x01\x95\x94PPPPPV[` \x81R_a$r` \x83\x01\x84a%\xD9V[_` \x80\x83\x85\x03\x12\x15a,{W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,\x91W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xA1W_\x80\xFD[\x80Qa,\xAFa*\xB7\x82a*uV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a,\xCDW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-'W\x80\x85\x8A\x03\x12\x15a,\xE8W_\x80\xFD[a,\xF0a(3V[\x85Qa,\xFB\x81a$&V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\x14\x81a$&V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a,\xD2V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1C\xCF`@\x83\x01\x84a%\xD9V[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R_\x85Qa-\xD8\x81`\x1C\x85\x01` \x8A\x01a%\x05V[\x85Q\x90\x83\x01\x90a-\xEF\x81`\x1C\x84\x01` \x8A\x01a%\x05V[\x85Q\x91\x01\x90a.\x05\x81`\x1C\x84\x01` \x89\x01a%\x05V[\x84Q\x91\x01\x90a.\x1B\x81`\x1C\x84\x01` \x88\x01a%\x05V[\x01`\x1C\x01\x96\x95PPPPPPV[_a\x01@a.X\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra.\x99`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra.\xCE\x81\x84\x01\x86a%'V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"y\x81\x85a%'V[\x81\x81\x03\x81\x81\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\x15Wa/\x15a-3V[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a/LWa/La-3V[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a/qWa/qa-3V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 H3\xEBU\x835*\xC5\xCE\xDEc\"\x0C\x94\x147h\x99\x9E!#\xD94\x89\x9F=\xCB\xAC8\x03\xAFRdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static EXCLUSIVEDUTCHORDERREACTOR_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct ExclusiveDutchOrderReactor(::ethers::contract::Contract); - impl ::core::clone::Clone for ExclusiveDutchOrderReactor { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ExclusiveDutchOrderReactor { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ExclusiveDutchOrderReactor { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ExclusiveDutchOrderReactor { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ExclusiveDutchOrderReactor)) - .field(&self.address()) - .finish() - } - } - impl ExclusiveDutchOrderReactor { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - EXCLUSIVEDUTCHORDERREACTOR_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - EXCLUSIVEDUTCHORDERREACTOR_ABI.clone(), - EXCLUSIVEDUTCHORDERREACTOR_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `execute` (0x3f62192e) function - pub fn execute( - &self, - order: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 98, 25, 46], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x0d7a16c3) function - pub fn execute_batch( - &self, - orders: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 122, 22, 195], orders) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatchWithCallback` (0x13fb72c7) function - pub fn execute_batch_with_callback( - &self, - orders: ::std::vec::Vec, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([19, 251, 114, 199], (orders, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeWithCallback` (0x0d335884) function - pub fn execute_with_callback( - &self, - order: SignedOrder, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 51, 88, 132], (order, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `feeController` (0x6999b377) function - pub fn fee_controller( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([105, 153, 179, 119], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit2` (0x12261ee7) function - pub fn permit_2( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([18, 38, 30, 231], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setProtocolFeeController` (0x2d771389) function - pub fn set_protocol_fee_controller( - &self, - new_fee_controller: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([45, 119, 19, 137], new_fee_controller) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Fill` event - pub fn fill_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, FillFilter> { - self.0.event() - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - ///Gets the contract's `ProtocolFeeControllerSet` event - pub fn protocol_fee_controller_set_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ProtocolFeeControllerSetFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ExclusiveDutchOrderReactorEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for ExclusiveDutchOrderReactor { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `DeadlineBeforeEndTime` with signature `DeadlineBeforeEndTime()` and selector `0x773a6187` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DeadlineBeforeEndTime", abi = "DeadlineBeforeEndTime()")] - pub struct DeadlineBeforeEndTime; - ///Custom Error type `DuplicateFeeOutput` with signature `DuplicateFeeOutput(address)` and selector `0xfff08303` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DuplicateFeeOutput", abi = "DuplicateFeeOutput(address)")] - pub struct DuplicateFeeOutput { - pub duplicate_token: ::ethers::core::types::Address, - } - ///Custom Error type `EndTimeBeforeStartTime` with signature `EndTimeBeforeStartTime()` and selector `0x43133453` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "EndTimeBeforeStartTime", abi = "EndTimeBeforeStartTime()")] - pub struct EndTimeBeforeStartTime; - ///Custom Error type `FeeTooLarge` with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "FeeTooLarge", abi = "FeeTooLarge(address,uint256,address)")] - pub struct FeeTooLarge { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub recipient: ::ethers::core::types::Address, - } - ///Custom Error type `IncorrectAmounts` with signature `IncorrectAmounts()` and selector `0x7c1f8113` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "IncorrectAmounts", abi = "IncorrectAmounts()")] - pub struct IncorrectAmounts; - ///Custom Error type `InputAndOutputDecay` with signature `InputAndOutputDecay()` and selector `0xd303758b` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputDecay", abi = "InputAndOutputDecay()")] - pub struct InputAndOutputDecay; - ///Custom Error type `InputAndOutputFees` with signature `InputAndOutputFees()` and selector `0xedc7e2e4` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputFees", abi = "InputAndOutputFees()")] - pub struct InputAndOutputFees; - ///Custom Error type `InvalidFeeToken` with signature `InvalidFeeToken(address)` and selector `0xeddf07f5` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidFeeToken", abi = "InvalidFeeToken(address)")] - pub struct InvalidFeeToken { - pub fee_token: ::ethers::core::types::Address, - } - ///Custom Error type `InvalidReactor` with signature `InvalidReactor()` and selector `0x4ddf4a64` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidReactor", abi = "InvalidReactor()")] - pub struct InvalidReactor; - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; - ///Custom Error type `NoExclusiveOverride` with signature `NoExclusiveOverride()` and selector `0xb9ec1e96` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NoExclusiveOverride", abi = "NoExclusiveOverride()")] - pub struct NoExclusiveOverride; - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum ExclusiveDutchOrderReactorErrors { - DeadlineBeforeEndTime(DeadlineBeforeEndTime), - DuplicateFeeOutput(DuplicateFeeOutput), - EndTimeBeforeStartTime(EndTimeBeforeStartTime), - FeeTooLarge(FeeTooLarge), - IncorrectAmounts(IncorrectAmounts), - InputAndOutputDecay(InputAndOutputDecay), - InputAndOutputFees(InputAndOutputFees), - InvalidFeeToken(InvalidFeeToken), - InvalidReactor(InvalidReactor), - NativeTransferFailed(NativeTransferFailed), - NoExclusiveOverride(NoExclusiveOverride), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for ExclusiveDutchOrderReactorErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DeadlineBeforeEndTime(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DuplicateFeeOutput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::EndTimeBeforeStartTime(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeTooLarge(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IncorrectAmounts(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputDecay(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputFees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidFeeToken(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidReactor(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NativeTransferFailed(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NoExclusiveOverride(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ExclusiveDutchOrderReactorErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::DeadlineBeforeEndTime(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::DuplicateFeeOutput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::EndTimeBeforeStartTime(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeTooLarge(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IncorrectAmounts(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputDecay(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputFees(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidFeeToken(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidReactor(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NativeTransferFailed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NoExclusiveOverride(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for ExclusiveDutchOrderReactorErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for ExclusiveDutchOrderReactorErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DeadlineBeforeEndTime(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::DuplicateFeeOutput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::EndTimeBeforeStartTime(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeTooLarge(element) => ::core::fmt::Display::fmt(element, f), - Self::IncorrectAmounts(element) => ::core::fmt::Display::fmt(element, f), - Self::InputAndOutputDecay(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InputAndOutputFees(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidFeeToken(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidReactor(element) => ::core::fmt::Display::fmt(element, f), - Self::NativeTransferFailed(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::NoExclusiveOverride(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> - for ExclusiveDutchOrderReactorErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From - for ExclusiveDutchOrderReactorErrors { - fn from(value: DeadlineBeforeEndTime) -> Self { - Self::DeadlineBeforeEndTime(value) - } - } - impl ::core::convert::From for ExclusiveDutchOrderReactorErrors { - fn from(value: DuplicateFeeOutput) -> Self { - Self::DuplicateFeeOutput(value) - } - } - impl ::core::convert::From - for ExclusiveDutchOrderReactorErrors { - fn from(value: EndTimeBeforeStartTime) -> Self { - Self::EndTimeBeforeStartTime(value) - } - } - impl ::core::convert::From for ExclusiveDutchOrderReactorErrors { - fn from(value: FeeTooLarge) -> Self { - Self::FeeTooLarge(value) - } - } - impl ::core::convert::From for ExclusiveDutchOrderReactorErrors { - fn from(value: IncorrectAmounts) -> Self { - Self::IncorrectAmounts(value) - } - } - impl ::core::convert::From - for ExclusiveDutchOrderReactorErrors { - fn from(value: InputAndOutputDecay) -> Self { - Self::InputAndOutputDecay(value) - } - } - impl ::core::convert::From for ExclusiveDutchOrderReactorErrors { - fn from(value: InputAndOutputFees) -> Self { - Self::InputAndOutputFees(value) - } - } - impl ::core::convert::From for ExclusiveDutchOrderReactorErrors { - fn from(value: InvalidFeeToken) -> Self { - Self::InvalidFeeToken(value) - } - } - impl ::core::convert::From for ExclusiveDutchOrderReactorErrors { - fn from(value: InvalidReactor) -> Self { - Self::InvalidReactor(value) - } - } - impl ::core::convert::From - for ExclusiveDutchOrderReactorErrors { - fn from(value: NativeTransferFailed) -> Self { - Self::NativeTransferFailed(value) - } - } - impl ::core::convert::From - for ExclusiveDutchOrderReactorErrors { - fn from(value: NoExclusiveOverride) -> Self { - Self::NoExclusiveOverride(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Fill", abi = "Fill(bytes32,address,address,uint256)")] - pub struct FillFilter { - #[ethevent(indexed)] - pub order_hash: [u8; 32], - #[ethevent(indexed)] - pub filler: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub swapper: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "ProtocolFeeControllerSet", - abi = "ProtocolFeeControllerSet(address,address)" - )] - pub struct ProtocolFeeControllerSetFilter { - pub old_fee_controller: ::ethers::core::types::Address, - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum ExclusiveDutchOrderReactorEvents { - FillFilter(FillFilter), - OwnershipTransferredFilter(OwnershipTransferredFilter), - ProtocolFeeControllerSetFilter(ProtocolFeeControllerSetFilter), - } - impl ::ethers::contract::EthLogDecode for ExclusiveDutchOrderReactorEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = FillFilter::decode_log(log) { - return Ok(ExclusiveDutchOrderReactorEvents::FillFilter(decoded)); - } - if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) { - return Ok( - ExclusiveDutchOrderReactorEvents::OwnershipTransferredFilter(decoded), - ); - } - if let Ok(decoded) = ProtocolFeeControllerSetFilter::decode_log(log) { - return Ok( - ExclusiveDutchOrderReactorEvents::ProtocolFeeControllerSetFilter( - decoded, - ), - ); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for ExclusiveDutchOrderReactorEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FillFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ProtocolFeeControllerSetFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for ExclusiveDutchOrderReactorEvents { - fn from(value: FillFilter) -> Self { - Self::FillFilter(value) - } - } - impl ::core::convert::From - for ExclusiveDutchOrderReactorEvents { - fn from(value: OwnershipTransferredFilter) -> Self { - Self::OwnershipTransferredFilter(value) - } - } - impl ::core::convert::From - for ExclusiveDutchOrderReactorEvents { - fn from(value: ProtocolFeeControllerSetFilter) -> Self { - Self::ProtocolFeeControllerSetFilter(value) - } - } - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes))` and selector `0x3f62192e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes))")] - pub struct ExecuteCall { - pub order: SignedOrder, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((bytes,bytes)[])")] - pub struct ExecuteBatchCall { - pub orders: ::std::vec::Vec, - } - ///Container type for all input parameters for the `executeBatchWithCallback` function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeBatchWithCallback", - abi = "executeBatchWithCallback((bytes,bytes)[],bytes)" - )] - pub struct ExecuteBatchWithCallbackCall { - pub orders: ::std::vec::Vec, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `executeWithCallback` function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeWithCallback", - abi = "executeWithCallback((bytes,bytes),bytes)" - )] - pub struct ExecuteWithCallbackCall { - pub order: SignedOrder, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeController", abi = "feeController()")] - pub struct FeeControllerCall; - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "permit2", abi = "permit2()")] - pub struct Permit2Call; - ///Container type for all input parameters for the `setProtocolFeeController` function with signature `setProtocolFeeController(address)` and selector `0x2d771389` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "setProtocolFeeController", - abi = "setProtocolFeeController(address)" - )] - pub struct SetProtocolFeeControllerCall { - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum ExclusiveDutchOrderReactorCalls { - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ExecuteBatchWithCallback(ExecuteBatchWithCallbackCall), - ExecuteWithCallback(ExecuteWithCallbackCall), - FeeController(FeeControllerCall), - Owner(OwnerCall), - Permit2(Permit2Call), - SetProtocolFeeController(SetProtocolFeeControllerCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for ExclusiveDutchOrderReactorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatchWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Permit2(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetProtocolFeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ExclusiveDutchOrderReactorCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteBatchWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Permit2(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetProtocolFeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for ExclusiveDutchOrderReactorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatchWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ExecuteWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeController(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit2(element) => ::core::fmt::Display::fmt(element, f), - Self::SetProtocolFeeController(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for ExclusiveDutchOrderReactorCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for ExclusiveDutchOrderReactorCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From - for ExclusiveDutchOrderReactorCalls { - fn from(value: ExecuteBatchWithCallbackCall) -> Self { - Self::ExecuteBatchWithCallback(value) - } - } - impl ::core::convert::From - for ExclusiveDutchOrderReactorCalls { - fn from(value: ExecuteWithCallbackCall) -> Self { - Self::ExecuteWithCallback(value) - } - } - impl ::core::convert::From for ExclusiveDutchOrderReactorCalls { - fn from(value: FeeControllerCall) -> Self { - Self::FeeController(value) - } - } - impl ::core::convert::From for ExclusiveDutchOrderReactorCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for ExclusiveDutchOrderReactorCalls { - fn from(value: Permit2Call) -> Self { - Self::Permit2(value) - } - } - impl ::core::convert::From - for ExclusiveDutchOrderReactorCalls { - fn from(value: SetProtocolFeeControllerCall) -> Self { - Self::SetProtocolFeeController(value) - } - } - impl ::core::convert::From - for ExclusiveDutchOrderReactorCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeControllerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct Permit2Return(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/exclusive_filler_validation.rs b/crates/bindings-uniswapx/src/exclusive_filler_validation.rs deleted file mode 100644 index f12b302..0000000 --- a/crates/bindings-uniswapx/src/exclusive_filler_validation.rs +++ /dev/null @@ -1,253 +0,0 @@ -pub use exclusive_filler_validation::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod exclusive_filler_validation { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("validate"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("validate"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("resolvedOrder"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("NotExclusiveFiller"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NotExclusiveFiller"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static EXCLUSIVEFILLERVALIDATION_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x02}\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cn\x84\xBA+\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x01&V[a\0BV[\0[_\x80a\0N\x83\x80a\x01yV[a\0\\\x90`\xA0\x81\x01\x90a\x01\xB5V[\x81\x01\x90a\0i\x91\x90a\x02\x1DV[\x91P\x91PB\x81\x10\x15\x80\x15a\0\xA9WP\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15[\x15a\0\xFCW`@Q\x7Fu\xC1\xBB\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01R`$\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01#W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15a\x017W_\x80\xFD[\x825a\x01B\x81a\x01\x02V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01]W_\x80\xFD[\x83\x01`\xE0\x81\x86\x03\x12\x15a\x01nW_\x80\xFD[\x80\x91PP\x92P\x92\x90PV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFA\x836\x03\x01\x81\x12a\x01\xABW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x01\xE8W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x02\x02W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x02\x16W_\x80\xFD[\x92P\x92\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x02.W_\x80\xFD[\x825a\x029\x81a\x01\x02V[\x94` \x93\x90\x93\x015\x93PPPV\xFE\xA2dipfsX\"\x12 :]>\xD7\xEFRV;_\x92\xBC\xC8\x95v\x16{\xC2O\xD8\x86\xBF\xCE.\x1A\x10\xB9\x81P\x15\xD2?\xF2dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static EXCLUSIVEFILLERVALIDATION_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cn\x84\xBA+\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x01&V[a\0BV[\0[_\x80a\0N\x83\x80a\x01yV[a\0\\\x90`\xA0\x81\x01\x90a\x01\xB5V[\x81\x01\x90a\0i\x91\x90a\x02\x1DV[\x91P\x91PB\x81\x10\x15\x80\x15a\0\xA9WP\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15[\x15a\0\xFCW`@Q\x7Fu\xC1\xBB\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01R`$\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01#W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15a\x017W_\x80\xFD[\x825a\x01B\x81a\x01\x02V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01]W_\x80\xFD[\x83\x01`\xE0\x81\x86\x03\x12\x15a\x01nW_\x80\xFD[\x80\x91PP\x92P\x92\x90PV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFA\x836\x03\x01\x81\x12a\x01\xABW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x01\xE8W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x02\x02W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x02\x16W_\x80\xFD[\x92P\x92\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x02.W_\x80\xFD[\x825a\x029\x81a\x01\x02V[\x94` \x93\x90\x93\x015\x93PPPV\xFE\xA2dipfsX\"\x12 :]>\xD7\xEFRV;_\x92\xBC\xC8\x95v\x16{\xC2O\xD8\x86\xBF\xCE.\x1A\x10\xB9\x81P\x15\xD2?\xF2dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static EXCLUSIVEFILLERVALIDATION_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct ExclusiveFillerValidation(::ethers::contract::Contract); - impl ::core::clone::Clone for ExclusiveFillerValidation { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ExclusiveFillerValidation { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ExclusiveFillerValidation { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ExclusiveFillerValidation { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ExclusiveFillerValidation)) - .field(&self.address()) - .finish() - } - } - impl ExclusiveFillerValidation { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - EXCLUSIVEFILLERVALIDATION_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - EXCLUSIVEFILLERVALIDATION_ABI.clone(), - EXCLUSIVEFILLERVALIDATION_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `validate` (0x6e84ba2b) function - pub fn validate( - &self, - filler: ::ethers::core::types::Address, - resolved_order: ResolvedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([110, 132, 186, 43], (filler, resolved_order)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for ExclusiveFillerValidation { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `NotExclusiveFiller` with signature `NotExclusiveFiller(address)` and selector `0x75c1bb14` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NotExclusiveFiller", abi = "NotExclusiveFiller(address)")] - pub struct NotExclusiveFiller { - pub filler: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `validate` function with signature `validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x6e84ba2b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "validate", - abi = "validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))" - )] - pub struct ValidateCall { - pub filler: ::ethers::core::types::Address, - pub resolved_order: ResolvedOrder, - } -} diff --git a/crates/bindings-uniswapx/src/exclusivedutchorderlib.rs b/crates/bindings-uniswapx/src/exclusivedutchorderlib.rs new file mode 100644 index 0000000..1928312 --- /dev/null +++ b/crates/bindings-uniswapx/src/exclusivedutchorderlib.rs @@ -0,0 +1,222 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ExclusiveDutchOrderLib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ExclusiveDutchOrderLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf55b17c170bd4d589f35c7d243159e199f991c35c786a56cc286b5d5dc5aebb64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xBFU\xB1|\x17\x0B\xD4\xD5\x89\xF3\\}$1Y\xE1\x99\xF9\x91\xC3\\xjV\xCC(k]]\xC5\xAE\xBBdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf55b17c170bd4d589f35c7d243159e199f991c35c786a56cc286b5d5dc5aebb64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xBFU\xB1|\x17\x0B\xD4\xD5\x89\xF3\\}$1Y\xE1\x99\xF9\x91\xC3\\xjV\xCC(k]]\xC5\xAE\xBBdsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ExclusiveDutchOrderLib`](self) contract instance. + +See the [wrapper's documentation](`ExclusiveDutchOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ExclusiveDutchOrderLibInstance { + ExclusiveDutchOrderLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ExclusiveDutchOrderLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ExclusiveDutchOrderLibInstance::::deploy_builder(provider) + } + /**A [`ExclusiveDutchOrderLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ExclusiveDutchOrderLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ExclusiveDutchOrderLibInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ExclusiveDutchOrderLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ExclusiveDutchOrderLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ExclusiveDutchOrderLibInstance { + /**Creates a new wrapper around an on-chain [`ExclusiveDutchOrderLib`](self) contract instance. + +See the [wrapper's documentation](`ExclusiveDutchOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ExclusiveDutchOrderLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ExclusiveDutchOrderLibInstance { + ExclusiveDutchOrderLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ExclusiveDutchOrderLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ExclusiveDutchOrderLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/exclusivedutchorderreactor.rs b/crates/bindings-uniswapx/src/exclusivedutchorderreactor.rs new file mode 100644 index 0000000..8084f42 --- /dev/null +++ b/crates/bindings-uniswapx/src/exclusivedutchorderreactor.rs @@ -0,0 +1,4075 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ExclusiveDutchOrderReactor { + struct SignedOrder { + bytes order; + bytes sig; + } + + error DeadlineBeforeEndTime(); + error DuplicateFeeOutput(address duplicateToken); + error EndTimeBeforeStartTime(); + error FeeTooLarge(address token, uint256 amount, address recipient); + error IncorrectAmounts(); + error InputAndOutputDecay(); + error InputAndOutputFees(); + error InvalidFeeToken(address feeToken); + error InvalidReactor(); + error NativeTransferFailed(); + error NoExclusiveOverride(); + + event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); + event OwnershipTransferred(address indexed user, address indexed newOwner); + event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); + + constructor(address _permit2, address _protocolFeeOwner); + + receive() external payable; + + function execute(SignedOrder memory order) external payable; + function executeBatch(SignedOrder[] memory orders) external payable; + function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; + function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; + function feeController() external view returns (address); + function owner() external view returns (address); + function permit2() external view returns (address); + function setProtocolFeeController(address _newFeeController) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_permit2", + "type": "address", + "internalType": "contract IPermit2" + }, + { + "name": "_protocolFeeOwner", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatchWithCallback", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeWithCallback", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "feeController", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IProtocolFeeController" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit2", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPermit2" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setProtocolFeeController", + "inputs": [ + { + "name": "_newFeeController", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Fill", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "filler", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "swapper", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProtocolFeeControllerSet", + "inputs": [ + { + "name": "oldFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "DeadlineBeforeEndTime", + "inputs": [] + }, + { + "type": "error", + "name": "DuplicateFeeOutput", + "inputs": [ + { + "name": "duplicateToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "EndTimeBeforeStartTime", + "inputs": [] + }, + { + "type": "error", + "name": "FeeTooLarge", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "IncorrectAmounts", + "inputs": [] + }, + { + "type": "error", + "name": "InputAndOutputDecay", + "inputs": [] + }, + { + "type": "error", + "name": "InputAndOutputFees", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidFeeToken", + "inputs": [ + { + "name": "feeToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InvalidReactor", + "inputs": [] + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + }, + { + "type": "error", + "name": "NoExclusiveOverride", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ExclusiveDutchOrderReactor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a06040523480156200001157600080fd5b50604051620032a3380380620032a38339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b60805161318a620001196000396000818160e0015261187c015261318a6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612358565b6101eb565b005b6100b96100c9366004612406565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612448565b6104c5565b34801561014a57600080fd5b506100b96101593660046124e6565b610683565b6100b961016c36600461250a565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046124e6565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561256e565b60200260200101819052506102d981610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612771565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb3565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861253f565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661256e565b90506020028101906104789190612837565b6109f6565b82828151811061048f5761048f61256e565b6020908102919091010152600101610449565b506104ac81610b62565b6104b581610bb3565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961253f565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661256e565b8282815181106105d9576105d961256e565b60209081029190910101526001016105aa565b506105f681610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612771565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb3565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961256e565b602002602001018190525061087d81610b62565b61088681610bb3565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612875565b810190610a7c9190612bfe565b9050610a8781610d06565b6040518060a0016040528082600001518152602001610abd836020015184604001518560a00151610df19092919063ffffffff16565b8152602001610ae3836020015184604001518560c00151610ec39092919063ffffffff16565b8152602001848060200190610af89190612875565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610faa565b9052606082015160208301516080840151929450610b5c928592919061127c565b50919050565b805160005b8181101561035f576000838281518110610b8357610b8361256e565b60200260200101519050610b9681611289565b610ba08133611779565b610baa813361187a565b50600101610b67565b805160005b81811015610cf5576000838281518110610bd457610bd461256e565b602002602001015190506000816040015151905060005b81811015610c5557600083604001518281518110610c0b57610c0b61256e565b60200260200101519050610c4c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611bd79092919063ffffffff16565b50600101610beb565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9e57610c9e61256e565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce391815260200190565b60405180910390a45050600101610bb8565b5047156104c1576104c13347611c1e565b60408101518151606001511015610d49576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a08101516040810151602090910151146108915760005b8160c00151518110156104c1578160c001518181518110610d8457610d8461256e565b6020026020010151604001518260c001518281518110610da657610da661256e565b60200260200101516020015114610de9576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d61565b610e2b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e6d576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e83856020015186604001518686611cb8565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ee157610ee161253f565b604051908082528060200260200182016040528015610f4a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eff5790505b50915060005b81811015610fa157610f7c868281518110610f6d57610f6d61256e565b60200260200101518686611d35565b838281518110610f8e57610f8e61256e565b6020908102919091010152600101610f50565b50509392505050565b6040517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e982015260009060ff01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061304860208301396040518060c00160405280608d81526020016130c8608d913960405160200161119c93929190612cd2565b604051602081830303815290604052805190602001206111bf8360000151611e05565b83602001518460400151856060015186608001518760a00151600001518860a00151602001518960a00151604001516111fb8b60c00151611e9f565b60408051602081019b909b528a01989098526060890196909652608088019490945273ffffffffffffffffffffffffffffffffffffffff92831660a088015260c08701919091521660e0850152610100840152610120830152610140820152610160015b604051602081830303815290604052805190602001209050919050565b61067d8484848442611f3d565b60015473ffffffffffffffffffffffffffffffffffffffff166112a95750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611300908590600401612d15565b600060405180830381865afa15801561131d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113639190810190612d28565b604083015151815191925090600061137b8284612e27565b67ffffffffffffffff8111156113935761139361253f565b6040519080825280602002602001820160405280156113fc57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b15790505b50905060005b8381101561144d57856040015181815181106114205761142061256e565b602002602001015182828151811061143a5761143a61256e565b6020908102919091010152600101611402565b5060008060005b848110156117685760008782815181106114705761147061256e565b6020026020010151905060005b8281101561152e578881815181106114975761149761256e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036115265781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161147d565b506000805b888110156115ef5760008b6040015182815181106115535761155361256e565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036115e65785156115d0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516115df9084612e27565b9250600196505b50600101611533565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361166857841561164f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116619082612e27565b9050600193505b806000036116bd5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6116cb816005612710611fe9565b8260200151111561173e578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106117535761175361256e565b60209081029190910101525050600101611454565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146117ca576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906118469084908690600401612e3a565b60006040518083038186803b15801561185e57600080fd5b505afa158015611872573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61193a846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6119448585612025565b856000015160200151866080015160405180608001604052806052815260200161304860529139604080517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e9820152815160df8183030181526101bf8201909252608d60ff8201818152916130c89061011f01396040518060600160405280602e815260200161309a602e9139604051602001611b3c9493929190612e69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611ba99695949392600401612ef2565b600060405180830381600087803b158015611bc357600080fd5b505af1158015611872573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611bfc5761035f8282611c1e565b61035f73ffffffffffffffffffffffffffffffffffffffff841633848461206c565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611c78576040519150601f19603f3d011682016040523d82523d6000602084013e611c7d565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611cc8575083611d2d565b828211611d01576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611d0f575082611d2d565b428310611d1d575083611d2d565b611d2a8383428888612157565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d94576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611daa856020015186604001518686611cb8565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d81526020016130c8608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161125f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ebf57611ebf61253f565b6040519080825280601f01601f191660200182016040528015611ee9576020820181803683370190505b50905060005b8351811015611f2e576000611f1c858381518110611f0f57611f0f61256e565b6020026020010151612172565b60208381028501015250600101611eef565b50805160209091012092915050565b611f488484836121e9565b611fe25781611f83576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b8151811015611fdf576000828281518110611fa857611fa861256e565b60200260200101519050611fd185612710611fc39190612e27565b602083015190612710612234565b602090910152600101611f8b565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261201e57600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b60006121668686868686612278565b90505b95945050505050565b60006040518060800160405280605281526020016130486052913980516020918201208351848301516040808701516060880151915161125f969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600073ffffffffffffffffffffffffffffffffffffffff8416158061220d57508282115b80611d2d575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261226957600080fd5b50910281810615159190040190565b6000848410612288575080612169565b60006122948786612fad565b905060006122a28888612fad565b90506000858512156122d4576122c483836122bd888a612fc0565b9190611fe9565b6122cd90612fe7565b90506122e6565b6122e383836122bd8989612fc0565b90505b6122f0818761301f565b9998505050505050505050565b600060408284031215610b5c57600080fd5b60008083601f84011261232157600080fd5b50813567ffffffffffffffff81111561233957600080fd5b60208301915083602082850101111561235157600080fd5b9250929050565b60008060006040848603121561236d57600080fd5b833567ffffffffffffffff8082111561238557600080fd5b612391878388016122fd565b945060208601359150808211156123a757600080fd5b506123b48682870161230f565b9497909650939450505050565b60008083601f8401126123d357600080fd5b50813567ffffffffffffffff8111156123eb57600080fd5b6020830191508360208260051b850101111561235157600080fd5b6000806020838503121561241957600080fd5b823567ffffffffffffffff81111561243057600080fd5b61243c858286016123c1565b90969095509350505050565b6000806000806040858703121561245e57600080fd5b843567ffffffffffffffff8082111561247657600080fd5b612482888389016123c1565b9096509450602087013591508082111561249b57600080fd5b506124a88782880161230f565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356124e1816124b4565b919050565b6000602082840312156124f857600080fd5b8135612503816124b4565b9392505050565b60006020828403121561251c57600080fd5b813567ffffffffffffffff81111561253357600080fd5b611d2d848285016122fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156125b85781810151838201526020016125a0565b50506000910152565b600081518084526125d981602086016020860161259d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b8381101561266b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612620565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526126ea6101a08501826125c1565b905060208301516127286020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612740828261260b565b915050606083015184820360a086015261275a82826125c1565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156127e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526127d4868351612676565b9550938201939082019060010161279a565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261286b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128aa57600080fd5b83018035915067ffffffffffffffff8211156128c557600080fd5b60200191503681900382131561235157600080fd5b6040516060810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405290565b6040516080810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405160e0810167ffffffffffffffff811182821017156128fd576128fd61253f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129905761299061253f565b604052919050565b600082601f8301126129a957600080fd5b813567ffffffffffffffff8111156129c3576129c361253f565b6129f460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612949565b818152846020838601011115612a0957600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612a3857600080fd5b60405160c0810167ffffffffffffffff8282108183111715612a5c57612a5c61253f565b8160405282935084359150612a70826124b4565b908252602084013590612a82826124b4565b816020840152604085013560408401526060850135606084015260808501359150612aac826124b4565b81608084015260a0850135915080821115612ac657600080fd5b50612ad385828601612998565b60a0830152505092915050565b600060608284031215612af257600080fd5b612afa6128da565b90508135612b07816124b4565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612b3f57612b3f61253f565b5060051b60200190565b600082601f830112612b5a57600080fd5b81356020612b6f612b6a83612b25565b612949565b82815260079290921b84018101918181019086841115612b8e57600080fd5b8286015b84811015612bf35760808189031215612bab5760008081fd5b612bb3612903565b8135612bbe816124b4565b8152818501358582015260408083013590820152606080830135612be1816124b4565b90820152835291830191608001612b92565b509695505050505050565b600060208284031215612c1057600080fd5b813567ffffffffffffffff80821115612c2857600080fd5b908301906101208286031215612c3d57600080fd5b612c45612926565b823582811115612c5457600080fd5b612c6087828601612a26565b8252506020830135602082015260408301356040820152612c83606084016124d6565b606082015260808301356080820152612c9f8660a08501612ae0565b60a082015261010083013582811115612cb757600080fd5b612cc387828601612b49565b60c08301525095945050505050565b60008451612ce481846020890161259d565b845190830190612cf881836020890161259d565b8451910190612d0b81836020880161259d565b0195945050505050565b6020815260006125036020830184612676565b60006020808385031215612d3b57600080fd5b825167ffffffffffffffff811115612d5257600080fd5b8301601f81018513612d6357600080fd5b8051612d71612b6a82612b25565b81815260609182028301840191848201919088841115612d9057600080fd5b938501935b83851015612dec5780858a031215612dad5760008081fd5b612db56128da565b8551612dc0816124b4565b81528587015187820152604080870151612dd9816124b4565b9082015283529384019391850191612d95565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561206657612066612df8565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611d2d6040830184612676565b7f4578636c757369766544757463684f72646572207769746e6573732900000000815260008551612ea181601c850160208a0161259d565b855190830190612eb881601c840160208a0161259d565b8551910190612ece81601c84016020890161259d565b8451910190612ee481601c84016020880161259d565b01601c019695505050505050565b6000610140612f22838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612f636080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612f98818401866125c1565b90508281036101208401526122f081856125c1565b8181038181111561206657612066612df8565b8181036000831280158383131683831282161715612fe057612fe0612df8565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361301857613018612df8565b5060000390565b808201828112600083128015821682158216171561303f5761303f612df8565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220bc5333daef38e70e8a6ea612125c596542d6e839278b2c906bbabc6c6e70329b64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x002\xA38\x03\x80b\x002\xA3\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa1\x8Ab\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x18|\x01Ra1\x8A`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a#XV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\x06V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a$HV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a$\xE6V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\nV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a$\xE6V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a%nV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB3V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a(7V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BbV[a\x04\xB5\x81a\x0B\xB3V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB3V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia%nV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BbV[a\x08\x86\x81a\x0B\xB3V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a(uV[\x81\x01\x90a\n|\x91\x90a+\xFEV[\x90Pa\n\x87\x81a\r\x06V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xF1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\xC3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a(uV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\xAAV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B\\\x92\x85\x92\x91\x90a\x12|V[P\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x83Wa\x0B\x83a%nV[` \x02` \x01\x01Q\x90Pa\x0B\x96\x81a\x12\x89V[a\x0B\xA0\x813a\x17yV[a\x0B\xAA\x813a\x18zV[P`\x01\x01a\x0BgV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF5W`\0\x83\x82\x81Q\x81\x10a\x0B\xD4Wa\x0B\xD4a%nV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CUW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x0BWa\x0C\x0Ba%nV[` \x02` \x01\x01Q\x90Pa\x0CL\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B\xD7\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xEBV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9EWa\x0C\x9Ea%nV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB8V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1C\x1EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\rIW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xC1W\x81`\xC0\x01Q\x81\x81Q\x81\x10a\r\x84Wa\r\x84a%nV[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\r\xA6Wa\r\xA6a%nV[` \x02` \x01\x01Q` \x01Q\x14a\r\xE9W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\raV[a\x0E+`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EmW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0E\x83\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xE1Wa\x0E\xE1a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0FJW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xFFW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\xA1Wa\x0F|\x86\x82\x81Q\x81\x10a\x0FmWa\x0Fma%nV[` \x02` \x01\x01Q\x86\x86a\x1D5V[\x83\x82\x81Q\x81\x10a\x0F\x8EWa\x0F\x8Ea%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0FPV[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R`\0\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a0H` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919`@Q` \x01a\x11\x9C\x93\x92\x91\x90a,\xD2V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\xBF\x83`\0\x01Qa\x1E\x05V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q`\0\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xFB\x8B`\xC0\x01Qa\x1E\x9FV[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06}\x84\x84\x84\x84Ba\x1F=V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\xA9WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x13\0\x90\x85\x90`\x04\x01a-\x15V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13c\x91\x90\x81\x01\x90a-(V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x13{\x82\x84a.'V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x93Wa\x13\x93a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFCW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB1W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x14MW\x85`@\x01Q\x81\x81Q\x81\x10a\x14 Wa\x14 a%nV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x14:Wa\x14:a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x02V[P`\0\x80`\0[\x84\x81\x10\x15a\x17hW`\0\x87\x82\x81Q\x81\x10a\x14pWa\x14pa%nV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x15.W\x88\x81\x81Q\x81\x10a\x14\x97Wa\x14\x97a%nV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15&W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x14}V[P`\0\x80[\x88\x81\x10\x15a\x15\xEFW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x15SWa\x15Sa%nV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\xE6W\x85\x15a\x15\xD0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\xDF\x90\x84a.'V[\x92P`\x01\x96P[P`\x01\x01a\x153V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16hW\x84\x15a\x16OW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16a\x90\x82a.'V[\x90P`\x01\x93P[\x80`\0\x03a\x16\xBDW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x16\xCB\x81`\x05a'\x10a\x1F\xE9V[\x82` \x01Q\x11\x15a\x17>W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17SWa\x17Sa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14TV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17\xCAW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x18F\x90\x84\x90\x86\x90`\x04\x01a.:V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18^W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x19:\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x19D\x85\x85a %V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a0\xC8\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a0\x9A`.\x919`@Q` \x01a\x1B<\x94\x93\x92\x91\x90a.iV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B\xA9\x96\x95\x94\x93\x92`\x04\x01a.\xF2V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1B\xC3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xFCWa\x03_\x82\x82a\x1C\x1EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a lV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1CxW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1C}V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1C\xC8WP\x83a\x1D-V[\x82\x82\x11a\x1D\x01W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1D\x0FWP\x82a\x1D-V[B\x83\x10a\x1D\x1DWP\x83a\x1D-V[a\x1D*\x83\x83B\x88\x88a!WV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x94W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D\xAA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12_\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBFWa\x1E\xBFa%?V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE9W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F.W`\0a\x1F\x1C\x85\x83\x81Q\x81\x10a\x1F\x0FWa\x1F\x0Fa%nV[` \x02` \x01\x01Qa!rV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xEFV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1FH\x84\x84\x83a!\xE9V[a\x1F\xE2W\x81a\x1F\x83W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a\x1F\xDFW`\0\x82\x82\x81Q\x81\x10a\x1F\xA8Wa\x1F\xA8a%nV[` \x02` \x01\x01Q\x90Pa\x1F\xD1\x85a'\x10a\x1F\xC3\x91\x90a.'V[` \x83\x01Q\x90a'\x10a\"4V[` \x90\x91\x01R`\x01\x01a\x1F\x8BV[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a \x1EW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x1F\xE2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0a!f\x86\x86\x86\x86\x86a\"xV[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12_\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\"\rWP\x82\x82\x11[\x80a\x1D-WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\"iW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a\"\x88WP\x80a!iV[`\0a\"\x94\x87\x86a/\xADV[\x90P`\0a\"\xA2\x88\x88a/\xADV[\x90P`\0\x85\x85\x12\x15a\"\xD4Wa\"\xC4\x83\x83a\"\xBD\x88\x8Aa/\xC0V[\x91\x90a\x1F\xE9V[a\"\xCD\x90a/\xE7V[\x90Pa\"\xE6V[a\"\xE3\x83\x83a\"\xBD\x89\x89a/\xC0V[\x90P[a\"\xF0\x81\x87a0\x1FV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a\x0B\\W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a#!W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a#mW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x85W`\0\x80\xFD[a#\x91\x87\x83\x88\x01a\"\xFDV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#\xA7W`\0\x80\xFD[Pa#\xB4\x86\x82\x87\x01a#\x0FV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a#\xD3W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xEBW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a$\x19W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$0W`\0\x80\xFD[a$<\x85\x82\x86\x01a#\xC1V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a$^W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$vW`\0\x80\xFD[a$\x82\x88\x83\x89\x01a#\xC1V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\x9BW`\0\x80\xFD[Pa$\xA8\x87\x82\x88\x01a#\x0FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a$\xE1\x81a$\xB4V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a$\xF8W`\0\x80\xFD[\x815a%\x03\x81a$\xB4V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\x1CW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%3W`\0\x80\xFD[a\x1D-\x84\x82\x85\x01a\"\xFDV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a%\xB8W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xA0V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra%\xD9\x81` \x86\x01` \x86\x01a%\x9DV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a&kW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a& V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&\xEAa\x01\xA0\x85\x01\x82a%\xC1V[\x90P` \x83\x01Qa'(` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'@\x82\x82a&\x0BV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'Z\x82\x82a%\xC1V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a'\xE6W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'\xD4\x86\x83Qa&vV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\x9AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(kW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xAAW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xC5W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#QW`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\x90Wa)\x90a%?V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a)\xA9W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\xC3Wa)\xC3a%?V[a)\xF4` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)IV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\tW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a*8W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\\Wa*\\a%?V[\x81`@R\x82\x93P\x845\x91Pa*p\x82a$\xB4V[\x90\x82R` \x84\x015\x90a*\x82\x82a$\xB4V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xAC\x82a$\xB4V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xC6W`\0\x80\xFD[Pa*\xD3\x85\x82\x86\x01a)\x98V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a*\xF2W`\0\x80\xFD[a*\xFAa(\xDAV[\x90P\x815a+\x07\x81a$\xB4V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+?Wa+?a%?V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a+ZW`\0\x80\xFD[\x815` a+oa+j\x83a+%V[a)IV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\x8EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+\xF3W`\x80\x81\x89\x03\x12\x15a+\xABW`\0\x80\x81\xFD[a+\xB3a)\x03V[\x815a+\xBE\x81a$\xB4V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a+\xE1\x81a$\xB4V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\x92V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\x10W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,(W`\0\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a,=W`\0\x80\xFD[a,Ea)&V[\x825\x82\x81\x11\x15a,TW`\0\x80\xFD[a,`\x87\x82\x86\x01a*&V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra,\x83``\x84\x01a$\xD6V[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra,\x9F\x86`\xA0\x85\x01a*\xE0V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a,\xB7W`\0\x80\xFD[a,\xC3\x87\x82\x86\x01a+IV[`\xC0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa,\xE4\x81\x84` \x89\x01a%\x9DV[\x84Q\x90\x83\x01\x90a,\xF8\x81\x83` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a-\x0B\x81\x83` \x88\x01a%\x9DV[\x01\x95\x94PPPPPV[` \x81R`\0a%\x03` \x83\x01\x84a&vV[`\0` \x80\x83\x85\x03\x12\x15a-;W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-RW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-cW`\0\x80\xFD[\x80Qa-qa+j\x82a+%V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a-\x90W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-\xECW\x80\x85\x8A\x03\x12\x15a-\xADW`\0\x80\x81\xFD[a-\xB5a(\xDAV[\x85Qa-\xC0\x81a$\xB4V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\xD9\x81a$\xB4V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a-\x95V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a fWa fa-\xF8V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1D-`@\x83\x01\x84a&vV[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R`\0\x85Qa.\xA1\x81`\x1C\x85\x01` \x8A\x01a%\x9DV[\x85Q\x90\x83\x01\x90a.\xB8\x81`\x1C\x84\x01` \x8A\x01a%\x9DV[\x85Q\x91\x01\x90a.\xCE\x81`\x1C\x84\x01` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a.\xE4\x81`\x1C\x84\x01` \x88\x01a%\x9DV[\x01`\x1C\x01\x96\x95PPPPPPV[`\0a\x01@a/\"\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra/c`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra/\x98\x81\x84\x01\x86a%\xC1V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"\xF0\x81\x85a%\xC1V[\x81\x81\x03\x81\x81\x11\x15a fWa fa-\xF8V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\xE0Wa/\xE0a-\xF8V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a0\x18Wa0\x18a-\xF8V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a0?Wa0?a-\xF8V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xBCS3\xDA\xEF8\xE7\x0E\x8An\xA6\x12\x12\\YeB\xD6\xE89'\x8B,\x90k\xBA\xBClnp2\x9BdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612358565b6101eb565b005b6100b96100c9366004612406565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612448565b6104c5565b34801561014a57600080fd5b506100b96101593660046124e6565b610683565b6100b961016c36600461250a565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046124e6565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561256e565b60200260200101819052506102d981610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612771565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb3565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861253f565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661256e565b90506020028101906104789190612837565b6109f6565b82828151811061048f5761048f61256e565b6020908102919091010152600101610449565b506104ac81610b62565b6104b581610bb3565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961253f565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661256e565b8282815181106105d9576105d961256e565b60209081029190910101526001016105aa565b506105f681610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612771565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb3565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961256e565b602002602001018190525061087d81610b62565b61088681610bb3565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612875565b810190610a7c9190612bfe565b9050610a8781610d06565b6040518060a0016040528082600001518152602001610abd836020015184604001518560a00151610df19092919063ffffffff16565b8152602001610ae3836020015184604001518560c00151610ec39092919063ffffffff16565b8152602001848060200190610af89190612875565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610faa565b9052606082015160208301516080840151929450610b5c928592919061127c565b50919050565b805160005b8181101561035f576000838281518110610b8357610b8361256e565b60200260200101519050610b9681611289565b610ba08133611779565b610baa813361187a565b50600101610b67565b805160005b81811015610cf5576000838281518110610bd457610bd461256e565b602002602001015190506000816040015151905060005b81811015610c5557600083604001518281518110610c0b57610c0b61256e565b60200260200101519050610c4c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611bd79092919063ffffffff16565b50600101610beb565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9e57610c9e61256e565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce391815260200190565b60405180910390a45050600101610bb8565b5047156104c1576104c13347611c1e565b60408101518151606001511015610d49576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a08101516040810151602090910151146108915760005b8160c00151518110156104c1578160c001518181518110610d8457610d8461256e565b6020026020010151604001518260c001518281518110610da657610da661256e565b60200260200101516020015114610de9576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d61565b610e2b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e6d576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e83856020015186604001518686611cb8565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ee157610ee161253f565b604051908082528060200260200182016040528015610f4a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eff5790505b50915060005b81811015610fa157610f7c868281518110610f6d57610f6d61256e565b60200260200101518686611d35565b838281518110610f8e57610f8e61256e565b6020908102919091010152600101610f50565b50509392505050565b6040517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e982015260009060ff01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061304860208301396040518060c00160405280608d81526020016130c8608d913960405160200161119c93929190612cd2565b604051602081830303815290604052805190602001206111bf8360000151611e05565b83602001518460400151856060015186608001518760a00151600001518860a00151602001518960a00151604001516111fb8b60c00151611e9f565b60408051602081019b909b528a01989098526060890196909652608088019490945273ffffffffffffffffffffffffffffffffffffffff92831660a088015260c08701919091521660e0850152610100840152610120830152610140820152610160015b604051602081830303815290604052805190602001209050919050565b61067d8484848442611f3d565b60015473ffffffffffffffffffffffffffffffffffffffff166112a95750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611300908590600401612d15565b600060405180830381865afa15801561131d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113639190810190612d28565b604083015151815191925090600061137b8284612e27565b67ffffffffffffffff8111156113935761139361253f565b6040519080825280602002602001820160405280156113fc57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b15790505b50905060005b8381101561144d57856040015181815181106114205761142061256e565b602002602001015182828151811061143a5761143a61256e565b6020908102919091010152600101611402565b5060008060005b848110156117685760008782815181106114705761147061256e565b6020026020010151905060005b8281101561152e578881815181106114975761149761256e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036115265781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161147d565b506000805b888110156115ef5760008b6040015182815181106115535761155361256e565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036115e65785156115d0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516115df9084612e27565b9250600196505b50600101611533565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361166857841561164f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116619082612e27565b9050600193505b806000036116bd5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6116cb816005612710611fe9565b8260200151111561173e578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106117535761175361256e565b60209081029190910101525050600101611454565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146117ca576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906118469084908690600401612e3a565b60006040518083038186803b15801561185e57600080fd5b505afa158015611872573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61193a846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6119448585612025565b856000015160200151866080015160405180608001604052806052815260200161304860529139604080517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e9820152815160df8183030181526101bf8201909252608d60ff8201818152916130c89061011f01396040518060600160405280602e815260200161309a602e9139604051602001611b3c9493929190612e69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611ba99695949392600401612ef2565b600060405180830381600087803b158015611bc357600080fd5b505af1158015611872573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611bfc5761035f8282611c1e565b61035f73ffffffffffffffffffffffffffffffffffffffff841633848461206c565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611c78576040519150601f19603f3d011682016040523d82523d6000602084013e611c7d565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611cc8575083611d2d565b828211611d01576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611d0f575082611d2d565b428310611d1d575083611d2d565b611d2a8383428888612157565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d94576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611daa856020015186604001518686611cb8565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d81526020016130c8608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161125f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ebf57611ebf61253f565b6040519080825280601f01601f191660200182016040528015611ee9576020820181803683370190505b50905060005b8351811015611f2e576000611f1c858381518110611f0f57611f0f61256e565b6020026020010151612172565b60208381028501015250600101611eef565b50805160209091012092915050565b611f488484836121e9565b611fe25781611f83576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b8151811015611fdf576000828281518110611fa857611fa861256e565b60200260200101519050611fd185612710611fc39190612e27565b602083015190612710612234565b602090910152600101611f8b565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261201e57600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b60006121668686868686612278565b90505b95945050505050565b60006040518060800160405280605281526020016130486052913980516020918201208351848301516040808701516060880151915161125f969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600073ffffffffffffffffffffffffffffffffffffffff8416158061220d57508282115b80611d2d575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261226957600080fd5b50910281810615159190040190565b6000848410612288575080612169565b60006122948786612fad565b905060006122a28888612fad565b90506000858512156122d4576122c483836122bd888a612fc0565b9190611fe9565b6122cd90612fe7565b90506122e6565b6122e383836122bd8989612fc0565b90505b6122f0818761301f565b9998505050505050505050565b600060408284031215610b5c57600080fd5b60008083601f84011261232157600080fd5b50813567ffffffffffffffff81111561233957600080fd5b60208301915083602082850101111561235157600080fd5b9250929050565b60008060006040848603121561236d57600080fd5b833567ffffffffffffffff8082111561238557600080fd5b612391878388016122fd565b945060208601359150808211156123a757600080fd5b506123b48682870161230f565b9497909650939450505050565b60008083601f8401126123d357600080fd5b50813567ffffffffffffffff8111156123eb57600080fd5b6020830191508360208260051b850101111561235157600080fd5b6000806020838503121561241957600080fd5b823567ffffffffffffffff81111561243057600080fd5b61243c858286016123c1565b90969095509350505050565b6000806000806040858703121561245e57600080fd5b843567ffffffffffffffff8082111561247657600080fd5b612482888389016123c1565b9096509450602087013591508082111561249b57600080fd5b506124a88782880161230f565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356124e1816124b4565b919050565b6000602082840312156124f857600080fd5b8135612503816124b4565b9392505050565b60006020828403121561251c57600080fd5b813567ffffffffffffffff81111561253357600080fd5b611d2d848285016122fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156125b85781810151838201526020016125a0565b50506000910152565b600081518084526125d981602086016020860161259d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b8381101561266b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612620565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526126ea6101a08501826125c1565b905060208301516127286020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612740828261260b565b915050606083015184820360a086015261275a82826125c1565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156127e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526127d4868351612676565b9550938201939082019060010161279a565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261286b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128aa57600080fd5b83018035915067ffffffffffffffff8211156128c557600080fd5b60200191503681900382131561235157600080fd5b6040516060810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405290565b6040516080810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405160e0810167ffffffffffffffff811182821017156128fd576128fd61253f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129905761299061253f565b604052919050565b600082601f8301126129a957600080fd5b813567ffffffffffffffff8111156129c3576129c361253f565b6129f460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612949565b818152846020838601011115612a0957600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612a3857600080fd5b60405160c0810167ffffffffffffffff8282108183111715612a5c57612a5c61253f565b8160405282935084359150612a70826124b4565b908252602084013590612a82826124b4565b816020840152604085013560408401526060850135606084015260808501359150612aac826124b4565b81608084015260a0850135915080821115612ac657600080fd5b50612ad385828601612998565b60a0830152505092915050565b600060608284031215612af257600080fd5b612afa6128da565b90508135612b07816124b4565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612b3f57612b3f61253f565b5060051b60200190565b600082601f830112612b5a57600080fd5b81356020612b6f612b6a83612b25565b612949565b82815260079290921b84018101918181019086841115612b8e57600080fd5b8286015b84811015612bf35760808189031215612bab5760008081fd5b612bb3612903565b8135612bbe816124b4565b8152818501358582015260408083013590820152606080830135612be1816124b4565b90820152835291830191608001612b92565b509695505050505050565b600060208284031215612c1057600080fd5b813567ffffffffffffffff80821115612c2857600080fd5b908301906101208286031215612c3d57600080fd5b612c45612926565b823582811115612c5457600080fd5b612c6087828601612a26565b8252506020830135602082015260408301356040820152612c83606084016124d6565b606082015260808301356080820152612c9f8660a08501612ae0565b60a082015261010083013582811115612cb757600080fd5b612cc387828601612b49565b60c08301525095945050505050565b60008451612ce481846020890161259d565b845190830190612cf881836020890161259d565b8451910190612d0b81836020880161259d565b0195945050505050565b6020815260006125036020830184612676565b60006020808385031215612d3b57600080fd5b825167ffffffffffffffff811115612d5257600080fd5b8301601f81018513612d6357600080fd5b8051612d71612b6a82612b25565b81815260609182028301840191848201919088841115612d9057600080fd5b938501935b83851015612dec5780858a031215612dad5760008081fd5b612db56128da565b8551612dc0816124b4565b81528587015187820152604080870151612dd9816124b4565b9082015283529384019391850191612d95565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561206657612066612df8565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611d2d6040830184612676565b7f4578636c757369766544757463684f72646572207769746e6573732900000000815260008551612ea181601c850160208a0161259d565b855190830190612eb881601c840160208a0161259d565b8551910190612ece81601c84016020890161259d565b8451910190612ee481601c84016020880161259d565b01601c019695505050505050565b6000610140612f22838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612f636080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612f98818401866125c1565b90508281036101208401526122f081856125c1565b8181038181111561206657612066612df8565b8181036000831280158383131683831282161715612fe057612fe0612df8565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361301857613018612df8565b5060000390565b808201828112600083128015821682158216171561303f5761303f612df8565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220bc5333daef38e70e8a6ea612125c596542d6e839278b2c906bbabc6c6e70329b64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a#XV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\x06V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a$HV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a$\xE6V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\nV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a$\xE6V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a%nV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB3V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a(7V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BbV[a\x04\xB5\x81a\x0B\xB3V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB3V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia%nV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BbV[a\x08\x86\x81a\x0B\xB3V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a(uV[\x81\x01\x90a\n|\x91\x90a+\xFEV[\x90Pa\n\x87\x81a\r\x06V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xF1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\xC3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a(uV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\xAAV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B\\\x92\x85\x92\x91\x90a\x12|V[P\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x83Wa\x0B\x83a%nV[` \x02` \x01\x01Q\x90Pa\x0B\x96\x81a\x12\x89V[a\x0B\xA0\x813a\x17yV[a\x0B\xAA\x813a\x18zV[P`\x01\x01a\x0BgV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF5W`\0\x83\x82\x81Q\x81\x10a\x0B\xD4Wa\x0B\xD4a%nV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CUW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x0BWa\x0C\x0Ba%nV[` \x02` \x01\x01Q\x90Pa\x0CL\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B\xD7\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xEBV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9EWa\x0C\x9Ea%nV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB8V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1C\x1EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\rIW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xC1W\x81`\xC0\x01Q\x81\x81Q\x81\x10a\r\x84Wa\r\x84a%nV[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\r\xA6Wa\r\xA6a%nV[` \x02` \x01\x01Q` \x01Q\x14a\r\xE9W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\raV[a\x0E+`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EmW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0E\x83\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xE1Wa\x0E\xE1a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0FJW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xFFW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\xA1Wa\x0F|\x86\x82\x81Q\x81\x10a\x0FmWa\x0Fma%nV[` \x02` \x01\x01Q\x86\x86a\x1D5V[\x83\x82\x81Q\x81\x10a\x0F\x8EWa\x0F\x8Ea%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0FPV[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R`\0\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a0H` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919`@Q` \x01a\x11\x9C\x93\x92\x91\x90a,\xD2V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\xBF\x83`\0\x01Qa\x1E\x05V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q`\0\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xFB\x8B`\xC0\x01Qa\x1E\x9FV[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06}\x84\x84\x84\x84Ba\x1F=V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\xA9WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x13\0\x90\x85\x90`\x04\x01a-\x15V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13c\x91\x90\x81\x01\x90a-(V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x13{\x82\x84a.'V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x93Wa\x13\x93a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFCW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB1W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x14MW\x85`@\x01Q\x81\x81Q\x81\x10a\x14 Wa\x14 a%nV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x14:Wa\x14:a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x02V[P`\0\x80`\0[\x84\x81\x10\x15a\x17hW`\0\x87\x82\x81Q\x81\x10a\x14pWa\x14pa%nV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x15.W\x88\x81\x81Q\x81\x10a\x14\x97Wa\x14\x97a%nV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15&W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x14}V[P`\0\x80[\x88\x81\x10\x15a\x15\xEFW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x15SWa\x15Sa%nV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\xE6W\x85\x15a\x15\xD0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\xDF\x90\x84a.'V[\x92P`\x01\x96P[P`\x01\x01a\x153V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16hW\x84\x15a\x16OW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16a\x90\x82a.'V[\x90P`\x01\x93P[\x80`\0\x03a\x16\xBDW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x16\xCB\x81`\x05a'\x10a\x1F\xE9V[\x82` \x01Q\x11\x15a\x17>W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17SWa\x17Sa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14TV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17\xCAW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x18F\x90\x84\x90\x86\x90`\x04\x01a.:V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18^W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x19:\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x19D\x85\x85a %V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a0\xC8\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a0\x9A`.\x919`@Q` \x01a\x1B<\x94\x93\x92\x91\x90a.iV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B\xA9\x96\x95\x94\x93\x92`\x04\x01a.\xF2V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1B\xC3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xFCWa\x03_\x82\x82a\x1C\x1EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a lV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1CxW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1C}V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1C\xC8WP\x83a\x1D-V[\x82\x82\x11a\x1D\x01W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1D\x0FWP\x82a\x1D-V[B\x83\x10a\x1D\x1DWP\x83a\x1D-V[a\x1D*\x83\x83B\x88\x88a!WV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x94W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D\xAA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12_\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBFWa\x1E\xBFa%?V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE9W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F.W`\0a\x1F\x1C\x85\x83\x81Q\x81\x10a\x1F\x0FWa\x1F\x0Fa%nV[` \x02` \x01\x01Qa!rV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xEFV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1FH\x84\x84\x83a!\xE9V[a\x1F\xE2W\x81a\x1F\x83W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a\x1F\xDFW`\0\x82\x82\x81Q\x81\x10a\x1F\xA8Wa\x1F\xA8a%nV[` \x02` \x01\x01Q\x90Pa\x1F\xD1\x85a'\x10a\x1F\xC3\x91\x90a.'V[` \x83\x01Q\x90a'\x10a\"4V[` \x90\x91\x01R`\x01\x01a\x1F\x8BV[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a \x1EW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x1F\xE2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0a!f\x86\x86\x86\x86\x86a\"xV[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12_\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\"\rWP\x82\x82\x11[\x80a\x1D-WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\"iW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a\"\x88WP\x80a!iV[`\0a\"\x94\x87\x86a/\xADV[\x90P`\0a\"\xA2\x88\x88a/\xADV[\x90P`\0\x85\x85\x12\x15a\"\xD4Wa\"\xC4\x83\x83a\"\xBD\x88\x8Aa/\xC0V[\x91\x90a\x1F\xE9V[a\"\xCD\x90a/\xE7V[\x90Pa\"\xE6V[a\"\xE3\x83\x83a\"\xBD\x89\x89a/\xC0V[\x90P[a\"\xF0\x81\x87a0\x1FV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a\x0B\\W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a#!W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a#mW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x85W`\0\x80\xFD[a#\x91\x87\x83\x88\x01a\"\xFDV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#\xA7W`\0\x80\xFD[Pa#\xB4\x86\x82\x87\x01a#\x0FV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a#\xD3W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xEBW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a$\x19W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$0W`\0\x80\xFD[a$<\x85\x82\x86\x01a#\xC1V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a$^W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$vW`\0\x80\xFD[a$\x82\x88\x83\x89\x01a#\xC1V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\x9BW`\0\x80\xFD[Pa$\xA8\x87\x82\x88\x01a#\x0FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a$\xE1\x81a$\xB4V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a$\xF8W`\0\x80\xFD[\x815a%\x03\x81a$\xB4V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\x1CW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%3W`\0\x80\xFD[a\x1D-\x84\x82\x85\x01a\"\xFDV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a%\xB8W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xA0V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra%\xD9\x81` \x86\x01` \x86\x01a%\x9DV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a&kW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a& V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&\xEAa\x01\xA0\x85\x01\x82a%\xC1V[\x90P` \x83\x01Qa'(` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'@\x82\x82a&\x0BV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'Z\x82\x82a%\xC1V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a'\xE6W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'\xD4\x86\x83Qa&vV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\x9AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(kW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xAAW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xC5W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#QW`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\x90Wa)\x90a%?V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a)\xA9W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\xC3Wa)\xC3a%?V[a)\xF4` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)IV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\tW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a*8W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\\Wa*\\a%?V[\x81`@R\x82\x93P\x845\x91Pa*p\x82a$\xB4V[\x90\x82R` \x84\x015\x90a*\x82\x82a$\xB4V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xAC\x82a$\xB4V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xC6W`\0\x80\xFD[Pa*\xD3\x85\x82\x86\x01a)\x98V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a*\xF2W`\0\x80\xFD[a*\xFAa(\xDAV[\x90P\x815a+\x07\x81a$\xB4V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+?Wa+?a%?V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a+ZW`\0\x80\xFD[\x815` a+oa+j\x83a+%V[a)IV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\x8EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+\xF3W`\x80\x81\x89\x03\x12\x15a+\xABW`\0\x80\x81\xFD[a+\xB3a)\x03V[\x815a+\xBE\x81a$\xB4V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a+\xE1\x81a$\xB4V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\x92V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\x10W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,(W`\0\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a,=W`\0\x80\xFD[a,Ea)&V[\x825\x82\x81\x11\x15a,TW`\0\x80\xFD[a,`\x87\x82\x86\x01a*&V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra,\x83``\x84\x01a$\xD6V[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra,\x9F\x86`\xA0\x85\x01a*\xE0V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a,\xB7W`\0\x80\xFD[a,\xC3\x87\x82\x86\x01a+IV[`\xC0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa,\xE4\x81\x84` \x89\x01a%\x9DV[\x84Q\x90\x83\x01\x90a,\xF8\x81\x83` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a-\x0B\x81\x83` \x88\x01a%\x9DV[\x01\x95\x94PPPPPV[` \x81R`\0a%\x03` \x83\x01\x84a&vV[`\0` \x80\x83\x85\x03\x12\x15a-;W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-RW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-cW`\0\x80\xFD[\x80Qa-qa+j\x82a+%V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a-\x90W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-\xECW\x80\x85\x8A\x03\x12\x15a-\xADW`\0\x80\x81\xFD[a-\xB5a(\xDAV[\x85Qa-\xC0\x81a$\xB4V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\xD9\x81a$\xB4V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a-\x95V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a fWa fa-\xF8V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1D-`@\x83\x01\x84a&vV[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R`\0\x85Qa.\xA1\x81`\x1C\x85\x01` \x8A\x01a%\x9DV[\x85Q\x90\x83\x01\x90a.\xB8\x81`\x1C\x84\x01` \x8A\x01a%\x9DV[\x85Q\x91\x01\x90a.\xCE\x81`\x1C\x84\x01` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a.\xE4\x81`\x1C\x84\x01` \x88\x01a%\x9DV[\x01`\x1C\x01\x96\x95PPPPPPV[`\0a\x01@a/\"\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra/c`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra/\x98\x81\x84\x01\x86a%\xC1V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"\xF0\x81\x85a%\xC1V[\x81\x81\x03\x81\x81\x11\x15a fWa fa-\xF8V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\xE0Wa/\xE0a-\xF8V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a0\x18Wa0\x18a-\xF8V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a0?Wa0?a-\xF8V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xBCS3\xDA\xEF8\xE7\x0E\x8An\xA6\x12\x12\\YeB\xD6\xE89'\x8B,\x90k\xBA\xBClnp2\x9BdsolcC\0\x08\x18\x003", + ); + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `DeadlineBeforeEndTime()` and selector `0x773a6187`. +```solidity +error DeadlineBeforeEndTime(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DeadlineBeforeEndTime {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DeadlineBeforeEndTime) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DeadlineBeforeEndTime { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DeadlineBeforeEndTime { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DeadlineBeforeEndTime()"; + const SELECTOR: [u8; 4] = [119u8, 58u8, 97u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `DuplicateFeeOutput(address)` and selector `0xfff08303`. +```solidity +error DuplicateFeeOutput(address duplicateToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DuplicateFeeOutput { + pub duplicateToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DuplicateFeeOutput) -> Self { + (value.duplicateToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DuplicateFeeOutput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { duplicateToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DuplicateFeeOutput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DuplicateFeeOutput(address)"; + const SELECTOR: [u8; 4] = [255u8, 240u8, 131u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.duplicateToken, + ), + ) + } + } + }; + /**Custom error with signature `EndTimeBeforeStartTime()` and selector `0x43133453`. +```solidity +error EndTimeBeforeStartTime(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct EndTimeBeforeStartTime {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: EndTimeBeforeStartTime) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for EndTimeBeforeStartTime { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for EndTimeBeforeStartTime { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "EndTimeBeforeStartTime()"; + const SELECTOR: [u8; 4] = [67u8, 19u8, 52u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656`. +```solidity +error FeeTooLarge(address token, uint256 amount, address recipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FeeTooLarge { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FeeTooLarge) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FeeTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for FeeTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "FeeTooLarge(address,uint256,address)"; + const SELECTOR: [u8; 4] = [130u8, 231u8, 86u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + } + }; + /**Custom error with signature `IncorrectAmounts()` and selector `0x7c1f8113`. +```solidity +error IncorrectAmounts(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IncorrectAmounts {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IncorrectAmounts) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IncorrectAmounts { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for IncorrectAmounts { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IncorrectAmounts()"; + const SELECTOR: [u8; 4] = [124u8, 31u8, 129u8, 19u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputAndOutputDecay()` and selector `0xd303758b`. +```solidity +error InputAndOutputDecay(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputDecay {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputDecay) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputDecay { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputDecay { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputDecay()"; + const SELECTOR: [u8; 4] = [211u8, 3u8, 117u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputAndOutputFees()` and selector `0xedc7e2e4`. +```solidity +error InputAndOutputFees(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputFees {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputFees) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputFees { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputFees { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputFees()"; + const SELECTOR: [u8; 4] = [237u8, 199u8, 226u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidFeeToken(address)` and selector `0xeddf07f5`. +```solidity +error InvalidFeeToken(address feeToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidFeeToken { + pub feeToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidFeeToken) -> Self { + (value.feeToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidFeeToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { feeToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidFeeToken { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidFeeToken(address)"; + const SELECTOR: [u8; 4] = [237u8, 223u8, 7u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.feeToken, + ), + ) + } + } + }; + /**Custom error with signature `InvalidReactor()` and selector `0x4ddf4a64`. +```solidity +error InvalidReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReactor {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReactor()"; + const SELECTOR: [u8; 4] = [77u8, 223u8, 74u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NoExclusiveOverride()` and selector `0xb9ec1e96`. +```solidity +error NoExclusiveOverride(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NoExclusiveOverride {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NoExclusiveOverride) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NoExclusiveOverride { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NoExclusiveOverride { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NoExclusiveOverride()"; + const SELECTOR: [u8; 4] = [185u8, 236u8, 30u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Fill(bytes32,address,address,uint256)` and selector `0x78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66`. +```solidity +event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Fill { + #[allow(missing_docs)] + pub orderHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub filler: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub swapper: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Fill { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Fill(bytes32,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + orderHash: topics.1, + filler: topics.2, + swapper: topics.3, + nonce: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.orderHash.clone(), + self.filler.clone(), + self.swapper.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.orderHash); + out[2usize] = ::encode_topic( + &self.filler, + ); + out[3usize] = ::encode_topic( + &self.swapper, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Fill { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Fill> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Fill) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ProtocolFeeControllerSet(address,address)` and selector `0xb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0`. +```solidity +event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ProtocolFeeControllerSet { + #[allow(missing_docs)] + pub oldFeeController: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newFeeController: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProtocolFeeControllerSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ProtocolFeeControllerSet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldFeeController: data.0, + newFeeController: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldFeeController, + ), + ::tokenize( + &self.newFeeController, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ProtocolFeeControllerSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProtocolFeeControllerSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &ProtocolFeeControllerSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _permit2, address _protocolFeeOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _permit2: alloy::sol_types::private::Address, + pub _protocolFeeOwner: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._permit2, value._protocolFeeOwner) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _permit2: tuple.0, + _protocolFeeOwner: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._permit2, + ), + ::tokenize( + &self._protocolFeeOwner, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes))` and selector `0x3f62192e`. +```solidity +function execute(SignedOrder memory order) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes))"; + const SELECTOR: [u8; 4] = [63u8, 98u8, 25u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3`. +```solidity +function executeBatch(SignedOrder[] memory orders) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { orders: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[])"; + const SELECTOR: [u8; 4] = [13u8, 122u8, 22u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7`. +```solidity +function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackCall) -> Self { + (value.orders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchWithCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatchWithCallback((bytes,bytes)[],bytes)"; + const SELECTOR: [u8; 4] = [19u8, 251u8, 114u8, 199u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884`. +```solidity +function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackCall { + pub order: ::RustType, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + SignedOrder, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackCall) -> Self { + (value.order, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeWithCallbackCall { + type Parameters<'a> = (SignedOrder, alloy::sol_types::sol_data::Bytes); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeWithCallback((bytes,bytes),bytes)"; + const SELECTOR: [u8; 4] = [13u8, 51u8, 88u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `feeController()` and selector `0x6999b377`. +```solidity +function feeController() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerCall {} + ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeControllerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeControllerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeController()"; + const SELECTOR: [u8; 4] = [105u8, 153u8, 179u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit2()` and selector `0x12261ee7`. +```solidity +function permit2() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Call {} + ///Container type for the return parameters of the [`permit2()`](permit2Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Return { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit2Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit2Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit2()"; + const SELECTOR: [u8; 4] = [18u8, 38u8, 30u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setProtocolFeeController(address)` and selector `0x2d771389`. +```solidity +function setProtocolFeeController(address _newFeeController) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerCall { + pub _newFeeController: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerCall) -> Self { + (value._newFeeController,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _newFeeController: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProtocolFeeControllerCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProtocolFeeControllerReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProtocolFeeController(address)"; + const SELECTOR: [u8; 4] = [45u8, 119u8, 19u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newFeeController, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`ExclusiveDutchOrderReactor`](self) function calls. + pub enum ExclusiveDutchOrderReactorCalls { + execute(executeCall), + executeBatch(executeBatchCall), + executeBatchWithCallback(executeBatchWithCallbackCall), + executeWithCallback(executeWithCallbackCall), + feeController(feeControllerCall), + owner(ownerCall), + permit2(permit2Call), + setProtocolFeeController(setProtocolFeeControllerCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl ExclusiveDutchOrderReactorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 51u8, 88u8, 132u8], + [13u8, 122u8, 22u8, 195u8], + [18u8, 38u8, 30u8, 231u8], + [19u8, 251u8, 114u8, 199u8], + [45u8, 119u8, 19u8, 137u8], + [63u8, 98u8, 25u8, 46u8], + [105u8, 153u8, 179u8, 119u8], + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ExclusiveDutchOrderReactorCalls { + const NAME: &'static str = "ExclusiveDutchOrderReactorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::executeBatchWithCallback(_) => { + ::SELECTOR + } + Self::executeWithCallback(_) => { + ::SELECTOR + } + Self::feeController(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::permit2(_) => ::SELECTOR, + Self::setProtocolFeeController(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn executeWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorCalls::executeWithCallback) + } + executeWithCallback + }, + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorCalls::executeBatch) + } + executeBatch + }, + { + fn permit2( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorCalls::permit2) + } + permit2 + }, + { + fn executeBatchWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ExclusiveDutchOrderReactorCalls::executeBatchWithCallback, + ) + } + executeBatchWithCallback + }, + { + fn setProtocolFeeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ExclusiveDutchOrderReactorCalls::setProtocolFeeController, + ) + } + setProtocolFeeController + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorCalls::execute) + } + execute + }, + { + fn feeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorCalls::feeController) + } + feeController + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::feeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::permit2(inner) => { + ::abi_encoded_size(inner) + } + Self::setProtocolFeeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::feeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit2(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setProtocolFeeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`ExclusiveDutchOrderReactor`](self) custom errors. + pub enum ExclusiveDutchOrderReactorErrors { + DeadlineBeforeEndTime(DeadlineBeforeEndTime), + DuplicateFeeOutput(DuplicateFeeOutput), + EndTimeBeforeStartTime(EndTimeBeforeStartTime), + FeeTooLarge(FeeTooLarge), + IncorrectAmounts(IncorrectAmounts), + InputAndOutputDecay(InputAndOutputDecay), + InputAndOutputFees(InputAndOutputFees), + InvalidFeeToken(InvalidFeeToken), + InvalidReactor(InvalidReactor), + NativeTransferFailed(NativeTransferFailed), + NoExclusiveOverride(NoExclusiveOverride), + } + #[automatically_derived] + impl ExclusiveDutchOrderReactorErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [67u8, 19u8, 52u8, 83u8], + [77u8, 223u8, 74u8, 100u8], + [119u8, 58u8, 97u8, 135u8], + [124u8, 31u8, 129u8, 19u8], + [130u8, 231u8, 86u8, 86u8], + [185u8, 236u8, 30u8, 150u8], + [211u8, 3u8, 117u8, 139u8], + [237u8, 199u8, 226u8, 228u8], + [237u8, 223u8, 7u8, 245u8], + [244u8, 179u8, 177u8, 188u8], + [255u8, 240u8, 131u8, 3u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ExclusiveDutchOrderReactorErrors { + const NAME: &'static str = "ExclusiveDutchOrderReactorErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 11usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DeadlineBeforeEndTime(_) => { + ::SELECTOR + } + Self::DuplicateFeeOutput(_) => { + ::SELECTOR + } + Self::EndTimeBeforeStartTime(_) => { + ::SELECTOR + } + Self::FeeTooLarge(_) => { + ::SELECTOR + } + Self::IncorrectAmounts(_) => { + ::SELECTOR + } + Self::InputAndOutputDecay(_) => { + ::SELECTOR + } + Self::InputAndOutputFees(_) => { + ::SELECTOR + } + Self::InvalidFeeToken(_) => { + ::SELECTOR + } + Self::InvalidReactor(_) => { + ::SELECTOR + } + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + Self::NoExclusiveOverride(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn EndTimeBeforeStartTime( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + ExclusiveDutchOrderReactorErrors::EndTimeBeforeStartTime, + ) + } + EndTimeBeforeStartTime + }, + { + fn InvalidReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorErrors::InvalidReactor) + } + InvalidReactor + }, + { + fn DeadlineBeforeEndTime( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorErrors::DeadlineBeforeEndTime) + } + DeadlineBeforeEndTime + }, + { + fn IncorrectAmounts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorErrors::IncorrectAmounts) + } + IncorrectAmounts + }, + { + fn FeeTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorErrors::FeeTooLarge) + } + FeeTooLarge + }, + { + fn NoExclusiveOverride( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorErrors::NoExclusiveOverride) + } + NoExclusiveOverride + }, + { + fn InputAndOutputDecay( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorErrors::InputAndOutputDecay) + } + InputAndOutputDecay + }, + { + fn InputAndOutputFees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorErrors::InputAndOutputFees) + } + InputAndOutputFees + }, + { + fn InvalidFeeToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorErrors::InvalidFeeToken) + } + InvalidFeeToken + }, + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorErrors::NativeTransferFailed) + } + NativeTransferFailed + }, + { + fn DuplicateFeeOutput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveDutchOrderReactorErrors::DuplicateFeeOutput) + } + DuplicateFeeOutput + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DeadlineBeforeEndTime(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::DuplicateFeeOutput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::EndTimeBeforeStartTime(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encoded_size(inner) + } + Self::IncorrectAmounts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InputAndOutputDecay(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NoExclusiveOverride(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DeadlineBeforeEndTime(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::DuplicateFeeOutput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::EndTimeBeforeStartTime(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::IncorrectAmounts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputDecay(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NoExclusiveOverride(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`ExclusiveDutchOrderReactor`](self) events. + pub enum ExclusiveDutchOrderReactorEvents { + Fill(Fill), + OwnershipTransferred(OwnershipTransferred), + ProtocolFeeControllerSet(ProtocolFeeControllerSet), + } + #[automatically_derived] + impl ExclusiveDutchOrderReactorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ], + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + [ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ExclusiveDutchOrderReactorEvents { + const NAME: &'static str = "ExclusiveDutchOrderReactorEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Fill) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ProtocolFeeControllerSet) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ExclusiveDutchOrderReactorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ExclusiveDutchOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`ExclusiveDutchOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ExclusiveDutchOrderReactorInstance { + ExclusiveDutchOrderReactorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ExclusiveDutchOrderReactorInstance::< + T, + P, + N, + >::deploy(provider, _permit2, _protocolFeeOwner) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + ExclusiveDutchOrderReactorInstance::< + T, + P, + N, + >::deploy_builder(provider, _permit2, _protocolFeeOwner) + } + /**A [`ExclusiveDutchOrderReactor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ExclusiveDutchOrderReactor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ExclusiveDutchOrderReactorInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ExclusiveDutchOrderReactorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ExclusiveDutchOrderReactorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ExclusiveDutchOrderReactorInstance { + /**Creates a new wrapper around an on-chain [`ExclusiveDutchOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`ExclusiveDutchOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _permit2, + _protocolFeeOwner, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _permit2, + _protocolFeeOwner, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ExclusiveDutchOrderReactorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> ExclusiveDutchOrderReactorInstance { + ExclusiveDutchOrderReactorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ExclusiveDutchOrderReactorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeBatchCall { orders }) + } + ///Creates a new call builder for the [`executeBatchWithCallback`] function. + pub fn executeBatchWithCallback( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeBatchWithCallbackCall { + orders, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`executeWithCallback`] function. + pub fn executeWithCallback( + &self, + order: ::RustType, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeWithCallbackCall { + order, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`feeController`] function. + pub fn feeController( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeControllerCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`permit2`] function. + pub fn permit2(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&permit2Call {}) + } + ///Creates a new call builder for the [`setProtocolFeeController`] function. + pub fn setProtocolFeeController( + &self, + _newFeeController: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setProtocolFeeControllerCall { + _newFeeController, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ExclusiveDutchOrderReactorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Fill`] event. + pub fn Fill_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ProtocolFeeControllerSet`] event. + pub fn ProtocolFeeControllerSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/exclusivefillervalidation.rs b/crates/bindings-uniswapx/src/exclusivefillervalidation.rs new file mode 100644 index 0000000..8803ecb --- /dev/null +++ b/crates/bindings-uniswapx/src/exclusivefillervalidation.rs @@ -0,0 +1,1819 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ExclusiveFillerValidation { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + error NotExclusiveFiller(address filler); + + function validate(address filler, ResolvedOrder memory resolvedOrder) external view; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "validate", + "inputs": [ + { + "name": "filler", + "type": "address", + "internalType": "address" + }, + { + "name": "resolvedOrder", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [], + "stateMutability": "view" + }, + { + "type": "error", + "name": "NotExclusiveFiller", + "inputs": [ + { + "name": "filler", + "type": "address", + "internalType": "address" + } + ] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ExclusiveFillerValidation { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b5061028e806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636e84ba2b14610030575b600080fd5b61004361003e36600461012b565b610045565b005b6000806100528380610182565b6100609060a08101906101c0565b81019061006d919061022c565b915091504281101580156100ad57508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610100576040517f75c1bb1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240160405180910390fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461012857600080fd5b50565b6000806040838503121561013e57600080fd5b823561014981610106565b9150602083013567ffffffffffffffff81111561016557600080fd5b830160e0818603121561017757600080fd5b809150509250929050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff418336030181126101b657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126101f557600080fd5b83018035915067ffffffffffffffff82111561021057600080fd5b60200191503681900382131561022557600080fd5b9250929050565b6000806040838503121561023f57600080fd5b823561024a81610106565b94602093909301359350505056fea2646970667358221220e7c249447c55a6b98794fc2cdcd4f4700bef7fc0faa8e0555e1fd4c3758f4caa64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\x8E\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cn\x84\xBA+\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01+V[a\0EV[\0[`\0\x80a\0R\x83\x80a\x01\x82V[a\0`\x90`\xA0\x81\x01\x90a\x01\xC0V[\x81\x01\x90a\0m\x91\x90a\x02,V[\x91P\x91PB\x81\x10\x15\x80\x15a\0\xADWP\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15[\x15a\x01\0W`@Q\x7Fu\xC1\xBB\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01R`$\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01(W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01>W`\0\x80\xFD[\x825a\x01I\x81a\x01\x06V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01eW`\0\x80\xFD[\x83\x01`\xE0\x81\x86\x03\x12\x15a\x01wW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFA\x836\x03\x01\x81\x12a\x01\xB6W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x01\xF5W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x02\x10W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x02%W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02?W`\0\x80\xFD[\x825a\x02J\x81a\x01\x06V[\x94` \x93\x90\x93\x015\x93PPPV\xFE\xA2dipfsX\"\x12 \xE7\xC2ID|U\xA6\xB9\x87\x94\xFC,\xDC\xD4\xF4p\x0B\xEF\x7F\xC0\xFA\xA8\xE0U^\x1F\xD4\xC3u\x8FL\xAAdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80636e84ba2b14610030575b600080fd5b61004361003e36600461012b565b610045565b005b6000806100528380610182565b6100609060a08101906101c0565b81019061006d919061022c565b915091504281101580156100ad57508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610100576040517f75c1bb1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240160405180910390fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461012857600080fd5b50565b6000806040838503121561013e57600080fd5b823561014981610106565b9150602083013567ffffffffffffffff81111561016557600080fd5b830160e0818603121561017757600080fd5b809150509250929050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff418336030181126101b657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126101f557600080fd5b83018035915067ffffffffffffffff82111561021057600080fd5b60200191503681900382131561022557600080fd5b9250929050565b6000806040838503121561023f57600080fd5b823561024a81610106565b94602093909301359350505056fea2646970667358221220e7c249447c55a6b98794fc2cdcd4f4700bef7fc0faa8e0555e1fd4c3758f4caa64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cn\x84\xBA+\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01+V[a\0EV[\0[`\0\x80a\0R\x83\x80a\x01\x82V[a\0`\x90`\xA0\x81\x01\x90a\x01\xC0V[\x81\x01\x90a\0m\x91\x90a\x02,V[\x91P\x91PB\x81\x10\x15\x80\x15a\0\xADWP\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15[\x15a\x01\0W`@Q\x7Fu\xC1\xBB\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01R`$\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01(W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01>W`\0\x80\xFD[\x825a\x01I\x81a\x01\x06V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01eW`\0\x80\xFD[\x83\x01`\xE0\x81\x86\x03\x12\x15a\x01wW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFA\x836\x03\x01\x81\x12a\x01\xB6W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x01\xF5W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x02\x10W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x02%W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02?W`\0\x80\xFD[\x825a\x02J\x81a\x01\x06V[\x94` \x93\x90\x93\x015\x93PPPV\xFE\xA2dipfsX\"\x12 \xE7\xC2ID|U\xA6\xB9\x87\x94\xFC,\xDC\xD4\xF4p\x0B\xEF\x7F\xC0\xFA\xA8\xE0U^\x1F\xD4\xC3u\x8FL\xAAdsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `NotExclusiveFiller(address)` and selector `0x75c1bb14`. +```solidity +error NotExclusiveFiller(address filler); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NotExclusiveFiller { + pub filler: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NotExclusiveFiller) -> Self { + (value.filler,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NotExclusiveFiller { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { filler: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NotExclusiveFiller { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NotExclusiveFiller(address)"; + const SELECTOR: [u8; 4] = [117u8, 193u8, 187u8, 20u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.filler, + ), + ) + } + } + }; + /**Function with signature `validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x6e84ba2b`. +```solidity +function validate(address filler, ResolvedOrder memory resolvedOrder) external view; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validateCall { + pub filler: alloy::sol_types::private::Address, + pub resolvedOrder: ::RustType, + } + ///Container type for the return parameters of the [`validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](validateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validateReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ResolvedOrder, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validateCall) -> Self { + (value.filler, value.resolvedOrder) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + filler: tuple.0, + resolvedOrder: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validateReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for validateCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address, ResolvedOrder); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = validateReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))"; + const SELECTOR: [u8; 4] = [110u8, 132u8, 186u8, 43u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.filler, + ), + ::tokenize( + &self.resolvedOrder, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`ExclusiveFillerValidation`](self) function calls. + pub enum ExclusiveFillerValidationCalls { + validate(validateCall), + } + #[automatically_derived] + impl ExclusiveFillerValidationCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[110u8, 132u8, 186u8, 43u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ExclusiveFillerValidationCalls { + const NAME: &'static str = "ExclusiveFillerValidationCalls"; + const MIN_DATA_LENGTH: usize = 512usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::validate(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn validate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveFillerValidationCalls::validate) + } + validate + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::validate(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::validate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`ExclusiveFillerValidation`](self) custom errors. + pub enum ExclusiveFillerValidationErrors { + NotExclusiveFiller(NotExclusiveFiller), + } + #[automatically_derived] + impl ExclusiveFillerValidationErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[117u8, 193u8, 187u8, 20u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ExclusiveFillerValidationErrors { + const NAME: &'static str = "ExclusiveFillerValidationErrors"; + const MIN_DATA_LENGTH: usize = 32usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::NotExclusiveFiller(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn NotExclusiveFiller( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusiveFillerValidationErrors::NotExclusiveFiller) + } + NotExclusiveFiller + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::NotExclusiveFiller(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::NotExclusiveFiller(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ExclusiveFillerValidation`](self) contract instance. + +See the [wrapper's documentation](`ExclusiveFillerValidationInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ExclusiveFillerValidationInstance { + ExclusiveFillerValidationInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ExclusiveFillerValidationInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ExclusiveFillerValidationInstance::::deploy_builder(provider) + } + /**A [`ExclusiveFillerValidation`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ExclusiveFillerValidation`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ExclusiveFillerValidationInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ExclusiveFillerValidationInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ExclusiveFillerValidationInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ExclusiveFillerValidationInstance { + /**Creates a new wrapper around an on-chain [`ExclusiveFillerValidation`](self) contract instance. + +See the [wrapper's documentation](`ExclusiveFillerValidationInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ExclusiveFillerValidationInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ExclusiveFillerValidationInstance { + ExclusiveFillerValidationInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ExclusiveFillerValidationInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`validate`] function. + pub fn validate( + &self, + filler: alloy::sol_types::private::Address, + resolvedOrder: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &validateCall { + filler, + resolvedOrder, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ExclusiveFillerValidationInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/exclusivity_lib.rs b/crates/bindings-uniswapx/src/exclusivity_lib.rs deleted file mode 100644 index dba86d0..0000000 --- a/crates/bindings-uniswapx/src/exclusivity_lib.rs +++ /dev/null @@ -1,152 +0,0 @@ -pub use exclusivity_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod exclusivity_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("NoExclusiveOverride"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NoExclusiveOverride", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static EXCLUSIVITYLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 =8\x17`'K\xF8\xA4<\x909s\xC5\xCA\x8F\xF2\xA6\x9B\n\xF4OEL\xC7\xE3\xD9j0p\xF8m\xC7dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static EXCLUSIVITYLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 =8\x17`'K\xF8\xA4<\x909s\xC5\xCA\x8F\xF2\xA6\x9B\n\xF4OEL\xC7\xE3\xD9j0p\xF8m\xC7dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static EXCLUSIVITYLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct ExclusivityLib(::ethers::contract::Contract); - impl ::core::clone::Clone for ExclusivityLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ExclusivityLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ExclusivityLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ExclusivityLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ExclusivityLib)) - .field(&self.address()) - .finish() - } - } - impl ExclusivityLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - EXCLUSIVITYLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - EXCLUSIVITYLIB_ABI.clone(), - EXCLUSIVITYLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for ExclusivityLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `NoExclusiveOverride` with signature `NoExclusiveOverride()` and selector `0xb9ec1e96` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NoExclusiveOverride", abi = "NoExclusiveOverride()")] - pub struct NoExclusiveOverride; -} diff --git a/crates/bindings-uniswapx/src/exclusivitylib.rs b/crates/bindings-uniswapx/src/exclusivitylib.rs new file mode 100644 index 0000000..3c5c1b7 --- /dev/null +++ b/crates/bindings-uniswapx/src/exclusivitylib.rs @@ -0,0 +1,377 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ExclusivityLib { + error NoExclusiveOverride(); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "error", + "name": "NoExclusiveOverride", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ExclusivityLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073946f01b56f7f70e4df97a3519f93046e773674fd713ba2e06e47c92dbc3c1764736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 s\x94o\x01\xB5o\x7Fp\xE4\xDF\x97\xA3Q\x9F\x93\x04nw6t\xFDq;\xA2\xE0nG\xC9-\xBC<\x17dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073946f01b56f7f70e4df97a3519f93046e773674fd713ba2e06e47c92dbc3c1764736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 s\x94o\x01\xB5o\x7Fp\xE4\xDF\x97\xA3Q\x9F\x93\x04nw6t\xFDq;\xA2\xE0nG\xC9-\xBC<\x17dsolcC\0\x08\x18\x003", + ); + /**Custom error with signature `NoExclusiveOverride()` and selector `0xb9ec1e96`. +```solidity +error NoExclusiveOverride(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NoExclusiveOverride {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NoExclusiveOverride) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NoExclusiveOverride { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NoExclusiveOverride { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NoExclusiveOverride()"; + const SELECTOR: [u8; 4] = [185u8, 236u8, 30u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + ///Container for all the [`ExclusivityLib`](self) custom errors. + pub enum ExclusivityLibErrors { + NoExclusiveOverride(NoExclusiveOverride), + } + #[automatically_derived] + impl ExclusivityLibErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[185u8, 236u8, 30u8, 150u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ExclusivityLibErrors { + const NAME: &'static str = "ExclusivityLibErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::NoExclusiveOverride(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn NoExclusiveOverride( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ExclusivityLibErrors::NoExclusiveOverride) + } + NoExclusiveOverride + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::NoExclusiveOverride(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::NoExclusiveOverride(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ExclusivityLib`](self) contract instance. + +See the [wrapper's documentation](`ExclusivityLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ExclusivityLibInstance { + ExclusivityLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ExclusivityLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ExclusivityLibInstance::::deploy_builder(provider) + } + /**A [`ExclusivityLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ExclusivityLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ExclusivityLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ExclusivityLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ExclusivityLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ExclusivityLibInstance { + /**Creates a new wrapper around an on-chain [`ExclusivityLib`](self) contract instance. + +See the [wrapper's documentation](`ExclusivityLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ExclusivityLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ExclusivityLibInstance { + ExclusivityLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ExclusivityLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ExclusivityLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/fixed_point_math_lib.rs b/crates/bindings-uniswapx/src/fixed_point_math_lib.rs deleted file mode 100644 index c36a82c..0000000 --- a/crates/bindings-uniswapx/src/fixed_point_math_lib.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use fixed_point_math_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod fixed_point_math_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static FIXEDPOINTMATHLIB_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x89!\xEB\xA3x\x8D\x912PYZ2\x89P\x943\xFD\x1E{\xBA\xEFk\xFE!-\xB0\t#\xE8\x85\xFD\xC0dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static FIXEDPOINTMATHLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x89!\xEB\xA3x\x8D\x912PYZ2\x89P\x943\xFD\x1E{\xBA\xEFk\xFE!-\xB0\t#\xE8\x85\xFD\xC0dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static FIXEDPOINTMATHLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct FixedPointMathLib(::ethers::contract::Contract); - impl ::core::clone::Clone for FixedPointMathLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for FixedPointMathLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for FixedPointMathLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for FixedPointMathLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(FixedPointMathLib)) - .field(&self.address()) - .finish() - } - } - impl FixedPointMathLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - FIXEDPOINTMATHLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - FIXEDPOINTMATHLIB_ABI.clone(), - FIXEDPOINTMATHLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for FixedPointMathLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/fixedpointmathlib.rs b/crates/bindings-uniswapx/src/fixedpointmathlib.rs new file mode 100644 index 0000000..13502fb --- /dev/null +++ b/crates/bindings-uniswapx/src/fixedpointmathlib.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface FixedPointMathLib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod FixedPointMathLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202f137169cfb7ec8d0848db0525978fc7f73bfd9f7972e81e33eab5d46eabf1ac64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 /\x13qi\xCF\xB7\xEC\x8D\x08H\xDB\x05%\x97\x8F\xC7\xF7;\xFD\x9Fyr\xE8\x1E3\xEA\xB5\xD4n\xAB\xF1\xACdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202f137169cfb7ec8d0848db0525978fc7f73bfd9f7972e81e33eab5d46eabf1ac64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 /\x13qi\xCF\xB7\xEC\x8D\x08H\xDB\x05%\x97\x8F\xC7\xF7;\xFD\x9Fyr\xE8\x1E3\xEA\xB5\xD4n\xAB\xF1\xACdsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`FixedPointMathLib`](self) contract instance. + +See the [wrapper's documentation](`FixedPointMathLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> FixedPointMathLibInstance { + FixedPointMathLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + FixedPointMathLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + FixedPointMathLibInstance::::deploy_builder(provider) + } + /**A [`FixedPointMathLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`FixedPointMathLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct FixedPointMathLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for FixedPointMathLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("FixedPointMathLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > FixedPointMathLibInstance { + /**Creates a new wrapper around an on-chain [`FixedPointMathLib`](self) contract instance. + +See the [wrapper's documentation](`FixedPointMathLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl FixedPointMathLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> FixedPointMathLibInstance { + FixedPointMathLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > FixedPointMathLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > FixedPointMathLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/gas_snapshot.rs b/crates/bindings-uniswapx/src/gas_snapshot.rs deleted file mode 100644 index d0fb356..0000000 --- a/crates/bindings-uniswapx/src/gas_snapshot.rs +++ /dev/null @@ -1,420 +0,0 @@ -pub use gas_snapshot::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod gas_snapshot { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("CHECK_ENV_VAR"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("CHECK_ENV_VAR"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("IS_SCRIPT"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("SNAP_DIR"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("SNAP_DIR"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("GasMismatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("GasMismatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("oldGas"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newGas"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static GASSNAPSHOT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[P`@\x80Q\x80\x82\x01\x90\x91R`\x11\x81Rp.forge-snapshots/`x\x1B` \x82\x01Ra\0R\x90a\x01*V[`@\x80Q\x80\x82\x01\x82R`\x14\x81R\x7FFORGE_SNAPSHOT_CHECK\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x90Qc~\xD1\xEC}`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x91c~\xD1\xEC}\x91a\0\xBA\x91\x90`\x04\x01a\x02\xB6V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\0\xF3WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\0\xF0\x91\x81\x01\x90a\x02\xCFV[`\x01[a\x01\tW`\x0C\x80Tc\xFF\0\0\0\x19\x16\x90Ua\x04\x1FV[`\x0C\x80T\x91\x15\x15c\x01\0\0\0\x02c\xFF\0\0\0\x19\x90\x92\x16\x91\x90\x91\x17\x90Ua\x04\x1FV[`@\x80Q`\x03\x80\x82R`\x80\x82\x01\x90\x92R_\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x01AW\x90PP\x90P`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d6\xB5\xB24\xB9`\xD9\x1B\x81RP\x81_\x81Q\x81\x10a\x01\x88Wa\x01\x88a\x03\x02V[` \x02` \x01\x01\x81\x90RP`@Q\x80`@\x01`@R\x80`\x02\x81R` \x01a\x02\xD7`\xF4\x1B\x81RP\x81`\x01\x81Q\x81\x10a\x01\xC1Wa\x01\xC1a\x03\x02V[` \x02` \x01\x01\x81\x90RP\x81\x81`\x02\x81Q\x81\x10a\x01\xE0Wa\x01\xE0a\x03\x02V[` \x90\x81\x02\x91\x90\x91\x01\x01R`@Qc\x89\x16\x04g`\xE0\x1B\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\x89\x16\x04g\x90a\x02\"\x90\x84\x90`\x04\x01a\x03\x16V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x02=W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x02d\x91\x90\x81\x01\x90a\x03xV[PPPV[_[\x83\x81\x10\x15a\x02\x83W\x81\x81\x01Q\x83\x82\x01R` \x01a\x02kV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x02\xA2\x81` \x86\x01` \x86\x01a\x02iV[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R_a\x02\xC8` \x83\x01\x84a\x02\x8BV[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x02\xDFW_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x02\xC8W_\x80\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15a\x03kW`?\x19\x88\x86\x03\x01\x84Ra\x03Y\x85\x83Qa\x02\x8BV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x03=V[P\x92\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x03\x88W_\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x03\x9EW_\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x03\xB1W_\x80\xFD[\x81Q\x81\x81\x11\x15a\x03\xC3Wa\x03\xC3a\x02\xEEV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x03\xEBWa\x03\xEBa\x02\xEEV[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x04\x03W_\x80\xFD[a\x04\x14\x83` \x83\x01` \x88\x01a\x02iV[\x97\x96PPPPPPPV[a\x01\x94\x80a\x04,_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c8\t,L\x14a\0CW\x80c\x9B'\xAA.\x14a\0\x95W\x80c\xF8\xCC\xBFG\x14a\0\xD1W[_\x80\xFD[a\0\x7F`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FFORGE_SNAPSHOT_CHECK\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[`@Qa\0\x8C\x91\x90a\0\xF4V[`@Q\x80\x91\x03\x90\xF3[a\0\x7F`@Q\x80`@\x01`@R\x80`\x11\x81R` \x01\x7F.forge-snapshots/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[`\x0CTa\0\xE4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8CV[_` \x80\x83R\x83Q\x80` \x85\x01R_[\x81\x81\x10\x15a\x01 W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x04V[P_`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV\xFE\xA2dipfsX\"\x12 .\x8A\xFA\xE8\x83n\xAE\xE1\xB1\xA5I|6\x8E\xDF\xB2\x8F\xCDC\x06\x84\xB8\xE09Y8\xC8\xBF\xB7\xE7E\xA6dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static GASSNAPSHOT_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c8\t,L\x14a\0CW\x80c\x9B'\xAA.\x14a\0\x95W\x80c\xF8\xCC\xBFG\x14a\0\xD1W[_\x80\xFD[a\0\x7F`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FFORGE_SNAPSHOT_CHECK\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[`@Qa\0\x8C\x91\x90a\0\xF4V[`@Q\x80\x91\x03\x90\xF3[a\0\x7F`@Q\x80`@\x01`@R\x80`\x11\x81R` \x01\x7F.forge-snapshots/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x81V[`\x0CTa\0\xE4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8CV[_` \x80\x83R\x83Q\x80` \x85\x01R_[\x81\x81\x10\x15a\x01 W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x01\x04V[P_`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV\xFE\xA2dipfsX\"\x12 .\x8A\xFA\xE8\x83n\xAE\xE1\xB1\xA5I|6\x8E\xDF\xB2\x8F\xCDC\x06\x84\xB8\xE09Y8\xC8\xBF\xB7\xE7E\xA6dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static GASSNAPSHOT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct GasSnapshot(::ethers::contract::Contract); - impl ::core::clone::Clone for GasSnapshot { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for GasSnapshot { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for GasSnapshot { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for GasSnapshot { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(GasSnapshot)) - .field(&self.address()) - .finish() - } - } - impl GasSnapshot { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - GASSNAPSHOT_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - GASSNAPSHOT_ABI.clone(), - GASSNAPSHOT_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `CHECK_ENV_VAR` (0x38092c4c) function - pub fn check_env_var( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([56, 9, 44, 76], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `IS_SCRIPT` (0xf8ccbf47) function - pub fn is_script(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([248, 204, 191, 71], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `SNAP_DIR` (0x9b27aa2e) function - pub fn snap_dir( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([155, 39, 170, 46], ()) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for GasSnapshot { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `GasMismatch` with signature `GasMismatch(uint256,uint256)` and selector `0x4354d0b2` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "GasMismatch", abi = "GasMismatch(uint256,uint256)")] - pub struct GasMismatch { - pub old_gas: ::ethers::core::types::U256, - pub new_gas: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `CHECK_ENV_VAR` function with signature `CHECK_ENV_VAR()` and selector `0x38092c4c` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "CHECK_ENV_VAR", abi = "CHECK_ENV_VAR()")] - pub struct CheckEnvVarCall; - ///Container type for all input parameters for the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "IS_SCRIPT", abi = "IS_SCRIPT()")] - pub struct IsScriptCall; - ///Container type for all input parameters for the `SNAP_DIR` function with signature `SNAP_DIR()` and selector `0x9b27aa2e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "SNAP_DIR", abi = "SNAP_DIR()")] - pub struct SnapDirCall; - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum GasSnapshotCalls { - CheckEnvVar(CheckEnvVarCall), - IsScript(IsScriptCall), - SnapDir(SnapDirCall), - } - impl ::ethers::core::abi::AbiDecode for GasSnapshotCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::CheckEnvVar(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IsScript(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SnapDir(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for GasSnapshotCalls { - fn encode(self) -> Vec { - match self { - Self::CheckEnvVar(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IsScript(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SnapDir(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for GasSnapshotCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::CheckEnvVar(element) => ::core::fmt::Display::fmt(element, f), - Self::IsScript(element) => ::core::fmt::Display::fmt(element, f), - Self::SnapDir(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for GasSnapshotCalls { - fn from(value: CheckEnvVarCall) -> Self { - Self::CheckEnvVar(value) - } - } - impl ::core::convert::From for GasSnapshotCalls { - fn from(value: IsScriptCall) -> Self { - Self::IsScript(value) - } - } - impl ::core::convert::From for GasSnapshotCalls { - fn from(value: SnapDirCall) -> Self { - Self::SnapDir(value) - } - } - ///Container type for all return fields from the `CHECK_ENV_VAR` function with signature `CHECK_ENV_VAR()` and selector `0x38092c4c` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct CheckEnvVarReturn(pub ::std::string::String); - ///Container type for all return fields from the `IS_SCRIPT` function with signature `IS_SCRIPT()` and selector `0xf8ccbf47` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsScriptReturn(pub bool); - ///Container type for all return fields from the `SNAP_DIR` function with signature `SNAP_DIR()` and selector `0x9b27aa2e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SnapDirReturn(pub ::std::string::String); -} diff --git a/crates/bindings-uniswapx/src/i_allowance_transfer.rs b/crates/bindings-uniswapx/src/i_allowance_transfer.rs deleted file mode 100644 index c6deb59..0000000 --- a/crates/bindings-uniswapx/src/i_allowance_transfer.rs +++ /dev/null @@ -1,1484 +0,0 @@ -pub use i_allowance_transfer::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod i_allowance_transfer { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("allowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("allowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 160usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint160"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("expiration"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint48"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint48"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 160usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint160"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("expiration"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint48"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("invalidateNonces"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("invalidateNonces"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newNonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint48"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("lockdown"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("lockdown"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("approvals"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IAllowanceTransfer.TokenSpenderPair[]", - ), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("permitBatch"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(160usize), - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IAllowanceTransfer.PermitBatch", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("permitSingle"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(160usize), - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IAllowanceTransfer.PermitSingle", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("transferDetails"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(160usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IAllowanceTransfer.AllowanceTransferDetails[]", - ), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 160usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint160"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 160usize, - ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("expiration"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Lockdown"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Lockdown"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NonceInvalidation"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("NonceInvalidation"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newNonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("oldNonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Permit"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Permit"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 160usize, - ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("expiration"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("AllowanceExpired"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("AllowanceExpired"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("deadline"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ExcessiveInvalidation"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "ExcessiveInvalidation", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InsufficientAllowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InsufficientAllowance", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IALLOWANCETRANSFER_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - pub struct IAllowanceTransfer(::ethers::contract::Contract); - impl ::core::clone::Clone for IAllowanceTransfer { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IAllowanceTransfer { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IAllowanceTransfer { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IAllowanceTransfer { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IAllowanceTransfer)) - .field(&self.address()) - .finish() - } - } - impl IAllowanceTransfer { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IALLOWANCETRANSFER_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function - pub fn domain_separator( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([54, 68, 229, 21], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `allowance` (0x927da105) function - pub fn allowance( - &self, - user: ::ethers::core::types::Address, - token: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - (::ethers::core::types::U256, u64, u64), - > { - self.0 - .method_hash([146, 125, 161, 5], (user, token, spender)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `approve` (0x87517c45) function - pub fn approve( - &self, - token: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - expiration: u64, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([135, 81, 124, 69], (token, spender, amount, expiration)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `invalidateNonces` (0x65d9723c) function - pub fn invalidate_nonces( - &self, - token: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - new_nonce: u64, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([101, 217, 114, 60], (token, spender, new_nonce)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `lockdown` (0xcc53287f) function - pub fn lockdown( - &self, - approvals: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([204, 83, 40, 127], approvals) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit` (0x2a2d80d1) function - pub fn permit( - &self, - owner: ::ethers::core::types::Address, - permit_batch: PermitBatch, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([42, 45, 128, 209], (owner, permit_batch, signature)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit` (0x2b67b570) function - pub fn permit_with_owner_and_permit_single( - &self, - owner: ::ethers::core::types::Address, - permit_single: PermitSingle, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([43, 103, 181, 112], (owner, permit_single, signature)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x0d58b1db) function - pub fn transfer_from( - &self, - transfer_details: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 88, 177, 219], transfer_details) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x36c78516) function - pub fn transfer_from_with_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - token: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([54, 199, 133, 22], (from, to, amount, token)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `Lockdown` event - pub fn lockdown_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LockdownFilter, - > { - self.0.event() - } - ///Gets the contract's `NonceInvalidation` event - pub fn nonce_invalidation_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - NonceInvalidationFilter, - > { - self.0.event() - } - ///Gets the contract's `Permit` event - pub fn permit_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, PermitFilter> { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - IAllowanceTransferEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for IAllowanceTransfer { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `AllowanceExpired` with signature `AllowanceExpired(uint256)` and selector `0xd81b2f2e` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "AllowanceExpired", abi = "AllowanceExpired(uint256)")] - pub struct AllowanceExpired { - pub deadline: ::ethers::core::types::U256, - } - ///Custom Error type `ExcessiveInvalidation` with signature `ExcessiveInvalidation()` and selector `0x24d35a26` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "ExcessiveInvalidation", abi = "ExcessiveInvalidation()")] - pub struct ExcessiveInvalidation; - ///Custom Error type `InsufficientAllowance` with signature `InsufficientAllowance(uint256)` and selector `0xf96fb071` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InsufficientAllowance", abi = "InsufficientAllowance(uint256)")] - pub struct InsufficientAllowance { - pub amount: ::ethers::core::types::U256, - } - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IAllowanceTransferErrors { - AllowanceExpired(AllowanceExpired), - ExcessiveInvalidation(ExcessiveInvalidation), - InsufficientAllowance(InsufficientAllowance), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for IAllowanceTransferErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::AllowanceExpired(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExcessiveInvalidation(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InsufficientAllowance(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IAllowanceTransferErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::AllowanceExpired(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExcessiveInvalidation(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InsufficientAllowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for IAllowanceTransferErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for IAllowanceTransferErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AllowanceExpired(element) => ::core::fmt::Display::fmt(element, f), - Self::ExcessiveInvalidation(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InsufficientAllowance(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for IAllowanceTransferErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for IAllowanceTransferErrors { - fn from(value: AllowanceExpired) -> Self { - Self::AllowanceExpired(value) - } - } - impl ::core::convert::From for IAllowanceTransferErrors { - fn from(value: ExcessiveInvalidation) -> Self { - Self::ExcessiveInvalidation(value) - } - } - impl ::core::convert::From for IAllowanceTransferErrors { - fn from(value: InsufficientAllowance) -> Self { - Self::InsufficientAllowance(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "Approval", - abi = "Approval(address,address,address,uint160,uint48)" - )] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub expiration: u64, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Lockdown", abi = "Lockdown(address,address,address)")] - pub struct LockdownFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - pub token: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "NonceInvalidation", - abi = "NonceInvalidation(address,address,address,uint48,uint48)" - )] - pub struct NonceInvalidationFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub new_nonce: u64, - pub old_nonce: u64, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "Permit", - abi = "Permit(address,address,address,uint160,uint48,uint48)" - )] - pub struct PermitFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub expiration: u64, - pub nonce: u64, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IAllowanceTransferEvents { - ApprovalFilter(ApprovalFilter), - LockdownFilter(LockdownFilter), - NonceInvalidationFilter(NonceInvalidationFilter), - PermitFilter(PermitFilter), - } - impl ::ethers::contract::EthLogDecode for IAllowanceTransferEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(IAllowanceTransferEvents::ApprovalFilter(decoded)); - } - if let Ok(decoded) = LockdownFilter::decode_log(log) { - return Ok(IAllowanceTransferEvents::LockdownFilter(decoded)); - } - if let Ok(decoded) = NonceInvalidationFilter::decode_log(log) { - return Ok(IAllowanceTransferEvents::NonceInvalidationFilter(decoded)); - } - if let Ok(decoded) = PermitFilter::decode_log(log) { - return Ok(IAllowanceTransferEvents::PermitFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for IAllowanceTransferEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::LockdownFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::NonceInvalidationFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::PermitFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for IAllowanceTransferEvents { - fn from(value: ApprovalFilter) -> Self { - Self::ApprovalFilter(value) - } - } - impl ::core::convert::From for IAllowanceTransferEvents { - fn from(value: LockdownFilter) -> Self { - Self::LockdownFilter(value) - } - } - impl ::core::convert::From for IAllowanceTransferEvents { - fn from(value: NonceInvalidationFilter) -> Self { - Self::NonceInvalidationFilter(value) - } - } - impl ::core::convert::From for IAllowanceTransferEvents { - fn from(value: PermitFilter) -> Self { - Self::PermitFilter(value) - } - } - ///Container type for all input parameters for the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] - pub struct DomainSeparatorCall; - ///Container type for all input parameters for the `allowance` function with signature `allowance(address,address,address)` and selector `0x927da105` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "allowance", abi = "allowance(address,address,address)")] - pub struct AllowanceCall { - pub user: ::ethers::core::types::Address, - pub token: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `approve` function with signature `approve(address,address,uint160,uint48)` and selector `0x87517c45` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "approve", abi = "approve(address,address,uint160,uint48)")] - pub struct ApproveCall { - pub token: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub expiration: u64, - } - ///Container type for all input parameters for the `invalidateNonces` function with signature `invalidateNonces(address,address,uint48)` and selector `0x65d9723c` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "invalidateNonces", - abi = "invalidateNonces(address,address,uint48)" - )] - pub struct InvalidateNoncesCall { - pub token: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - pub new_nonce: u64, - } - ///Container type for all input parameters for the `lockdown` function with signature `lockdown((address,address)[])` and selector `0xcc53287f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "lockdown", abi = "lockdown((address,address)[])")] - pub struct LockdownCall { - pub approvals: ::std::vec::Vec, - } - ///Container type for all input parameters for the `permit` function with signature `permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)` and selector `0x2a2d80d1` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permit", - abi = "permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)" - )] - pub struct PermitCall { - pub owner: ::ethers::core::types::Address, - pub permit_batch: PermitBatch, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `permit` function with signature `permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)` and selector `0x2b67b570` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permit", - abi = "permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)" - )] - pub struct PermitWithOwnerAndPermitSingleCall { - pub owner: ::ethers::core::types::Address, - pub permit_single: PermitSingle, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom((address,address,uint160,address)[])` and selector `0x0d58b1db` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "transferFrom", - abi = "transferFrom((address,address,uint160,address)[])" - )] - pub struct TransferFromCall { - pub transfer_details: ::std::vec::Vec, - } - ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint160,address)` and selector `0x36c78516` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "transferFrom", - abi = "transferFrom(address,address,uint160,address)" - )] - pub struct TransferFromWithFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub token: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IAllowanceTransferCalls { - DomainSeparator(DomainSeparatorCall), - Allowance(AllowanceCall), - Approve(ApproveCall), - InvalidateNonces(InvalidateNoncesCall), - Lockdown(LockdownCall), - Permit(PermitCall), - PermitWithOwnerAndPermitSingle(PermitWithOwnerAndPermitSingleCall), - TransferFrom(TransferFromCall), - TransferFromWithFrom(TransferFromWithFromCall), - } - impl ::ethers::core::abi::AbiDecode for IAllowanceTransferCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DomainSeparator(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Allowance(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Approve(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidateNonces(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Lockdown(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Permit(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::PermitWithOwnerAndPermitSingle(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferFrom(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferFromWithFrom(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IAllowanceTransferCalls { - fn encode(self) -> Vec { - match self { - Self::DomainSeparator(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Allowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::InvalidateNonces(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Lockdown(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Permit(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::PermitWithOwnerAndPermitSingle(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferFromWithFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for IAllowanceTransferCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), - Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidateNonces(element) => ::core::fmt::Display::fmt(element, f), - Self::Lockdown(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit(element) => ::core::fmt::Display::fmt(element, f), - Self::PermitWithOwnerAndPermitSingle(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFromWithFrom(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for IAllowanceTransferCalls { - fn from(value: DomainSeparatorCall) -> Self { - Self::DomainSeparator(value) - } - } - impl ::core::convert::From for IAllowanceTransferCalls { - fn from(value: AllowanceCall) -> Self { - Self::Allowance(value) - } - } - impl ::core::convert::From for IAllowanceTransferCalls { - fn from(value: ApproveCall) -> Self { - Self::Approve(value) - } - } - impl ::core::convert::From for IAllowanceTransferCalls { - fn from(value: InvalidateNoncesCall) -> Self { - Self::InvalidateNonces(value) - } - } - impl ::core::convert::From for IAllowanceTransferCalls { - fn from(value: LockdownCall) -> Self { - Self::Lockdown(value) - } - } - impl ::core::convert::From for IAllowanceTransferCalls { - fn from(value: PermitCall) -> Self { - Self::Permit(value) - } - } - impl ::core::convert::From - for IAllowanceTransferCalls { - fn from(value: PermitWithOwnerAndPermitSingleCall) -> Self { - Self::PermitWithOwnerAndPermitSingle(value) - } - } - impl ::core::convert::From for IAllowanceTransferCalls { - fn from(value: TransferFromCall) -> Self { - Self::TransferFrom(value) - } - } - impl ::core::convert::From for IAllowanceTransferCalls { - fn from(value: TransferFromWithFromCall) -> Self { - Self::TransferFromWithFrom(value) - } - } - ///Container type for all return fields from the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct DomainSeparatorReturn(pub [u8; 32]); - ///Container type for all return fields from the `allowance` function with signature `allowance(address,address,address)` and selector `0x927da105` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct AllowanceReturn { - pub amount: ::ethers::core::types::U256, - pub expiration: u64, - pub nonce: u64, - } -} diff --git a/crates/bindings-uniswapx/src/i_arb_sys.rs b/crates/bindings-uniswapx/src/i_arb_sys.rs deleted file mode 100644 index a95fbfb..0000000 --- a/crates/bindings-uniswapx/src/i_arb_sys.rs +++ /dev/null @@ -1,132 +0,0 @@ -pub use i_arb_sys::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod i_arb_sys { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("arbBlockNumber"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("arbBlockNumber"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IARBSYS_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - pub struct IArbSys(::ethers::contract::Contract); - impl ::core::clone::Clone for IArbSys { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IArbSys { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IArbSys { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IArbSys { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IArbSys)).field(&self.address()).finish() - } - } - impl IArbSys { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IARBSYS_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `arbBlockNumber` (0xa3b1b31d) function - pub fn arb_block_number( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([163, 177, 179, 29], ()) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for IArbSys { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `arbBlockNumber` function with signature `arbBlockNumber()` and selector `0xa3b1b31d` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "arbBlockNumber", abi = "arbBlockNumber()")] - pub struct ArbBlockNumberCall; - ///Container type for all return fields from the `arbBlockNumber` function with signature `arbBlockNumber()` and selector `0xa3b1b31d` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ArbBlockNumberReturn(pub ::ethers::core::types::U256); -} diff --git a/crates/bindings-uniswapx/src/i_permit_2.rs b/crates/bindings-uniswapx/src/i_permit_2.rs deleted file mode 100644 index 3bfd956..0000000 --- a/crates/bindings-uniswapx/src/i_permit_2.rs +++ /dev/null @@ -1,2384 +0,0 @@ -pub use i_permit_2::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod i_permit_2 { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("allowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("allowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 160usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint160"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("expiration"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint48"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint48"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 160usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint160"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("expiration"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint48"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("invalidateNonces"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("invalidateNonces"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newNonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint48"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("invalidateUnorderedNonces"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "invalidateUnorderedNonces", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("wordPos"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("mask"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("lockdown"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("lockdown"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("approvals"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IAllowanceTransfer.TokenSpenderPair[]", - ), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("nonceBitmap"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("nonceBitmap"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("permitBatch"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(160usize), - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IAllowanceTransfer.PermitBatch", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("permitSingle"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(160usize), - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IAllowanceTransfer.PermitSingle", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permitTransferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permitTransferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("permit"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.PermitTransferFrom", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("transferDetails"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.SignatureTransferDetails", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permitTransferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("permit"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.PermitBatchTransferFrom", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("transferDetails"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.SignatureTransferDetails[]", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permitWitnessTransferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "permitWitnessTransferFrom", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("permit"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.PermitTransferFrom", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("transferDetails"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.SignatureTransferDetails", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("witness"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("witnessTypeString"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "permitWitnessTransferFrom", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("permit"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.PermitBatchTransferFrom", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("transferDetails"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.SignatureTransferDetails[]", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("witness"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("witnessTypeString"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("transferDetails"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(160usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IAllowanceTransfer.AllowanceTransferDetails[]", - ), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 160usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint160"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 160usize, - ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("expiration"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Lockdown"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Lockdown"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NonceInvalidation"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("NonceInvalidation"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newNonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("oldNonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Permit"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Permit"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 160usize, - ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("expiration"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("UnorderedNonceInvalidation"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "UnorderedNonceInvalidation", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("word"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("mask"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("AllowanceExpired"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("AllowanceExpired"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("deadline"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ExcessiveInvalidation"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "ExcessiveInvalidation", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InsufficientAllowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InsufficientAllowance", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidAmount"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidAmount"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("maxAmount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("LengthMismatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("LengthMismatch"), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IPERMIT2_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - pub struct IPermit2(::ethers::contract::Contract); - impl ::core::clone::Clone for IPermit2 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IPermit2 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IPermit2 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IPermit2 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IPermit2)).field(&self.address()).finish() - } - } - impl IPermit2 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IPERMIT2_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function - pub fn domain_separator( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([54, 68, 229, 21], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `allowance` (0x927da105) function - pub fn allowance( - &self, - user: ::ethers::core::types::Address, - token: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - (::ethers::core::types::U256, u64, u64), - > { - self.0 - .method_hash([146, 125, 161, 5], (user, token, spender)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `approve` (0x87517c45) function - pub fn approve( - &self, - token: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - expiration: u64, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([135, 81, 124, 69], (token, spender, amount, expiration)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `invalidateNonces` (0x65d9723c) function - pub fn invalidate_nonces( - &self, - token: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - new_nonce: u64, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([101, 217, 114, 60], (token, spender, new_nonce)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `invalidateUnorderedNonces` (0x3ff9dcb1) function - pub fn invalidate_unordered_nonces( - &self, - word_pos: ::ethers::core::types::U256, - mask: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 249, 220, 177], (word_pos, mask)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `lockdown` (0xcc53287f) function - pub fn lockdown( - &self, - approvals: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([204, 83, 40, 127], approvals) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `nonceBitmap` (0x4fe02b44) function - pub fn nonce_bitmap( - &self, - p0: ::ethers::core::types::Address, - p1: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([79, 224, 43, 68], (p0, p1)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit` (0x2a2d80d1) function - pub fn permit( - &self, - owner: ::ethers::core::types::Address, - permit_batch: PermitBatch, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([42, 45, 128, 209], (owner, permit_batch, signature)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit` (0x2b67b570) function - pub fn permit_with_owner_and_permit_single( - &self, - owner: ::ethers::core::types::Address, - permit_single: PermitSingle, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([43, 103, 181, 112], (owner, permit_single, signature)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permitTransferFrom` (0x30f28b7a) function - pub fn permit_transfer_from( - &self, - permit: PermitBatchTransferFrom, - transfer_details: SignatureTransferDetails, - owner: ::ethers::core::types::Address, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [48, 242, 139, 122], - (permit, transfer_details, owner, signature), - ) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permitTransferFrom` (0xedd9444b) function - pub fn permit_transfer_from_with_permit_and_transfer_details_and_owner_and_signature( - &self, - permit: PermitBatchTransferFrom, - transfer_details: ::std::vec::Vec, - owner: ::ethers::core::types::Address, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [237, 217, 68, 75], - (permit, transfer_details, owner, signature), - ) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permitWitnessTransferFrom` (0x137c29fe) function - pub fn permit_witness_transfer_from( - &self, - permit: PermitBatchTransferFrom, - transfer_details: SignatureTransferDetails, - owner: ::ethers::core::types::Address, - witness: [u8; 32], - witness_type_string: ::std::string::String, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [19, 124, 41, 254], - ( - permit, - transfer_details, - owner, - witness, - witness_type_string, - signature, - ), - ) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permitWitnessTransferFrom` (0xfe8ec1a7) function - pub fn permit_witness_transfer_from_with_permit_and_transfer_details_and_owner_and_witness_and_witness_type_string_and_signature( - &self, - permit: PermitBatchTransferFrom, - transfer_details: ::std::vec::Vec, - owner: ::ethers::core::types::Address, - witness: [u8; 32], - witness_type_string: ::std::string::String, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [254, 142, 193, 167], - ( - permit, - transfer_details, - owner, - witness, - witness_type_string, - signature, - ), - ) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x0d58b1db) function - pub fn transfer_from( - &self, - transfer_details: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 88, 177, 219], transfer_details) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x36c78516) function - pub fn transfer_from_with_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - token: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([54, 199, 133, 22], (from, to, amount, token)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `Lockdown` event - pub fn lockdown_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LockdownFilter, - > { - self.0.event() - } - ///Gets the contract's `NonceInvalidation` event - pub fn nonce_invalidation_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - NonceInvalidationFilter, - > { - self.0.event() - } - ///Gets the contract's `Permit` event - pub fn permit_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, PermitFilter> { - self.0.event() - } - ///Gets the contract's `UnorderedNonceInvalidation` event - pub fn unordered_nonce_invalidation_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - UnorderedNonceInvalidationFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - IPermit2Events, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for IPermit2 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `AllowanceExpired` with signature `AllowanceExpired(uint256)` and selector `0xd81b2f2e` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "AllowanceExpired", abi = "AllowanceExpired(uint256)")] - pub struct AllowanceExpired { - pub deadline: ::ethers::core::types::U256, - } - ///Custom Error type `ExcessiveInvalidation` with signature `ExcessiveInvalidation()` and selector `0x24d35a26` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "ExcessiveInvalidation", abi = "ExcessiveInvalidation()")] - pub struct ExcessiveInvalidation; - ///Custom Error type `InsufficientAllowance` with signature `InsufficientAllowance(uint256)` and selector `0xf96fb071` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InsufficientAllowance", abi = "InsufficientAllowance(uint256)")] - pub struct InsufficientAllowance { - pub amount: ::ethers::core::types::U256, - } - ///Custom Error type `InvalidAmount` with signature `InvalidAmount(uint256)` and selector `0x3728b83d` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidAmount", abi = "InvalidAmount(uint256)")] - pub struct InvalidAmount { - pub max_amount: ::ethers::core::types::U256, - } - ///Custom Error type `LengthMismatch` with signature `LengthMismatch()` and selector `0xff633a38` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "LengthMismatch", abi = "LengthMismatch()")] - pub struct LengthMismatch; - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IPermit2Errors { - AllowanceExpired(AllowanceExpired), - ExcessiveInvalidation(ExcessiveInvalidation), - InsufficientAllowance(InsufficientAllowance), - InvalidAmount(InvalidAmount), - LengthMismatch(LengthMismatch), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for IPermit2Errors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::AllowanceExpired(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExcessiveInvalidation(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InsufficientAllowance(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidAmount(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::LengthMismatch(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IPermit2Errors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::AllowanceExpired(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExcessiveInvalidation(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InsufficientAllowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidAmount(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::LengthMismatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for IPermit2Errors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for IPermit2Errors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AllowanceExpired(element) => ::core::fmt::Display::fmt(element, f), - Self::ExcessiveInvalidation(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InsufficientAllowance(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidAmount(element) => ::core::fmt::Display::fmt(element, f), - Self::LengthMismatch(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for IPermit2Errors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for IPermit2Errors { - fn from(value: AllowanceExpired) -> Self { - Self::AllowanceExpired(value) - } - } - impl ::core::convert::From for IPermit2Errors { - fn from(value: ExcessiveInvalidation) -> Self { - Self::ExcessiveInvalidation(value) - } - } - impl ::core::convert::From for IPermit2Errors { - fn from(value: InsufficientAllowance) -> Self { - Self::InsufficientAllowance(value) - } - } - impl ::core::convert::From for IPermit2Errors { - fn from(value: InvalidAmount) -> Self { - Self::InvalidAmount(value) - } - } - impl ::core::convert::From for IPermit2Errors { - fn from(value: LengthMismatch) -> Self { - Self::LengthMismatch(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "Approval", - abi = "Approval(address,address,address,uint160,uint48)" - )] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub expiration: u64, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Lockdown", abi = "Lockdown(address,address,address)")] - pub struct LockdownFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - pub token: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "NonceInvalidation", - abi = "NonceInvalidation(address,address,address,uint48,uint48)" - )] - pub struct NonceInvalidationFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub new_nonce: u64, - pub old_nonce: u64, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "Permit", - abi = "Permit(address,address,address,uint160,uint48,uint48)" - )] - pub struct PermitFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub expiration: u64, - pub nonce: u64, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "UnorderedNonceInvalidation", - abi = "UnorderedNonceInvalidation(address,uint256,uint256)" - )] - pub struct UnorderedNonceInvalidationFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - pub word: ::ethers::core::types::U256, - pub mask: ::ethers::core::types::U256, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IPermit2Events { - ApprovalFilter(ApprovalFilter), - LockdownFilter(LockdownFilter), - NonceInvalidationFilter(NonceInvalidationFilter), - PermitFilter(PermitFilter), - UnorderedNonceInvalidationFilter(UnorderedNonceInvalidationFilter), - } - impl ::ethers::contract::EthLogDecode for IPermit2Events { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(IPermit2Events::ApprovalFilter(decoded)); - } - if let Ok(decoded) = LockdownFilter::decode_log(log) { - return Ok(IPermit2Events::LockdownFilter(decoded)); - } - if let Ok(decoded) = NonceInvalidationFilter::decode_log(log) { - return Ok(IPermit2Events::NonceInvalidationFilter(decoded)); - } - if let Ok(decoded) = PermitFilter::decode_log(log) { - return Ok(IPermit2Events::PermitFilter(decoded)); - } - if let Ok(decoded) = UnorderedNonceInvalidationFilter::decode_log(log) { - return Ok(IPermit2Events::UnorderedNonceInvalidationFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for IPermit2Events { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::LockdownFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::NonceInvalidationFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::PermitFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::UnorderedNonceInvalidationFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for IPermit2Events { - fn from(value: ApprovalFilter) -> Self { - Self::ApprovalFilter(value) - } - } - impl ::core::convert::From for IPermit2Events { - fn from(value: LockdownFilter) -> Self { - Self::LockdownFilter(value) - } - } - impl ::core::convert::From for IPermit2Events { - fn from(value: NonceInvalidationFilter) -> Self { - Self::NonceInvalidationFilter(value) - } - } - impl ::core::convert::From for IPermit2Events { - fn from(value: PermitFilter) -> Self { - Self::PermitFilter(value) - } - } - impl ::core::convert::From for IPermit2Events { - fn from(value: UnorderedNonceInvalidationFilter) -> Self { - Self::UnorderedNonceInvalidationFilter(value) - } - } - ///Container type for all input parameters for the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] - pub struct DomainSeparatorCall; - ///Container type for all input parameters for the `allowance` function with signature `allowance(address,address,address)` and selector `0x927da105` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "allowance", abi = "allowance(address,address,address)")] - pub struct AllowanceCall { - pub user: ::ethers::core::types::Address, - pub token: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `approve` function with signature `approve(address,address,uint160,uint48)` and selector `0x87517c45` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "approve", abi = "approve(address,address,uint160,uint48)")] - pub struct ApproveCall { - pub token: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub expiration: u64, - } - ///Container type for all input parameters for the `invalidateNonces` function with signature `invalidateNonces(address,address,uint48)` and selector `0x65d9723c` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "invalidateNonces", - abi = "invalidateNonces(address,address,uint48)" - )] - pub struct InvalidateNoncesCall { - pub token: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - pub new_nonce: u64, - } - ///Container type for all input parameters for the `invalidateUnorderedNonces` function with signature `invalidateUnorderedNonces(uint256,uint256)` and selector `0x3ff9dcb1` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "invalidateUnorderedNonces", - abi = "invalidateUnorderedNonces(uint256,uint256)" - )] - pub struct InvalidateUnorderedNoncesCall { - pub word_pos: ::ethers::core::types::U256, - pub mask: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `lockdown` function with signature `lockdown((address,address)[])` and selector `0xcc53287f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "lockdown", abi = "lockdown((address,address)[])")] - pub struct LockdownCall { - pub approvals: ::std::vec::Vec, - } - ///Container type for all input parameters for the `nonceBitmap` function with signature `nonceBitmap(address,uint256)` and selector `0x4fe02b44` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "nonceBitmap", abi = "nonceBitmap(address,uint256)")] - pub struct NonceBitmapCall( - pub ::ethers::core::types::Address, - pub ::ethers::core::types::U256, - ); - ///Container type for all input parameters for the `permit` function with signature `permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)` and selector `0x2a2d80d1` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permit", - abi = "permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)" - )] - pub struct PermitCall { - pub owner: ::ethers::core::types::Address, - pub permit_batch: PermitBatch, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `permit` function with signature `permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)` and selector `0x2b67b570` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permit", - abi = "permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)" - )] - pub struct PermitWithOwnerAndPermitSingleCall { - pub owner: ::ethers::core::types::Address, - pub permit_single: PermitSingle, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `permitTransferFrom` function with signature `permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)` and selector `0x30f28b7a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permitTransferFrom", - abi = "permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)" - )] - pub struct PermitTransferFromCall { - pub permit: PermitBatchTransferFrom, - pub transfer_details: SignatureTransferDetails, - pub owner: ::ethers::core::types::Address, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `permitTransferFrom` function with signature `permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)` and selector `0xedd9444b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permitTransferFrom", - abi = "permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)" - )] - pub struct PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignatureCall { - pub permit: PermitBatchTransferFrom, - pub transfer_details: ::std::vec::Vec, - pub owner: ::ethers::core::types::Address, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `permitWitnessTransferFrom` function with signature `permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)` and selector `0x137c29fe` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permitWitnessTransferFrom", - abi = "permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)" - )] - pub struct PermitWitnessTransferFromCall { - pub permit: PermitBatchTransferFrom, - pub transfer_details: SignatureTransferDetails, - pub owner: ::ethers::core::types::Address, - pub witness: [u8; 32], - pub witness_type_string: ::std::string::String, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `permitWitnessTransferFrom` function with signature `permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)` and selector `0xfe8ec1a7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permitWitnessTransferFrom", - abi = "permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)" - )] - pub struct PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignatureCall { - pub permit: PermitBatchTransferFrom, - pub transfer_details: ::std::vec::Vec, - pub owner: ::ethers::core::types::Address, - pub witness: [u8; 32], - pub witness_type_string: ::std::string::String, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom((address,address,uint160,address)[])` and selector `0x0d58b1db` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "transferFrom", - abi = "transferFrom((address,address,uint160,address)[])" - )] - pub struct TransferFromCall { - pub transfer_details: ::std::vec::Vec, - } - ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint160,address)` and selector `0x36c78516` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "transferFrom", - abi = "transferFrom(address,address,uint160,address)" - )] - pub struct TransferFromWithFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub token: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IPermit2Calls { - DomainSeparator(DomainSeparatorCall), - Allowance(AllowanceCall), - Approve(ApproveCall), - InvalidateNonces(InvalidateNoncesCall), - InvalidateUnorderedNonces(InvalidateUnorderedNoncesCall), - Lockdown(LockdownCall), - NonceBitmap(NonceBitmapCall), - Permit(PermitCall), - PermitWithOwnerAndPermitSingle(PermitWithOwnerAndPermitSingleCall), - PermitTransferFrom(PermitTransferFromCall), - PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignature( - PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignatureCall, - ), - PermitWitnessTransferFrom(PermitWitnessTransferFromCall), - PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignature( - PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignatureCall, - ), - TransferFrom(TransferFromCall), - TransferFromWithFrom(TransferFromWithFromCall), - } - impl ::ethers::core::abi::AbiDecode for IPermit2Calls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DomainSeparator(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Allowance(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Approve(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidateNonces(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidateUnorderedNonces(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Lockdown(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NonceBitmap(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Permit(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::PermitWithOwnerAndPermitSingle(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::PermitTransferFrom(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok( - Self::PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignature( - decoded, - ), - ); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::PermitWitnessTransferFrom(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok( - Self::PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignature( - decoded, - ), - ); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferFrom(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferFromWithFrom(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IPermit2Calls { - fn encode(self) -> Vec { - match self { - Self::DomainSeparator(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Allowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::InvalidateNonces(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidateUnorderedNonces(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Lockdown(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NonceBitmap(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Permit(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::PermitWithOwnerAndPermitSingle(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::PermitTransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignature( - element, - ) => ::ethers::core::abi::AbiEncode::encode(element), - Self::PermitWitnessTransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignature( - element, - ) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferFromWithFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for IPermit2Calls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), - Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidateNonces(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidateUnorderedNonces(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Lockdown(element) => ::core::fmt::Display::fmt(element, f), - Self::NonceBitmap(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit(element) => ::core::fmt::Display::fmt(element, f), - Self::PermitWithOwnerAndPermitSingle(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::PermitTransferFrom(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignature( - element, - ) => ::core::fmt::Display::fmt(element, f), - Self::PermitWitnessTransferFrom(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignature( - element, - ) => ::core::fmt::Display::fmt(element, f), - Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFromWithFrom(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: DomainSeparatorCall) -> Self { - Self::DomainSeparator(value) - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: AllowanceCall) -> Self { - Self::Allowance(value) - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: ApproveCall) -> Self { - Self::Approve(value) - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: InvalidateNoncesCall) -> Self { - Self::InvalidateNonces(value) - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: InvalidateUnorderedNoncesCall) -> Self { - Self::InvalidateUnorderedNonces(value) - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: LockdownCall) -> Self { - Self::Lockdown(value) - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: NonceBitmapCall) -> Self { - Self::NonceBitmap(value) - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: PermitCall) -> Self { - Self::Permit(value) - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: PermitWithOwnerAndPermitSingleCall) -> Self { - Self::PermitWithOwnerAndPermitSingle(value) - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: PermitTransferFromCall) -> Self { - Self::PermitTransferFrom(value) - } - } - impl ::core::convert::From< - PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignatureCall, - > for IPermit2Calls { - fn from( - value: PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignatureCall, - ) -> Self { - Self::PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignature( - value, - ) - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: PermitWitnessTransferFromCall) -> Self { - Self::PermitWitnessTransferFrom(value) - } - } - impl ::core::convert::From< - PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignatureCall, - > for IPermit2Calls { - fn from( - value: PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignatureCall, - ) -> Self { - Self::PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignature( - value, - ) - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: TransferFromCall) -> Self { - Self::TransferFrom(value) - } - } - impl ::core::convert::From for IPermit2Calls { - fn from(value: TransferFromWithFromCall) -> Self { - Self::TransferFromWithFrom(value) - } - } - ///Container type for all return fields from the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct DomainSeparatorReturn(pub [u8; 32]); - ///Container type for all return fields from the `allowance` function with signature `allowance(address,address,address)` and selector `0x927da105` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct AllowanceReturn { - pub amount: ::ethers::core::types::U256, - pub expiration: u64, - pub nonce: u64, - } - ///Container type for all return fields from the `nonceBitmap` function with signature `nonceBitmap(address,uint256)` and selector `0x4fe02b44` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct NonceBitmapReturn(pub ::ethers::core::types::U256); -} diff --git a/crates/bindings-uniswapx/src/i_protocol_fee_controller.rs b/crates/bindings-uniswapx/src/i_protocol_fee_controller.rs deleted file mode 100644 index 3238761..0000000 --- a/crates/bindings-uniswapx/src/i_protocol_fee_controller.rs +++ /dev/null @@ -1,193 +0,0 @@ -pub use i_protocol_fee_controller::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod i_protocol_fee_controller { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("getFeeOutputs"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getFeeOutputs"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct OutputToken[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IPROTOCOLFEECONTROLLER_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - pub struct IProtocolFeeController(::ethers::contract::Contract); - impl ::core::clone::Clone for IProtocolFeeController { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IProtocolFeeController { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IProtocolFeeController { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IProtocolFeeController { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IProtocolFeeController)) - .field(&self.address()) - .finish() - } - } - impl IProtocolFeeController { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IPROTOCOLFEECONTROLLER_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `getFeeOutputs` (0x8aa6cf03) function - pub fn get_fee_outputs( - &self, - order: ResolvedOrder, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec, - > { - self.0 - .method_hash([138, 166, 207, 3], (order,)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for IProtocolFeeController { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `getFeeOutputs` function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "getFeeOutputs", - abi = "getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))" - )] - pub struct GetFeeOutputsCall { - pub order: ResolvedOrder, - } - ///Container type for all return fields from the `getFeeOutputs` function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct GetFeeOutputsReturn(pub ::std::vec::Vec); -} diff --git a/crates/bindings-uniswapx/src/i_reactor.rs b/crates/bindings-uniswapx/src/i_reactor.rs deleted file mode 100644 index 5998eb7..0000000 --- a/crates/bindings-uniswapx/src/i_reactor.rs +++ /dev/null @@ -1,409 +0,0 @@ -pub use i_reactor::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod i_reactor { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatchWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeBatchWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IREACTOR_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - pub struct IReactor(::ethers::contract::Contract); - impl ::core::clone::Clone for IReactor { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IReactor { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IReactor { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IReactor { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IReactor)).field(&self.address()).finish() - } - } - impl IReactor { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IREACTOR_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `execute` (0x3f62192e) function - pub fn execute( - &self, - order: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 98, 25, 46], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x0d7a16c3) function - pub fn execute_batch( - &self, - orders: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 122, 22, 195], orders) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatchWithCallback` (0x13fb72c7) function - pub fn execute_batch_with_callback( - &self, - orders: ::std::vec::Vec, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([19, 251, 114, 199], (orders, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeWithCallback` (0x0d335884) function - pub fn execute_with_callback( - &self, - order: SignedOrder, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 51, 88, 132], (order, callback_data)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for IReactor { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes))` and selector `0x3f62192e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes))")] - pub struct ExecuteCall { - pub order: SignedOrder, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((bytes,bytes)[])")] - pub struct ExecuteBatchCall { - pub orders: ::std::vec::Vec, - } - ///Container type for all input parameters for the `executeBatchWithCallback` function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeBatchWithCallback", - abi = "executeBatchWithCallback((bytes,bytes)[],bytes)" - )] - pub struct ExecuteBatchWithCallbackCall { - pub orders: ::std::vec::Vec, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `executeWithCallback` function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeWithCallback", - abi = "executeWithCallback((bytes,bytes),bytes)" - )] - pub struct ExecuteWithCallbackCall { - pub order: SignedOrder, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IReactorCalls { - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ExecuteBatchWithCallback(ExecuteBatchWithCallbackCall), - ExecuteWithCallback(ExecuteWithCallbackCall), - } - impl ::ethers::core::abi::AbiDecode for IReactorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatchWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteWithCallback(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IReactorCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteBatchWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for IReactorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatchWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ExecuteWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for IReactorCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for IReactorCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From for IReactorCalls { - fn from(value: ExecuteBatchWithCallbackCall) -> Self { - Self::ExecuteBatchWithCallback(value) - } - } - impl ::core::convert::From for IReactorCalls { - fn from(value: ExecuteWithCallbackCall) -> Self { - Self::ExecuteWithCallback(value) - } - } -} diff --git a/crates/bindings-uniswapx/src/i_reactor_callback.rs b/crates/bindings-uniswapx/src/i_reactor_callback.rs deleted file mode 100644 index 9b8f44a..0000000 --- a/crates/bindings-uniswapx/src/i_reactor_callback.rs +++ /dev/null @@ -1,171 +0,0 @@ -pub use i_reactor_callback::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod i_reactor_callback { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("reactorCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("reactorCallback"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("resolvedOrders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IREACTORCALLBACK_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - pub struct IReactorCallback(::ethers::contract::Contract); - impl ::core::clone::Clone for IReactorCallback { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IReactorCallback { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IReactorCallback { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IReactorCallback { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IReactorCallback)) - .field(&self.address()) - .finish() - } - } - impl IReactorCallback { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IREACTORCALLBACK_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `reactorCallback` (0x585da628) function - pub fn reactor_callback( - &self, - resolved_orders: ::std::vec::Vec, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([88, 93, 166, 40], (resolved_orders, callback_data)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for IReactorCallback { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `reactorCallback` function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "reactorCallback", - abi = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)" - )] - pub struct ReactorCallbackCall { - pub resolved_orders: ::std::vec::Vec, - pub callback_data: ::ethers::core::types::Bytes, - } -} diff --git a/crates/bindings-uniswapx/src/i_signature_transfer.rs b/crates/bindings-uniswapx/src/i_signature_transfer.rs deleted file mode 100644 index b212171..0000000 --- a/crates/bindings-uniswapx/src/i_signature_transfer.rs +++ /dev/null @@ -1,1144 +0,0 @@ -pub use i_signature_transfer::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod i_signature_transfer { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("invalidateUnorderedNonces"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "invalidateUnorderedNonces", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("wordPos"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("mask"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("nonceBitmap"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("nonceBitmap"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permitTransferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permitTransferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("permit"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.PermitTransferFrom", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("transferDetails"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.SignatureTransferDetails", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permitTransferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("permit"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.PermitBatchTransferFrom", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("transferDetails"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.SignatureTransferDetails[]", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permitWitnessTransferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "permitWitnessTransferFrom", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("permit"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.PermitTransferFrom", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("transferDetails"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.SignatureTransferDetails", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("witness"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("witnessTypeString"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "permitWitnessTransferFrom", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("permit"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.PermitBatchTransferFrom", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("transferDetails"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ISignatureTransfer.SignatureTransferDetails[]", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("witness"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("witnessTypeString"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("UnorderedNonceInvalidation"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "UnorderedNonceInvalidation", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("word"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("mask"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("InvalidAmount"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidAmount"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("maxAmount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("LengthMismatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("LengthMismatch"), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ISIGNATURETRANSFER_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - pub struct ISignatureTransfer(::ethers::contract::Contract); - impl ::core::clone::Clone for ISignatureTransfer { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ISignatureTransfer { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ISignatureTransfer { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ISignatureTransfer { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ISignatureTransfer)) - .field(&self.address()) - .finish() - } - } - impl ISignatureTransfer { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - ISIGNATURETRANSFER_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function - pub fn domain_separator( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([54, 68, 229, 21], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `invalidateUnorderedNonces` (0x3ff9dcb1) function - pub fn invalidate_unordered_nonces( - &self, - word_pos: ::ethers::core::types::U256, - mask: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 249, 220, 177], (word_pos, mask)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `nonceBitmap` (0x4fe02b44) function - pub fn nonce_bitmap( - &self, - p0: ::ethers::core::types::Address, - p1: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([79, 224, 43, 68], (p0, p1)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permitTransferFrom` (0x30f28b7a) function - pub fn permit_transfer_from( - &self, - permit: PermitBatchTransferFrom, - transfer_details: SignatureTransferDetails, - owner: ::ethers::core::types::Address, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [48, 242, 139, 122], - (permit, transfer_details, owner, signature), - ) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permitTransferFrom` (0xedd9444b) function - pub fn permit_transfer_from_with_permit_and_transfer_details_and_owner_and_signature( - &self, - permit: PermitBatchTransferFrom, - transfer_details: ::std::vec::Vec, - owner: ::ethers::core::types::Address, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [237, 217, 68, 75], - (permit, transfer_details, owner, signature), - ) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permitWitnessTransferFrom` (0x137c29fe) function - pub fn permit_witness_transfer_from( - &self, - permit: PermitBatchTransferFrom, - transfer_details: SignatureTransferDetails, - owner: ::ethers::core::types::Address, - witness: [u8; 32], - witness_type_string: ::std::string::String, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [19, 124, 41, 254], - ( - permit, - transfer_details, - owner, - witness, - witness_type_string, - signature, - ), - ) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permitWitnessTransferFrom` (0xfe8ec1a7) function - pub fn permit_witness_transfer_from_with_permit_and_transfer_details_and_owner_and_witness_and_witness_type_string_and_signature( - &self, - permit: PermitBatchTransferFrom, - transfer_details: ::std::vec::Vec, - owner: ::ethers::core::types::Address, - witness: [u8; 32], - witness_type_string: ::std::string::String, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [254, 142, 193, 167], - ( - permit, - transfer_details, - owner, - witness, - witness_type_string, - signature, - ), - ) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `UnorderedNonceInvalidation` event - pub fn unordered_nonce_invalidation_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - UnorderedNonceInvalidationFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - UnorderedNonceInvalidationFilter, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for ISignatureTransfer { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `InvalidAmount` with signature `InvalidAmount(uint256)` and selector `0x3728b83d` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidAmount", abi = "InvalidAmount(uint256)")] - pub struct InvalidAmount { - pub max_amount: ::ethers::core::types::U256, - } - ///Custom Error type `LengthMismatch` with signature `LengthMismatch()` and selector `0xff633a38` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "LengthMismatch", abi = "LengthMismatch()")] - pub struct LengthMismatch; - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum ISignatureTransferErrors { - InvalidAmount(InvalidAmount), - LengthMismatch(LengthMismatch), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for ISignatureTransferErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidAmount(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::LengthMismatch(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ISignatureTransferErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::InvalidAmount(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::LengthMismatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for ISignatureTransferErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for ISignatureTransferErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::InvalidAmount(element) => ::core::fmt::Display::fmt(element, f), - Self::LengthMismatch(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for ISignatureTransferErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for ISignatureTransferErrors { - fn from(value: InvalidAmount) -> Self { - Self::InvalidAmount(value) - } - } - impl ::core::convert::From for ISignatureTransferErrors { - fn from(value: LengthMismatch) -> Self { - Self::LengthMismatch(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "UnorderedNonceInvalidation", - abi = "UnorderedNonceInvalidation(address,uint256,uint256)" - )] - pub struct UnorderedNonceInvalidationFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - pub word: ::ethers::core::types::U256, - pub mask: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] - pub struct DomainSeparatorCall; - ///Container type for all input parameters for the `invalidateUnorderedNonces` function with signature `invalidateUnorderedNonces(uint256,uint256)` and selector `0x3ff9dcb1` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "invalidateUnorderedNonces", - abi = "invalidateUnorderedNonces(uint256,uint256)" - )] - pub struct InvalidateUnorderedNoncesCall { - pub word_pos: ::ethers::core::types::U256, - pub mask: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `nonceBitmap` function with signature `nonceBitmap(address,uint256)` and selector `0x4fe02b44` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "nonceBitmap", abi = "nonceBitmap(address,uint256)")] - pub struct NonceBitmapCall( - pub ::ethers::core::types::Address, - pub ::ethers::core::types::U256, - ); - ///Container type for all input parameters for the `permitTransferFrom` function with signature `permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)` and selector `0x30f28b7a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permitTransferFrom", - abi = "permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)" - )] - pub struct PermitTransferFromCall { - pub permit: PermitBatchTransferFrom, - pub transfer_details: SignatureTransferDetails, - pub owner: ::ethers::core::types::Address, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `permitTransferFrom` function with signature `permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)` and selector `0xedd9444b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permitTransferFrom", - abi = "permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)" - )] - pub struct PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignatureCall { - pub permit: PermitBatchTransferFrom, - pub transfer_details: ::std::vec::Vec, - pub owner: ::ethers::core::types::Address, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `permitWitnessTransferFrom` function with signature `permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)` and selector `0x137c29fe` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permitWitnessTransferFrom", - abi = "permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)" - )] - pub struct PermitWitnessTransferFromCall { - pub permit: PermitBatchTransferFrom, - pub transfer_details: SignatureTransferDetails, - pub owner: ::ethers::core::types::Address, - pub witness: [u8; 32], - pub witness_type_string: ::std::string::String, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `permitWitnessTransferFrom` function with signature `permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)` and selector `0xfe8ec1a7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permitWitnessTransferFrom", - abi = "permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)" - )] - pub struct PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignatureCall { - pub permit: PermitBatchTransferFrom, - pub transfer_details: ::std::vec::Vec, - pub owner: ::ethers::core::types::Address, - pub witness: [u8; 32], - pub witness_type_string: ::std::string::String, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum ISignatureTransferCalls { - DomainSeparator(DomainSeparatorCall), - InvalidateUnorderedNonces(InvalidateUnorderedNoncesCall), - NonceBitmap(NonceBitmapCall), - PermitTransferFrom(PermitTransferFromCall), - PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignature( - PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignatureCall, - ), - PermitWitnessTransferFrom(PermitWitnessTransferFromCall), - PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignature( - PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignatureCall, - ), - } - impl ::ethers::core::abi::AbiDecode for ISignatureTransferCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DomainSeparator(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidateUnorderedNonces(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NonceBitmap(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::PermitTransferFrom(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok( - Self::PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignature( - decoded, - ), - ); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::PermitWitnessTransferFrom(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok( - Self::PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignature( - decoded, - ), - ); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ISignatureTransferCalls { - fn encode(self) -> Vec { - match self { - Self::DomainSeparator(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidateUnorderedNonces(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NonceBitmap(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::PermitTransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignature( - element, - ) => ::ethers::core::abi::AbiEncode::encode(element), - Self::PermitWitnessTransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignature( - element, - ) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for ISignatureTransferCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidateUnorderedNonces(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::NonceBitmap(element) => ::core::fmt::Display::fmt(element, f), - Self::PermitTransferFrom(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignature( - element, - ) => ::core::fmt::Display::fmt(element, f), - Self::PermitWitnessTransferFrom(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignature( - element, - ) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for ISignatureTransferCalls { - fn from(value: DomainSeparatorCall) -> Self { - Self::DomainSeparator(value) - } - } - impl ::core::convert::From - for ISignatureTransferCalls { - fn from(value: InvalidateUnorderedNoncesCall) -> Self { - Self::InvalidateUnorderedNonces(value) - } - } - impl ::core::convert::From for ISignatureTransferCalls { - fn from(value: NonceBitmapCall) -> Self { - Self::NonceBitmap(value) - } - } - impl ::core::convert::From for ISignatureTransferCalls { - fn from(value: PermitTransferFromCall) -> Self { - Self::PermitTransferFrom(value) - } - } - impl ::core::convert::From< - PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignatureCall, - > for ISignatureTransferCalls { - fn from( - value: PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignatureCall, - ) -> Self { - Self::PermitTransferFromWithPermitAndTransferDetailsAndOwnerAndSignature( - value, - ) - } - } - impl ::core::convert::From - for ISignatureTransferCalls { - fn from(value: PermitWitnessTransferFromCall) -> Self { - Self::PermitWitnessTransferFrom(value) - } - } - impl ::core::convert::From< - PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignatureCall, - > for ISignatureTransferCalls { - fn from( - value: PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignatureCall, - ) -> Self { - Self::PermitWitnessTransferFromWithPermitAndTransferDetailsAndOwnerAndWitnessAndWitnessTypeStringAndSignature( - value, - ) - } - } - ///Container type for all return fields from the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct DomainSeparatorReturn(pub [u8; 32]); - ///Container type for all return fields from the `nonceBitmap` function with signature `nonceBitmap(address,uint256)` and selector `0x4fe02b44` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct NonceBitmapReturn(pub ::ethers::core::types::U256); -} diff --git a/crates/bindings-uniswapx/src/i_swap_router_02.rs b/crates/bindings-uniswapx/src/i_swap_router_02.rs deleted file mode 100644 index d70c882..0000000 --- a/crates/bindings-uniswapx/src/i_swap_router_02.rs +++ /dev/null @@ -1,699 +0,0 @@ -pub use i_swap_router_02::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod i_swap_router_02 { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("WETH9"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("WETH9"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("exactInput"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("exactInput"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("params"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ExactInputParams"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amountOut"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("exactInputSingle"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("exactInputSingle"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("params"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(24usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(160usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct ExactInputSingleParams", - ), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amountOut"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("multicall"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("multicall"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("deadline"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("data"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Bytes, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes[]"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("results"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Bytes, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("swapExactTokensForTokens"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "swapExactTokensForTokens", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amountIn"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amountOutMin"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("path"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Address, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amountOut"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("unwrapWETH9"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("unwrapWETH9"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amountMinimum"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ISWAPROUTER02_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - pub struct ISwapRouter02(::ethers::contract::Contract); - impl ::core::clone::Clone for ISwapRouter02 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ISwapRouter02 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ISwapRouter02 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ISwapRouter02 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ISwapRouter02)) - .field(&self.address()) - .finish() - } - } - impl ISwapRouter02 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - ISWAPROUTER02_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `WETH9` (0x4aa4a4fc) function - pub fn weth9( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([74, 164, 164, 252], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `exactInput` (0xb858183f) function - pub fn exact_input( - &self, - params: ExactInputParams, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([184, 88, 24, 63], (params,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `exactInputSingle` (0x04e45aaf) function - pub fn exact_input_single( - &self, - params: ExactInputSingleParams, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([4, 228, 90, 175], (params,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `multicall` (0x5ae401dc) function - pub fn multicall( - &self, - deadline: ::ethers::core::types::U256, - data: ::std::vec::Vec<::ethers::core::types::Bytes>, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec<::ethers::core::types::Bytes>, - > { - self.0 - .method_hash([90, 228, 1, 220], (deadline, data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `swapExactTokensForTokens` (0x472b43f3) function - pub fn swap_exact_tokens_for_tokens( - &self, - amount_in: ::ethers::core::types::U256, - amount_out_min: ::ethers::core::types::U256, - path: ::std::vec::Vec<::ethers::core::types::Address>, - to: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([71, 43, 67, 243], (amount_in, amount_out_min, path, to)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `unwrapWETH9` (0x49616997) function - pub fn unwrap_weth9( - &self, - amount_minimum: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([73, 97, 105, 151], amount_minimum) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for ISwapRouter02 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `WETH9` function with signature `WETH9()` and selector `0x4aa4a4fc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "WETH9", abi = "WETH9()")] - pub struct Weth9Call; - ///Container type for all input parameters for the `exactInput` function with signature `exactInput((bytes,address,uint256,uint256))` and selector `0xb858183f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "exactInput", abi = "exactInput((bytes,address,uint256,uint256))")] - pub struct ExactInputCall { - pub params: ExactInputParams, - } - ///Container type for all input parameters for the `exactInputSingle` function with signature `exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))` and selector `0x04e45aaf` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "exactInputSingle", - abi = "exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))" - )] - pub struct ExactInputSingleCall { - pub params: ExactInputSingleParams, - } - ///Container type for all input parameters for the `multicall` function with signature `multicall(uint256,bytes[])` and selector `0x5ae401dc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "multicall", abi = "multicall(uint256,bytes[])")] - pub struct MulticallCall { - pub deadline: ::ethers::core::types::U256, - pub data: ::std::vec::Vec<::ethers::core::types::Bytes>, - } - ///Container type for all input parameters for the `swapExactTokensForTokens` function with signature `swapExactTokensForTokens(uint256,uint256,address[],address)` and selector `0x472b43f3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "swapExactTokensForTokens", - abi = "swapExactTokensForTokens(uint256,uint256,address[],address)" - )] - pub struct SwapExactTokensForTokensCall { - pub amount_in: ::ethers::core::types::U256, - pub amount_out_min: ::ethers::core::types::U256, - pub path: ::std::vec::Vec<::ethers::core::types::Address>, - pub to: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `unwrapWETH9` function with signature `unwrapWETH9(uint256)` and selector `0x49616997` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "unwrapWETH9", abi = "unwrapWETH9(uint256)")] - pub struct UnwrapWETH9Call { - pub amount_minimum: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum ISwapRouter02Calls { - Weth9(Weth9Call), - ExactInput(ExactInputCall), - ExactInputSingle(ExactInputSingleCall), - Multicall(MulticallCall), - SwapExactTokensForTokens(SwapExactTokensForTokensCall), - UnwrapWETH9(UnwrapWETH9Call), - } - impl ::ethers::core::abi::AbiDecode for ISwapRouter02Calls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Weth9(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExactInput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExactInputSingle(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Multicall(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SwapExactTokensForTokens(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::UnwrapWETH9(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ISwapRouter02Calls { - fn encode(self) -> Vec { - match self { - Self::Weth9(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExactInput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExactInputSingle(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Multicall(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SwapExactTokensForTokens(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::UnwrapWETH9(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for ISwapRouter02Calls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Weth9(element) => ::core::fmt::Display::fmt(element, f), - Self::ExactInput(element) => ::core::fmt::Display::fmt(element, f), - Self::ExactInputSingle(element) => ::core::fmt::Display::fmt(element, f), - Self::Multicall(element) => ::core::fmt::Display::fmt(element, f), - Self::SwapExactTokensForTokens(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::UnwrapWETH9(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for ISwapRouter02Calls { - fn from(value: Weth9Call) -> Self { - Self::Weth9(value) - } - } - impl ::core::convert::From for ISwapRouter02Calls { - fn from(value: ExactInputCall) -> Self { - Self::ExactInput(value) - } - } - impl ::core::convert::From for ISwapRouter02Calls { - fn from(value: ExactInputSingleCall) -> Self { - Self::ExactInputSingle(value) - } - } - impl ::core::convert::From for ISwapRouter02Calls { - fn from(value: MulticallCall) -> Self { - Self::Multicall(value) - } - } - impl ::core::convert::From for ISwapRouter02Calls { - fn from(value: SwapExactTokensForTokensCall) -> Self { - Self::SwapExactTokensForTokens(value) - } - } - impl ::core::convert::From for ISwapRouter02Calls { - fn from(value: UnwrapWETH9Call) -> Self { - Self::UnwrapWETH9(value) - } - } - ///Container type for all return fields from the `WETH9` function with signature `WETH9()` and selector `0x4aa4a4fc` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct Weth9Return(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `exactInput` function with signature `exactInput((bytes,address,uint256,uint256))` and selector `0xb858183f` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ExactInputReturn { - pub amount_out: ::ethers::core::types::U256, - } - ///Container type for all return fields from the `exactInputSingle` function with signature `exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))` and selector `0x04e45aaf` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ExactInputSingleReturn { - pub amount_out: ::ethers::core::types::U256, - } - ///Container type for all return fields from the `multicall` function with signature `multicall(uint256,bytes[])` and selector `0x5ae401dc` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct MulticallReturn { - pub results: ::std::vec::Vec<::ethers::core::types::Bytes>, - } - ///Container type for all return fields from the `swapExactTokensForTokens` function with signature `swapExactTokensForTokens(uint256,uint256,address[],address)` and selector `0x472b43f3` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SwapExactTokensForTokensReturn { - pub amount_out: ::ethers::core::types::U256, - } - ///`ExactInputSingleParams(address,address,uint24,address,uint256,uint256,uint160)` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ExactInputSingleParams { - pub token_in: ::ethers::core::types::Address, - pub token_out: ::ethers::core::types::Address, - pub fee: u32, - pub recipient: ::ethers::core::types::Address, - pub amount_in: ::ethers::core::types::U256, - pub amount_out_minimum: ::ethers::core::types::U256, - pub sqrt_price_limit_x96: ::ethers::core::types::U256, - } -} diff --git a/crates/bindings-uniswapx/src/i_validation_callback.rs b/crates/bindings-uniswapx/src/i_validation_callback.rs deleted file mode 100644 index 5a202fc..0000000 --- a/crates/bindings-uniswapx/src/i_validation_callback.rs +++ /dev/null @@ -1,167 +0,0 @@ -pub use i_validation_callback::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod i_validation_callback { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("validate"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("validate"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("resolvedOrder"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IVALIDATIONCALLBACK_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - pub struct IValidationCallback(::ethers::contract::Contract); - impl ::core::clone::Clone for IValidationCallback { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IValidationCallback { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IValidationCallback { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IValidationCallback { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IValidationCallback)) - .field(&self.address()) - .finish() - } - } - impl IValidationCallback { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IVALIDATIONCALLBACK_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `validate` (0x6e84ba2b) function - pub fn validate( - &self, - filler: ::ethers::core::types::Address, - resolved_order: ResolvedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([110, 132, 186, 43], (filler, resolved_order)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for IValidationCallback { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `validate` function with signature `validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x6e84ba2b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "validate", - abi = "validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))" - )] - pub struct ValidateCall { - pub filler: ::ethers::core::types::Address, - pub resolved_order: ResolvedOrder, - } -} diff --git a/crates/bindings-uniswapx/src/iallowancetransfer.rs b/crates/bindings-uniswapx/src/iallowancetransfer.rs new file mode 100644 index 0000000..52ce8af --- /dev/null +++ b/crates/bindings-uniswapx/src/iallowancetransfer.rs @@ -0,0 +1,4880 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IAllowanceTransfer { + struct AllowanceTransferDetails { + address from; + address to; + uint160 amount; + address token; + } + struct PermitBatch { + PermitDetails[] details; + address spender; + uint256 sigDeadline; + } + struct PermitDetails { + address token; + uint160 amount; + uint48 expiration; + uint48 nonce; + } + struct PermitSingle { + PermitDetails details; + address spender; + uint256 sigDeadline; + } + struct TokenSpenderPair { + address token; + address spender; + } + + error AllowanceExpired(uint256 deadline); + error ExcessiveInvalidation(); + error InsufficientAllowance(uint256 amount); + + event Approval(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration); + event Lockdown(address indexed owner, address token, address spender); + event NonceInvalidation(address indexed owner, address indexed token, address indexed spender, uint48 newNonce, uint48 oldNonce); + event Permit(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration, uint48 nonce); + + function DOMAIN_SEPARATOR() external view returns (bytes32); + function allowance(address user, address token, address spender) external view returns (uint160 amount, uint48 expiration, uint48 nonce); + function approve(address token, address spender, uint160 amount, uint48 expiration) external; + function invalidateNonces(address token, address spender, uint48 newNonce) external; + function lockdown(TokenSpenderPair[] memory approvals) external; + function permit(address owner, PermitBatch memory permitBatch, bytes memory signature) external; + function permit(address owner, PermitSingle memory permitSingle, bytes memory signature) external; + function transferFrom(AllowanceTransferDetails[] memory transferDetails) external; + function transferFrom(address from, address to, uint160 amount, address token) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "nonce", + "type": "uint48", + "internalType": "uint48" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "internalType": "uint48" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "invalidateNonces", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "newNonce", + "type": "uint48", + "internalType": "uint48" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "lockdown", + "inputs": [ + { + "name": "approvals", + "type": "tuple[]", + "internalType": "struct IAllowanceTransfer.TokenSpenderPair[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "permitBatch", + "type": "tuple", + "internalType": "struct IAllowanceTransfer.PermitBatch", + "components": [ + { + "name": "details", + "type": "tuple[]", + "internalType": "struct IAllowanceTransfer.PermitDetails[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "nonce", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "sigDeadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "permitSingle", + "type": "tuple", + "internalType": "struct IAllowanceTransfer.PermitSingle", + "components": [ + { + "name": "details", + "type": "tuple", + "internalType": "struct IAllowanceTransfer.PermitDetails", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "nonce", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "sigDeadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "transferDetails", + "type": "tuple[]", + "internalType": "struct IAllowanceTransfer.AllowanceTransferDetails[]", + "components": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "indexed": false, + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Lockdown", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NonceInvalidation", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newNonce", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + }, + { + "name": "oldNonce", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "indexed": false, + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + }, + { + "name": "nonce", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "AllowanceExpired", + "inputs": [ + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ExcessiveInvalidation", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientAllowance", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IAllowanceTransfer { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity +struct AllowanceTransferDetails { address from; address to; uint160 amount; address token; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct AllowanceTransferDetails { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: as alloy::sol_types::SolType>::RustType, + pub token: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: AllowanceTransferDetails) -> Self { + (value.from, value.to, value.amount, value.token) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for AllowanceTransferDetails { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + amount: tuple.2, + token: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for AllowanceTransferDetails { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for AllowanceTransferDetails { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.token, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for AllowanceTransferDetails { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for AllowanceTransferDetails { + const NAME: &'static str = "AllowanceTransferDetails"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "AllowanceTransferDetails(address from,address to,uint160 amount,address token)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.from, + ) + .0, + ::eip712_data_word( + &self.to, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.token, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for AllowanceTransferDetails { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.from, + ) + + ::topic_preimage_length( + &rust.to, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.token, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.from, + out, + ); + ::encode_topic_preimage( + &rust.to, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct PermitBatch { PermitDetails[] details; address spender; uint256 sigDeadline; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PermitBatch { + pub details: alloy::sol_types::private::Vec< + ::RustType, + >, + pub spender: alloy::sol_types::private::Address, + pub sigDeadline: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitBatch) -> Self { + (value.details, value.spender, value.sigDeadline) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PermitBatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + details: tuple.0, + spender: tuple.1, + sigDeadline: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PermitBatch { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PermitBatch { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.details), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.sigDeadline), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PermitBatch { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PermitBatch { + const NAME: &'static str = "PermitBatch"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PermitBatch(PermitDetails[] details,address spender,uint256 sigDeadline)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.details) + .0, + ::eip712_data_word( + &self.spender, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.sigDeadline) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PermitBatch { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.details, + ) + + ::topic_preimage_length( + &rust.spender, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.sigDeadline, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.details, + out, + ); + ::encode_topic_preimage( + &rust.spender, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.sigDeadline, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct PermitDetails { address token; uint160 amount; uint48 expiration; uint48 nonce; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PermitDetails { + pub token: alloy::sol_types::private::Address, + pub amount: as alloy::sol_types::SolType>::RustType, + pub expiration: as alloy::sol_types::SolType>::RustType, + pub nonce: as alloy::sol_types::SolType>::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + alloy::sol_types::sol_data::Uint<48>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + as alloy::sol_types::SolType>::RustType, + as alloy::sol_types::SolType>::RustType, + as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitDetails) -> Self { + (value.token, value.amount, value.expiration, value.nonce) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PermitDetails { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + expiration: tuple.2, + nonce: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PermitDetails { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PermitDetails { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.expiration), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PermitDetails { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PermitDetails { + const NAME: &'static str = "PermitDetails"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiration) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PermitDetails { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiration, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiration, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct PermitSingle { PermitDetails details; address spender; uint256 sigDeadline; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PermitSingle { + pub details: ::RustType, + pub spender: alloy::sol_types::private::Address, + pub sigDeadline: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + PermitDetails, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitSingle) -> Self { + (value.details, value.spender, value.sigDeadline) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PermitSingle { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + details: tuple.0, + spender: tuple.1, + sigDeadline: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PermitSingle { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PermitSingle { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.details), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.sigDeadline), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PermitSingle { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PermitSingle { + const NAME: &'static str = "PermitSingle"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PermitSingle(PermitDetails details,address spender,uint256 sigDeadline)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.details, + ) + .0, + ::eip712_data_word( + &self.spender, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.sigDeadline) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PermitSingle { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.details, + ) + + ::topic_preimage_length( + &rust.spender, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.sigDeadline, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.details, + out, + ); + ::encode_topic_preimage( + &rust.spender, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.sigDeadline, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct TokenSpenderPair { address token; address spender; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct TokenSpenderPair { + pub token: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TokenSpenderPair) -> Self { + (value.token, value.spender) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TokenSpenderPair { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + spender: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for TokenSpenderPair { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for TokenSpenderPair { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + ::tokenize( + &self.spender, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for TokenSpenderPair { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for TokenSpenderPair { + const NAME: &'static str = "TokenSpenderPair"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "TokenSpenderPair(address token,address spender)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + ::eip712_data_word( + &self.spender, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for TokenSpenderPair { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + ::topic_preimage_length( + &rust.spender, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + ::encode_topic_preimage( + &rust.spender, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `AllowanceExpired(uint256)` and selector `0xd81b2f2e`. +```solidity +error AllowanceExpired(uint256 deadline); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct AllowanceExpired { + pub deadline: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: AllowanceExpired) -> Self { + (value.deadline,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for AllowanceExpired { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { deadline: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for AllowanceExpired { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "AllowanceExpired(uint256)"; + const SELECTOR: [u8; 4] = [216u8, 27u8, 47u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ) + } + } + }; + /**Custom error with signature `ExcessiveInvalidation()` and selector `0x24d35a26`. +```solidity +error ExcessiveInvalidation(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ExcessiveInvalidation {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ExcessiveInvalidation) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ExcessiveInvalidation { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ExcessiveInvalidation { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ExcessiveInvalidation()"; + const SELECTOR: [u8; 4] = [36u8, 211u8, 90u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InsufficientAllowance(uint256)` and selector `0xf96fb071`. +```solidity +error InsufficientAllowance(uint256 amount); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InsufficientAllowance { + pub amount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InsufficientAllowance) -> Self { + (value.amount,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InsufficientAllowance { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { amount: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InsufficientAllowance { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InsufficientAllowance(uint256)"; + const SELECTOR: [u8; 4] = [249u8, 111u8, 176u8, 113u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + } + }; + /**Event with signature `Approval(address,address,address,uint160,uint48)` and selector `0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b`. +```solidity +event Approval(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub expiration: as alloy::sol_types::SolType>::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Approval(address,address,address,uint160,uint48)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 218u8, + 159u8, + 167u8, + 193u8, + 176u8, + 4u8, + 2u8, + 193u8, + 125u8, + 1u8, + 97u8, + 178u8, + 73u8, + 177u8, + 171u8, + 139u8, + 190u8, + 192u8, + 71u8, + 197u8, + 165u8, + 34u8, + 7u8, + 185u8, + 193u8, + 18u8, + 222u8, + 255u8, + 216u8, + 23u8, + 3u8, + 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + token: topics.2, + spender: topics.3, + amount: data.0, + expiration: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.expiration), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.owner.clone(), + self.token.clone(), + self.spender.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.token, + ); + out[3usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Lockdown(address,address,address)` and selector `0x89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4`. +```solidity +event Lockdown(address indexed owner, address token, address spender); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Lockdown { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Lockdown { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Lockdown(address,address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 137u8, + 177u8, + 173u8, + 209u8, + 94u8, + 255u8, + 86u8, + 179u8, + 223u8, + 226u8, + 153u8, + 173u8, + 148u8, + 224u8, + 31u8, + 43u8, + 82u8, + 251u8, + 203u8, + 128u8, + 174u8, + 26u8, + 59u8, + 174u8, + 166u8, + 174u8, + 140u8, + 4u8, + 203u8, + 43u8, + 152u8, + 164u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + token: data.0, + spender: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.token, + ), + ::tokenize( + &self.spender, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.owner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Lockdown { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Lockdown> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Lockdown) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `NonceInvalidation(address,address,address,uint48,uint48)` and selector `0x55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f3`. +```solidity +event NonceInvalidation(address indexed owner, address indexed token, address indexed spender, uint48 newNonce, uint48 oldNonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct NonceInvalidation { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newNonce: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub oldNonce: as alloy::sol_types::SolType>::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for NonceInvalidation { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<48>, + alloy::sol_types::sol_data::Uint<48>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "NonceInvalidation(address,address,address,uint48,uint48)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 85u8, + 235u8, + 144u8, + 216u8, + 16u8, + 225u8, + 112u8, + 11u8, + 53u8, + 168u8, + 231u8, + 226u8, + 83u8, + 149u8, + 255u8, + 127u8, + 43u8, + 34u8, + 89u8, + 171u8, + 215u8, + 65u8, + 92u8, + 162u8, + 40u8, + 77u8, + 251u8, + 28u8, + 36u8, + 100u8, + 24u8, + 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + token: topics.2, + spender: topics.3, + newNonce: data.0, + oldNonce: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.newNonce), + as alloy_sol_types::SolType>::tokenize(&self.oldNonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.owner.clone(), + self.token.clone(), + self.spender.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.token, + ); + out[3usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for NonceInvalidation { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&NonceInvalidation> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &NonceInvalidation) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Permit(address,address,address,uint160,uint48,uint48)` and selector `0xc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec`. +```solidity +event Permit(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration, uint48 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Permit { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub expiration: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub nonce: as alloy::sol_types::SolType>::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Permit { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + alloy::sol_types::sol_data::Uint<48>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Permit(address,address,address,uint160,uint48,uint48)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 198u8, + 163u8, + 119u8, + 191u8, + 196u8, + 235u8, + 18u8, + 0u8, + 36u8, + 168u8, + 172u8, + 8u8, + 238u8, + 242u8, + 5u8, + 190u8, + 22u8, + 184u8, + 23u8, + 2u8, + 8u8, + 18u8, + 199u8, + 50u8, + 35u8, + 232u8, + 29u8, + 27u8, + 219u8, + 151u8, + 8u8, + 236u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + token: topics.2, + spender: topics.3, + amount: data.0, + expiration: data.1, + nonce: data.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.expiration), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.owner.clone(), + self.token.clone(), + self.spender.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.token, + ); + out[3usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Permit { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Permit> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Permit) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`. +```solidity +function DOMAIN_SEPARATOR() external view returns (bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORCall {} + ///Container type for the return parameters of the [`DOMAIN_SEPARATOR()`](DOMAIN_SEPARATORCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DOMAIN_SEPARATORCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DOMAIN_SEPARATORReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DOMAIN_SEPARATOR()"; + const SELECTOR: [u8; 4] = [54u8, 68u8, 229u8, 21u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `allowance(address,address,address)` and selector `0x927da105`. +```solidity +function allowance(address user, address token, address spender) external view returns (uint160 amount, uint48 expiration, uint48 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceCall { + pub user: alloy::sol_types::private::Address, + pub token: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`allowance(address,address,address)`](allowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceReturn { + pub amount: as alloy::sol_types::SolType>::RustType, + pub expiration: as alloy::sol_types::SolType>::RustType, + pub nonce: as alloy::sol_types::SolType>::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceCall) -> Self { + (value.user, value.token, value.spender) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + user: tuple.0, + token: tuple.1, + spender: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + alloy::sol_types::sol_data::Uint<48>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + as alloy::sol_types::SolType>::RustType, + as alloy::sol_types::SolType>::RustType, + as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceReturn) -> Self { + (value.amount, value.expiration, value.nonce) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amount: tuple.0, + expiration: tuple.1, + nonce: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = allowanceReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + alloy::sol_types::sol_data::Uint<48>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allowance(address,address,address)"; + const SELECTOR: [u8; 4] = [146u8, 125u8, 161u8, 5u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.user, + ), + ::tokenize( + &self.token, + ), + ::tokenize( + &self.spender, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `approve(address,address,uint160,uint48)` and selector `0x87517c45`. +```solidity +function approve(address token, address spender, uint160 amount, uint48 expiration) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub token: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + pub amount: as alloy::sol_types::SolType>::RustType, + pub expiration: as alloy::sol_types::SolType>::RustType, + } + ///Container type for the return parameters of the [`approve(address,address,uint160,uint48)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + as alloy::sol_types::SolType>::RustType, + as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.token, value.spender, value.amount, value.expiration) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + spender: tuple.1, + amount: tuple.2, + expiration: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,address,uint160,uint48)"; + const SELECTOR: [u8; 4] = [135u8, 81u8, 124u8, 69u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.expiration), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `invalidateNonces(address,address,uint48)` and selector `0x65d9723c`. +```solidity +function invalidateNonces(address token, address spender, uint48 newNonce) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct invalidateNoncesCall { + pub token: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + pub newNonce: as alloy::sol_types::SolType>::RustType, + } + ///Container type for the return parameters of the [`invalidateNonces(address,address,uint48)`](invalidateNoncesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct invalidateNoncesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<48>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: invalidateNoncesCall) -> Self { + (value.token, value.spender, value.newNonce) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for invalidateNoncesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + spender: tuple.1, + newNonce: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: invalidateNoncesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for invalidateNoncesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for invalidateNoncesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<48>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = invalidateNoncesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "invalidateNonces(address,address,uint48)"; + const SELECTOR: [u8; 4] = [101u8, 217u8, 114u8, 60u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.newNonce), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `lockdown((address,address)[])` and selector `0xcc53287f`. +```solidity +function lockdown(TokenSpenderPair[] memory approvals) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct lockdownCall { + pub approvals: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`lockdown((address,address)[])`](lockdownCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct lockdownReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lockdownCall) -> Self { + (value.approvals,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lockdownCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { approvals: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lockdownReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lockdownReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for lockdownCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = lockdownReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "lockdown((address,address)[])"; + const SELECTOR: [u8; 4] = [204u8, 83u8, 40u8, 127u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.approvals), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)` and selector `0x2a2d80d1`. +```solidity +function permit(address owner, PermitBatch memory permitBatch, bytes memory signature) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit_0Call { + pub owner: alloy::sol_types::private::Address, + pub permitBatch: ::RustType, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)`](permit_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + PermitBatch, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit_0Call) -> Self { + (value.owner, value.permitBatch, value.signature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + permitBatch: tuple.1, + signature: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + PermitBatch, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)"; + const SELECTOR: [u8; 4] = [42u8, 45u8, 128u8, 209u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.permitBatch, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)` and selector `0x2b67b570`. +```solidity +function permit(address owner, PermitSingle memory permitSingle, bytes memory signature) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit_1Call { + pub owner: alloy::sol_types::private::Address, + pub permitSingle: ::RustType, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)`](permit_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + PermitSingle, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit_1Call) -> Self { + (value.owner, value.permitSingle, value.signature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + permitSingle: tuple.1, + signature: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + PermitSingle, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)"; + const SELECTOR: [u8; 4] = [43u8, 103u8, 181u8, 112u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.permitSingle, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom((address,address,uint160,address)[])` and selector `0x0d58b1db`. +```solidity +function transferFrom(AllowanceTransferDetails[] memory transferDetails) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFrom_0Call { + pub transferDetails: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`transferFrom((address,address,uint160,address)[])`](transferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFrom_0Call) -> Self { + (value.transferDetails,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { transferDetails: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFrom_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom((address,address,uint160,address)[])"; + const SELECTOR: [u8; 4] = [13u8, 88u8, 177u8, 219u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.transferDetails), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint160,address)` and selector `0x36c78516`. +```solidity +function transferFrom(address from, address to, uint160 amount, address token) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFrom_1Call { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: as alloy::sol_types::SolType>::RustType, + pub token: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint160,address)`](transferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFrom_1Call) -> Self { + (value.from, value.to, value.amount, value.token) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + amount: tuple.2, + token: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFrom_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint160,address)"; + const SELECTOR: [u8; 4] = [54u8, 199u8, 133u8, 22u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.token, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IAllowanceTransfer`](self) function calls. + pub enum IAllowanceTransferCalls { + DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + allowance(allowanceCall), + approve(approveCall), + invalidateNonces(invalidateNoncesCall), + lockdown(lockdownCall), + permit_0(permit_0Call), + permit_1(permit_1Call), + transferFrom_0(transferFrom_0Call), + transferFrom_1(transferFrom_1Call), + } + #[automatically_derived] + impl IAllowanceTransferCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 88u8, 177u8, 219u8], + [42u8, 45u8, 128u8, 209u8], + [43u8, 103u8, 181u8, 112u8], + [54u8, 68u8, 229u8, 21u8], + [54u8, 199u8, 133u8, 22u8], + [101u8, 217u8, 114u8, 60u8], + [135u8, 81u8, 124u8, 69u8], + [146u8, 125u8, 161u8, 5u8], + [204u8, 83u8, 40u8, 127u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IAllowanceTransferCalls { + const NAME: &'static str = "IAllowanceTransferCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DOMAIN_SEPARATOR(_) => { + ::SELECTOR + } + Self::allowance(_) => { + ::SELECTOR + } + Self::approve(_) => ::SELECTOR, + Self::invalidateNonces(_) => { + ::SELECTOR + } + Self::lockdown(_) => ::SELECTOR, + Self::permit_0(_) => ::SELECTOR, + Self::permit_1(_) => ::SELECTOR, + Self::transferFrom_0(_) => { + ::SELECTOR + } + Self::transferFrom_1(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn transferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAllowanceTransferCalls::transferFrom_0) + } + transferFrom_0 + }, + { + fn permit_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAllowanceTransferCalls::permit_0) + } + permit_0 + }, + { + fn permit_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAllowanceTransferCalls::permit_1) + } + permit_1 + }, + { + fn DOMAIN_SEPARATOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAllowanceTransferCalls::DOMAIN_SEPARATOR) + } + DOMAIN_SEPARATOR + }, + { + fn transferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAllowanceTransferCalls::transferFrom_1) + } + transferFrom_1 + }, + { + fn invalidateNonces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAllowanceTransferCalls::invalidateNonces) + } + invalidateNonces + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAllowanceTransferCalls::approve) + } + approve + }, + { + fn allowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAllowanceTransferCalls::allowance) + } + allowance + }, + { + fn lockdown( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAllowanceTransferCalls::lockdown) + } + lockdown + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::allowance(inner) => { + ::abi_encoded_size(inner) + } + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::invalidateNonces(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::lockdown(inner) => { + ::abi_encoded_size(inner) + } + Self::permit_0(inner) => { + ::abi_encoded_size(inner) + } + Self::permit_1(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom_0(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferFrom_1(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::allowance(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::invalidateNonces(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::lockdown(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::permit_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::permit_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferFrom_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferFrom_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IAllowanceTransfer`](self) custom errors. + pub enum IAllowanceTransferErrors { + AllowanceExpired(AllowanceExpired), + ExcessiveInvalidation(ExcessiveInvalidation), + InsufficientAllowance(InsufficientAllowance), + } + #[automatically_derived] + impl IAllowanceTransferErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [36u8, 211u8, 90u8, 38u8], + [216u8, 27u8, 47u8, 46u8], + [249u8, 111u8, 176u8, 113u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IAllowanceTransferErrors { + const NAME: &'static str = "IAllowanceTransferErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::AllowanceExpired(_) => { + ::SELECTOR + } + Self::ExcessiveInvalidation(_) => { + ::SELECTOR + } + Self::InsufficientAllowance(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn ExcessiveInvalidation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAllowanceTransferErrors::ExcessiveInvalidation) + } + ExcessiveInvalidation + }, + { + fn AllowanceExpired( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAllowanceTransferErrors::AllowanceExpired) + } + AllowanceExpired + }, + { + fn InsufficientAllowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IAllowanceTransferErrors::InsufficientAllowance) + } + InsufficientAllowance + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::AllowanceExpired(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ExcessiveInvalidation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InsufficientAllowance(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::AllowanceExpired(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ExcessiveInvalidation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InsufficientAllowance(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IAllowanceTransfer`](self) events. + pub enum IAllowanceTransferEvents { + Approval(Approval), + Lockdown(Lockdown), + NonceInvalidation(NonceInvalidation), + Permit(Permit), + } + #[automatically_derived] + impl IAllowanceTransferEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 85u8, + 235u8, + 144u8, + 216u8, + 16u8, + 225u8, + 112u8, + 11u8, + 53u8, + 168u8, + 231u8, + 226u8, + 83u8, + 149u8, + 255u8, + 127u8, + 43u8, + 34u8, + 89u8, + 171u8, + 215u8, + 65u8, + 92u8, + 162u8, + 40u8, + 77u8, + 251u8, + 28u8, + 36u8, + 100u8, + 24u8, + 243u8, + ], + [ + 137u8, + 177u8, + 173u8, + 209u8, + 94u8, + 255u8, + 86u8, + 179u8, + 223u8, + 226u8, + 153u8, + 173u8, + 148u8, + 224u8, + 31u8, + 43u8, + 82u8, + 251u8, + 203u8, + 128u8, + 174u8, + 26u8, + 59u8, + 174u8, + 166u8, + 174u8, + 140u8, + 4u8, + 203u8, + 43u8, + 152u8, + 164u8, + ], + [ + 198u8, + 163u8, + 119u8, + 191u8, + 196u8, + 235u8, + 18u8, + 0u8, + 36u8, + 168u8, + 172u8, + 8u8, + 238u8, + 242u8, + 5u8, + 190u8, + 22u8, + 184u8, + 23u8, + 2u8, + 8u8, + 18u8, + 199u8, + 50u8, + 35u8, + 232u8, + 29u8, + 27u8, + 219u8, + 151u8, + 8u8, + 236u8, + ], + [ + 218u8, + 159u8, + 167u8, + 193u8, + 176u8, + 4u8, + 2u8, + 193u8, + 125u8, + 1u8, + 97u8, + 178u8, + 73u8, + 177u8, + 171u8, + 139u8, + 190u8, + 192u8, + 71u8, + 197u8, + 165u8, + 34u8, + 7u8, + 185u8, + 193u8, + 18u8, + 222u8, + 255u8, + 216u8, + 23u8, + 3u8, + 107u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IAllowanceTransferEvents { + const NAME: &'static str = "IAllowanceTransferEvents"; + const COUNT: usize = 4usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Lockdown) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::NonceInvalidation) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Permit) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IAllowanceTransferEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Lockdown(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::NonceInvalidation(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Permit(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Lockdown(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::NonceInvalidation(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Permit(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IAllowanceTransfer`](self) contract instance. + +See the [wrapper's documentation](`IAllowanceTransferInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IAllowanceTransferInstance { + IAllowanceTransferInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IAllowanceTransferInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IAllowanceTransferInstance::::deploy_builder(provider) + } + /**A [`IAllowanceTransfer`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IAllowanceTransfer`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IAllowanceTransferInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IAllowanceTransferInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IAllowanceTransferInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IAllowanceTransferInstance { + /**Creates a new wrapper around an on-chain [`IAllowanceTransfer`](self) contract instance. + +See the [wrapper's documentation](`IAllowanceTransferInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IAllowanceTransferInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IAllowanceTransferInstance { + IAllowanceTransferInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IAllowanceTransferInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`DOMAIN_SEPARATOR`] function. + pub fn DOMAIN_SEPARATOR( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DOMAIN_SEPARATORCall {}) + } + ///Creates a new call builder for the [`allowance`] function. + pub fn allowance( + &self, + user: alloy::sol_types::private::Address, + token: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &allowanceCall { + user, + token, + spender, + }, + ) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + token: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + amount: as alloy::sol_types::SolType>::RustType, + expiration: as alloy::sol_types::SolType>::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &approveCall { + token, + spender, + amount, + expiration, + }, + ) + } + ///Creates a new call builder for the [`invalidateNonces`] function. + pub fn invalidateNonces( + &self, + token: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + newNonce: as alloy::sol_types::SolType>::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &invalidateNoncesCall { + token, + spender, + newNonce, + }, + ) + } + ///Creates a new call builder for the [`lockdown`] function. + pub fn lockdown( + &self, + approvals: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&lockdownCall { approvals }) + } + ///Creates a new call builder for the [`permit_0`] function. + pub fn permit_0( + &self, + owner: alloy::sol_types::private::Address, + permitBatch: ::RustType, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permit_0Call { + owner, + permitBatch, + signature, + }, + ) + } + ///Creates a new call builder for the [`permit_1`] function. + pub fn permit_1( + &self, + owner: alloy::sol_types::private::Address, + permitSingle: ::RustType, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permit_1Call { + owner, + permitSingle, + signature, + }, + ) + } + ///Creates a new call builder for the [`transferFrom_0`] function. + pub fn transferFrom_0( + &self, + transferDetails: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &transferFrom_0Call { + transferDetails, + }, + ) + } + ///Creates a new call builder for the [`transferFrom_1`] function. + pub fn transferFrom_1( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + amount: as alloy::sol_types::SolType>::RustType, + token: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &transferFrom_1Call { + from, + to, + amount, + token, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IAllowanceTransferInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Lockdown`] event. + pub fn Lockdown_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`NonceInvalidation`] event. + pub fn NonceInvalidation_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Permit`] event. + pub fn Permit_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/iarbsys.rs b/crates/bindings-uniswapx/src/iarbsys.rs new file mode 100644 index 0000000..7fd69ff --- /dev/null +++ b/crates/bindings-uniswapx/src/iarbsys.rs @@ -0,0 +1,447 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IArbSys { + function arbBlockNumber() external view returns (uint256); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "arbBlockNumber", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IArbSys { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `arbBlockNumber()` and selector `0xa3b1b31d`. +```solidity +function arbBlockNumber() external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct arbBlockNumberCall {} + ///Container type for the return parameters of the [`arbBlockNumber()`](arbBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct arbBlockNumberReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: arbBlockNumberCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for arbBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: arbBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for arbBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for arbBlockNumberCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = arbBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "arbBlockNumber()"; + const SELECTOR: [u8; 4] = [163u8, 177u8, 179u8, 29u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IArbSys`](self) function calls. + pub enum IArbSysCalls { + arbBlockNumber(arbBlockNumberCall), + } + #[automatically_derived] + impl IArbSysCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[163u8, 177u8, 179u8, 29u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IArbSysCalls { + const NAME: &'static str = "IArbSysCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::arbBlockNumber(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn arbBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IArbSysCalls::arbBlockNumber) + } + arbBlockNumber + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::arbBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::arbBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IArbSys`](self) contract instance. + +See the [wrapper's documentation](`IArbSysInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IArbSysInstance { + IArbSysInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IArbSysInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IArbSysInstance::::deploy_builder(provider) + } + /**A [`IArbSys`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IArbSys`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IArbSysInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IArbSysInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IArbSysInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IArbSysInstance { + /**Creates a new wrapper around an on-chain [`IArbSys`](self) contract instance. + +See the [wrapper's documentation](`IArbSysInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IArbSysInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IArbSysInstance { + IArbSysInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IArbSysInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`arbBlockNumber`] function. + pub fn arbBlockNumber( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&arbBlockNumberCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IArbSysInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/ieip712.rs b/crates/bindings-uniswapx/src/ieip712.rs index fd6b379..463c069 100644 --- a/crates/bindings-uniswapx/src/ieip712.rs +++ b/crates/bindings-uniswapx/src/ieip712.rs @@ -1,132 +1,449 @@ -pub use ieip712::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod ieip712 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IEIP712_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, +/** + +Generated by the following Solidity interface... +```solidity +interface IEIP712 { + function DOMAIN_SEPARATOR() external view returns (bytes32); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IEIP712 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", ); - pub struct IEIP712(::ethers::contract::Contract); - impl ::core::clone::Clone for IEIP712 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`. +```solidity +function DOMAIN_SEPARATOR() external view returns (bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORCall {} + ///Container type for the return parameters of the [`DOMAIN_SEPARATOR()`](DOMAIN_SEPARATORCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, } - impl ::core::ops::Deref for IEIP712 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } } + #[automatically_derived] + impl alloy_sol_types::SolCall for DOMAIN_SEPARATORCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DOMAIN_SEPARATORReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DOMAIN_SEPARATOR()"; + const SELECTOR: [u8; 4] = [54u8, 68u8, 229u8, 21u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IEIP712`](self) function calls. + pub enum IEIP712Calls { + DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + } + #[automatically_derived] + impl IEIP712Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[54u8, 68u8, 229u8, 21u8]]; } - impl ::core::ops::DerefMut for IEIP712 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 + #[automatically_derived] + impl alloy_sol_types::SolInterface for IEIP712Calls { + const NAME: &'static str = "IEIP712Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DOMAIN_SEPARATOR(_) => { + ::SELECTOR + } + } } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn DOMAIN_SEPARATOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IEIP712Calls::DOMAIN_SEPARATOR) + } + DOMAIN_SEPARATOR + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IEIP712`](self) contract instance. + +See the [wrapper's documentation](`IEIP712Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IEIP712Instance { + IEIP712Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IEIP712Instance::::deploy(provider) } - impl ::core::fmt::Debug for IEIP712 { + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IEIP712Instance::::deploy_builder(provider) + } + /**A [`IEIP712`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IEIP712`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IEIP712Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IEIP712Instance { + #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IEIP712)).field(&self.address()).finish() + f.debug_tuple("IEIP712Instance").field(&self.address).finish() } } - impl IEIP712 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEIP712Instance { + /**Creates a new wrapper around an on-chain [`IEIP712`](self) contract instance. + +See the [wrapper's documentation](`IEIP712Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IEIP712_ABI.clone(), - client, - ), + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), ) } - ///Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function - pub fn domain_separator( + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IEIP712Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IEIP712Instance { + IEIP712Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEIP712Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([54, 68, 229, 21], ()) - .expect("method not found (this should never happen)") + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`DOMAIN_SEPARATOR`] function. + pub fn DOMAIN_SEPARATOR( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DOMAIN_SEPARATORCall {}) } } - impl From<::ethers::contract::Contract> - for IEIP712 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IEIP712Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) } } - ///Container type for all input parameters for the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] - pub struct DomainSeparatorCall; - ///Container type for all return fields from the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct DomainSeparatorReturn(pub [u8; 32]); } diff --git a/crates/bindings-uniswapx/src/ierc165.rs b/crates/bindings-uniswapx/src/ierc165.rs index 13e0228..d9583bc 100644 --- a/crates/bindings-uniswapx/src/ierc165.rs +++ b/crates/bindings-uniswapx/src/ierc165.rs @@ -1,143 +1,466 @@ -pub use ierc165::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod ierc165 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC165 { + function supportsInterface(bytes4 interfaceID) external view returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceID", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC165 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`. +```solidity +function supportsInterface(bytes4 interfaceID) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceCall { + pub interfaceID: alloy::sol_types::private::FixedBytes<4>, + } + ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceCall) -> Self { + (value.interfaceID,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for supportsInterfaceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { interfaceID: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for supportsInterfaceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for supportsInterfaceCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = supportsInterfaceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "supportsInterface(bytes4)"; + const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { ( - ::std::borrow::ToOwned::to_owned("supportsInterface"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("supportsInterface"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("interfaceID"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, + as alloy_sol_types::SolType>::tokenize(&self.interfaceID), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + ///Container for all the [`IERC165`](self) function calls. + pub enum IERC165Calls { + supportsInterface(supportsInterfaceCall), } - ///The parsed JSON ABI of the contract. - pub static IERC165_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - pub struct IERC165(::ethers::contract::Contract); - impl ::core::clone::Clone for IERC165 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } + #[automatically_derived] + impl IERC165Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[1u8, 255u8, 201u8, 167u8]]; } - impl ::core::ops::Deref for IERC165 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC165Calls { + const NAME: &'static str = "IERC165Calls"; + const MIN_DATA_LENGTH: usize = 32usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::supportsInterface(_) => { + ::SELECTOR + } + } } - } - impl ::core::ops::DerefMut for IERC165 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn supportsInterface( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC165Calls::supportsInterface) + } + supportsInterface + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::supportsInterface(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::supportsInterface(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC165`](self) contract instance. + +See the [wrapper's documentation](`IERC165Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC165Instance { + IERC165Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IERC165Instance::::deploy(provider) } - impl ::core::fmt::Debug for IERC165 { + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IERC165Instance::::deploy_builder(provider) + } + /**A [`IERC165`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IERC165`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC165Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC165Instance { + #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IERC165)).field(&self.address()).finish() + f.debug_tuple("IERC165Instance").field(&self.address).finish() } } - impl IERC165 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC165Instance { + /**Creates a new wrapper around an on-chain [`IERC165`](self) contract instance. + +See the [wrapper's documentation](`IERC165Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IERC165_ABI.clone(), - client, - ), + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), ) } - ///Calls the contract's `supportsInterface` (0x01ffc9a7) function - pub fn supports_interface( - &self, - interface_id: [u8; 4], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([1, 255, 201, 167], interface_id) - .expect("method not found (this should never happen)") + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider } } - impl From<::ethers::contract::Contract> - for IERC165 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + impl IERC165Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC165Instance { + IERC165Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } } } - ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] - pub struct SupportsInterfaceCall { - pub interface_id: [u8; 4], + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC165Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`supportsInterface`] function. + pub fn supportsInterface( + &self, + interfaceID: alloy::sol_types::private::FixedBytes<4>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &supportsInterfaceCall { + interfaceID, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC165Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } } - ///Container type for all return fields from the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SupportsInterfaceReturn(pub bool); } diff --git a/crates/bindings-uniswapx/src/ierc20.rs b/crates/bindings-uniswapx/src/ierc20.rs index 76378d6..3a3ac36 100644 --- a/crates/bindings-uniswapx/src/ierc20.rs +++ b/crates/bindings-uniswapx/src/ierc20.rs @@ -1,1027 +1,2337 @@ -pub use ierc20::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod ierc20 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("allowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("allowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("account"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("decimals"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("decimals"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("name"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("name"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("symbol"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("symbol"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("totalSupply"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("totalSupply"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IERC20_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, +/** + +Generated by the following Solidity interface... +```solidity +interface IERC20 { + event Approval(address indexed owner, address indexed spender, uint256 value); + event Transfer(address indexed from, address indexed to, uint256 value); + + function allowance(address owner, address spender) external view returns (uint256); + function approve(address spender, uint256 amount) external returns (bool); + function balanceOf(address account) external view returns (uint256); + function decimals() external view returns (uint8); + function name() external view returns (string memory); + function symbol() external view returns (string memory); + function totalSupply() external view returns (uint256); + function transfer(address to, uint256 amount) external returns (bool); + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC20 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", ); - pub struct IERC20(::ethers::contract::Contract); - impl ::core::clone::Clone for IERC20 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. +```solidity +event Approval(address indexed owner, address indexed spender, uint256 value); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::U256, } - impl ::core::ops::Deref for IERC20 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + spender: topics.2, + value: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.value), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.owner.clone(), self.spender.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } } - } - impl ::core::ops::DerefMut for IERC20 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } } - } - impl ::core::fmt::Debug for IERC20 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IERC20)).field(&self.address()).finish() + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. +```solidity +event Transfer(address indexed from, address indexed to, uint256 value); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::U256, } - impl IERC20 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IERC20_ABI.clone(), - client, - ), - ) + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + from: topics.1, + to: topics.2, + value: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.value), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.from.clone(), self.to.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.from, + ); + out[2usize] = ::encode_topic( + &self.to, + ); + Ok(()) + } } - ///Calls the contract's `allowance` (0xdd62ed3e) function - pub fn allowance( - &self, - owner: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([221, 98, 237, 62], (owner, spender)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `approve` (0x095ea7b3) function - pub fn approve( - &self, - spender: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (spender, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) function - pub fn balance_of( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 160, 130, 49], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `decimals` (0x313ce567) function - pub fn decimals(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([49, 60, 229, 103], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `name` (0x06fdde03) function - pub fn name( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([6, 253, 222, 3], ()) - .expect("method not found (this should never happen)") + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } } - ///Calls the contract's `symbol` (0x95d89b41) function - pub fn symbol( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([149, 216, 155, 65], ()) - .expect("method not found (this should never happen)") + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } } - ///Calls the contract's `totalSupply` (0x18160ddd) function - pub fn total_supply( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([24, 22, 13, 221], ()) - .expect("method not found (this should never happen)") + }; + /**Function with signature `allowance(address,address)` and selector `0xdd62ed3e`. +```solidity +function allowance(address owner, address spender) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceCall { + pub owner: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`allowance(address,address)`](allowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceCall) -> Self { + (value.owner, value.spender) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + spender: tuple.1, + } + } + } } - ///Calls the contract's `transfer` (0xa9059cbb) function - pub fn transfer( - &self, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([169, 5, 156, 187], (to, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x23b872dd) function - pub fn transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, amount)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, IERC20Events> { - self.0.event_with_filter(::core::default::Default::default()) + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } } - } - impl From<::ethers::contract::Contract> - for IERC20 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + #[automatically_derived] + impl alloy_sol_types::SolCall for allowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = allowanceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allowance(address,address)"; + const SELECTOR: [u8; 4] = [221u8, 98u8, 237u8, 62u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.spender, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. +```solidity +function approve(address spender, uint256 amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub spender: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.spender, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. +```solidity +function balanceOf(address account) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub account: alloy::sol_types::private::Address, } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IERC20Events { - ApprovalFilter(ApprovalFilter), - TransferFilter(TransferFilter), + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::U256, } - impl ::ethers::contract::EthLogDecode for IERC20Events { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(IERC20Events::ApprovalFilter(decoded)); + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(IERC20Events::TransferFilter(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value.account,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { account: tuple.0 } + } } - Err(::ethers::core::abi::Error::InvalidData) } - } - impl ::core::fmt::Display for IERC20Events { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } } } - } - impl ::core::convert::From for IERC20Events { - fn from(value: ApprovalFilter) -> Self { - Self::ApprovalFilter(value) + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.account, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + /**Function with signature `decimals()` and selector `0x313ce567`. +```solidity +function decimals() external view returns (uint8); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsCall {} + ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsReturn { + pub _0: u8, } - impl ::core::convert::From for IERC20Events { - fn from(value: TransferFilter) -> Self { - Self::TransferFilter(value) + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for decimalsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = decimalsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "decimals()"; + const SELECTOR: [u8; 4] = [49u8, 60u8, 229u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `name()` and selector `0x06fdde03`. +```solidity +function name() external view returns (string memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, } - ///Container type for all input parameters for the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "allowance", abi = "allowance(address,address)")] - pub struct AllowanceCall { - pub owner: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `decimals` function with signature `decimals()` and selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "decimals", abi = "decimals()")] - pub struct DecimalsCall; - ///Container type for all input parameters for the `name` function with signature `name()` and selector `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "name", abi = "name()")] - pub struct NameCall; - ///Container type for all input parameters for the `symbol` function with signature `symbol()` and selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "symbol", abi = "symbol()")] - pub struct SymbolCall; - ///Container type for all input parameters for the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "totalSupply", abi = "totalSupply()")] - pub struct TotalSupplyCall; - ///Container type for all input parameters for the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] - pub struct TransferCall { - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] - pub struct TransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IERC20Calls { - Allowance(AllowanceCall), - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - Decimals(DecimalsCall), - Name(NameCall), - Symbol(SymbolCall), - TotalSupply(TotalSupplyCall), - Transfer(TransferCall), - TransferFrom(TransferFromCall), - } - impl ::ethers::core::abi::AbiDecode for IERC20Calls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Allowance(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } } - if let Ok(decoded) = ::decode( - data, + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Approve(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nameCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nameReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "name()"; + const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () } - if let Ok(decoded) = ::decode( - data, + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `symbol()` and selector `0x95d89b41`. +```solidity +function symbol() external view returns (string memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::BalanceOf(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } } - if let Ok(decoded) = ::decode( - data, + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Decimals(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for symbolCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = symbolReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "symbol()"; + const SELECTOR: [u8; 4] = [149u8, 216u8, 155u8, 65u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `totalSupply()` and selector `0x18160ddd`. +```solidity +function totalSupply() external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Name(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } } - if let Ok(decoded) = ::decode( - data, + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSupplyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSupplyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalSupply()"; + const SELECTOR: [u8; 4] = [24u8, 22u8, 13u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transfer(address,uint256)` and selector `0xa9059cbb`. +```solidity +function transfer(address to, uint256 amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferCall { + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`transfer(address,uint256)`](transferCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Symbol(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferCall) -> Self { + (value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + to: tuple.0, + amount: tuple.1, + } + } } - if let Ok(decoded) = ::decode( - data, + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::TotalSupply(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferReturn) -> Self { + (value._0,) + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transfer(address,uint256)"; + const SELECTOR: [u8; 4] = [169u8, 5u8, 156u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. +```solidity +function transferFrom(address from, address to, uint256 amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Transfer(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value.from, value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + amount: tuple.2, + } + } } - if let Ok(decoded) = ::decode( - data, + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::TransferFrom(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } } - Err(::ethers::core::abi::Error::InvalidData.into()) } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC20`](self) function calls. + pub enum IERC20Calls { + allowance(allowanceCall), + approve(approveCall), + balanceOf(balanceOfCall), + decimals(decimalsCall), + name(nameCall), + symbol(symbolCall), + totalSupply(totalSupplyCall), + transfer(transferCall), + transferFrom(transferFromCall), } - impl ::ethers::core::abi::AbiEncode for IERC20Calls { - fn encode(self) -> Vec { + #[automatically_derived] + impl IERC20Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [6u8, 253u8, 222u8, 3u8], + [9u8, 94u8, 167u8, 179u8], + [24u8, 22u8, 13u8, 221u8], + [35u8, 184u8, 114u8, 221u8], + [49u8, 60u8, 229u8, 103u8], + [112u8, 160u8, 130u8, 49u8], + [149u8, 216u8, 155u8, 65u8], + [169u8, 5u8, 156u8, 187u8], + [221u8, 98u8, 237u8, 62u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC20Calls { + const NAME: &'static str = "IERC20Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::allowance(_) => { + ::SELECTOR + } + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => { + ::SELECTOR + } + Self::decimals(_) => ::SELECTOR, + Self::name(_) => ::SELECTOR, + Self::symbol(_) => ::SELECTOR, + Self::totalSupply(_) => { + ::SELECTOR + } + Self::transfer(_) => ::SELECTOR, + Self::transferFrom(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn name( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC20Calls::name) + } + name + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC20Calls::approve) + } + approve + }, + { + fn totalSupply( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC20Calls::totalSupply) + } + totalSupply + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC20Calls::transferFrom) + } + transferFrom + }, + { + fn decimals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC20Calls::decimals) + } + decimals + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC20Calls::balanceOf) + } + balanceOf + }, + { + fn symbol( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC20Calls::symbol) + } + symbol + }, + { + fn transfer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC20Calls::transfer) + } + transfer + }, + { + fn allowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC20Calls::allowance) + } + allowance + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { match self { - Self::Allowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::allowance(inner) => { + ::abi_encoded_size(inner) + } + Self::approve(inner) => { + ::abi_encoded_size(inner) } - Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) } - Self::Decimals(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::decimals(inner) => { + ::abi_encoded_size(inner) } - Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TotalSupply(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::name(inner) => { + ::abi_encoded_size(inner) } - Self::Transfer(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::symbol(inner) => { + ::abi_encoded_size(inner) } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::totalSupply(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transfer(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size( + inner, + ) } } } - } - impl ::core::fmt::Display for IERC20Calls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { match self { - Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), - Self::Decimals(element) => ::core::fmt::Display::fmt(element, f), - Self::Name(element) => ::core::fmt::Display::fmt(element, f), - Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), - Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), - Self::Transfer(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), + Self::allowance(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::decimals(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::name(inner) => { + ::abi_encode_raw(inner, out) + } + Self::symbol(inner) => { + ::abi_encode_raw(inner, out) + } + Self::totalSupply(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transfer(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferFrom(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } } } } - impl ::core::convert::From for IERC20Calls { - fn from(value: AllowanceCall) -> Self { - Self::Allowance(value) - } + ///Container for all the [`IERC20`](self) events. + pub enum IERC20Events { + Approval(Approval), + Transfer(Transfer), } - impl ::core::convert::From for IERC20Calls { - fn from(value: ApproveCall) -> Self { - Self::Approve(value) - } + #[automatically_derived] + impl IERC20Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ], + [ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ], + ]; } - impl ::core::convert::From for IERC20Calls { - fn from(value: BalanceOfCall) -> Self { - Self::BalanceOf(value) + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IERC20Events { + const NAME: &'static str = "IERC20Events"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Transfer) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } } } - impl ::core::convert::From for IERC20Calls { - fn from(value: DecimalsCall) -> Self { - Self::Decimals(value) + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IERC20Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } } } - impl ::core::convert::From for IERC20Calls { - fn from(value: NameCall) -> Self { - Self::Name(value) + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC20`](self) contract instance. + +See the [wrapper's documentation](`IERC20Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC20Instance { + IERC20Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IERC20Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IERC20Instance::::deploy_builder(provider) + } + /**A [`IERC20`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IERC20`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC20Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC20Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC20Instance").field(&self.address).finish() } } - impl ::core::convert::From for IERC20Calls { - fn from(value: SymbolCall) -> Self { - Self::Symbol(value) + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC20Instance { + /**Creates a new wrapper around an on-chain [`IERC20`](self) contract instance. + +See the [wrapper's documentation](`IERC20Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider } } - impl ::core::convert::From for IERC20Calls { - fn from(value: TotalSupplyCall) -> Self { - Self::TotalSupply(value) + impl IERC20Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC20Instance { + IERC20Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } } } - impl ::core::convert::From for IERC20Calls { - fn from(value: TransferCall) -> Self { - Self::Transfer(value) + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC20Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`allowance`] function. + pub fn allowance( + &self, + owner: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&allowanceCall { owner, spender }) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + spender: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { spender, amount }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + account: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { account }) + } + ///Creates a new call builder for the [`decimals`] function. + pub fn decimals( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&decimalsCall {}) + } + ///Creates a new call builder for the [`name`] function. + pub fn name(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&nameCall {}) + } + ///Creates a new call builder for the [`symbol`] function. + pub fn symbol(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&symbolCall {}) + } + ///Creates a new call builder for the [`totalSupply`] function. + pub fn totalSupply( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSupplyCall {}) + } + ///Creates a new call builder for the [`transfer`] function. + pub fn transfer( + &self, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferCall { to, amount }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &transferFromCall { + from, + to, + amount, + }, + ) } } - impl ::core::convert::From for IERC20Calls { - fn from(value: TransferFromCall) -> Self { - Self::TransferFrom(value) + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC20Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() } } - ///Container type for all return fields from the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct AllowanceReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ApproveReturn(pub bool); - ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct BalanceOfReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `decimals` function with signature `decimals()` and selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct DecimalsReturn(pub u8); - ///Container type for all return fields from the `name` function with signature `name()` and selector `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct NameReturn(pub ::std::string::String); - ///Container type for all return fields from the `symbol` function with signature `symbol()` and selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SymbolReturn(pub ::std::string::String); - ///Container type for all return fields from the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TransferReturn(pub bool); - ///Container type for all return fields from the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TransferFromReturn(pub bool); } diff --git a/crates/bindings-uniswapx/src/ierc5267.rs b/crates/bindings-uniswapx/src/ierc5267.rs index 046de09..87025f3 100644 --- a/crates/bindings-uniswapx/src/ierc5267.rs +++ b/crates/bindings-uniswapx/src/ierc5267.rs @@ -1,248 +1,735 @@ -pub use ierc5267::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod ierc5267 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("eip712Domain"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("eip712Domain"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("fields"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 1usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes1"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("name"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("version"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("chainId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("verifyingContract"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("salt"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("extensions"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("EIP712DomainChanged"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "EIP712DomainChanged", - ), - inputs: ::std::vec![], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IERC5267_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, +/** + +Generated by the following Solidity interface... +```solidity +interface IERC5267 { + event EIP712DomainChanged(); + + function eip712Domain() external view returns (bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "eip712Domain", + "inputs": [], + "outputs": [ + { + "name": "fields", + "type": "bytes1", + "internalType": "bytes1" + }, + { + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "version", + "type": "string", + "internalType": "string" + }, + { + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "verifyingContract", + "type": "address", + "internalType": "address" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "extensions", + "type": "uint256[]", + "internalType": "uint256[]" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "EIP712DomainChanged", + "inputs": [], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC5267 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", ); - pub struct IERC5267(::ethers::contract::Contract); - impl ::core::clone::Clone for IERC5267 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) + /**Event with signature `EIP712DomainChanged()` and selector `0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31`. +```solidity +event EIP712DomainChanged(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct EIP712DomainChanged {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for EIP712DomainChanged { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "EIP712DomainChanged()"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 10u8, + 99u8, + 135u8, + 201u8, + 234u8, + 54u8, + 40u8, + 184u8, + 138u8, + 99u8, + 59u8, + 180u8, + 243u8, + 177u8, + 81u8, + 119u8, + 15u8, + 112u8, + 8u8, + 81u8, + 23u8, + 161u8, + 95u8, + 155u8, + 243u8, + 120u8, + 124u8, + 218u8, + 83u8, + 241u8, + 61u8, + 49u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self {} + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for EIP712DomainChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&EIP712DomainChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &EIP712DomainChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `eip712Domain()` and selector `0x84b0196e`. +```solidity +function eip712Domain() external view returns (bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eip712DomainCall {} + ///Container type for the return parameters of the [`eip712Domain()`](eip712DomainCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct eip712DomainReturn { + pub fields: alloy::sol_types::private::FixedBytes<1>, + pub name: alloy::sol_types::private::String, + pub version: alloy::sol_types::private::String, + pub chainId: alloy::sol_types::private::U256, + pub verifyingContract: alloy::sol_types::private::Address, + pub salt: alloy::sol_types::private::FixedBytes<32>, + pub extensions: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eip712DomainCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eip712DomainCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<1>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::FixedBytes<1>, + alloy::sol_types::private::String, + alloy::sol_types::private::String, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: eip712DomainReturn) -> Self { + ( + value.fields, + value.name, + value.version, + value.chainId, + value.verifyingContract, + value.salt, + value.extensions, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for eip712DomainReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + fields: tuple.0, + name: tuple.1, + version: tuple.2, + chainId: tuple.3, + verifyingContract: tuple.4, + salt: tuple.5, + extensions: tuple.6, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for eip712DomainCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = eip712DomainReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::FixedBytes<1>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Array>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "eip712Domain()"; + const SELECTOR: [u8; 4] = [132u8, 176u8, 25u8, 110u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC5267`](self) function calls. + pub enum IERC5267Calls { + eip712Domain(eip712DomainCall), + } + #[automatically_derived] + impl IERC5267Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[132u8, 176u8, 25u8, 110u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC5267Calls { + const NAME: &'static str = "IERC5267Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::eip712Domain(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn eip712Domain( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC5267Calls::eip712Domain) + } + eip712Domain + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::eip712Domain(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::eip712Domain(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IERC5267`](self) events. + pub enum IERC5267Events { + EIP712DomainChanged(EIP712DomainChanged), } - impl ::core::ops::Deref for IERC5267 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 + #[automatically_derived] + impl IERC5267Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 10u8, + 99u8, + 135u8, + 201u8, + 234u8, + 54u8, + 40u8, + 184u8, + 138u8, + 99u8, + 59u8, + 180u8, + 243u8, + 177u8, + 81u8, + 119u8, + 15u8, + 112u8, + 8u8, + 81u8, + 23u8, + 161u8, + 95u8, + 155u8, + 243u8, + 120u8, + 124u8, + 218u8, + 83u8, + 241u8, + 61u8, + 49u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IERC5267Events { + const NAME: &'static str = "IERC5267Events"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::EIP712DomainChanged) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } } } - impl ::core::ops::DerefMut for IERC5267 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IERC5267Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::EIP712DomainChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::EIP712DomainChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC5267`](self) contract instance. + +See the [wrapper's documentation](`IERC5267Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC5267Instance { + IERC5267Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IERC5267Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IERC5267Instance::::deploy_builder(provider) + } + /**A [`IERC5267`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IERC5267`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC5267Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, } - impl ::core::fmt::Debug for IERC5267 { + #[automatically_derived] + impl ::core::fmt::Debug for IERC5267Instance { + #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IERC5267)).field(&self.address()).finish() + f.debug_tuple("IERC5267Instance").field(&self.address).finish() } } - impl IERC5267 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC5267Instance { + /**Creates a new wrapper around an on-chain [`IERC5267`](self) contract instance. + +See the [wrapper's documentation](`IERC5267Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IERC5267_ABI.clone(), - client, - ), + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), ) } - ///Calls the contract's `eip712Domain` (0x84b0196e) function - pub fn eip_712_domain( + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC5267Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC5267Instance { + IERC5267Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC5267Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`eip712Domain`] function. + pub fn eip712Domain( &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ( - [u8; 1], - ::std::string::String, - ::std::string::String, - ::ethers::core::types::U256, - ::ethers::core::types::Address, - [u8; 32], - ::std::vec::Vec<::ethers::core::types::U256>, - ), - > { - self.0 - .method_hash([132, 176, 25, 110], ()) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `EIP712DomainChanged` event - pub fn eip712_domain_changed_filter( + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&eip712DomainCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC5267Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - Eip712DomainChangedFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`EIP712DomainChanged`] event. + pub fn EIP712DomainChanged_filter( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - Eip712DomainChangedFilter, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for IERC5267 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "EIP712DomainChanged", abi = "EIP712DomainChanged()")] - pub struct Eip712DomainChangedFilter; - ///Container type for all input parameters for the `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "eip712Domain", abi = "eip712Domain()")] - pub struct Eip712DomainCall; - ///Container type for all return fields from the `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct Eip712DomainReturn { - pub fields: [u8; 1], - pub name: ::std::string::String, - pub version: ::std::string::String, - pub chain_id: ::ethers::core::types::U256, - pub verifying_contract: ::ethers::core::types::Address, - pub salt: [u8; 32], - pub extensions: ::std::vec::Vec<::ethers::core::types::U256>, + ) -> alloy_contract::Event { + self.event_filter::() + } } } diff --git a/crates/bindings-uniswapx/src/ierc721.rs b/crates/bindings-uniswapx/src/ierc721.rs index 6b79dd0..eaa2c19 100644 --- a/crates/bindings-uniswapx/src/ierc721.rs +++ b/crates/bindings-uniswapx/src/ierc721.rs @@ -1,1177 +1,2895 @@ -pub use ierc721::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod ierc721 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("getApproved"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getApproved"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("isApprovedForAll"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isApprovedForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ownerOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("ownerOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("data"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setApprovalForAll"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setApprovalForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("supportsInterface"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("supportsInterface"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("interfaceID"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC721 { + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + + function approve(address _approved, uint256 _tokenId) external payable; + function balanceOf(address _owner) external view returns (uint256); + function getApproved(uint256 _tokenId) external view returns (address); + function isApprovedForAll(address _owner, address _operator) external view returns (bool); + function ownerOf(uint256 _tokenId) external view returns (address); + function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; + function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; + function setApprovalForAll(address _operator, bool _approved) external; + function supportsInterface(bytes4 interfaceID) external view returns (bool); + function transferFrom(address _from, address _to, uint256 _tokenId) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "_approved", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApproved", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isApprovedForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ownerOf", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "setApprovalForAll", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceID", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ApprovalForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "_from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC721 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. +```solidity +event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _approved: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._approved.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._approved, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ApprovalForAll(address,address,bool)` and selector `0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31`. +```solidity +event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ApprovalForAll { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ApprovalForAll { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "ApprovalForAll(address,address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 23u8, + 48u8, + 126u8, + 171u8, + 57u8, + 171u8, + 97u8, + 7u8, + 232u8, + 137u8, + 152u8, + 69u8, + 173u8, + 61u8, + 89u8, + 189u8, + 150u8, + 83u8, + 242u8, + 0u8, + 242u8, + 32u8, + 146u8, + 4u8, + 137u8, + 202u8, + 43u8, + 89u8, + 55u8, + 105u8, + 108u8, + 49u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _operator: topics.2, + _approved: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { ( - ::std::borrow::ToOwned::to_owned("ApprovalForAll"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("ApprovalForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { ( - ::std::borrow::ToOwned::to_owned("Transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } } - } - ///The parsed JSON ABI of the contract. - pub static IERC721_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - pub struct IERC721(::ethers::contract::Contract); - impl ::core::clone::Clone for IERC721 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ApprovalForAll { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } } - } - impl ::core::ops::Deref for IERC721 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 + #[automatically_derived] + impl From<&ApprovalForAll> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ApprovalForAll) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. +```solidity +event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::U256, } - impl ::core::ops::DerefMut for IERC721 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _from: topics.1, + _to: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._from.clone(), + self._to.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._from, + ); + out[2usize] = ::encode_topic( + &self._to, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } } - } - impl ::core::fmt::Debug for IERC721 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IERC721)).field(&self.address()).finish() + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. +```solidity +function approve(address _approved, uint256 _tokenId) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub _approved: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, } - impl IERC721 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IERC721_ABI.clone(), - client, - ), - ) + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value._approved, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _approved: tuple.0, + _tokenId: tuple.1, + } + } + } } - ///Calls the contract's `approve` (0x095ea7b3) function - pub fn approve( - &self, - approved: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (approved, token_id)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) function - pub fn balance_of( - &self, - owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 160, 130, 49], owner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getApproved` (0x081812fc) function - pub fn get_approved( - &self, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([8, 24, 18, 252], token_id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isApprovedForAll` (0xe985e9c5) function - pub fn is_approved_for_all( - &self, - owner: ::ethers::core::types::Address, - operator: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([233, 133, 233, 197], (owner, operator)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `ownerOf` (0x6352211e) function - pub fn owner_of( - &self, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([99, 82, 33, 30], token_id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `safeTransferFrom` (0x42842e0e) function - pub fn safe_transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([66, 132, 46, 14], (from, to, token_id)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `safeTransferFrom` (0xb88d4fde) function - pub fn safe_transfer_from_with_from_and_to_and_data( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([184, 141, 79, 222], (from, to, token_id, data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setApprovalForAll` (0xa22cb465) function - pub fn set_approval_for_all( - &self, - operator: ::ethers::core::types::Address, - approved: bool, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([162, 44, 180, 101], (operator, approved)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `supportsInterface` (0x01ffc9a7) function - pub fn supports_interface( - &self, - interface_id: [u8; 4], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([1, 255, 201, 167], interface_id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x23b872dd) function - pub fn transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, token_id)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `ApprovalForAll` event - pub fn approval_for_all_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalForAllFilter, - > { - self.0.event() - } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, IERC721Events> { - self.0.event_with_filter(::core::default::Default::default()) + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } } - } - impl From<::ethers::contract::Contract> - for IERC721 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._approved, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. +```solidity +function balanceOf(address _owner) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub _owner: alloy::sol_types::private::Address, } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub approved: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token_id: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "ApprovalForAll", abi = "ApprovalForAll(address,address,bool)")] - pub struct ApprovalForAllFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub operator: ::ethers::core::types::Address, - pub approved: bool, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IERC721Events { - ApprovalFilter(ApprovalFilter), - ApprovalForAllFilter(ApprovalForAllFilter), - TransferFilter(TransferFilter), + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::U256, } - impl ::ethers::contract::EthLogDecode for IERC721Events { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(IERC721Events::ApprovalFilter(decoded)); + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ApprovalForAllFilter::decode_log(log) { - return Ok(IERC721Events::ApprovalForAllFilter(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value._owner,) + } } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(IERC721Events::TransferFilter(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _owner: tuple.0 } + } } - Err(::ethers::core::abi::Error::InvalidData) } - } - impl ::core::fmt::Display for IERC721Events { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::ApprovalForAllFilter(element) => { - ::core::fmt::Display::fmt(element, f) + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } } - Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), } } - } - impl ::core::convert::From for IERC721Events { - fn from(value: ApprovalFilter) -> Self { - Self::ApprovalFilter(value) + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + /**Function with signature `getApproved(uint256)` and selector `0x081812fc`. +```solidity +function getApproved(uint256 _tokenId) external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedCall { + pub _tokenId: alloy::sol_types::private::U256, } - impl ::core::convert::From for IERC721Events { - fn from(value: ApprovalForAllFilter) -> Self { - Self::ApprovalForAllFilter(value) - } + ///Container type for the return parameters of the [`getApproved(uint256)`](getApprovedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedReturn { + pub _0: alloy::sol_types::private::Address, } - impl ::core::convert::From for IERC721Events { - fn from(value: TransferFilter) -> Self { - Self::TransferFilter(value) + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedCall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApprovedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApprovedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApproved(uint256)"; + const SELECTOR: [u8; 4] = [8u8, 24u8, 18u8, 252u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5`. +```solidity +function isApprovedForAll(address _owner, address _operator) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllCall { + pub _owner: alloy::sol_types::private::Address, + pub _operator: alloy::sol_types::private::Address, } - ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub approved: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "getApproved", abi = "getApproved(uint256)")] - pub struct GetApprovedCall { - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "isApprovedForAll", abi = "isApprovedForAll(address,address)")] - pub struct IsApprovedForAllCall { - pub owner: ::ethers::core::types::Address, - pub operator: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "ownerOf", abi = "ownerOf(uint256)")] - pub struct OwnerOfCall { - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256)" - )] - pub struct SafeTransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256,bytes)" - )] - pub struct SafeTransferFromWithFromAndToAndDataCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `setApprovalForAll` function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setApprovalForAll", abi = "setApprovalForAll(address,bool)")] - pub struct SetApprovalForAllCall { - pub operator: ::ethers::core::types::Address, - pub approved: bool, + ///Container type for the return parameters of the [`isApprovedForAll(address,address)`](isApprovedForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllReturn { + pub _0: bool, } - ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] - pub struct SupportsInterfaceCall { - pub interface_id: [u8; 4], + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllCall) -> Self { + (value._owner, value._operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for isApprovedForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _owner: tuple.0, + _operator: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for isApprovedForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isApprovedForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isApprovedForAllReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isApprovedForAll(address,address)"; + const SELECTOR: [u8; 4] = [233u8, 133u8, 233u8, 197u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `ownerOf(uint256)` and selector `0x6352211e`. +```solidity +function ownerOf(uint256 _tokenId) external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfCall { + pub _tokenId: alloy::sol_types::private::U256, } - ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] - pub struct TransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, + ///Container type for the return parameters of the [`ownerOf(uint256)`](ownerOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfReturn { + pub _0: alloy::sol_types::private::Address, } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IERC721Calls { - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - GetApproved(GetApprovedCall), - IsApprovedForAll(IsApprovedForAllCall), - OwnerOf(OwnerOfCall), - SafeTransferFrom(SafeTransferFromCall), - SafeTransferFromWithFromAndToAndData(SafeTransferFromWithFromAndToAndDataCall), - SetApprovalForAll(SetApprovalForAllCall), - SupportsInterface(SupportsInterfaceCall), - TransferFrom(TransferFromCall), + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfCall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ownerOf(uint256)"; + const SELECTOR: [u8; 4] = [99u8, 82u8, 33u8, 30u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e`. +```solidity +function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Call { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, } - impl ::ethers::core::abi::AbiDecode for IERC721Calls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256)`](safeTransferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Approve(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Call) -> Self { + (value._from, value._to, value._tokenId) + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::BalanceOf(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [66u8, 132u8, 46u8, 14u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) } - if let Ok(decoded) = ::decode( - data, + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde`. +```solidity +function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Call { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, + pub data: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256,bytes)`](safeTransferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::GetApproved(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Call) -> Self { + (value._from, value._to, value._tokenId, value.data) + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + data: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::IsApprovedForAll(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256,bytes)"; + const SELECTOR: [u8; 4] = [184u8, 141u8, 79u8, 222u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ::tokenize( + &self.data, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) } - if let Ok(decoded) = ::decode( - data, + } + }; + /**Function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465`. +```solidity +function setApprovalForAll(address _operator, bool _approved) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllCall { + pub _operator: alloy::sol_types::private::Address, + pub _approved: bool, + } + ///Container type for the return parameters of the [`setApprovalForAll(address,bool)`](setApprovalForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::OwnerOf(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllCall) -> Self { + (value._operator, value._approved) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setApprovalForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _approved: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::SafeTransferFrom(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setApprovalForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setApprovalForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setApprovalForAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setApprovalForAll(address,bool)"; + const SELECTOR: [u8; 4] = [162u8, 44u8, 180u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() } - if let Ok(decoded) = ::decode( - data, + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`. +```solidity +function supportsInterface(bytes4 interfaceID) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceCall { + pub interfaceID: alloy::sol_types::private::FixedBytes<4>, + } + ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::SafeTransferFromWithFromAndToAndData(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceCall) -> Self { + (value.interfaceID,) + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for supportsInterfaceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { interfaceID: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::SetApprovalForAll(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceReturn) -> Self { + (value._0,) + } } - if let Ok(decoded) = ::decode( - data, + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for supportsInterfaceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for supportsInterfaceCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = supportsInterfaceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "supportsInterface(bytes4)"; + const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.interfaceID), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. +```solidity +function transferFrom(address _from, address _to, uint256 _tokenId) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::SupportsInterface(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value._from, value._to, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + } + } } - if let Ok(decoded) = ::decode( - data, + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::TransferFrom(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) } - Err(::ethers::core::abi::Error::InvalidData.into()) } + }; + ///Container for all the [`IERC721`](self) function calls. + pub enum IERC721Calls { + approve(approveCall), + balanceOf(balanceOfCall), + getApproved(getApprovedCall), + isApprovedForAll(isApprovedForAllCall), + ownerOf(ownerOfCall), + safeTransferFrom_0(safeTransferFrom_0Call), + safeTransferFrom_1(safeTransferFrom_1Call), + setApprovalForAll(setApprovalForAllCall), + supportsInterface(supportsInterfaceCall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl IERC721Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [1u8, 255u8, 201u8, 167u8], + [8u8, 24u8, 18u8, 252u8], + [9u8, 94u8, 167u8, 179u8], + [35u8, 184u8, 114u8, 221u8], + [66u8, 132u8, 46u8, 14u8], + [99u8, 82u8, 33u8, 30u8], + [112u8, 160u8, 130u8, 49u8], + [162u8, 44u8, 180u8, 101u8], + [184u8, 141u8, 79u8, 222u8], + [233u8, 133u8, 233u8, 197u8], + ]; } - impl ::ethers::core::abi::AbiEncode for IERC721Calls { - fn encode(self) -> Vec { + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC721Calls { + const NAME: &'static str = "IERC721Calls"; + const MIN_DATA_LENGTH: usize = 32usize; + const COUNT: usize = 10usize; + #[inline] + fn selector(&self) -> [u8; 4] { match self { - Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => { + ::SELECTOR } - Self::GetApproved(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::getApproved(_) => { + ::SELECTOR } - Self::IsApprovedForAll(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::isApprovedForAll(_) => { + ::SELECTOR } - Self::OwnerOf(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SafeTransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::ownerOf(_) => ::SELECTOR, + Self::safeTransferFrom_0(_) => { + ::SELECTOR } - Self::SafeTransferFromWithFromAndToAndData(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::safeTransferFrom_1(_) => { + ::SELECTOR } - Self::SetApprovalForAll(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::setApprovalForAll(_) => { + ::SELECTOR } - Self::SupportsInterface(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::supportsInterface(_) => { + ::SELECTOR } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::transferFrom(_) => { + ::SELECTOR } } } - } - impl ::core::fmt::Display for IERC721Calls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn supportsInterface( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721Calls::supportsInterface) + } + supportsInterface + }, + { + fn getApproved( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721Calls::getApproved) + } + getApproved + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721Calls::approve) + } + approve + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721Calls::transferFrom) + } + transferFrom + }, + { + fn safeTransferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721Calls::safeTransferFrom_0) + } + safeTransferFrom_0 + }, + { + fn ownerOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721Calls::ownerOf) + } + ownerOf + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721Calls::balanceOf) + } + balanceOf + }, + { + fn setApprovalForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721Calls::setApprovalForAll) + } + setApprovalForAll + }, + { + fn safeTransferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721Calls::safeTransferFrom_1) + } + safeTransferFrom_1 + }, + { + fn isApprovedForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721Calls::isApprovedForAll) + } + isApprovedForAll + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { match self { - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), - Self::GetApproved(element) => ::core::fmt::Display::fmt(element, f), - Self::IsApprovedForAll(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnerOf(element) => ::core::fmt::Display::fmt(element, f), - Self::SafeTransferFrom(element) => ::core::fmt::Display::fmt(element, f), - Self::SafeTransferFromWithFromAndToAndData(element) => { - ::core::fmt::Display::fmt(element, f) + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::getApproved(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::isApprovedForAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ownerOf(inner) => { + ::abi_encoded_size(inner) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setApprovalForAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::supportsInterface(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferFrom(inner) => { + ::abi_encoded_size( + inner, + ) } - Self::SetApprovalForAll(element) => ::core::fmt::Display::fmt(element, f), - Self::SupportsInterface(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), } } - } - impl ::core::convert::From for IERC721Calls { - fn from(value: ApproveCall) -> Self { - Self::Approve(value) + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApproved(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isApprovedForAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ownerOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setApprovalForAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::supportsInterface(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferFrom(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } } } - impl ::core::convert::From for IERC721Calls { - fn from(value: BalanceOfCall) -> Self { - Self::BalanceOf(value) - } + ///Container for all the [`IERC721`](self) events. + pub enum IERC721Events { + Approval(Approval), + ApprovalForAll(ApprovalForAll), + Transfer(Transfer), } - impl ::core::convert::From for IERC721Calls { - fn from(value: GetApprovedCall) -> Self { - Self::GetApproved(value) - } + #[automatically_derived] + impl IERC721Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 23u8, + 48u8, + 126u8, + 171u8, + 57u8, + 171u8, + 97u8, + 7u8, + 232u8, + 137u8, + 152u8, + 69u8, + 173u8, + 61u8, + 89u8, + 189u8, + 150u8, + 83u8, + 242u8, + 0u8, + 242u8, + 32u8, + 146u8, + 4u8, + 137u8, + 202u8, + 43u8, + 89u8, + 55u8, + 105u8, + 108u8, + 49u8, + ], + [ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ], + [ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ], + ]; } - impl ::core::convert::From for IERC721Calls { - fn from(value: IsApprovedForAllCall) -> Self { - Self::IsApprovedForAll(value) + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IERC721Events { + const NAME: &'static str = "IERC721Events"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ApprovalForAll) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Transfer) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } } } - impl ::core::convert::From for IERC721Calls { - fn from(value: OwnerOfCall) -> Self { - Self::OwnerOf(value) + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IERC721Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC721`](self) contract instance. + +See the [wrapper's documentation](`IERC721Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC721Instance { + IERC721Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IERC721Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IERC721Instance::::deploy_builder(provider) } - impl ::core::convert::From for IERC721Calls { - fn from(value: SafeTransferFromCall) -> Self { - Self::SafeTransferFrom(value) + /**A [`IERC721`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IERC721`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC721Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC721Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC721Instance").field(&self.address).finish() } } - impl ::core::convert::From - for IERC721Calls { - fn from(value: SafeTransferFromWithFromAndToAndDataCall) -> Self { - Self::SafeTransferFromWithFromAndToAndData(value) + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721Instance { + /**Creates a new wrapper around an on-chain [`IERC721`](self) contract instance. + +See the [wrapper's documentation](`IERC721Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider } } - impl ::core::convert::From for IERC721Calls { - fn from(value: SetApprovalForAllCall) -> Self { - Self::SetApprovalForAll(value) + impl IERC721Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC721Instance { + IERC721Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } } } - impl ::core::convert::From for IERC721Calls { - fn from(value: SupportsInterfaceCall) -> Self { - Self::SupportsInterface(value) + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + _approved: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { _approved, _tokenId }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + _owner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { _owner }) + } + ///Creates a new call builder for the [`getApproved`] function. + pub fn getApproved( + &self, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApprovedCall { _tokenId }) + } + ///Creates a new call builder for the [`isApprovedForAll`] function. + pub fn isApprovedForAll( + &self, + _owner: alloy::sol_types::private::Address, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &isApprovedForAllCall { + _owner, + _operator, + }, + ) + } + ///Creates a new call builder for the [`ownerOf`] function. + pub fn ownerOf( + &self, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerOfCall { _tokenId }) + } + ///Creates a new call builder for the [`safeTransferFrom_0`] function. + pub fn safeTransferFrom_0( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &safeTransferFrom_0Call { + _from, + _to, + _tokenId, + }, + ) + } + ///Creates a new call builder for the [`safeTransferFrom_1`] function. + pub fn safeTransferFrom_1( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &safeTransferFrom_1Call { + _from, + _to, + _tokenId, + data, + }, + ) + } + ///Creates a new call builder for the [`setApprovalForAll`] function. + pub fn setApprovalForAll( + &self, + _operator: alloy::sol_types::private::Address, + _approved: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setApprovalForAllCall { + _operator, + _approved, + }, + ) + } + ///Creates a new call builder for the [`supportsInterface`] function. + pub fn supportsInterface( + &self, + interfaceID: alloy::sol_types::private::FixedBytes<4>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &supportsInterfaceCall { + interfaceID, + }, + ) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &transferFromCall { + _from, + _to, + _tokenId, + }, + ) } } - impl ::core::convert::From for IERC721Calls { - fn from(value: TransferFromCall) -> Self { - Self::TransferFrom(value) + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ApprovalForAll`] event. + pub fn ApprovalForAll_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() } } - ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct BalanceOfReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct GetApprovedReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsApprovedForAllReturn(pub bool); - ///Container type for all return fields from the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerOfReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SupportsInterfaceReturn(pub bool); } diff --git a/crates/bindings-uniswapx/src/ierc721_enumerable.rs b/crates/bindings-uniswapx/src/ierc721_enumerable.rs deleted file mode 100644 index 77ee05f..0000000 --- a/crates/bindings-uniswapx/src/ierc721_enumerable.rs +++ /dev/null @@ -1,1447 +0,0 @@ -pub use ierc721_enumerable::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod ierc721_enumerable { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("getApproved"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getApproved"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("isApprovedForAll"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isApprovedForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ownerOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("ownerOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("data"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setApprovalForAll"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setApprovalForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("supportsInterface"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("supportsInterface"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("interfaceID"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("tokenByIndex"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("tokenByIndex"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_index"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("tokenOfOwnerByIndex"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "tokenOfOwnerByIndex", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_index"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("totalSupply"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("totalSupply"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ApprovalForAll"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("ApprovalForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IERC721ENUMERABLE_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - pub struct IERC721Enumerable(::ethers::contract::Contract); - impl ::core::clone::Clone for IERC721Enumerable { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IERC721Enumerable { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IERC721Enumerable { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IERC721Enumerable { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IERC721Enumerable)) - .field(&self.address()) - .finish() - } - } - impl IERC721Enumerable { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IERC721ENUMERABLE_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `approve` (0x095ea7b3) function - pub fn approve( - &self, - approved: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (approved, token_id)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) function - pub fn balance_of( - &self, - owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 160, 130, 49], owner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getApproved` (0x081812fc) function - pub fn get_approved( - &self, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([8, 24, 18, 252], token_id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isApprovedForAll` (0xe985e9c5) function - pub fn is_approved_for_all( - &self, - owner: ::ethers::core::types::Address, - operator: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([233, 133, 233, 197], (owner, operator)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `ownerOf` (0x6352211e) function - pub fn owner_of( - &self, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([99, 82, 33, 30], token_id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `safeTransferFrom` (0x42842e0e) function - pub fn safe_transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([66, 132, 46, 14], (from, to, token_id)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `safeTransferFrom` (0xb88d4fde) function - pub fn safe_transfer_from_with_from_and_to_and_data( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([184, 141, 79, 222], (from, to, token_id, data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setApprovalForAll` (0xa22cb465) function - pub fn set_approval_for_all( - &self, - operator: ::ethers::core::types::Address, - approved: bool, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([162, 44, 180, 101], (operator, approved)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `supportsInterface` (0x01ffc9a7) function - pub fn supports_interface( - &self, - interface_id: [u8; 4], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([1, 255, 201, 167], interface_id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `tokenByIndex` (0x4f6ccce7) function - pub fn token_by_index( - &self, - index: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([79, 108, 204, 231], index) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `tokenOfOwnerByIndex` (0x2f745c59) function - pub fn token_of_owner_by_index( - &self, - owner: ::ethers::core::types::Address, - index: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([47, 116, 92, 89], (owner, index)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `totalSupply` (0x18160ddd) function - pub fn total_supply( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([24, 22, 13, 221], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x23b872dd) function - pub fn transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, token_id)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `ApprovalForAll` event - pub fn approval_for_all_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalForAllFilter, - > { - self.0.event() - } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - IERC721EnumerableEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for IERC721Enumerable { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub approved: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token_id: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "ApprovalForAll", abi = "ApprovalForAll(address,address,bool)")] - pub struct ApprovalForAllFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub operator: ::ethers::core::types::Address, - pub approved: bool, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IERC721EnumerableEvents { - ApprovalFilter(ApprovalFilter), - ApprovalForAllFilter(ApprovalForAllFilter), - TransferFilter(TransferFilter), - } - impl ::ethers::contract::EthLogDecode for IERC721EnumerableEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(IERC721EnumerableEvents::ApprovalFilter(decoded)); - } - if let Ok(decoded) = ApprovalForAllFilter::decode_log(log) { - return Ok(IERC721EnumerableEvents::ApprovalForAllFilter(decoded)); - } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(IERC721EnumerableEvents::TransferFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for IERC721EnumerableEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::ApprovalForAllFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for IERC721EnumerableEvents { - fn from(value: ApprovalFilter) -> Self { - Self::ApprovalFilter(value) - } - } - impl ::core::convert::From for IERC721EnumerableEvents { - fn from(value: ApprovalForAllFilter) -> Self { - Self::ApprovalForAllFilter(value) - } - } - impl ::core::convert::From for IERC721EnumerableEvents { - fn from(value: TransferFilter) -> Self { - Self::TransferFilter(value) - } - } - ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub approved: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "getApproved", abi = "getApproved(uint256)")] - pub struct GetApprovedCall { - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "isApprovedForAll", abi = "isApprovedForAll(address,address)")] - pub struct IsApprovedForAllCall { - pub owner: ::ethers::core::types::Address, - pub operator: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "ownerOf", abi = "ownerOf(uint256)")] - pub struct OwnerOfCall { - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256)" - )] - pub struct SafeTransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256,bytes)" - )] - pub struct SafeTransferFromWithFromAndToAndDataCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `setApprovalForAll` function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setApprovalForAll", abi = "setApprovalForAll(address,bool)")] - pub struct SetApprovalForAllCall { - pub operator: ::ethers::core::types::Address, - pub approved: bool, - } - ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] - pub struct SupportsInterfaceCall { - pub interface_id: [u8; 4], - } - ///Container type for all input parameters for the `tokenByIndex` function with signature `tokenByIndex(uint256)` and selector `0x4f6ccce7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "tokenByIndex", abi = "tokenByIndex(uint256)")] - pub struct TokenByIndexCall { - pub index: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `tokenOfOwnerByIndex` function with signature `tokenOfOwnerByIndex(address,uint256)` and selector `0x2f745c59` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "tokenOfOwnerByIndex", - abi = "tokenOfOwnerByIndex(address,uint256)" - )] - pub struct TokenOfOwnerByIndexCall { - pub owner: ::ethers::core::types::Address, - pub index: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "totalSupply", abi = "totalSupply()")] - pub struct TotalSupplyCall; - ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] - pub struct TransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IERC721EnumerableCalls { - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - GetApproved(GetApprovedCall), - IsApprovedForAll(IsApprovedForAllCall), - OwnerOf(OwnerOfCall), - SafeTransferFrom(SafeTransferFromCall), - SafeTransferFromWithFromAndToAndData(SafeTransferFromWithFromAndToAndDataCall), - SetApprovalForAll(SetApprovalForAllCall), - SupportsInterface(SupportsInterfaceCall), - TokenByIndex(TokenByIndexCall), - TokenOfOwnerByIndex(TokenOfOwnerByIndexCall), - TotalSupply(TotalSupplyCall), - TransferFrom(TransferFromCall), - } - impl ::ethers::core::abi::AbiDecode for IERC721EnumerableCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Approve(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::BalanceOf(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::GetApproved(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IsApprovedForAll(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::OwnerOf(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SafeTransferFrom(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SafeTransferFromWithFromAndToAndData(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetApprovalForAll(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SupportsInterface(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TokenByIndex(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TokenOfOwnerByIndex(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TotalSupply(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferFrom(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IERC721EnumerableCalls { - fn encode(self) -> Vec { - match self { - Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::GetApproved(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IsApprovedForAll(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::OwnerOf(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SafeTransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SafeTransferFromWithFromAndToAndData(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetApprovalForAll(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SupportsInterface(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TokenByIndex(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TokenOfOwnerByIndex(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TotalSupply(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for IERC721EnumerableCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), - Self::GetApproved(element) => ::core::fmt::Display::fmt(element, f), - Self::IsApprovedForAll(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnerOf(element) => ::core::fmt::Display::fmt(element, f), - Self::SafeTransferFrom(element) => ::core::fmt::Display::fmt(element, f), - Self::SafeTransferFromWithFromAndToAndData(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::SetApprovalForAll(element) => ::core::fmt::Display::fmt(element, f), - Self::SupportsInterface(element) => ::core::fmt::Display::fmt(element, f), - Self::TokenByIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::TokenOfOwnerByIndex(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for IERC721EnumerableCalls { - fn from(value: ApproveCall) -> Self { - Self::Approve(value) - } - } - impl ::core::convert::From for IERC721EnumerableCalls { - fn from(value: BalanceOfCall) -> Self { - Self::BalanceOf(value) - } - } - impl ::core::convert::From for IERC721EnumerableCalls { - fn from(value: GetApprovedCall) -> Self { - Self::GetApproved(value) - } - } - impl ::core::convert::From for IERC721EnumerableCalls { - fn from(value: IsApprovedForAllCall) -> Self { - Self::IsApprovedForAll(value) - } - } - impl ::core::convert::From for IERC721EnumerableCalls { - fn from(value: OwnerOfCall) -> Self { - Self::OwnerOf(value) - } - } - impl ::core::convert::From for IERC721EnumerableCalls { - fn from(value: SafeTransferFromCall) -> Self { - Self::SafeTransferFrom(value) - } - } - impl ::core::convert::From - for IERC721EnumerableCalls { - fn from(value: SafeTransferFromWithFromAndToAndDataCall) -> Self { - Self::SafeTransferFromWithFromAndToAndData(value) - } - } - impl ::core::convert::From for IERC721EnumerableCalls { - fn from(value: SetApprovalForAllCall) -> Self { - Self::SetApprovalForAll(value) - } - } - impl ::core::convert::From for IERC721EnumerableCalls { - fn from(value: SupportsInterfaceCall) -> Self { - Self::SupportsInterface(value) - } - } - impl ::core::convert::From for IERC721EnumerableCalls { - fn from(value: TokenByIndexCall) -> Self { - Self::TokenByIndex(value) - } - } - impl ::core::convert::From for IERC721EnumerableCalls { - fn from(value: TokenOfOwnerByIndexCall) -> Self { - Self::TokenOfOwnerByIndex(value) - } - } - impl ::core::convert::From for IERC721EnumerableCalls { - fn from(value: TotalSupplyCall) -> Self { - Self::TotalSupply(value) - } - } - impl ::core::convert::From for IERC721EnumerableCalls { - fn from(value: TransferFromCall) -> Self { - Self::TransferFrom(value) - } - } - ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct BalanceOfReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct GetApprovedReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsApprovedForAllReturn(pub bool); - ///Container type for all return fields from the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerOfReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SupportsInterfaceReturn(pub bool); - ///Container type for all return fields from the `tokenByIndex` function with signature `tokenByIndex(uint256)` and selector `0x4f6ccce7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TokenByIndexReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `tokenOfOwnerByIndex` function with signature `tokenOfOwnerByIndex(address,uint256)` and selector `0x2f745c59` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TokenOfOwnerByIndexReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); -} diff --git a/crates/bindings-uniswapx/src/ierc721_metadata.rs b/crates/bindings-uniswapx/src/ierc721_metadata.rs deleted file mode 100644 index 6f150e7..0000000 --- a/crates/bindings-uniswapx/src/ierc721_metadata.rs +++ /dev/null @@ -1,1412 +0,0 @@ -pub use ierc721_metadata::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod ierc721_metadata { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("getApproved"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getApproved"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("isApprovedForAll"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isApprovedForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("name"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("name"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_name"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ownerOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("ownerOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("data"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setApprovalForAll"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setApprovalForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("supportsInterface"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("supportsInterface"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("interfaceID"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("symbol"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("symbol"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_symbol"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("tokenURI"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("tokenURI"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ApprovalForAll"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("ApprovalForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IERC721METADATA_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - pub struct IERC721Metadata(::ethers::contract::Contract); - impl ::core::clone::Clone for IERC721Metadata { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IERC721Metadata { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IERC721Metadata { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IERC721Metadata { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IERC721Metadata)) - .field(&self.address()) - .finish() - } - } - impl IERC721Metadata { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IERC721METADATA_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `approve` (0x095ea7b3) function - pub fn approve( - &self, - approved: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (approved, token_id)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) function - pub fn balance_of( - &self, - owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 160, 130, 49], owner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getApproved` (0x081812fc) function - pub fn get_approved( - &self, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([8, 24, 18, 252], token_id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isApprovedForAll` (0xe985e9c5) function - pub fn is_approved_for_all( - &self, - owner: ::ethers::core::types::Address, - operator: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([233, 133, 233, 197], (owner, operator)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `name` (0x06fdde03) function - pub fn name( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([6, 253, 222, 3], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `ownerOf` (0x6352211e) function - pub fn owner_of( - &self, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([99, 82, 33, 30], token_id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `safeTransferFrom` (0x42842e0e) function - pub fn safe_transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([66, 132, 46, 14], (from, to, token_id)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `safeTransferFrom` (0xb88d4fde) function - pub fn safe_transfer_from_with_from_and_to_and_data( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([184, 141, 79, 222], (from, to, token_id, data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setApprovalForAll` (0xa22cb465) function - pub fn set_approval_for_all( - &self, - operator: ::ethers::core::types::Address, - approved: bool, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([162, 44, 180, 101], (operator, approved)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `supportsInterface` (0x01ffc9a7) function - pub fn supports_interface( - &self, - interface_id: [u8; 4], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([1, 255, 201, 167], interface_id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `symbol` (0x95d89b41) function - pub fn symbol( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([149, 216, 155, 65], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `tokenURI` (0xc87b56dd) function - pub fn token_uri( - &self, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([200, 123, 86, 221], token_id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x23b872dd) function - pub fn transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, token_id)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `ApprovalForAll` event - pub fn approval_for_all_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalForAllFilter, - > { - self.0.event() - } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - IERC721MetadataEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for IERC721Metadata { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub approved: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token_id: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "ApprovalForAll", abi = "ApprovalForAll(address,address,bool)")] - pub struct ApprovalForAllFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub operator: ::ethers::core::types::Address, - pub approved: bool, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IERC721MetadataEvents { - ApprovalFilter(ApprovalFilter), - ApprovalForAllFilter(ApprovalForAllFilter), - TransferFilter(TransferFilter), - } - impl ::ethers::contract::EthLogDecode for IERC721MetadataEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(IERC721MetadataEvents::ApprovalFilter(decoded)); - } - if let Ok(decoded) = ApprovalForAllFilter::decode_log(log) { - return Ok(IERC721MetadataEvents::ApprovalForAllFilter(decoded)); - } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(IERC721MetadataEvents::TransferFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for IERC721MetadataEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::ApprovalForAllFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for IERC721MetadataEvents { - fn from(value: ApprovalFilter) -> Self { - Self::ApprovalFilter(value) - } - } - impl ::core::convert::From for IERC721MetadataEvents { - fn from(value: ApprovalForAllFilter) -> Self { - Self::ApprovalForAllFilter(value) - } - } - impl ::core::convert::From for IERC721MetadataEvents { - fn from(value: TransferFilter) -> Self { - Self::TransferFilter(value) - } - } - ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub approved: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "getApproved", abi = "getApproved(uint256)")] - pub struct GetApprovedCall { - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "isApprovedForAll", abi = "isApprovedForAll(address,address)")] - pub struct IsApprovedForAllCall { - pub owner: ::ethers::core::types::Address, - pub operator: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `name` function with signature `name()` and selector `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "name", abi = "name()")] - pub struct NameCall; - ///Container type for all input parameters for the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "ownerOf", abi = "ownerOf(uint256)")] - pub struct OwnerOfCall { - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256)" - )] - pub struct SafeTransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256,bytes)" - )] - pub struct SafeTransferFromWithFromAndToAndDataCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `setApprovalForAll` function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setApprovalForAll", abi = "setApprovalForAll(address,bool)")] - pub struct SetApprovalForAllCall { - pub operator: ::ethers::core::types::Address, - pub approved: bool, - } - ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] - pub struct SupportsInterfaceCall { - pub interface_id: [u8; 4], - } - ///Container type for all input parameters for the `symbol` function with signature `symbol()` and selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "symbol", abi = "symbol()")] - pub struct SymbolCall; - ///Container type for all input parameters for the `tokenURI` function with signature `tokenURI(uint256)` and selector `0xc87b56dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "tokenURI", abi = "tokenURI(uint256)")] - pub struct TokenURICall { - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] - pub struct TransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum IERC721MetadataCalls { - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - GetApproved(GetApprovedCall), - IsApprovedForAll(IsApprovedForAllCall), - Name(NameCall), - OwnerOf(OwnerOfCall), - SafeTransferFrom(SafeTransferFromCall), - SafeTransferFromWithFromAndToAndData(SafeTransferFromWithFromAndToAndDataCall), - SetApprovalForAll(SetApprovalForAllCall), - SupportsInterface(SupportsInterfaceCall), - Symbol(SymbolCall), - TokenURI(TokenURICall), - TransferFrom(TransferFromCall), - } - impl ::ethers::core::abi::AbiDecode for IERC721MetadataCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Approve(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::BalanceOf(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::GetApproved(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IsApprovedForAll(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Name(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::OwnerOf(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SafeTransferFrom(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SafeTransferFromWithFromAndToAndData(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetApprovalForAll(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SupportsInterface(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Symbol(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TokenURI(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferFrom(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IERC721MetadataCalls { - fn encode(self) -> Vec { - match self { - Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::GetApproved(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IsApprovedForAll(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::OwnerOf(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SafeTransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SafeTransferFromWithFromAndToAndData(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetApprovalForAll(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SupportsInterface(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TokenURI(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for IERC721MetadataCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), - Self::GetApproved(element) => ::core::fmt::Display::fmt(element, f), - Self::IsApprovedForAll(element) => ::core::fmt::Display::fmt(element, f), - Self::Name(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnerOf(element) => ::core::fmt::Display::fmt(element, f), - Self::SafeTransferFrom(element) => ::core::fmt::Display::fmt(element, f), - Self::SafeTransferFromWithFromAndToAndData(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::SetApprovalForAll(element) => ::core::fmt::Display::fmt(element, f), - Self::SupportsInterface(element) => ::core::fmt::Display::fmt(element, f), - Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), - Self::TokenURI(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for IERC721MetadataCalls { - fn from(value: ApproveCall) -> Self { - Self::Approve(value) - } - } - impl ::core::convert::From for IERC721MetadataCalls { - fn from(value: BalanceOfCall) -> Self { - Self::BalanceOf(value) - } - } - impl ::core::convert::From for IERC721MetadataCalls { - fn from(value: GetApprovedCall) -> Self { - Self::GetApproved(value) - } - } - impl ::core::convert::From for IERC721MetadataCalls { - fn from(value: IsApprovedForAllCall) -> Self { - Self::IsApprovedForAll(value) - } - } - impl ::core::convert::From for IERC721MetadataCalls { - fn from(value: NameCall) -> Self { - Self::Name(value) - } - } - impl ::core::convert::From for IERC721MetadataCalls { - fn from(value: OwnerOfCall) -> Self { - Self::OwnerOf(value) - } - } - impl ::core::convert::From for IERC721MetadataCalls { - fn from(value: SafeTransferFromCall) -> Self { - Self::SafeTransferFrom(value) - } - } - impl ::core::convert::From - for IERC721MetadataCalls { - fn from(value: SafeTransferFromWithFromAndToAndDataCall) -> Self { - Self::SafeTransferFromWithFromAndToAndData(value) - } - } - impl ::core::convert::From for IERC721MetadataCalls { - fn from(value: SetApprovalForAllCall) -> Self { - Self::SetApprovalForAll(value) - } - } - impl ::core::convert::From for IERC721MetadataCalls { - fn from(value: SupportsInterfaceCall) -> Self { - Self::SupportsInterface(value) - } - } - impl ::core::convert::From for IERC721MetadataCalls { - fn from(value: SymbolCall) -> Self { - Self::Symbol(value) - } - } - impl ::core::convert::From for IERC721MetadataCalls { - fn from(value: TokenURICall) -> Self { - Self::TokenURI(value) - } - } - impl ::core::convert::From for IERC721MetadataCalls { - fn from(value: TransferFromCall) -> Self { - Self::TransferFrom(value) - } - } - ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct BalanceOfReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct GetApprovedReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsApprovedForAllReturn(pub bool); - ///Container type for all return fields from the `name` function with signature `name()` and selector `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct NameReturn { - pub name: ::std::string::String, - } - ///Container type for all return fields from the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerOfReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SupportsInterfaceReturn(pub bool); - ///Container type for all return fields from the `symbol` function with signature `symbol()` and selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SymbolReturn { - pub symbol: ::std::string::String, - } - ///Container type for all return fields from the `tokenURI` function with signature `tokenURI(uint256)` and selector `0xc87b56dd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TokenURIReturn(pub ::std::string::String); -} diff --git a/crates/bindings-uniswapx/src/ierc721_token_receiver.rs b/crates/bindings-uniswapx/src/ierc721_token_receiver.rs deleted file mode 100644 index c2a4062..0000000 --- a/crates/bindings-uniswapx/src/ierc721_token_receiver.rs +++ /dev/null @@ -1,177 +0,0 @@ -pub use ierc721_token_receiver::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod ierc721_token_receiver { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("onERC721Received"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("onERC721Received"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_data"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IERC721TOKENRECEIVER_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - pub struct IERC721TokenReceiver(::ethers::contract::Contract); - impl ::core::clone::Clone for IERC721TokenReceiver { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IERC721TokenReceiver { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IERC721TokenReceiver { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IERC721TokenReceiver { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IERC721TokenReceiver)) - .field(&self.address()) - .finish() - } - } - impl IERC721TokenReceiver { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - IERC721TOKENRECEIVER_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `onERC721Received` (0x150b7a02) function - pub fn on_erc721_received( - &self, - operator: ::ethers::core::types::Address, - from: ::ethers::core::types::Address, - token_id: ::ethers::core::types::U256, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([21, 11, 122, 2], (operator, from, token_id, data)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for IERC721TokenReceiver { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `onERC721Received` function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "onERC721Received", - abi = "onERC721Received(address,address,uint256,bytes)" - )] - pub struct OnERC721ReceivedCall { - pub operator: ::ethers::core::types::Address, - pub from: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all return fields from the `onERC721Received` function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OnERC721ReceivedReturn(pub [u8; 4]); -} diff --git a/crates/bindings-uniswapx/src/ierc721enumerable.rs b/crates/bindings-uniswapx/src/ierc721enumerable.rs new file mode 100644 index 0000000..174e877 --- /dev/null +++ b/crates/bindings-uniswapx/src/ierc721enumerable.rs @@ -0,0 +1,3438 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC721Enumerable { + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + + function approve(address _approved, uint256 _tokenId) external payable; + function balanceOf(address _owner) external view returns (uint256); + function getApproved(uint256 _tokenId) external view returns (address); + function isApprovedForAll(address _owner, address _operator) external view returns (bool); + function ownerOf(uint256 _tokenId) external view returns (address); + function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; + function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; + function setApprovalForAll(address _operator, bool _approved) external; + function supportsInterface(bytes4 interfaceID) external view returns (bool); + function tokenByIndex(uint256 _index) external view returns (uint256); + function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); + function totalSupply() external view returns (uint256); + function transferFrom(address _from, address _to, uint256 _tokenId) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "_approved", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApproved", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isApprovedForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ownerOf", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "setApprovalForAll", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceID", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "tokenByIndex", + "inputs": [ + { + "name": "_index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "tokenOfOwnerByIndex", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ApprovalForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "_from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC721Enumerable { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. +```solidity +event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _approved: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._approved.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._approved, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ApprovalForAll(address,address,bool)` and selector `0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31`. +```solidity +event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ApprovalForAll { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ApprovalForAll { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "ApprovalForAll(address,address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 23u8, + 48u8, + 126u8, + 171u8, + 57u8, + 171u8, + 97u8, + 7u8, + 232u8, + 137u8, + 152u8, + 69u8, + 173u8, + 61u8, + 89u8, + 189u8, + 150u8, + 83u8, + 242u8, + 0u8, + 242u8, + 32u8, + 146u8, + 4u8, + 137u8, + 202u8, + 43u8, + 89u8, + 55u8, + 105u8, + 108u8, + 49u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _operator: topics.2, + _approved: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ApprovalForAll { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ApprovalForAll> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ApprovalForAll) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. +```solidity +event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _from: topics.1, + _to: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._from.clone(), + self._to.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._from, + ); + out[2usize] = ::encode_topic( + &self._to, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. +```solidity +function approve(address _approved, uint256 _tokenId) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub _approved: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value._approved, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _approved: tuple.0, + _tokenId: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._approved, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. +```solidity +function balanceOf(address _owner) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub _owner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value._owner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _owner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getApproved(uint256)` and selector `0x081812fc`. +```solidity +function getApproved(uint256 _tokenId) external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedCall { + pub _tokenId: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`getApproved(uint256)`](getApprovedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedCall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApprovedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApprovedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApproved(uint256)"; + const SELECTOR: [u8; 4] = [8u8, 24u8, 18u8, 252u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5`. +```solidity +function isApprovedForAll(address _owner, address _operator) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllCall { + pub _owner: alloy::sol_types::private::Address, + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isApprovedForAll(address,address)`](isApprovedForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllCall) -> Self { + (value._owner, value._operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for isApprovedForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _owner: tuple.0, + _operator: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for isApprovedForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isApprovedForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isApprovedForAllReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isApprovedForAll(address,address)"; + const SELECTOR: [u8; 4] = [233u8, 133u8, 233u8, 197u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `ownerOf(uint256)` and selector `0x6352211e`. +```solidity +function ownerOf(uint256 _tokenId) external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfCall { + pub _tokenId: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`ownerOf(uint256)`](ownerOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfCall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ownerOf(uint256)"; + const SELECTOR: [u8; 4] = [99u8, 82u8, 33u8, 30u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e`. +```solidity +function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Call { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256)`](safeTransferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Call) -> Self { + (value._from, value._to, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [66u8, 132u8, 46u8, 14u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde`. +```solidity +function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Call { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, + pub data: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256,bytes)`](safeTransferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Call) -> Self { + (value._from, value._to, value._tokenId, value.data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + data: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256,bytes)"; + const SELECTOR: [u8; 4] = [184u8, 141u8, 79u8, 222u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ::tokenize( + &self.data, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465`. +```solidity +function setApprovalForAll(address _operator, bool _approved) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllCall { + pub _operator: alloy::sol_types::private::Address, + pub _approved: bool, + } + ///Container type for the return parameters of the [`setApprovalForAll(address,bool)`](setApprovalForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllCall) -> Self { + (value._operator, value._approved) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setApprovalForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _approved: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setApprovalForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setApprovalForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setApprovalForAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setApprovalForAll(address,bool)"; + const SELECTOR: [u8; 4] = [162u8, 44u8, 180u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`. +```solidity +function supportsInterface(bytes4 interfaceID) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceCall { + pub interfaceID: alloy::sol_types::private::FixedBytes<4>, + } + ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceCall) -> Self { + (value.interfaceID,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for supportsInterfaceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { interfaceID: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for supportsInterfaceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for supportsInterfaceCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = supportsInterfaceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "supportsInterface(bytes4)"; + const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.interfaceID), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `tokenByIndex(uint256)` and selector `0x4f6ccce7`. +```solidity +function tokenByIndex(uint256 _index) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenByIndexCall { + pub _index: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`tokenByIndex(uint256)`](tokenByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenByIndexReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenByIndexCall) -> Self { + (value._index,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _index: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tokenByIndexCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tokenByIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tokenByIndex(uint256)"; + const SELECTOR: [u8; 4] = [79u8, 108u8, 204u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `tokenOfOwnerByIndex(address,uint256)` and selector `0x2f745c59`. +```solidity +function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenOfOwnerByIndexCall { + pub _owner: alloy::sol_types::private::Address, + pub _index: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`tokenOfOwnerByIndex(address,uint256)`](tokenOfOwnerByIndexCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenOfOwnerByIndexReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: tokenOfOwnerByIndexCall) -> Self { + (value._owner, value._index) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for tokenOfOwnerByIndexCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _owner: tuple.0, + _index: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: tokenOfOwnerByIndexReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for tokenOfOwnerByIndexReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tokenOfOwnerByIndexCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tokenOfOwnerByIndexReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tokenOfOwnerByIndex(address,uint256)"; + const SELECTOR: [u8; 4] = [47u8, 116u8, 92u8, 89u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + as alloy_sol_types::SolType>::tokenize(&self._index), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `totalSupply()` and selector `0x18160ddd`. +```solidity +function totalSupply() external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSupplyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSupplyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalSupply()"; + const SELECTOR: [u8; 4] = [24u8, 22u8, 13u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. +```solidity +function transferFrom(address _from, address _to, uint256 _tokenId) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value._from, value._to, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC721Enumerable`](self) function calls. + pub enum IERC721EnumerableCalls { + approve(approveCall), + balanceOf(balanceOfCall), + getApproved(getApprovedCall), + isApprovedForAll(isApprovedForAllCall), + ownerOf(ownerOfCall), + safeTransferFrom_0(safeTransferFrom_0Call), + safeTransferFrom_1(safeTransferFrom_1Call), + setApprovalForAll(setApprovalForAllCall), + supportsInterface(supportsInterfaceCall), + tokenByIndex(tokenByIndexCall), + tokenOfOwnerByIndex(tokenOfOwnerByIndexCall), + totalSupply(totalSupplyCall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl IERC721EnumerableCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [1u8, 255u8, 201u8, 167u8], + [8u8, 24u8, 18u8, 252u8], + [9u8, 94u8, 167u8, 179u8], + [24u8, 22u8, 13u8, 221u8], + [35u8, 184u8, 114u8, 221u8], + [47u8, 116u8, 92u8, 89u8], + [66u8, 132u8, 46u8, 14u8], + [79u8, 108u8, 204u8, 231u8], + [99u8, 82u8, 33u8, 30u8], + [112u8, 160u8, 130u8, 49u8], + [162u8, 44u8, 180u8, 101u8], + [184u8, 141u8, 79u8, 222u8], + [233u8, 133u8, 233u8, 197u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC721EnumerableCalls { + const NAME: &'static str = "IERC721EnumerableCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => { + ::SELECTOR + } + Self::getApproved(_) => { + ::SELECTOR + } + Self::isApprovedForAll(_) => { + ::SELECTOR + } + Self::ownerOf(_) => ::SELECTOR, + Self::safeTransferFrom_0(_) => { + ::SELECTOR + } + Self::safeTransferFrom_1(_) => { + ::SELECTOR + } + Self::setApprovalForAll(_) => { + ::SELECTOR + } + Self::supportsInterface(_) => { + ::SELECTOR + } + Self::tokenByIndex(_) => { + ::SELECTOR + } + Self::tokenOfOwnerByIndex(_) => { + ::SELECTOR + } + Self::totalSupply(_) => { + ::SELECTOR + } + Self::transferFrom(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn supportsInterface( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::supportsInterface) + } + supportsInterface + }, + { + fn getApproved( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::getApproved) + } + getApproved + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::approve) + } + approve + }, + { + fn totalSupply( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::totalSupply) + } + totalSupply + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::transferFrom) + } + transferFrom + }, + { + fn tokenOfOwnerByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::tokenOfOwnerByIndex) + } + tokenOfOwnerByIndex + }, + { + fn safeTransferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::safeTransferFrom_0) + } + safeTransferFrom_0 + }, + { + fn tokenByIndex( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::tokenByIndex) + } + tokenByIndex + }, + { + fn ownerOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::ownerOf) + } + ownerOf + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::balanceOf) + } + balanceOf + }, + { + fn setApprovalForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::setApprovalForAll) + } + setApprovalForAll + }, + { + fn safeTransferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::safeTransferFrom_1) + } + safeTransferFrom_1 + }, + { + fn isApprovedForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721EnumerableCalls::isApprovedForAll) + } + isApprovedForAll + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::getApproved(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::isApprovedForAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ownerOf(inner) => { + ::abi_encoded_size(inner) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setApprovalForAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::supportsInterface(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::tokenByIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::tokenOfOwnerByIndex(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::totalSupply(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferFrom(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApproved(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isApprovedForAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ownerOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setApprovalForAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::supportsInterface(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::tokenByIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::tokenOfOwnerByIndex(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::totalSupply(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferFrom(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IERC721Enumerable`](self) events. + pub enum IERC721EnumerableEvents { + Approval(Approval), + ApprovalForAll(ApprovalForAll), + Transfer(Transfer), + } + #[automatically_derived] + impl IERC721EnumerableEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 23u8, + 48u8, + 126u8, + 171u8, + 57u8, + 171u8, + 97u8, + 7u8, + 232u8, + 137u8, + 152u8, + 69u8, + 173u8, + 61u8, + 89u8, + 189u8, + 150u8, + 83u8, + 242u8, + 0u8, + 242u8, + 32u8, + 146u8, + 4u8, + 137u8, + 202u8, + 43u8, + 89u8, + 55u8, + 105u8, + 108u8, + 49u8, + ], + [ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ], + [ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IERC721EnumerableEvents { + const NAME: &'static str = "IERC721EnumerableEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ApprovalForAll) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Transfer) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IERC721EnumerableEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC721Enumerable`](self) contract instance. + +See the [wrapper's documentation](`IERC721EnumerableInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC721EnumerableInstance { + IERC721EnumerableInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IERC721EnumerableInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IERC721EnumerableInstance::::deploy_builder(provider) + } + /**A [`IERC721Enumerable`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IERC721Enumerable`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC721EnumerableInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC721EnumerableInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC721EnumerableInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721EnumerableInstance { + /**Creates a new wrapper around an on-chain [`IERC721Enumerable`](self) contract instance. + +See the [wrapper's documentation](`IERC721EnumerableInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC721EnumerableInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC721EnumerableInstance { + IERC721EnumerableInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721EnumerableInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + _approved: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { _approved, _tokenId }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + _owner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { _owner }) + } + ///Creates a new call builder for the [`getApproved`] function. + pub fn getApproved( + &self, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApprovedCall { _tokenId }) + } + ///Creates a new call builder for the [`isApprovedForAll`] function. + pub fn isApprovedForAll( + &self, + _owner: alloy::sol_types::private::Address, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &isApprovedForAllCall { + _owner, + _operator, + }, + ) + } + ///Creates a new call builder for the [`ownerOf`] function. + pub fn ownerOf( + &self, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerOfCall { _tokenId }) + } + ///Creates a new call builder for the [`safeTransferFrom_0`] function. + pub fn safeTransferFrom_0( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &safeTransferFrom_0Call { + _from, + _to, + _tokenId, + }, + ) + } + ///Creates a new call builder for the [`safeTransferFrom_1`] function. + pub fn safeTransferFrom_1( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &safeTransferFrom_1Call { + _from, + _to, + _tokenId, + data, + }, + ) + } + ///Creates a new call builder for the [`setApprovalForAll`] function. + pub fn setApprovalForAll( + &self, + _operator: alloy::sol_types::private::Address, + _approved: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setApprovalForAllCall { + _operator, + _approved, + }, + ) + } + ///Creates a new call builder for the [`supportsInterface`] function. + pub fn supportsInterface( + &self, + interfaceID: alloy::sol_types::private::FixedBytes<4>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &supportsInterfaceCall { + interfaceID, + }, + ) + } + ///Creates a new call builder for the [`tokenByIndex`] function. + pub fn tokenByIndex( + &self, + _index: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&tokenByIndexCall { _index }) + } + ///Creates a new call builder for the [`tokenOfOwnerByIndex`] function. + pub fn tokenOfOwnerByIndex( + &self, + _owner: alloy::sol_types::private::Address, + _index: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &tokenOfOwnerByIndexCall { + _owner, + _index, + }, + ) + } + ///Creates a new call builder for the [`totalSupply`] function. + pub fn totalSupply( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSupplyCall {}) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &transferFromCall { + _from, + _to, + _tokenId, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721EnumerableInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ApprovalForAll`] event. + pub fn ApprovalForAll_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/ierc721metadata.rs b/crates/bindings-uniswapx/src/ierc721metadata.rs new file mode 100644 index 0000000..f966df4 --- /dev/null +++ b/crates/bindings-uniswapx/src/ierc721metadata.rs @@ -0,0 +1,3372 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC721Metadata { + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + + function approve(address _approved, uint256 _tokenId) external payable; + function balanceOf(address _owner) external view returns (uint256); + function getApproved(uint256 _tokenId) external view returns (address); + function isApprovedForAll(address _owner, address _operator) external view returns (bool); + function name() external view returns (string memory _name); + function ownerOf(uint256 _tokenId) external view returns (address); + function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; + function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; + function setApprovalForAll(address _operator, bool _approved) external; + function supportsInterface(bytes4 interfaceID) external view returns (bool); + function symbol() external view returns (string memory _symbol); + function tokenURI(uint256 _tokenId) external view returns (string memory); + function transferFrom(address _from, address _to, uint256 _tokenId) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "_approved", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApproved", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isApprovedForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "_name", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ownerOf", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "setApprovalForAll", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceID", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "_symbol", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "tokenURI", + "inputs": [ + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ApprovalForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "_from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC721Metadata { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. +```solidity +event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _approved: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._approved.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._approved, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ApprovalForAll(address,address,bool)` and selector `0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31`. +```solidity +event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ApprovalForAll { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ApprovalForAll { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "ApprovalForAll(address,address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 23u8, + 48u8, + 126u8, + 171u8, + 57u8, + 171u8, + 97u8, + 7u8, + 232u8, + 137u8, + 152u8, + 69u8, + 173u8, + 61u8, + 89u8, + 189u8, + 150u8, + 83u8, + 242u8, + 0u8, + 242u8, + 32u8, + 146u8, + 4u8, + 137u8, + 202u8, + 43u8, + 89u8, + 55u8, + 105u8, + 108u8, + 49u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _operator: topics.2, + _approved: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ApprovalForAll { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ApprovalForAll> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ApprovalForAll) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. +```solidity +event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _from: topics.1, + _to: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._from.clone(), + self._to.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._from, + ); + out[2usize] = ::encode_topic( + &self._to, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. +```solidity +function approve(address _approved, uint256 _tokenId) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub _approved: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value._approved, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _approved: tuple.0, + _tokenId: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._approved, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. +```solidity +function balanceOf(address _owner) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub _owner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value._owner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _owner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getApproved(uint256)` and selector `0x081812fc`. +```solidity +function getApproved(uint256 _tokenId) external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedCall { + pub _tokenId: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`getApproved(uint256)`](getApprovedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedCall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApprovedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApprovedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApproved(uint256)"; + const SELECTOR: [u8; 4] = [8u8, 24u8, 18u8, 252u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5`. +```solidity +function isApprovedForAll(address _owner, address _operator) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllCall { + pub _owner: alloy::sol_types::private::Address, + pub _operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isApprovedForAll(address,address)`](isApprovedForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllCall) -> Self { + (value._owner, value._operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for isApprovedForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _owner: tuple.0, + _operator: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for isApprovedForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isApprovedForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isApprovedForAllReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isApprovedForAll(address,address)"; + const SELECTOR: [u8; 4] = [233u8, 133u8, 233u8, 197u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._owner, + ), + ::tokenize( + &self._operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `name()` and selector `0x06fdde03`. +```solidity +function name() external view returns (string memory _name); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameReturn { + pub _name: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameReturn) -> Self { + (value._name,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _name: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nameCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nameReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "name()"; + const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `ownerOf(uint256)` and selector `0x6352211e`. +```solidity +function ownerOf(uint256 _tokenId) external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfCall { + pub _tokenId: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`ownerOf(uint256)`](ownerOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfCall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ownerOf(uint256)"; + const SELECTOR: [u8; 4] = [99u8, 82u8, 33u8, 30u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e`. +```solidity +function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Call { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256)`](safeTransferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Call) -> Self { + (value._from, value._to, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [66u8, 132u8, 46u8, 14u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde`. +```solidity +function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Call { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, + pub data: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256,bytes)`](safeTransferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Call) -> Self { + (value._from, value._to, value._tokenId, value.data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + data: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256,bytes)"; + const SELECTOR: [u8; 4] = [184u8, 141u8, 79u8, 222u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ::tokenize( + &self.data, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465`. +```solidity +function setApprovalForAll(address _operator, bool _approved) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllCall { + pub _operator: alloy::sol_types::private::Address, + pub _approved: bool, + } + ///Container type for the return parameters of the [`setApprovalForAll(address,bool)`](setApprovalForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllCall) -> Self { + (value._operator, value._approved) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setApprovalForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _approved: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setApprovalForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setApprovalForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setApprovalForAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setApprovalForAll(address,bool)"; + const SELECTOR: [u8; 4] = [162u8, 44u8, 180u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`. +```solidity +function supportsInterface(bytes4 interfaceID) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceCall { + pub interfaceID: alloy::sol_types::private::FixedBytes<4>, + } + ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceCall) -> Self { + (value.interfaceID,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for supportsInterfaceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { interfaceID: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for supportsInterfaceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for supportsInterfaceCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = supportsInterfaceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "supportsInterface(bytes4)"; + const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.interfaceID), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `symbol()` and selector `0x95d89b41`. +```solidity +function symbol() external view returns (string memory _symbol); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolReturn { + pub _symbol: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolReturn) -> Self { + (value._symbol,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _symbol: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for symbolCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = symbolReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "symbol()"; + const SELECTOR: [u8; 4] = [149u8, 216u8, 155u8, 65u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `tokenURI(uint256)` and selector `0xc87b56dd`. +```solidity +function tokenURI(uint256 _tokenId) external view returns (string memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenURICall { + pub _tokenId: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`tokenURI(uint256)`](tokenURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenURIReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenURICall) -> Self { + (value._tokenId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _tokenId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenURIReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tokenURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tokenURIReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tokenURI(uint256)"; + const SELECTOR: [u8; 4] = [200u8, 123u8, 86u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. +```solidity +function transferFrom(address _from, address _to, uint256 _tokenId) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value._from, value._to, value._tokenId) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _tokenId: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC721Metadata`](self) function calls. + pub enum IERC721MetadataCalls { + approve(approveCall), + balanceOf(balanceOfCall), + getApproved(getApprovedCall), + isApprovedForAll(isApprovedForAllCall), + name(nameCall), + ownerOf(ownerOfCall), + safeTransferFrom_0(safeTransferFrom_0Call), + safeTransferFrom_1(safeTransferFrom_1Call), + setApprovalForAll(setApprovalForAllCall), + supportsInterface(supportsInterfaceCall), + symbol(symbolCall), + tokenURI(tokenURICall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl IERC721MetadataCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [1u8, 255u8, 201u8, 167u8], + [6u8, 253u8, 222u8, 3u8], + [8u8, 24u8, 18u8, 252u8], + [9u8, 94u8, 167u8, 179u8], + [35u8, 184u8, 114u8, 221u8], + [66u8, 132u8, 46u8, 14u8], + [99u8, 82u8, 33u8, 30u8], + [112u8, 160u8, 130u8, 49u8], + [149u8, 216u8, 155u8, 65u8], + [162u8, 44u8, 180u8, 101u8], + [184u8, 141u8, 79u8, 222u8], + [200u8, 123u8, 86u8, 221u8], + [233u8, 133u8, 233u8, 197u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC721MetadataCalls { + const NAME: &'static str = "IERC721MetadataCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => { + ::SELECTOR + } + Self::getApproved(_) => { + ::SELECTOR + } + Self::isApprovedForAll(_) => { + ::SELECTOR + } + Self::name(_) => ::SELECTOR, + Self::ownerOf(_) => ::SELECTOR, + Self::safeTransferFrom_0(_) => { + ::SELECTOR + } + Self::safeTransferFrom_1(_) => { + ::SELECTOR + } + Self::setApprovalForAll(_) => { + ::SELECTOR + } + Self::supportsInterface(_) => { + ::SELECTOR + } + Self::symbol(_) => ::SELECTOR, + Self::tokenURI(_) => ::SELECTOR, + Self::transferFrom(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn supportsInterface( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::supportsInterface) + } + supportsInterface + }, + { + fn name( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::name) + } + name + }, + { + fn getApproved( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::getApproved) + } + getApproved + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::approve) + } + approve + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::transferFrom) + } + transferFrom + }, + { + fn safeTransferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::safeTransferFrom_0) + } + safeTransferFrom_0 + }, + { + fn ownerOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::ownerOf) + } + ownerOf + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::balanceOf) + } + balanceOf + }, + { + fn symbol( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::symbol) + } + symbol + }, + { + fn setApprovalForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::setApprovalForAll) + } + setApprovalForAll + }, + { + fn safeTransferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::safeTransferFrom_1) + } + safeTransferFrom_1 + }, + { + fn tokenURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::tokenURI) + } + tokenURI + }, + { + fn isApprovedForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721MetadataCalls::isApprovedForAll) + } + isApprovedForAll + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::getApproved(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::isApprovedForAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::name(inner) => { + ::abi_encoded_size(inner) + } + Self::ownerOf(inner) => { + ::abi_encoded_size(inner) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setApprovalForAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::supportsInterface(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::symbol(inner) => { + ::abi_encoded_size(inner) + } + Self::tokenURI(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApproved(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isApprovedForAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::name(inner) => { + ::abi_encode_raw(inner, out) + } + Self::ownerOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setApprovalForAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::supportsInterface(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::symbol(inner) => { + ::abi_encode_raw(inner, out) + } + Self::tokenURI(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferFrom(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IERC721Metadata`](self) events. + pub enum IERC721MetadataEvents { + Approval(Approval), + ApprovalForAll(ApprovalForAll), + Transfer(Transfer), + } + #[automatically_derived] + impl IERC721MetadataEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 23u8, + 48u8, + 126u8, + 171u8, + 57u8, + 171u8, + 97u8, + 7u8, + 232u8, + 137u8, + 152u8, + 69u8, + 173u8, + 61u8, + 89u8, + 189u8, + 150u8, + 83u8, + 242u8, + 0u8, + 242u8, + 32u8, + 146u8, + 4u8, + 137u8, + 202u8, + 43u8, + 89u8, + 55u8, + 105u8, + 108u8, + 49u8, + ], + [ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ], + [ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IERC721MetadataEvents { + const NAME: &'static str = "IERC721MetadataEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ApprovalForAll) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Transfer) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IERC721MetadataEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC721Metadata`](self) contract instance. + +See the [wrapper's documentation](`IERC721MetadataInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC721MetadataInstance { + IERC721MetadataInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IERC721MetadataInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IERC721MetadataInstance::::deploy_builder(provider) + } + /**A [`IERC721Metadata`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IERC721Metadata`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC721MetadataInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC721MetadataInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC721MetadataInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721MetadataInstance { + /**Creates a new wrapper around an on-chain [`IERC721Metadata`](self) contract instance. + +See the [wrapper's documentation](`IERC721MetadataInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC721MetadataInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC721MetadataInstance { + IERC721MetadataInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721MetadataInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + _approved: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { _approved, _tokenId }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + _owner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { _owner }) + } + ///Creates a new call builder for the [`getApproved`] function. + pub fn getApproved( + &self, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApprovedCall { _tokenId }) + } + ///Creates a new call builder for the [`isApprovedForAll`] function. + pub fn isApprovedForAll( + &self, + _owner: alloy::sol_types::private::Address, + _operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &isApprovedForAllCall { + _owner, + _operator, + }, + ) + } + ///Creates a new call builder for the [`name`] function. + pub fn name(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&nameCall {}) + } + ///Creates a new call builder for the [`ownerOf`] function. + pub fn ownerOf( + &self, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerOfCall { _tokenId }) + } + ///Creates a new call builder for the [`safeTransferFrom_0`] function. + pub fn safeTransferFrom_0( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &safeTransferFrom_0Call { + _from, + _to, + _tokenId, + }, + ) + } + ///Creates a new call builder for the [`safeTransferFrom_1`] function. + pub fn safeTransferFrom_1( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &safeTransferFrom_1Call { + _from, + _to, + _tokenId, + data, + }, + ) + } + ///Creates a new call builder for the [`setApprovalForAll`] function. + pub fn setApprovalForAll( + &self, + _operator: alloy::sol_types::private::Address, + _approved: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setApprovalForAllCall { + _operator, + _approved, + }, + ) + } + ///Creates a new call builder for the [`supportsInterface`] function. + pub fn supportsInterface( + &self, + interfaceID: alloy::sol_types::private::FixedBytes<4>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &supportsInterfaceCall { + interfaceID, + }, + ) + } + ///Creates a new call builder for the [`symbol`] function. + pub fn symbol(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&symbolCall {}) + } + ///Creates a new call builder for the [`tokenURI`] function. + pub fn tokenURI( + &self, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&tokenURICall { _tokenId }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &transferFromCall { + _from, + _to, + _tokenId, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721MetadataInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ApprovalForAll`] event. + pub fn ApprovalForAll_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/ierc721tokenreceiver.rs b/crates/bindings-uniswapx/src/ierc721tokenreceiver.rs new file mode 100644 index 0000000..a622af1 --- /dev/null +++ b/crates/bindings-uniswapx/src/ierc721tokenreceiver.rs @@ -0,0 +1,523 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IERC721TokenReceiver { + function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes memory _data) external returns (bytes4); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "onERC721Received", + "inputs": [ + { + "name": "_operator", + "type": "address", + "internalType": "address" + }, + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IERC721TokenReceiver { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02`. +```solidity +function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes memory _data) external returns (bytes4); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct onERC721ReceivedCall { + pub _operator: alloy::sol_types::private::Address, + pub _from: alloy::sol_types::private::Address, + pub _tokenId: alloy::sol_types::private::U256, + pub _data: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`onERC721Received(address,address,uint256,bytes)`](onERC721ReceivedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct onERC721ReceivedReturn { + pub _0: alloy::sol_types::private::FixedBytes<4>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: onERC721ReceivedCall) -> Self { + (value._operator, value._from, value._tokenId, value._data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for onERC721ReceivedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _operator: tuple.0, + _from: tuple.1, + _tokenId: tuple.2, + _data: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: onERC721ReceivedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for onERC721ReceivedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for onERC721ReceivedCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = onERC721ReceivedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "onERC721Received(address,address,uint256,bytes)"; + const SELECTOR: [u8; 4] = [21u8, 11u8, 122u8, 2u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._operator, + ), + ::tokenize( + &self._from, + ), + as alloy_sol_types::SolType>::tokenize(&self._tokenId), + ::tokenize( + &self._data, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IERC721TokenReceiver`](self) function calls. + pub enum IERC721TokenReceiverCalls { + onERC721Received(onERC721ReceivedCall), + } + #[automatically_derived] + impl IERC721TokenReceiverCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[21u8, 11u8, 122u8, 2u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IERC721TokenReceiverCalls { + const NAME: &'static str = "IERC721TokenReceiverCalls"; + const MIN_DATA_LENGTH: usize = 160usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::onERC721Received(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn onERC721Received( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IERC721TokenReceiverCalls::onERC721Received) + } + onERC721Received + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::onERC721Received(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::onERC721Received(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IERC721TokenReceiver`](self) contract instance. + +See the [wrapper's documentation](`IERC721TokenReceiverInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IERC721TokenReceiverInstance { + IERC721TokenReceiverInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IERC721TokenReceiverInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IERC721TokenReceiverInstance::::deploy_builder(provider) + } + /**A [`IERC721TokenReceiver`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IERC721TokenReceiver`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IERC721TokenReceiverInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IERC721TokenReceiverInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IERC721TokenReceiverInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721TokenReceiverInstance { + /**Creates a new wrapper around an on-chain [`IERC721TokenReceiver`](self) contract instance. + +See the [wrapper's documentation](`IERC721TokenReceiverInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IERC721TokenReceiverInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IERC721TokenReceiverInstance { + IERC721TokenReceiverInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721TokenReceiverInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`onERC721Received`] function. + pub fn onERC721Received( + &self, + _operator: alloy::sol_types::private::Address, + _from: alloy::sol_types::private::Address, + _tokenId: alloy::sol_types::private::U256, + _data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &onERC721ReceivedCall { + _operator, + _from, + _tokenId, + _data, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IERC721TokenReceiverInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/ipermit2.rs b/crates/bindings-uniswapx/src/ipermit2.rs new file mode 100644 index 0000000..b2f4ac6 --- /dev/null +++ b/crates/bindings-uniswapx/src/ipermit2.rs @@ -0,0 +1,7784 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IPermit2 { + struct AllowanceTransferDetails { + address from; + address to; + uint160 amount; + address token; + } + struct PermitBatch { + PermitDetails[] details; + address spender; + uint256 sigDeadline; + } + struct PermitBatchTransferFrom { + TokenPermissions[] permitted; + uint256 nonce; + uint256 deadline; + } + struct PermitDetails { + address token; + uint160 amount; + uint48 expiration; + uint48 nonce; + } + struct PermitSingle { + PermitDetails details; + address spender; + uint256 sigDeadline; + } + struct PermitTransferFrom { + TokenPermissions permitted; + uint256 nonce; + uint256 deadline; + } + struct SignatureTransferDetails { + address to; + uint256 requestedAmount; + } + struct TokenPermissions { + address token; + uint256 amount; + } + struct TokenSpenderPair { + address token; + address spender; + } + + error AllowanceExpired(uint256 deadline); + error ExcessiveInvalidation(); + error InsufficientAllowance(uint256 amount); + error InvalidAmount(uint256 maxAmount); + error LengthMismatch(); + + event Approval(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration); + event Lockdown(address indexed owner, address token, address spender); + event NonceInvalidation(address indexed owner, address indexed token, address indexed spender, uint48 newNonce, uint48 oldNonce); + event Permit(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration, uint48 nonce); + event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask); + + function DOMAIN_SEPARATOR() external view returns (bytes32); + function allowance(address user, address token, address spender) external view returns (uint160 amount, uint48 expiration, uint48 nonce); + function approve(address token, address spender, uint160 amount, uint48 expiration) external; + function invalidateNonces(address token, address spender, uint48 newNonce) external; + function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external; + function lockdown(TokenSpenderPair[] memory approvals) external; + function nonceBitmap(address, uint256) external view returns (uint256); + function permit(address owner, PermitBatch memory permitBatch, bytes memory signature) external; + function permit(address owner, PermitSingle memory permitSingle, bytes memory signature) external; + function permitTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes memory signature) external; + function permitTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes memory signature) external; + function permitWitnessTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; + function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; + function transferFrom(AllowanceTransferDetails[] memory transferDetails) external; + function transferFrom(address from, address to, uint160 amount, address token) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "nonce", + "type": "uint48", + "internalType": "uint48" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "internalType": "uint48" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "invalidateNonces", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "newNonce", + "type": "uint48", + "internalType": "uint48" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "invalidateUnorderedNonces", + "inputs": [ + { + "name": "wordPos", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "mask", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "lockdown", + "inputs": [ + { + "name": "approvals", + "type": "tuple[]", + "internalType": "struct IAllowanceTransfer.TokenSpenderPair[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "nonceBitmap", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "permitBatch", + "type": "tuple", + "internalType": "struct IAllowanceTransfer.PermitBatch", + "components": [ + { + "name": "details", + "type": "tuple[]", + "internalType": "struct IAllowanceTransfer.PermitDetails[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "nonce", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "sigDeadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "permitSingle", + "type": "tuple", + "internalType": "struct IAllowanceTransfer.PermitSingle", + "components": [ + { + "name": "details", + "type": "tuple", + "internalType": "struct IAllowanceTransfer.PermitDetails", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "nonce", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "sigDeadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permitTransferFrom", + "inputs": [ + { + "name": "permit", + "type": "tuple", + "internalType": "struct ISignatureTransfer.PermitTransferFrom", + "components": [ + { + "name": "permitted", + "type": "tuple", + "internalType": "struct ISignatureTransfer.TokenPermissions", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "transferDetails", + "type": "tuple", + "internalType": "struct ISignatureTransfer.SignatureTransferDetails", + "components": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "requestedAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permitTransferFrom", + "inputs": [ + { + "name": "permit", + "type": "tuple", + "internalType": "struct ISignatureTransfer.PermitBatchTransferFrom", + "components": [ + { + "name": "permitted", + "type": "tuple[]", + "internalType": "struct ISignatureTransfer.TokenPermissions[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "transferDetails", + "type": "tuple[]", + "internalType": "struct ISignatureTransfer.SignatureTransferDetails[]", + "components": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "requestedAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permitWitnessTransferFrom", + "inputs": [ + { + "name": "permit", + "type": "tuple", + "internalType": "struct ISignatureTransfer.PermitTransferFrom", + "components": [ + { + "name": "permitted", + "type": "tuple", + "internalType": "struct ISignatureTransfer.TokenPermissions", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "transferDetails", + "type": "tuple", + "internalType": "struct ISignatureTransfer.SignatureTransferDetails", + "components": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "requestedAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "witness", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "witnessTypeString", + "type": "string", + "internalType": "string" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permitWitnessTransferFrom", + "inputs": [ + { + "name": "permit", + "type": "tuple", + "internalType": "struct ISignatureTransfer.PermitBatchTransferFrom", + "components": [ + { + "name": "permitted", + "type": "tuple[]", + "internalType": "struct ISignatureTransfer.TokenPermissions[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "transferDetails", + "type": "tuple[]", + "internalType": "struct ISignatureTransfer.SignatureTransferDetails[]", + "components": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "requestedAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "witness", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "witnessTypeString", + "type": "string", + "internalType": "string" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "transferDetails", + "type": "tuple[]", + "internalType": "struct IAllowanceTransfer.AllowanceTransferDetails[]", + "components": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "indexed": false, + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Lockdown", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NonceInvalidation", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newNonce", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + }, + { + "name": "oldNonce", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "indexed": false, + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + }, + { + "name": "nonce", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UnorderedNonceInvalidation", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "word", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "mask", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "AllowanceExpired", + "inputs": [ + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ExcessiveInvalidation", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientAllowance", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "InvalidAmount", + "inputs": [ + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "LengthMismatch", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IPermit2 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity +struct AllowanceTransferDetails { address from; address to; uint160 amount; address token; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct AllowanceTransferDetails { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: as alloy::sol_types::SolType>::RustType, + pub token: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: AllowanceTransferDetails) -> Self { + (value.from, value.to, value.amount, value.token) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for AllowanceTransferDetails { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + amount: tuple.2, + token: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for AllowanceTransferDetails { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for AllowanceTransferDetails { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.token, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for AllowanceTransferDetails { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for AllowanceTransferDetails { + const NAME: &'static str = "AllowanceTransferDetails"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "AllowanceTransferDetails(address from,address to,uint160 amount,address token)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.from, + ) + .0, + ::eip712_data_word( + &self.to, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.token, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for AllowanceTransferDetails { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.from, + ) + + ::topic_preimage_length( + &rust.to, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.token, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.from, + out, + ); + ::encode_topic_preimage( + &rust.to, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct PermitBatch { PermitDetails[] details; address spender; uint256 sigDeadline; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PermitBatch { + pub details: alloy::sol_types::private::Vec< + ::RustType, + >, + pub spender: alloy::sol_types::private::Address, + pub sigDeadline: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitBatch) -> Self { + (value.details, value.spender, value.sigDeadline) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PermitBatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + details: tuple.0, + spender: tuple.1, + sigDeadline: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PermitBatch { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PermitBatch { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.details), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.sigDeadline), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PermitBatch { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PermitBatch { + const NAME: &'static str = "PermitBatch"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PermitBatch(PermitDetails[] details,address spender,uint256 sigDeadline)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.details) + .0, + ::eip712_data_word( + &self.spender, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.sigDeadline) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PermitBatch { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.details, + ) + + ::topic_preimage_length( + &rust.spender, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.sigDeadline, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.details, + out, + ); + ::encode_topic_preimage( + &rust.spender, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.sigDeadline, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct PermitBatchTransferFrom { TokenPermissions[] permitted; uint256 nonce; uint256 deadline; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PermitBatchTransferFrom { + pub permitted: alloy::sol_types::private::Vec< + ::RustType, + >, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitBatchTransferFrom) -> Self { + (value.permitted, value.nonce, value.deadline) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PermitBatchTransferFrom { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permitted: tuple.0, + nonce: tuple.1, + deadline: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PermitBatchTransferFrom { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PermitBatchTransferFrom { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.permitted), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PermitBatchTransferFrom { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PermitBatchTransferFrom { + const NAME: &'static str = "PermitBatchTransferFrom"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PermitBatchTransferFrom(TokenPermissions[] permitted,uint256 nonce,uint256 deadline)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.permitted) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PermitBatchTransferFrom { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.permitted, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.permitted, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct PermitDetails { address token; uint160 amount; uint48 expiration; uint48 nonce; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PermitDetails { + pub token: alloy::sol_types::private::Address, + pub amount: as alloy::sol_types::SolType>::RustType, + pub expiration: as alloy::sol_types::SolType>::RustType, + pub nonce: as alloy::sol_types::SolType>::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + alloy::sol_types::sol_data::Uint<48>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + as alloy::sol_types::SolType>::RustType, + as alloy::sol_types::SolType>::RustType, + as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitDetails) -> Self { + (value.token, value.amount, value.expiration, value.nonce) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PermitDetails { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + expiration: tuple.2, + nonce: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PermitDetails { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PermitDetails { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.expiration), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PermitDetails { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PermitDetails { + const NAME: &'static str = "PermitDetails"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.expiration) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PermitDetails { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.expiration, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.expiration, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct PermitSingle { PermitDetails details; address spender; uint256 sigDeadline; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PermitSingle { + pub details: ::RustType, + pub spender: alloy::sol_types::private::Address, + pub sigDeadline: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + PermitDetails, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitSingle) -> Self { + (value.details, value.spender, value.sigDeadline) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PermitSingle { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + details: tuple.0, + spender: tuple.1, + sigDeadline: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PermitSingle { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PermitSingle { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.details), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.sigDeadline), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PermitSingle { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PermitSingle { + const NAME: &'static str = "PermitSingle"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PermitSingle(PermitDetails details,address spender,uint256 sigDeadline)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.details, + ) + .0, + ::eip712_data_word( + &self.spender, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.sigDeadline) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PermitSingle { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.details, + ) + + ::topic_preimage_length( + &rust.spender, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.sigDeadline, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.details, + out, + ); + ::encode_topic_preimage( + &rust.spender, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.sigDeadline, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 deadline; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PermitTransferFrom { + pub permitted: ::RustType, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + TokenPermissions, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitTransferFrom) -> Self { + (value.permitted, value.nonce, value.deadline) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PermitTransferFrom { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permitted: tuple.0, + nonce: tuple.1, + deadline: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PermitTransferFrom { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PermitTransferFrom { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.permitted, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PermitTransferFrom { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PermitTransferFrom { + const NAME: &'static str = "PermitTransferFrom"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PermitTransferFrom(TokenPermissions permitted,uint256 nonce,uint256 deadline)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.permitted, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PermitTransferFrom { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.permitted, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.permitted, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct SignatureTransferDetails { address to; uint256 requestedAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureTransferDetails { + pub to: alloy::sol_types::private::Address, + pub requestedAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: SignatureTransferDetails) -> Self { + (value.to, value.requestedAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for SignatureTransferDetails { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + to: tuple.0, + requestedAmount: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureTransferDetails { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureTransferDetails { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.requestedAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureTransferDetails { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureTransferDetails { + const NAME: &'static str = "SignatureTransferDetails"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureTransferDetails(address to,uint256 requestedAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.to, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.requestedAmount, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureTransferDetails { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.to, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.requestedAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.to, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.requestedAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct TokenPermissions { address token; uint256 amount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct TokenPermissions { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TokenPermissions) -> Self { + (value.token, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TokenPermissions { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for TokenPermissions { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for TokenPermissions { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for TokenPermissions { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for TokenPermissions { + const NAME: &'static str = "TokenPermissions"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "TokenPermissions(address token,uint256 amount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for TokenPermissions { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct TokenSpenderPair { address token; address spender; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct TokenSpenderPair { + pub token: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TokenSpenderPair) -> Self { + (value.token, value.spender) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TokenSpenderPair { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + spender: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for TokenSpenderPair { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for TokenSpenderPair { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + ::tokenize( + &self.spender, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for TokenSpenderPair { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for TokenSpenderPair { + const NAME: &'static str = "TokenSpenderPair"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "TokenSpenderPair(address token,address spender)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + ::eip712_data_word( + &self.spender, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for TokenSpenderPair { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + ::topic_preimage_length( + &rust.spender, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + ::encode_topic_preimage( + &rust.spender, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `AllowanceExpired(uint256)` and selector `0xd81b2f2e`. +```solidity +error AllowanceExpired(uint256 deadline); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct AllowanceExpired { + pub deadline: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: AllowanceExpired) -> Self { + (value.deadline,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for AllowanceExpired { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { deadline: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for AllowanceExpired { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "AllowanceExpired(uint256)"; + const SELECTOR: [u8; 4] = [216u8, 27u8, 47u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ) + } + } + }; + /**Custom error with signature `ExcessiveInvalidation()` and selector `0x24d35a26`. +```solidity +error ExcessiveInvalidation(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ExcessiveInvalidation {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ExcessiveInvalidation) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ExcessiveInvalidation { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ExcessiveInvalidation { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ExcessiveInvalidation()"; + const SELECTOR: [u8; 4] = [36u8, 211u8, 90u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InsufficientAllowance(uint256)` and selector `0xf96fb071`. +```solidity +error InsufficientAllowance(uint256 amount); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InsufficientAllowance { + pub amount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InsufficientAllowance) -> Self { + (value.amount,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InsufficientAllowance { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { amount: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InsufficientAllowance { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InsufficientAllowance(uint256)"; + const SELECTOR: [u8; 4] = [249u8, 111u8, 176u8, 113u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + } + }; + /**Custom error with signature `InvalidAmount(uint256)` and selector `0x3728b83d`. +```solidity +error InvalidAmount(uint256 maxAmount); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidAmount { + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidAmount) -> Self { + (value.maxAmount,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidAmount { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { maxAmount: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidAmount { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidAmount(uint256)"; + const SELECTOR: [u8; 4] = [55u8, 40u8, 184u8, 61u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + } + }; + /**Custom error with signature `LengthMismatch()` and selector `0xff633a38`. +```solidity +error LengthMismatch(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct LengthMismatch {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: LengthMismatch) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for LengthMismatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for LengthMismatch { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "LengthMismatch()"; + const SELECTOR: [u8; 4] = [255u8, 99u8, 58u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Approval(address,address,address,uint160,uint48)` and selector `0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b`. +```solidity +event Approval(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub expiration: as alloy::sol_types::SolType>::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Approval(address,address,address,uint160,uint48)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 218u8, + 159u8, + 167u8, + 193u8, + 176u8, + 4u8, + 2u8, + 193u8, + 125u8, + 1u8, + 97u8, + 178u8, + 73u8, + 177u8, + 171u8, + 139u8, + 190u8, + 192u8, + 71u8, + 197u8, + 165u8, + 34u8, + 7u8, + 185u8, + 193u8, + 18u8, + 222u8, + 255u8, + 216u8, + 23u8, + 3u8, + 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + token: topics.2, + spender: topics.3, + amount: data.0, + expiration: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.expiration), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.owner.clone(), + self.token.clone(), + self.spender.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.token, + ); + out[3usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Lockdown(address,address,address)` and selector `0x89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4`. +```solidity +event Lockdown(address indexed owner, address token, address spender); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Lockdown { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Lockdown { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Lockdown(address,address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 137u8, + 177u8, + 173u8, + 209u8, + 94u8, + 255u8, + 86u8, + 179u8, + 223u8, + 226u8, + 153u8, + 173u8, + 148u8, + 224u8, + 31u8, + 43u8, + 82u8, + 251u8, + 203u8, + 128u8, + 174u8, + 26u8, + 59u8, + 174u8, + 166u8, + 174u8, + 140u8, + 4u8, + 203u8, + 43u8, + 152u8, + 164u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + token: data.0, + spender: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.token, + ), + ::tokenize( + &self.spender, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.owner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Lockdown { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Lockdown> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Lockdown) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `NonceInvalidation(address,address,address,uint48,uint48)` and selector `0x55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f3`. +```solidity +event NonceInvalidation(address indexed owner, address indexed token, address indexed spender, uint48 newNonce, uint48 oldNonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct NonceInvalidation { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newNonce: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub oldNonce: as alloy::sol_types::SolType>::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for NonceInvalidation { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<48>, + alloy::sol_types::sol_data::Uint<48>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "NonceInvalidation(address,address,address,uint48,uint48)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 85u8, + 235u8, + 144u8, + 216u8, + 16u8, + 225u8, + 112u8, + 11u8, + 53u8, + 168u8, + 231u8, + 226u8, + 83u8, + 149u8, + 255u8, + 127u8, + 43u8, + 34u8, + 89u8, + 171u8, + 215u8, + 65u8, + 92u8, + 162u8, + 40u8, + 77u8, + 251u8, + 28u8, + 36u8, + 100u8, + 24u8, + 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + token: topics.2, + spender: topics.3, + newNonce: data.0, + oldNonce: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.newNonce), + as alloy_sol_types::SolType>::tokenize(&self.oldNonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.owner.clone(), + self.token.clone(), + self.spender.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.token, + ); + out[3usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for NonceInvalidation { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&NonceInvalidation> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &NonceInvalidation) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Permit(address,address,address,uint160,uint48,uint48)` and selector `0xc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec`. +```solidity +event Permit(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration, uint48 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Permit { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub expiration: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub nonce: as alloy::sol_types::SolType>::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Permit { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + alloy::sol_types::sol_data::Uint<48>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Permit(address,address,address,uint160,uint48,uint48)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 198u8, + 163u8, + 119u8, + 191u8, + 196u8, + 235u8, + 18u8, + 0u8, + 36u8, + 168u8, + 172u8, + 8u8, + 238u8, + 242u8, + 5u8, + 190u8, + 22u8, + 184u8, + 23u8, + 2u8, + 8u8, + 18u8, + 199u8, + 50u8, + 35u8, + 232u8, + 29u8, + 27u8, + 219u8, + 151u8, + 8u8, + 236u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + token: topics.2, + spender: topics.3, + amount: data.0, + expiration: data.1, + nonce: data.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.expiration), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.owner.clone(), + self.token.clone(), + self.spender.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.token, + ); + out[3usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Permit { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Permit> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Permit) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `UnorderedNonceInvalidation(address,uint256,uint256)` and selector `0x3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d`. +```solidity +event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct UnorderedNonceInvalidation { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub word: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub mask: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for UnorderedNonceInvalidation { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "UnorderedNonceInvalidation(address,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 55u8, + 4u8, + 144u8, + 47u8, + 150u8, + 55u8, + 102u8, + 164u8, + 229u8, + 97u8, + 187u8, + 170u8, + 182u8, + 230u8, + 205u8, + 193u8, + 177u8, + 221u8, + 18u8, + 246u8, + 233u8, + 233u8, + 150u8, + 72u8, + 218u8, + 136u8, + 67u8, + 179u8, + 244u8, + 107u8, + 145u8, + 141u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + word: data.0, + mask: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.word), + as alloy_sol_types::SolType>::tokenize(&self.mask), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.owner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for UnorderedNonceInvalidation { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&UnorderedNonceInvalidation> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &UnorderedNonceInvalidation, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`. +```solidity +function DOMAIN_SEPARATOR() external view returns (bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORCall {} + ///Container type for the return parameters of the [`DOMAIN_SEPARATOR()`](DOMAIN_SEPARATORCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DOMAIN_SEPARATORCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DOMAIN_SEPARATORReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DOMAIN_SEPARATOR()"; + const SELECTOR: [u8; 4] = [54u8, 68u8, 229u8, 21u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `allowance(address,address,address)` and selector `0x927da105`. +```solidity +function allowance(address user, address token, address spender) external view returns (uint160 amount, uint48 expiration, uint48 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceCall { + pub user: alloy::sol_types::private::Address, + pub token: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`allowance(address,address,address)`](allowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceReturn { + pub amount: as alloy::sol_types::SolType>::RustType, + pub expiration: as alloy::sol_types::SolType>::RustType, + pub nonce: as alloy::sol_types::SolType>::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceCall) -> Self { + (value.user, value.token, value.spender) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + user: tuple.0, + token: tuple.1, + spender: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + alloy::sol_types::sol_data::Uint<48>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + as alloy::sol_types::SolType>::RustType, + as alloy::sol_types::SolType>::RustType, + as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceReturn) -> Self { + (value.amount, value.expiration, value.nonce) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amount: tuple.0, + expiration: tuple.1, + nonce: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = allowanceReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + alloy::sol_types::sol_data::Uint<48>, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allowance(address,address,address)"; + const SELECTOR: [u8; 4] = [146u8, 125u8, 161u8, 5u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.user, + ), + ::tokenize( + &self.token, + ), + ::tokenize( + &self.spender, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `approve(address,address,uint160,uint48)` and selector `0x87517c45`. +```solidity +function approve(address token, address spender, uint160 amount, uint48 expiration) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub token: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + pub amount: as alloy::sol_types::SolType>::RustType, + pub expiration: as alloy::sol_types::SolType>::RustType, + } + ///Container type for the return parameters of the [`approve(address,address,uint160,uint48)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + as alloy::sol_types::SolType>::RustType, + as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.token, value.spender, value.amount, value.expiration) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + spender: tuple.1, + amount: tuple.2, + expiration: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,address,uint160,uint48)"; + const SELECTOR: [u8; 4] = [135u8, 81u8, 124u8, 69u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.expiration), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `invalidateNonces(address,address,uint48)` and selector `0x65d9723c`. +```solidity +function invalidateNonces(address token, address spender, uint48 newNonce) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct invalidateNoncesCall { + pub token: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + pub newNonce: as alloy::sol_types::SolType>::RustType, + } + ///Container type for the return parameters of the [`invalidateNonces(address,address,uint48)`](invalidateNoncesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct invalidateNoncesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<48>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: invalidateNoncesCall) -> Self { + (value.token, value.spender, value.newNonce) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for invalidateNoncesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + spender: tuple.1, + newNonce: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: invalidateNoncesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for invalidateNoncesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for invalidateNoncesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<48>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = invalidateNoncesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "invalidateNonces(address,address,uint48)"; + const SELECTOR: [u8; 4] = [101u8, 217u8, 114u8, 60u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.newNonce), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `invalidateUnorderedNonces(uint256,uint256)` and selector `0x3ff9dcb1`. +```solidity +function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct invalidateUnorderedNoncesCall { + pub wordPos: alloy::sol_types::private::U256, + pub mask: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`invalidateUnorderedNonces(uint256,uint256)`](invalidateUnorderedNoncesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct invalidateUnorderedNoncesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: invalidateUnorderedNoncesCall) -> Self { + (value.wordPos, value.mask) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for invalidateUnorderedNoncesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + wordPos: tuple.0, + mask: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: invalidateUnorderedNoncesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for invalidateUnorderedNoncesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for invalidateUnorderedNoncesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = invalidateUnorderedNoncesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "invalidateUnorderedNonces(uint256,uint256)"; + const SELECTOR: [u8; 4] = [63u8, 249u8, 220u8, 177u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.wordPos), + as alloy_sol_types::SolType>::tokenize(&self.mask), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `lockdown((address,address)[])` and selector `0xcc53287f`. +```solidity +function lockdown(TokenSpenderPair[] memory approvals) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct lockdownCall { + pub approvals: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`lockdown((address,address)[])`](lockdownCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct lockdownReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lockdownCall) -> Self { + (value.approvals,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lockdownCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { approvals: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: lockdownReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for lockdownReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for lockdownCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = lockdownReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "lockdown((address,address)[])"; + const SELECTOR: [u8; 4] = [204u8, 83u8, 40u8, 127u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.approvals), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `nonceBitmap(address,uint256)` and selector `0x4fe02b44`. +```solidity +function nonceBitmap(address, uint256) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nonceBitmapCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`nonceBitmap(address,uint256)`](nonceBitmapCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nonceBitmapReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nonceBitmapCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nonceBitmapCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0, _1: tuple.1 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nonceBitmapReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nonceBitmapReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nonceBitmapCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nonceBitmapReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "nonceBitmap(address,uint256)"; + const SELECTOR: [u8; 4] = [79u8, 224u8, 43u8, 68u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize(&self._1), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)` and selector `0x2a2d80d1`. +```solidity +function permit(address owner, PermitBatch memory permitBatch, bytes memory signature) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit_0Call { + pub owner: alloy::sol_types::private::Address, + pub permitBatch: ::RustType, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)`](permit_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + PermitBatch, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit_0Call) -> Self { + (value.owner, value.permitBatch, value.signature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + permitBatch: tuple.1, + signature: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + PermitBatch, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)"; + const SELECTOR: [u8; 4] = [42u8, 45u8, 128u8, 209u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.permitBatch, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)` and selector `0x2b67b570`. +```solidity +function permit(address owner, PermitSingle memory permitSingle, bytes memory signature) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit_1Call { + pub owner: alloy::sol_types::private::Address, + pub permitSingle: ::RustType, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)`](permit_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + PermitSingle, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit_1Call) -> Self { + (value.owner, value.permitSingle, value.signature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + permitSingle: tuple.1, + signature: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + PermitSingle, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)"; + const SELECTOR: [u8; 4] = [43u8, 103u8, 181u8, 112u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.permitSingle, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)` and selector `0x30f28b7a`. +```solidity +function permitTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes memory signature) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitTransferFrom_0Call { + pub permit: ::RustType, + pub transferDetails: ::RustType, + pub owner: alloy::sol_types::private::Address, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)`](permitTransferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitTransferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + PermitTransferFrom, + SignatureTransferDetails, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitTransferFrom_0Call) -> Self { + (value.permit, value.transferDetails, value.owner, value.signature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitTransferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit: tuple.0, + transferDetails: tuple.1, + owner: tuple.2, + signature: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitTransferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitTransferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitTransferFrom_0Call { + type Parameters<'a> = ( + PermitTransferFrom, + SignatureTransferDetails, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitTransferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)"; + const SELECTOR: [u8; 4] = [48u8, 242u8, 139u8, 122u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.permit, + ), + ::tokenize( + &self.transferDetails, + ), + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)` and selector `0xedd9444b`. +```solidity +function permitTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes memory signature) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitTransferFrom_1Call { + pub permit: ::RustType, + pub transferDetails: alloy::sol_types::private::Vec< + ::RustType, + >, + pub owner: alloy::sol_types::private::Address, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)`](permitTransferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitTransferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + PermitBatchTransferFrom, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitTransferFrom_1Call) -> Self { + (value.permit, value.transferDetails, value.owner, value.signature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitTransferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit: tuple.0, + transferDetails: tuple.1, + owner: tuple.2, + signature: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitTransferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitTransferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitTransferFrom_1Call { + type Parameters<'a> = ( + PermitBatchTransferFrom, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitTransferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)"; + const SELECTOR: [u8; 4] = [237u8, 217u8, 68u8, 75u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.permit, + ), + as alloy_sol_types::SolType>::tokenize(&self.transferDetails), + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)` and selector `0x137c29fe`. +```solidity +function permitWitnessTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitWitnessTransferFrom_0Call { + pub permit: ::RustType, + pub transferDetails: ::RustType, + pub owner: alloy::sol_types::private::Address, + pub witness: alloy::sol_types::private::FixedBytes<32>, + pub witnessTypeString: alloy::sol_types::private::String, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)`](permitWitnessTransferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitWitnessTransferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + PermitTransferFrom, + SignatureTransferDetails, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::String, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitWitnessTransferFrom_0Call) -> Self { + ( + value.permit, + value.transferDetails, + value.owner, + value.witness, + value.witnessTypeString, + value.signature, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitWitnessTransferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit: tuple.0, + transferDetails: tuple.1, + owner: tuple.2, + witness: tuple.3, + witnessTypeString: tuple.4, + signature: tuple.5, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitWitnessTransferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitWitnessTransferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitWitnessTransferFrom_0Call { + type Parameters<'a> = ( + PermitTransferFrom, + SignatureTransferDetails, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitWitnessTransferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)"; + const SELECTOR: [u8; 4] = [19u8, 124u8, 41u8, 254u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.permit, + ), + ::tokenize( + &self.transferDetails, + ), + ::tokenize( + &self.owner, + ), + as alloy_sol_types::SolType>::tokenize(&self.witness), + ::tokenize( + &self.witnessTypeString, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)` and selector `0xfe8ec1a7`. +```solidity +function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitWitnessTransferFrom_1Call { + pub permit: ::RustType, + pub transferDetails: alloy::sol_types::private::Vec< + ::RustType, + >, + pub owner: alloy::sol_types::private::Address, + pub witness: alloy::sol_types::private::FixedBytes<32>, + pub witnessTypeString: alloy::sol_types::private::String, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)`](permitWitnessTransferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitWitnessTransferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + PermitBatchTransferFrom, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::String, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitWitnessTransferFrom_1Call) -> Self { + ( + value.permit, + value.transferDetails, + value.owner, + value.witness, + value.witnessTypeString, + value.signature, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitWitnessTransferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit: tuple.0, + transferDetails: tuple.1, + owner: tuple.2, + witness: tuple.3, + witnessTypeString: tuple.4, + signature: tuple.5, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitWitnessTransferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitWitnessTransferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitWitnessTransferFrom_1Call { + type Parameters<'a> = ( + PermitBatchTransferFrom, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitWitnessTransferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)"; + const SELECTOR: [u8; 4] = [254u8, 142u8, 193u8, 167u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.permit, + ), + as alloy_sol_types::SolType>::tokenize(&self.transferDetails), + ::tokenize( + &self.owner, + ), + as alloy_sol_types::SolType>::tokenize(&self.witness), + ::tokenize( + &self.witnessTypeString, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom((address,address,uint160,address)[])` and selector `0x0d58b1db`. +```solidity +function transferFrom(AllowanceTransferDetails[] memory transferDetails) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFrom_0Call { + pub transferDetails: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`transferFrom((address,address,uint160,address)[])`](transferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFrom_0Call) -> Self { + (value.transferDetails,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { transferDetails: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFrom_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom((address,address,uint160,address)[])"; + const SELECTOR: [u8; 4] = [13u8, 88u8, 177u8, 219u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.transferDetails), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint160,address)` and selector `0x36c78516`. +```solidity +function transferFrom(address from, address to, uint160 amount, address token) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFrom_1Call { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: as alloy::sol_types::SolType>::RustType, + pub token: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint160,address)`](transferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFrom_1Call) -> Self { + (value.from, value.to, value.amount, value.token) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + amount: tuple.2, + token: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFrom_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint160,address)"; + const SELECTOR: [u8; 4] = [54u8, 199u8, 133u8, 22u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.token, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IPermit2`](self) function calls. + pub enum IPermit2Calls { + DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + allowance(allowanceCall), + approve(approveCall), + invalidateNonces(invalidateNoncesCall), + invalidateUnorderedNonces(invalidateUnorderedNoncesCall), + lockdown(lockdownCall), + nonceBitmap(nonceBitmapCall), + permit_0(permit_0Call), + permit_1(permit_1Call), + permitTransferFrom_0(permitTransferFrom_0Call), + permitTransferFrom_1(permitTransferFrom_1Call), + permitWitnessTransferFrom_0(permitWitnessTransferFrom_0Call), + permitWitnessTransferFrom_1(permitWitnessTransferFrom_1Call), + transferFrom_0(transferFrom_0Call), + transferFrom_1(transferFrom_1Call), + } + #[automatically_derived] + impl IPermit2Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 88u8, 177u8, 219u8], + [19u8, 124u8, 41u8, 254u8], + [42u8, 45u8, 128u8, 209u8], + [43u8, 103u8, 181u8, 112u8], + [48u8, 242u8, 139u8, 122u8], + [54u8, 68u8, 229u8, 21u8], + [54u8, 199u8, 133u8, 22u8], + [63u8, 249u8, 220u8, 177u8], + [79u8, 224u8, 43u8, 68u8], + [101u8, 217u8, 114u8, 60u8], + [135u8, 81u8, 124u8, 69u8], + [146u8, 125u8, 161u8, 5u8], + [204u8, 83u8, 40u8, 127u8], + [237u8, 217u8, 68u8, 75u8], + [254u8, 142u8, 193u8, 167u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IPermit2Calls { + const NAME: &'static str = "IPermit2Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 15usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DOMAIN_SEPARATOR(_) => { + ::SELECTOR + } + Self::allowance(_) => { + ::SELECTOR + } + Self::approve(_) => ::SELECTOR, + Self::invalidateNonces(_) => { + ::SELECTOR + } + Self::invalidateUnorderedNonces(_) => { + ::SELECTOR + } + Self::lockdown(_) => ::SELECTOR, + Self::nonceBitmap(_) => { + ::SELECTOR + } + Self::permit_0(_) => ::SELECTOR, + Self::permit_1(_) => ::SELECTOR, + Self::permitTransferFrom_0(_) => { + ::SELECTOR + } + Self::permitTransferFrom_1(_) => { + ::SELECTOR + } + Self::permitWitnessTransferFrom_0(_) => { + ::SELECTOR + } + Self::permitWitnessTransferFrom_1(_) => { + ::SELECTOR + } + Self::transferFrom_0(_) => { + ::SELECTOR + } + Self::transferFrom_1(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn transferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::transferFrom_0) + } + transferFrom_0 + }, + { + fn permitWitnessTransferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::permitWitnessTransferFrom_0) + } + permitWitnessTransferFrom_0 + }, + { + fn permit_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::permit_0) + } + permit_0 + }, + { + fn permit_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::permit_1) + } + permit_1 + }, + { + fn permitTransferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::permitTransferFrom_0) + } + permitTransferFrom_0 + }, + { + fn DOMAIN_SEPARATOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::DOMAIN_SEPARATOR) + } + DOMAIN_SEPARATOR + }, + { + fn transferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::transferFrom_1) + } + transferFrom_1 + }, + { + fn invalidateUnorderedNonces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::invalidateUnorderedNonces) + } + invalidateUnorderedNonces + }, + { + fn nonceBitmap( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::nonceBitmap) + } + nonceBitmap + }, + { + fn invalidateNonces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::invalidateNonces) + } + invalidateNonces + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::approve) + } + approve + }, + { + fn allowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::allowance) + } + allowance + }, + { + fn lockdown( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::lockdown) + } + lockdown + }, + { + fn permitTransferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::permitTransferFrom_1) + } + permitTransferFrom_1 + }, + { + fn permitWitnessTransferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Calls::permitWitnessTransferFrom_1) + } + permitWitnessTransferFrom_1 + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::allowance(inner) => { + ::abi_encoded_size(inner) + } + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::invalidateNonces(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::invalidateUnorderedNonces(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::lockdown(inner) => { + ::abi_encoded_size(inner) + } + Self::nonceBitmap(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::permit_0(inner) => { + ::abi_encoded_size(inner) + } + Self::permit_1(inner) => { + ::abi_encoded_size(inner) + } + Self::permitTransferFrom_0(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::permitTransferFrom_1(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::permitWitnessTransferFrom_0(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::permitWitnessTransferFrom_1(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferFrom_0(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferFrom_1(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::allowance(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::invalidateNonces(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::invalidateUnorderedNonces(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::lockdown(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::nonceBitmap(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::permit_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::permit_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::permitTransferFrom_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::permitTransferFrom_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::permitWitnessTransferFrom_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::permitWitnessTransferFrom_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferFrom_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferFrom_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IPermit2`](self) custom errors. + pub enum IPermit2Errors { + AllowanceExpired(AllowanceExpired), + ExcessiveInvalidation(ExcessiveInvalidation), + InsufficientAllowance(InsufficientAllowance), + InvalidAmount(InvalidAmount), + LengthMismatch(LengthMismatch), + } + #[automatically_derived] + impl IPermit2Errors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [36u8, 211u8, 90u8, 38u8], + [55u8, 40u8, 184u8, 61u8], + [216u8, 27u8, 47u8, 46u8], + [249u8, 111u8, 176u8, 113u8], + [255u8, 99u8, 58u8, 56u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IPermit2Errors { + const NAME: &'static str = "IPermit2Errors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 5usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::AllowanceExpired(_) => { + ::SELECTOR + } + Self::ExcessiveInvalidation(_) => { + ::SELECTOR + } + Self::InsufficientAllowance(_) => { + ::SELECTOR + } + Self::InvalidAmount(_) => { + ::SELECTOR + } + Self::LengthMismatch(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn ExcessiveInvalidation( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Errors::ExcessiveInvalidation) + } + ExcessiveInvalidation + }, + { + fn InvalidAmount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Errors::InvalidAmount) + } + InvalidAmount + }, + { + fn AllowanceExpired( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Errors::AllowanceExpired) + } + AllowanceExpired + }, + { + fn InsufficientAllowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Errors::InsufficientAllowance) + } + InsufficientAllowance + }, + { + fn LengthMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IPermit2Errors::LengthMismatch) + } + LengthMismatch + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::AllowanceExpired(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ExcessiveInvalidation(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InsufficientAllowance(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidAmount(inner) => { + ::abi_encoded_size(inner) + } + Self::LengthMismatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::AllowanceExpired(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ExcessiveInvalidation(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InsufficientAllowance(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidAmount(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::LengthMismatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`IPermit2`](self) events. + pub enum IPermit2Events { + Approval(Approval), + Lockdown(Lockdown), + NonceInvalidation(NonceInvalidation), + Permit(Permit), + UnorderedNonceInvalidation(UnorderedNonceInvalidation), + } + #[automatically_derived] + impl IPermit2Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 55u8, + 4u8, + 144u8, + 47u8, + 150u8, + 55u8, + 102u8, + 164u8, + 229u8, + 97u8, + 187u8, + 170u8, + 182u8, + 230u8, + 205u8, + 193u8, + 177u8, + 221u8, + 18u8, + 246u8, + 233u8, + 233u8, + 150u8, + 72u8, + 218u8, + 136u8, + 67u8, + 179u8, + 244u8, + 107u8, + 145u8, + 141u8, + ], + [ + 85u8, + 235u8, + 144u8, + 216u8, + 16u8, + 225u8, + 112u8, + 11u8, + 53u8, + 168u8, + 231u8, + 226u8, + 83u8, + 149u8, + 255u8, + 127u8, + 43u8, + 34u8, + 89u8, + 171u8, + 215u8, + 65u8, + 92u8, + 162u8, + 40u8, + 77u8, + 251u8, + 28u8, + 36u8, + 100u8, + 24u8, + 243u8, + ], + [ + 137u8, + 177u8, + 173u8, + 209u8, + 94u8, + 255u8, + 86u8, + 179u8, + 223u8, + 226u8, + 153u8, + 173u8, + 148u8, + 224u8, + 31u8, + 43u8, + 82u8, + 251u8, + 203u8, + 128u8, + 174u8, + 26u8, + 59u8, + 174u8, + 166u8, + 174u8, + 140u8, + 4u8, + 203u8, + 43u8, + 152u8, + 164u8, + ], + [ + 198u8, + 163u8, + 119u8, + 191u8, + 196u8, + 235u8, + 18u8, + 0u8, + 36u8, + 168u8, + 172u8, + 8u8, + 238u8, + 242u8, + 5u8, + 190u8, + 22u8, + 184u8, + 23u8, + 2u8, + 8u8, + 18u8, + 199u8, + 50u8, + 35u8, + 232u8, + 29u8, + 27u8, + 219u8, + 151u8, + 8u8, + 236u8, + ], + [ + 218u8, + 159u8, + 167u8, + 193u8, + 176u8, + 4u8, + 2u8, + 193u8, + 125u8, + 1u8, + 97u8, + 178u8, + 73u8, + 177u8, + 171u8, + 139u8, + 190u8, + 192u8, + 71u8, + 197u8, + 165u8, + 34u8, + 7u8, + 185u8, + 193u8, + 18u8, + 222u8, + 255u8, + 216u8, + 23u8, + 3u8, + 107u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for IPermit2Events { + const NAME: &'static str = "IPermit2Events"; + const COUNT: usize = 5usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Lockdown) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::NonceInvalidation) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Permit) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::UnorderedNonceInvalidation) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for IPermit2Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Lockdown(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::NonceInvalidation(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Permit(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::UnorderedNonceInvalidation(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Lockdown(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::NonceInvalidation(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Permit(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::UnorderedNonceInvalidation(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IPermit2`](self) contract instance. + +See the [wrapper's documentation](`IPermit2Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IPermit2Instance { + IPermit2Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IPermit2Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IPermit2Instance::::deploy_builder(provider) + } + /**A [`IPermit2`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IPermit2`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IPermit2Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IPermit2Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IPermit2Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IPermit2Instance { + /**Creates a new wrapper around an on-chain [`IPermit2`](self) contract instance. + +See the [wrapper's documentation](`IPermit2Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IPermit2Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IPermit2Instance { + IPermit2Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IPermit2Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`DOMAIN_SEPARATOR`] function. + pub fn DOMAIN_SEPARATOR( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DOMAIN_SEPARATORCall {}) + } + ///Creates a new call builder for the [`allowance`] function. + pub fn allowance( + &self, + user: alloy::sol_types::private::Address, + token: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &allowanceCall { + user, + token, + spender, + }, + ) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + token: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + amount: as alloy::sol_types::SolType>::RustType, + expiration: as alloy::sol_types::SolType>::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &approveCall { + token, + spender, + amount, + expiration, + }, + ) + } + ///Creates a new call builder for the [`invalidateNonces`] function. + pub fn invalidateNonces( + &self, + token: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + newNonce: as alloy::sol_types::SolType>::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &invalidateNoncesCall { + token, + spender, + newNonce, + }, + ) + } + ///Creates a new call builder for the [`invalidateUnorderedNonces`] function. + pub fn invalidateUnorderedNonces( + &self, + wordPos: alloy::sol_types::private::U256, + mask: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &invalidateUnorderedNoncesCall { + wordPos, + mask, + }, + ) + } + ///Creates a new call builder for the [`lockdown`] function. + pub fn lockdown( + &self, + approvals: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&lockdownCall { approvals }) + } + ///Creates a new call builder for the [`nonceBitmap`] function. + pub fn nonceBitmap( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&nonceBitmapCall { _0, _1 }) + } + ///Creates a new call builder for the [`permit_0`] function. + pub fn permit_0( + &self, + owner: alloy::sol_types::private::Address, + permitBatch: ::RustType, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permit_0Call { + owner, + permitBatch, + signature, + }, + ) + } + ///Creates a new call builder for the [`permit_1`] function. + pub fn permit_1( + &self, + owner: alloy::sol_types::private::Address, + permitSingle: ::RustType, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permit_1Call { + owner, + permitSingle, + signature, + }, + ) + } + ///Creates a new call builder for the [`permitTransferFrom_0`] function. + pub fn permitTransferFrom_0( + &self, + permit: ::RustType, + transferDetails: ::RustType, + owner: alloy::sol_types::private::Address, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permitTransferFrom_0Call { + permit, + transferDetails, + owner, + signature, + }, + ) + } + ///Creates a new call builder for the [`permitTransferFrom_1`] function. + pub fn permitTransferFrom_1( + &self, + permit: ::RustType, + transferDetails: alloy::sol_types::private::Vec< + ::RustType, + >, + owner: alloy::sol_types::private::Address, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permitTransferFrom_1Call { + permit, + transferDetails, + owner, + signature, + }, + ) + } + ///Creates a new call builder for the [`permitWitnessTransferFrom_0`] function. + pub fn permitWitnessTransferFrom_0( + &self, + permit: ::RustType, + transferDetails: ::RustType, + owner: alloy::sol_types::private::Address, + witness: alloy::sol_types::private::FixedBytes<32>, + witnessTypeString: alloy::sol_types::private::String, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permitWitnessTransferFrom_0Call { + permit, + transferDetails, + owner, + witness, + witnessTypeString, + signature, + }, + ) + } + ///Creates a new call builder for the [`permitWitnessTransferFrom_1`] function. + pub fn permitWitnessTransferFrom_1( + &self, + permit: ::RustType, + transferDetails: alloy::sol_types::private::Vec< + ::RustType, + >, + owner: alloy::sol_types::private::Address, + witness: alloy::sol_types::private::FixedBytes<32>, + witnessTypeString: alloy::sol_types::private::String, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permitWitnessTransferFrom_1Call { + permit, + transferDetails, + owner, + witness, + witnessTypeString, + signature, + }, + ) + } + ///Creates a new call builder for the [`transferFrom_0`] function. + pub fn transferFrom_0( + &self, + transferDetails: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &transferFrom_0Call { + transferDetails, + }, + ) + } + ///Creates a new call builder for the [`transferFrom_1`] function. + pub fn transferFrom_1( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + amount: as alloy::sol_types::SolType>::RustType, + token: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &transferFrom_1Call { + from, + to, + amount, + token, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IPermit2Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Lockdown`] event. + pub fn Lockdown_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`NonceInvalidation`] event. + pub fn NonceInvalidation_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Permit`] event. + pub fn Permit_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`UnorderedNonceInvalidation`] event. + pub fn UnorderedNonceInvalidation_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/iprotocolfeecontroller.rs b/crates/bindings-uniswapx/src/iprotocolfeecontroller.rs new file mode 100644 index 0000000..34f10fa --- /dev/null +++ b/crates/bindings-uniswapx/src/iprotocolfeecontroller.rs @@ -0,0 +1,1658 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IProtocolFeeController { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "getFeeOutputs", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IProtocolFeeController { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03`. +```solidity +function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getFeeOutputsCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](getFeeOutputsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getFeeOutputsReturn { + pub _0: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ResolvedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getFeeOutputsCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFeeOutputsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getFeeOutputsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFeeOutputsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getFeeOutputsCall { + type Parameters<'a> = (ResolvedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getFeeOutputsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))"; + const SELECTOR: [u8; 4] = [138u8, 166u8, 207u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IProtocolFeeController`](self) function calls. + pub enum IProtocolFeeControllerCalls { + getFeeOutputs(getFeeOutputsCall), + } + #[automatically_derived] + impl IProtocolFeeControllerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[138u8, 166u8, 207u8, 3u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IProtocolFeeControllerCalls { + const NAME: &'static str = "IProtocolFeeControllerCalls"; + const MIN_DATA_LENGTH: usize = 480usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::getFeeOutputs(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn getFeeOutputs( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IProtocolFeeControllerCalls::getFeeOutputs) + } + getFeeOutputs + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::getFeeOutputs(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::getFeeOutputs(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IProtocolFeeController`](self) contract instance. + +See the [wrapper's documentation](`IProtocolFeeControllerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IProtocolFeeControllerInstance { + IProtocolFeeControllerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IProtocolFeeControllerInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IProtocolFeeControllerInstance::::deploy_builder(provider) + } + /**A [`IProtocolFeeController`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IProtocolFeeController`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IProtocolFeeControllerInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IProtocolFeeControllerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IProtocolFeeControllerInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IProtocolFeeControllerInstance { + /**Creates a new wrapper around an on-chain [`IProtocolFeeController`](self) contract instance. + +See the [wrapper's documentation](`IProtocolFeeControllerInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IProtocolFeeControllerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IProtocolFeeControllerInstance { + IProtocolFeeControllerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IProtocolFeeControllerInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`getFeeOutputs`] function. + pub fn getFeeOutputs( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getFeeOutputsCall { order }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IProtocolFeeControllerInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/ireactor.rs b/crates/bindings-uniswapx/src/ireactor.rs new file mode 100644 index 0000000..bc14ad5 --- /dev/null +++ b/crates/bindings-uniswapx/src/ireactor.rs @@ -0,0 +1,1281 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IReactor { + struct SignedOrder { + bytes order; + bytes sig; + } + + function execute(SignedOrder memory order) external payable; + function executeBatch(SignedOrder[] memory orders) external payable; + function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; + function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatchWithCallback", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeWithCallback", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IReactor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes))` and selector `0x3f62192e`. +```solidity +function execute(SignedOrder memory order) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes))"; + const SELECTOR: [u8; 4] = [63u8, 98u8, 25u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3`. +```solidity +function executeBatch(SignedOrder[] memory orders) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { orders: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[])"; + const SELECTOR: [u8; 4] = [13u8, 122u8, 22u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7`. +```solidity +function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackCall) -> Self { + (value.orders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchWithCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatchWithCallback((bytes,bytes)[],bytes)"; + const SELECTOR: [u8; 4] = [19u8, 251u8, 114u8, 199u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884`. +```solidity +function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackCall { + pub order: ::RustType, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + SignedOrder, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackCall) -> Self { + (value.order, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeWithCallbackCall { + type Parameters<'a> = (SignedOrder, alloy::sol_types::sol_data::Bytes); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeWithCallback((bytes,bytes),bytes)"; + const SELECTOR: [u8; 4] = [13u8, 51u8, 88u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IReactor`](self) function calls. + pub enum IReactorCalls { + execute(executeCall), + executeBatch(executeBatchCall), + executeBatchWithCallback(executeBatchWithCallbackCall), + executeWithCallback(executeWithCallbackCall), + } + #[automatically_derived] + impl IReactorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 51u8, 88u8, 132u8], + [13u8, 122u8, 22u8, 195u8], + [19u8, 251u8, 114u8, 199u8], + [63u8, 98u8, 25u8, 46u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IReactorCalls { + const NAME: &'static str = "IReactorCalls"; + const MIN_DATA_LENGTH: usize = 64usize; + const COUNT: usize = 4usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::executeBatchWithCallback(_) => { + ::SELECTOR + } + Self::executeWithCallback(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn executeWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IReactorCalls::executeWithCallback) + } + executeWithCallback + }, + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IReactorCalls::executeBatch) + } + executeBatch + }, + { + fn executeBatchWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IReactorCalls::executeBatchWithCallback) + } + executeBatchWithCallback + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IReactorCalls::execute) + } + execute + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IReactor`](self) contract instance. + +See the [wrapper's documentation](`IReactorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IReactorInstance { + IReactorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IReactorInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IReactorInstance::::deploy_builder(provider) + } + /**A [`IReactor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IReactor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IReactorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IReactorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IReactorInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IReactorInstance { + /**Creates a new wrapper around an on-chain [`IReactor`](self) contract instance. + +See the [wrapper's documentation](`IReactorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IReactorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IReactorInstance { + IReactorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IReactorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeBatchCall { orders }) + } + ///Creates a new call builder for the [`executeBatchWithCallback`] function. + pub fn executeBatchWithCallback( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeBatchWithCallbackCall { + orders, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`executeWithCallback`] function. + pub fn executeWithCallback( + &self, + order: ::RustType, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeWithCallbackCall { + order, + callbackData, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IReactorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/ireactorcallback.rs b/crates/bindings-uniswapx/src/ireactorcallback.rs new file mode 100644 index 0000000..daa1f78 --- /dev/null +++ b/crates/bindings-uniswapx/src/ireactorcallback.rs @@ -0,0 +1,1658 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IReactorCallback { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory callbackData) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "reactorCallback", + "inputs": [ + { + "name": "resolvedOrders", + "type": "tuple[]", + "internalType": "struct ResolvedOrder[]", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IReactorCallback { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628`. +```solidity +function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory callbackData) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackCall { + pub resolvedOrders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackCall) -> Self { + (value.resolvedOrders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for reactorCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + resolvedOrders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for reactorCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for reactorCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = reactorCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)"; + const SELECTOR: [u8; 4] = [88u8, 93u8, 166u8, 40u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.resolvedOrders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IReactorCallback`](self) function calls. + pub enum IReactorCallbackCalls { + reactorCallback(reactorCallbackCall), + } + #[automatically_derived] + impl IReactorCallbackCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[88u8, 93u8, 166u8, 40u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IReactorCallbackCalls { + const NAME: &'static str = "IReactorCallbackCalls"; + const MIN_DATA_LENGTH: usize = 128usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::reactorCallback(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn reactorCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IReactorCallbackCalls::reactorCallback) + } + reactorCallback + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::reactorCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::reactorCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IReactorCallback`](self) contract instance. + +See the [wrapper's documentation](`IReactorCallbackInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IReactorCallbackInstance { + IReactorCallbackInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IReactorCallbackInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IReactorCallbackInstance::::deploy_builder(provider) + } + /**A [`IReactorCallback`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IReactorCallback`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IReactorCallbackInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IReactorCallbackInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IReactorCallbackInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IReactorCallbackInstance { + /**Creates a new wrapper around an on-chain [`IReactorCallback`](self) contract instance. + +See the [wrapper's documentation](`IReactorCallbackInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IReactorCallbackInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IReactorCallbackInstance { + IReactorCallbackInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IReactorCallbackInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`reactorCallback`] function. + pub fn reactorCallback( + &self, + resolvedOrders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &reactorCallbackCall { + resolvedOrders, + callbackData, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IReactorCallbackInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/isignaturetransfer.rs b/crates/bindings-uniswapx/src/isignaturetransfer.rs new file mode 100644 index 0000000..5f063c5 --- /dev/null +++ b/crates/bindings-uniswapx/src/isignaturetransfer.rs @@ -0,0 +1,3472 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ISignatureTransfer { + struct PermitBatchTransferFrom { + TokenPermissions[] permitted; + uint256 nonce; + uint256 deadline; + } + struct PermitTransferFrom { + TokenPermissions permitted; + uint256 nonce; + uint256 deadline; + } + struct SignatureTransferDetails { + address to; + uint256 requestedAmount; + } + struct TokenPermissions { + address token; + uint256 amount; + } + + error InvalidAmount(uint256 maxAmount); + error LengthMismatch(); + + event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask); + + function DOMAIN_SEPARATOR() external view returns (bytes32); + function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external; + function nonceBitmap(address, uint256) external view returns (uint256); + function permitTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes memory signature) external; + function permitTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes memory signature) external; + function permitWitnessTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; + function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "invalidateUnorderedNonces", + "inputs": [ + { + "name": "wordPos", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "mask", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "nonceBitmap", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permitTransferFrom", + "inputs": [ + { + "name": "permit", + "type": "tuple", + "internalType": "struct ISignatureTransfer.PermitTransferFrom", + "components": [ + { + "name": "permitted", + "type": "tuple", + "internalType": "struct ISignatureTransfer.TokenPermissions", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "transferDetails", + "type": "tuple", + "internalType": "struct ISignatureTransfer.SignatureTransferDetails", + "components": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "requestedAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permitTransferFrom", + "inputs": [ + { + "name": "permit", + "type": "tuple", + "internalType": "struct ISignatureTransfer.PermitBatchTransferFrom", + "components": [ + { + "name": "permitted", + "type": "tuple[]", + "internalType": "struct ISignatureTransfer.TokenPermissions[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "transferDetails", + "type": "tuple[]", + "internalType": "struct ISignatureTransfer.SignatureTransferDetails[]", + "components": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "requestedAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permitWitnessTransferFrom", + "inputs": [ + { + "name": "permit", + "type": "tuple", + "internalType": "struct ISignatureTransfer.PermitTransferFrom", + "components": [ + { + "name": "permitted", + "type": "tuple", + "internalType": "struct ISignatureTransfer.TokenPermissions", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "transferDetails", + "type": "tuple", + "internalType": "struct ISignatureTransfer.SignatureTransferDetails", + "components": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "requestedAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "witness", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "witnessTypeString", + "type": "string", + "internalType": "string" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permitWitnessTransferFrom", + "inputs": [ + { + "name": "permit", + "type": "tuple", + "internalType": "struct ISignatureTransfer.PermitBatchTransferFrom", + "components": [ + { + "name": "permitted", + "type": "tuple[]", + "internalType": "struct ISignatureTransfer.TokenPermissions[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "transferDetails", + "type": "tuple[]", + "internalType": "struct ISignatureTransfer.SignatureTransferDetails[]", + "components": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "requestedAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "witness", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "witnessTypeString", + "type": "string", + "internalType": "string" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "UnorderedNonceInvalidation", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "word", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "mask", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "InvalidAmount", + "inputs": [ + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "LengthMismatch", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISignatureTransfer { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity +struct PermitBatchTransferFrom { TokenPermissions[] permitted; uint256 nonce; uint256 deadline; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PermitBatchTransferFrom { + pub permitted: alloy::sol_types::private::Vec< + ::RustType, + >, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitBatchTransferFrom) -> Self { + (value.permitted, value.nonce, value.deadline) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PermitBatchTransferFrom { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permitted: tuple.0, + nonce: tuple.1, + deadline: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PermitBatchTransferFrom { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PermitBatchTransferFrom { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.permitted), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PermitBatchTransferFrom { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PermitBatchTransferFrom { + const NAME: &'static str = "PermitBatchTransferFrom"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PermitBatchTransferFrom(TokenPermissions[] permitted,uint256 nonce,uint256 deadline)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + as alloy_sol_types::SolType>::eip712_data_word(&self.permitted) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PermitBatchTransferFrom { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.permitted, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.permitted, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 deadline; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct PermitTransferFrom { + pub permitted: ::RustType, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + TokenPermissions, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitTransferFrom) -> Self { + (value.permitted, value.nonce, value.deadline) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for PermitTransferFrom { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permitted: tuple.0, + nonce: tuple.1, + deadline: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for PermitTransferFrom { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for PermitTransferFrom { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.permitted, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for PermitTransferFrom { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for PermitTransferFrom { + const NAME: &'static str = "PermitTransferFrom"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "PermitTransferFrom(TokenPermissions permitted,uint256 nonce,uint256 deadline)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.permitted, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for PermitTransferFrom { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.permitted, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.permitted, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct SignatureTransferDetails { address to; uint256 requestedAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignatureTransferDetails { + pub to: alloy::sol_types::private::Address, + pub requestedAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: SignatureTransferDetails) -> Self { + (value.to, value.requestedAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for SignatureTransferDetails { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + to: tuple.0, + requestedAmount: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignatureTransferDetails { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignatureTransferDetails { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.requestedAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignatureTransferDetails { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignatureTransferDetails { + const NAME: &'static str = "SignatureTransferDetails"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignatureTransferDetails(address to,uint256 requestedAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.to, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.requestedAmount, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignatureTransferDetails { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.to, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.requestedAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.to, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.requestedAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct TokenPermissions { address token; uint256 amount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct TokenPermissions { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TokenPermissions) -> Self { + (value.token, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TokenPermissions { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for TokenPermissions { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for TokenPermissions { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for TokenPermissions { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for TokenPermissions { + const NAME: &'static str = "TokenPermissions"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "TokenPermissions(address token,uint256 amount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for TokenPermissions { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `InvalidAmount(uint256)` and selector `0x3728b83d`. +```solidity +error InvalidAmount(uint256 maxAmount); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidAmount { + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidAmount) -> Self { + (value.maxAmount,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidAmount { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { maxAmount: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidAmount { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidAmount(uint256)"; + const SELECTOR: [u8; 4] = [55u8, 40u8, 184u8, 61u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + } + }; + /**Custom error with signature `LengthMismatch()` and selector `0xff633a38`. +```solidity +error LengthMismatch(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct LengthMismatch {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: LengthMismatch) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for LengthMismatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for LengthMismatch { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "LengthMismatch()"; + const SELECTOR: [u8; 4] = [255u8, 99u8, 58u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `UnorderedNonceInvalidation(address,uint256,uint256)` and selector `0x3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d`. +```solidity +event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct UnorderedNonceInvalidation { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub word: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub mask: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for UnorderedNonceInvalidation { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "UnorderedNonceInvalidation(address,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 55u8, + 4u8, + 144u8, + 47u8, + 150u8, + 55u8, + 102u8, + 164u8, + 229u8, + 97u8, + 187u8, + 170u8, + 182u8, + 230u8, + 205u8, + 193u8, + 177u8, + 221u8, + 18u8, + 246u8, + 233u8, + 233u8, + 150u8, + 72u8, + 218u8, + 136u8, + 67u8, + 179u8, + 244u8, + 107u8, + 145u8, + 141u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + word: data.0, + mask: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.word), + as alloy_sol_types::SolType>::tokenize(&self.mask), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.owner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for UnorderedNonceInvalidation { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&UnorderedNonceInvalidation> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &UnorderedNonceInvalidation, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`. +```solidity +function DOMAIN_SEPARATOR() external view returns (bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORCall {} + ///Container type for the return parameters of the [`DOMAIN_SEPARATOR()`](DOMAIN_SEPARATORCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DOMAIN_SEPARATORCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DOMAIN_SEPARATORReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DOMAIN_SEPARATOR()"; + const SELECTOR: [u8; 4] = [54u8, 68u8, 229u8, 21u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `invalidateUnorderedNonces(uint256,uint256)` and selector `0x3ff9dcb1`. +```solidity +function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct invalidateUnorderedNoncesCall { + pub wordPos: alloy::sol_types::private::U256, + pub mask: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`invalidateUnorderedNonces(uint256,uint256)`](invalidateUnorderedNoncesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct invalidateUnorderedNoncesReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: invalidateUnorderedNoncesCall) -> Self { + (value.wordPos, value.mask) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for invalidateUnorderedNoncesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + wordPos: tuple.0, + mask: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: invalidateUnorderedNoncesReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for invalidateUnorderedNoncesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for invalidateUnorderedNoncesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = invalidateUnorderedNoncesReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "invalidateUnorderedNonces(uint256,uint256)"; + const SELECTOR: [u8; 4] = [63u8, 249u8, 220u8, 177u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.wordPos), + as alloy_sol_types::SolType>::tokenize(&self.mask), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `nonceBitmap(address,uint256)` and selector `0x4fe02b44`. +```solidity +function nonceBitmap(address, uint256) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nonceBitmapCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`nonceBitmap(address,uint256)`](nonceBitmapCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nonceBitmapReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nonceBitmapCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nonceBitmapCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0, _1: tuple.1 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nonceBitmapReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nonceBitmapReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nonceBitmapCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nonceBitmapReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "nonceBitmap(address,uint256)"; + const SELECTOR: [u8; 4] = [79u8, 224u8, 43u8, 68u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + as alloy_sol_types::SolType>::tokenize(&self._1), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)` and selector `0x30f28b7a`. +```solidity +function permitTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes memory signature) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitTransferFrom_0Call { + pub permit: ::RustType, + pub transferDetails: ::RustType, + pub owner: alloy::sol_types::private::Address, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)`](permitTransferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitTransferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + PermitTransferFrom, + SignatureTransferDetails, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitTransferFrom_0Call) -> Self { + (value.permit, value.transferDetails, value.owner, value.signature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitTransferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit: tuple.0, + transferDetails: tuple.1, + owner: tuple.2, + signature: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitTransferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitTransferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitTransferFrom_0Call { + type Parameters<'a> = ( + PermitTransferFrom, + SignatureTransferDetails, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitTransferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)"; + const SELECTOR: [u8; 4] = [48u8, 242u8, 139u8, 122u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.permit, + ), + ::tokenize( + &self.transferDetails, + ), + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)` and selector `0xedd9444b`. +```solidity +function permitTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes memory signature) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitTransferFrom_1Call { + pub permit: ::RustType, + pub transferDetails: alloy::sol_types::private::Vec< + ::RustType, + >, + pub owner: alloy::sol_types::private::Address, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)`](permitTransferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitTransferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + PermitBatchTransferFrom, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitTransferFrom_1Call) -> Self { + (value.permit, value.transferDetails, value.owner, value.signature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitTransferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit: tuple.0, + transferDetails: tuple.1, + owner: tuple.2, + signature: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitTransferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitTransferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitTransferFrom_1Call { + type Parameters<'a> = ( + PermitBatchTransferFrom, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitTransferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)"; + const SELECTOR: [u8; 4] = [237u8, 217u8, 68u8, 75u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.permit, + ), + as alloy_sol_types::SolType>::tokenize(&self.transferDetails), + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)` and selector `0x137c29fe`. +```solidity +function permitWitnessTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitWitnessTransferFrom_0Call { + pub permit: ::RustType, + pub transferDetails: ::RustType, + pub owner: alloy::sol_types::private::Address, + pub witness: alloy::sol_types::private::FixedBytes<32>, + pub witnessTypeString: alloy::sol_types::private::String, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)`](permitWitnessTransferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitWitnessTransferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + PermitTransferFrom, + SignatureTransferDetails, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::String, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitWitnessTransferFrom_0Call) -> Self { + ( + value.permit, + value.transferDetails, + value.owner, + value.witness, + value.witnessTypeString, + value.signature, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitWitnessTransferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit: tuple.0, + transferDetails: tuple.1, + owner: tuple.2, + witness: tuple.3, + witnessTypeString: tuple.4, + signature: tuple.5, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitWitnessTransferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitWitnessTransferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitWitnessTransferFrom_0Call { + type Parameters<'a> = ( + PermitTransferFrom, + SignatureTransferDetails, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitWitnessTransferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)"; + const SELECTOR: [u8; 4] = [19u8, 124u8, 41u8, 254u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.permit, + ), + ::tokenize( + &self.transferDetails, + ), + ::tokenize( + &self.owner, + ), + as alloy_sol_types::SolType>::tokenize(&self.witness), + ::tokenize( + &self.witnessTypeString, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)` and selector `0xfe8ec1a7`. +```solidity +function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitWitnessTransferFrom_1Call { + pub permit: ::RustType, + pub transferDetails: alloy::sol_types::private::Vec< + ::RustType, + >, + pub owner: alloy::sol_types::private::Address, + pub witness: alloy::sol_types::private::FixedBytes<32>, + pub witnessTypeString: alloy::sol_types::private::String, + pub signature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)`](permitWitnessTransferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitWitnessTransferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + PermitBatchTransferFrom, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::String, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitWitnessTransferFrom_1Call) -> Self { + ( + value.permit, + value.transferDetails, + value.owner, + value.witness, + value.witnessTypeString, + value.signature, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitWitnessTransferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + permit: tuple.0, + transferDetails: tuple.1, + owner: tuple.2, + witness: tuple.3, + witnessTypeString: tuple.4, + signature: tuple.5, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: permitWitnessTransferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for permitWitnessTransferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitWitnessTransferFrom_1Call { + type Parameters<'a> = ( + PermitBatchTransferFrom, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitWitnessTransferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)"; + const SELECTOR: [u8; 4] = [254u8, 142u8, 193u8, 167u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.permit, + ), + as alloy_sol_types::SolType>::tokenize(&self.transferDetails), + ::tokenize( + &self.owner, + ), + as alloy_sol_types::SolType>::tokenize(&self.witness), + ::tokenize( + &self.witnessTypeString, + ), + ::tokenize( + &self.signature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`ISignatureTransfer`](self) function calls. + pub enum ISignatureTransferCalls { + DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + invalidateUnorderedNonces(invalidateUnorderedNoncesCall), + nonceBitmap(nonceBitmapCall), + permitTransferFrom_0(permitTransferFrom_0Call), + permitTransferFrom_1(permitTransferFrom_1Call), + permitWitnessTransferFrom_0(permitWitnessTransferFrom_0Call), + permitWitnessTransferFrom_1(permitWitnessTransferFrom_1Call), + } + #[automatically_derived] + impl ISignatureTransferCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [19u8, 124u8, 41u8, 254u8], + [48u8, 242u8, 139u8, 122u8], + [54u8, 68u8, 229u8, 21u8], + [63u8, 249u8, 220u8, 177u8], + [79u8, 224u8, 43u8, 68u8], + [237u8, 217u8, 68u8, 75u8], + [254u8, 142u8, 193u8, 167u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ISignatureTransferCalls { + const NAME: &'static str = "ISignatureTransferCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 7usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DOMAIN_SEPARATOR(_) => { + ::SELECTOR + } + Self::invalidateUnorderedNonces(_) => { + ::SELECTOR + } + Self::nonceBitmap(_) => { + ::SELECTOR + } + Self::permitTransferFrom_0(_) => { + ::SELECTOR + } + Self::permitTransferFrom_1(_) => { + ::SELECTOR + } + Self::permitWitnessTransferFrom_0(_) => { + ::SELECTOR + } + Self::permitWitnessTransferFrom_1(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn permitWitnessTransferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISignatureTransferCalls::permitWitnessTransferFrom_0) + } + permitWitnessTransferFrom_0 + }, + { + fn permitTransferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISignatureTransferCalls::permitTransferFrom_0) + } + permitTransferFrom_0 + }, + { + fn DOMAIN_SEPARATOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISignatureTransferCalls::DOMAIN_SEPARATOR) + } + DOMAIN_SEPARATOR + }, + { + fn invalidateUnorderedNonces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISignatureTransferCalls::invalidateUnorderedNonces) + } + invalidateUnorderedNonces + }, + { + fn nonceBitmap( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISignatureTransferCalls::nonceBitmap) + } + nonceBitmap + }, + { + fn permitTransferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISignatureTransferCalls::permitTransferFrom_1) + } + permitTransferFrom_1 + }, + { + fn permitWitnessTransferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISignatureTransferCalls::permitWitnessTransferFrom_1) + } + permitWitnessTransferFrom_1 + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::invalidateUnorderedNonces(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::nonceBitmap(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::permitTransferFrom_0(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::permitTransferFrom_1(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::permitWitnessTransferFrom_0(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::permitWitnessTransferFrom_1(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::invalidateUnorderedNonces(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::nonceBitmap(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::permitTransferFrom_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::permitTransferFrom_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::permitWitnessTransferFrom_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::permitWitnessTransferFrom_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`ISignatureTransfer`](self) custom errors. + pub enum ISignatureTransferErrors { + InvalidAmount(InvalidAmount), + LengthMismatch(LengthMismatch), + } + #[automatically_derived] + impl ISignatureTransferErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [55u8, 40u8, 184u8, 61u8], + [255u8, 99u8, 58u8, 56u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ISignatureTransferErrors { + const NAME: &'static str = "ISignatureTransferErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InvalidAmount(_) => { + ::SELECTOR + } + Self::LengthMismatch(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn InvalidAmount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISignatureTransferErrors::InvalidAmount) + } + InvalidAmount + }, + { + fn LengthMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISignatureTransferErrors::LengthMismatch) + } + LengthMismatch + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InvalidAmount(inner) => { + ::abi_encoded_size(inner) + } + Self::LengthMismatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::InvalidAmount(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::LengthMismatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`ISignatureTransfer`](self) events. + pub enum ISignatureTransferEvents { + UnorderedNonceInvalidation(UnorderedNonceInvalidation), + } + #[automatically_derived] + impl ISignatureTransferEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 55u8, + 4u8, + 144u8, + 47u8, + 150u8, + 55u8, + 102u8, + 164u8, + 229u8, + 97u8, + 187u8, + 170u8, + 182u8, + 230u8, + 205u8, + 193u8, + 177u8, + 221u8, + 18u8, + 246u8, + 233u8, + 233u8, + 150u8, + 72u8, + 218u8, + 136u8, + 67u8, + 179u8, + 244u8, + 107u8, + 145u8, + 141u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ISignatureTransferEvents { + const NAME: &'static str = "ISignatureTransferEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::UnorderedNonceInvalidation) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ISignatureTransferEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::UnorderedNonceInvalidation(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::UnorderedNonceInvalidation(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureTransfer`](self) contract instance. + +See the [wrapper's documentation](`ISignatureTransferInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureTransferInstance { + ISignatureTransferInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ISignatureTransferInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ISignatureTransferInstance::::deploy_builder(provider) + } + /**A [`ISignatureTransfer`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ISignatureTransfer`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureTransferInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureTransferInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureTransferInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureTransferInstance { + /**Creates a new wrapper around an on-chain [`ISignatureTransfer`](self) contract instance. + +See the [wrapper's documentation](`ISignatureTransferInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureTransferInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureTransferInstance { + ISignatureTransferInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureTransferInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`DOMAIN_SEPARATOR`] function. + pub fn DOMAIN_SEPARATOR( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DOMAIN_SEPARATORCall {}) + } + ///Creates a new call builder for the [`invalidateUnorderedNonces`] function. + pub fn invalidateUnorderedNonces( + &self, + wordPos: alloy::sol_types::private::U256, + mask: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &invalidateUnorderedNoncesCall { + wordPos, + mask, + }, + ) + } + ///Creates a new call builder for the [`nonceBitmap`] function. + pub fn nonceBitmap( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&nonceBitmapCall { _0, _1 }) + } + ///Creates a new call builder for the [`permitTransferFrom_0`] function. + pub fn permitTransferFrom_0( + &self, + permit: ::RustType, + transferDetails: ::RustType, + owner: alloy::sol_types::private::Address, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permitTransferFrom_0Call { + permit, + transferDetails, + owner, + signature, + }, + ) + } + ///Creates a new call builder for the [`permitTransferFrom_1`] function. + pub fn permitTransferFrom_1( + &self, + permit: ::RustType, + transferDetails: alloy::sol_types::private::Vec< + ::RustType, + >, + owner: alloy::sol_types::private::Address, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permitTransferFrom_1Call { + permit, + transferDetails, + owner, + signature, + }, + ) + } + ///Creates a new call builder for the [`permitWitnessTransferFrom_0`] function. + pub fn permitWitnessTransferFrom_0( + &self, + permit: ::RustType, + transferDetails: ::RustType, + owner: alloy::sol_types::private::Address, + witness: alloy::sol_types::private::FixedBytes<32>, + witnessTypeString: alloy::sol_types::private::String, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permitWitnessTransferFrom_0Call { + permit, + transferDetails, + owner, + witness, + witnessTypeString, + signature, + }, + ) + } + ///Creates a new call builder for the [`permitWitnessTransferFrom_1`] function. + pub fn permitWitnessTransferFrom_1( + &self, + permit: ::RustType, + transferDetails: alloy::sol_types::private::Vec< + ::RustType, + >, + owner: alloy::sol_types::private::Address, + witness: alloy::sol_types::private::FixedBytes<32>, + witnessTypeString: alloy::sol_types::private::String, + signature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permitWitnessTransferFrom_1Call { + permit, + transferDetails, + owner, + witness, + witnessTypeString, + signature, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureTransferInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`UnorderedNonceInvalidation`] event. + pub fn UnorderedNonceInvalidation_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/iswaprouter02.rs b/crates/bindings-uniswapx/src/iswaprouter02.rs new file mode 100644 index 0000000..7f622cb --- /dev/null +++ b/crates/bindings-uniswapx/src/iswaprouter02.rs @@ -0,0 +1,2058 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ISwapRouter02 { + struct ExactInputParams { + bytes path; + address recipient; + uint256 amountIn; + uint256 amountOutMinimum; + } + struct ExactInputSingleParams { + address tokenIn; + address tokenOut; + uint24 fee; + address recipient; + uint256 amountIn; + uint256 amountOutMinimum; + uint160 sqrtPriceLimitX96; + } + + function WETH9() external view returns (address); + function exactInput(ExactInputParams memory params) external payable returns (uint256 amountOut); + function exactInputSingle(ExactInputSingleParams memory params) external payable returns (uint256 amountOut); + function multicall(uint256 deadline, bytes[] memory data) external payable returns (bytes[] memory results); + function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] memory path, address to) external payable returns (uint256 amountOut); + function unwrapWETH9(uint256 amountMinimum) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "WETH9", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "exactInput", + "inputs": [ + { + "name": "params", + "type": "tuple", + "internalType": "struct ExactInputParams", + "components": [ + { + "name": "path", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "amountIn", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "amountOutMinimum", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [ + { + "name": "amountOut", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "exactInputSingle", + "inputs": [ + { + "name": "params", + "type": "tuple", + "internalType": "struct ExactInputSingleParams", + "components": [ + { + "name": "tokenIn", + "type": "address", + "internalType": "address" + }, + { + "name": "tokenOut", + "type": "address", + "internalType": "address" + }, + { + "name": "fee", + "type": "uint24", + "internalType": "uint24" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "amountIn", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "amountOutMinimum", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "sqrtPriceLimitX96", + "type": "uint160", + "internalType": "uint160" + } + ] + } + ], + "outputs": [ + { + "name": "amountOut", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "multicall", + "inputs": [ + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "outputs": [ + { + "name": "results", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "swapExactTokensForTokens", + "inputs": [ + { + "name": "amountIn", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "amountOutMin", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "path", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "amountOut", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "unwrapWETH9", + "inputs": [ + { + "name": "amountMinimum", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ISwapRouter02 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity +struct ExactInputParams { bytes path; address recipient; uint256 amountIn; uint256 amountOutMinimum; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ExactInputParams { + pub path: alloy::sol_types::private::Bytes, + pub recipient: alloy::sol_types::private::Address, + pub amountIn: alloy::sol_types::private::U256, + pub amountOutMinimum: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ExactInputParams) -> Self { + (value.path, value.recipient, value.amountIn, value.amountOutMinimum) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ExactInputParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + path: tuple.0, + recipient: tuple.1, + amountIn: tuple.2, + amountOutMinimum: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ExactInputParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ExactInputParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.path, + ), + ::tokenize( + &self.recipient, + ), + as alloy_sol_types::SolType>::tokenize(&self.amountIn), + as alloy_sol_types::SolType>::tokenize(&self.amountOutMinimum), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ExactInputParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ExactInputParams { + const NAME: &'static str = "ExactInputParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ExactInputParams(bytes path,address recipient,uint256 amountIn,uint256 amountOutMinimum)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.path, + ) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amountIn) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.amountOutMinimum, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ExactInputParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.path, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amountIn, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amountOutMinimum, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.path, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amountIn, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amountOutMinimum, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ExactInputSingleParams { address tokenIn; address tokenOut; uint24 fee; address recipient; uint256 amountIn; uint256 amountOutMinimum; uint160 sqrtPriceLimitX96; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ExactInputSingleParams { + pub tokenIn: alloy::sol_types::private::Address, + pub tokenOut: alloy::sol_types::private::Address, + pub fee: as alloy::sol_types::SolType>::RustType, + pub recipient: alloy::sol_types::private::Address, + pub amountIn: alloy::sol_types::private::U256, + pub amountOutMinimum: alloy::sol_types::private::U256, + pub sqrtPriceLimitX96: as alloy::sol_types::SolType>::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<24>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<160>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + as alloy::sol_types::SolType>::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ExactInputSingleParams) -> Self { + ( + value.tokenIn, + value.tokenOut, + value.fee, + value.recipient, + value.amountIn, + value.amountOutMinimum, + value.sqrtPriceLimitX96, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ExactInputSingleParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + tokenIn: tuple.0, + tokenOut: tuple.1, + fee: tuple.2, + recipient: tuple.3, + amountIn: tuple.4, + amountOutMinimum: tuple.5, + sqrtPriceLimitX96: tuple.6, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ExactInputSingleParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ExactInputSingleParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.tokenIn, + ), + ::tokenize( + &self.tokenOut, + ), + as alloy_sol_types::SolType>::tokenize(&self.fee), + ::tokenize( + &self.recipient, + ), + as alloy_sol_types::SolType>::tokenize(&self.amountIn), + as alloy_sol_types::SolType>::tokenize(&self.amountOutMinimum), + as alloy_sol_types::SolType>::tokenize(&self.sqrtPriceLimitX96), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ExactInputSingleParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ExactInputSingleParams { + const NAME: &'static str = "ExactInputSingleParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ExactInputSingleParams(address tokenIn,address tokenOut,uint24 fee,address recipient,uint256 amountIn,uint256 amountOutMinimum,uint160 sqrtPriceLimitX96)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.tokenIn, + ) + .0, + ::eip712_data_word( + &self.tokenOut, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.fee) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amountIn) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.amountOutMinimum, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.sqrtPriceLimitX96, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ExactInputSingleParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.tokenIn, + ) + + ::topic_preimage_length( + &rust.tokenOut, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.fee) + + ::topic_preimage_length( + &rust.recipient, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amountIn, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amountOutMinimum, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.sqrtPriceLimitX96, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.tokenIn, + out, + ); + ::encode_topic_preimage( + &rust.tokenOut, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.fee, out); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amountIn, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amountOutMinimum, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.sqrtPriceLimitX96, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Function with signature `WETH9()` and selector `0x4aa4a4fc`. +```solidity +function WETH9() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct WETH9Call {} + ///Container type for the return parameters of the [`WETH9()`](WETH9Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct WETH9Return { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WETH9Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WETH9Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WETH9Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WETH9Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for WETH9Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = WETH9Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WETH9()"; + const SELECTOR: [u8; 4] = [74u8, 164u8, 164u8, 252u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `exactInput((bytes,address,uint256,uint256))` and selector `0xb858183f`. +```solidity +function exactInput(ExactInputParams memory params) external payable returns (uint256 amountOut); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct exactInputCall { + pub params: ::RustType, + } + ///Container type for the return parameters of the [`exactInput((bytes,address,uint256,uint256))`](exactInputCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct exactInputReturn { + pub amountOut: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ExactInputParams,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: exactInputCall) -> Self { + (value.params,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for exactInputCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { params: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: exactInputReturn) -> Self { + (value.amountOut,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for exactInputReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { amountOut: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for exactInputCall { + type Parameters<'a> = (ExactInputParams,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = exactInputReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "exactInput((bytes,address,uint256,uint256))"; + const SELECTOR: [u8; 4] = [184u8, 88u8, 24u8, 63u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.params),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))` and selector `0x04e45aaf`. +```solidity +function exactInputSingle(ExactInputSingleParams memory params) external payable returns (uint256 amountOut); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct exactInputSingleCall { + pub params: ::RustType, + } + ///Container type for the return parameters of the [`exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))`](exactInputSingleCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct exactInputSingleReturn { + pub amountOut: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ExactInputSingleParams,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: exactInputSingleCall) -> Self { + (value.params,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for exactInputSingleCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { params: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: exactInputSingleReturn) -> Self { + (value.amountOut,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for exactInputSingleReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { amountOut: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for exactInputSingleCall { + type Parameters<'a> = (ExactInputSingleParams,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = exactInputSingleReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))"; + const SELECTOR: [u8; 4] = [4u8, 228u8, 90u8, 175u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.params, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `multicall(uint256,bytes[])` and selector `0x5ae401dc`. +```solidity +function multicall(uint256 deadline, bytes[] memory data) external payable returns (bytes[] memory results); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct multicallCall { + pub deadline: alloy::sol_types::private::U256, + pub data: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`multicall(uint256,bytes[])`](multicallCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct multicallReturn { + pub results: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::U256, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: multicallCall) -> Self { + (value.deadline, value.data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for multicallCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + deadline: tuple.0, + data: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: multicallReturn) -> Self { + (value.results,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for multicallReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { results: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for multicallCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = multicallReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "multicall(uint256,bytes[])"; + const SELECTOR: [u8; 4] = [90u8, 228u8, 1u8, 220u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.deadline), + as alloy_sol_types::SolType>::tokenize(&self.data), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `swapExactTokensForTokens(uint256,uint256,address[],address)` and selector `0x472b43f3`. +```solidity +function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] memory path, address to) external payable returns (uint256 amountOut); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct swapExactTokensForTokensCall { + pub amountIn: alloy::sol_types::private::U256, + pub amountOutMin: alloy::sol_types::private::U256, + pub path: alloy::sol_types::private::Vec, + pub to: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`swapExactTokensForTokens(uint256,uint256,address[],address)`](swapExactTokensForTokensCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct swapExactTokensForTokensReturn { + pub amountOut: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Vec, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: swapExactTokensForTokensCall) -> Self { + (value.amountIn, value.amountOutMin, value.path, value.to) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for swapExactTokensForTokensCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + amountIn: tuple.0, + amountOutMin: tuple.1, + path: tuple.2, + to: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: swapExactTokensForTokensReturn) -> Self { + (value.amountOut,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for swapExactTokensForTokensReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { amountOut: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for swapExactTokensForTokensCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = swapExactTokensForTokensReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "swapExactTokensForTokens(uint256,uint256,address[],address)"; + const SELECTOR: [u8; 4] = [71u8, 43u8, 67u8, 243u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amountIn), + as alloy_sol_types::SolType>::tokenize(&self.amountOutMin), + as alloy_sol_types::SolType>::tokenize(&self.path), + ::tokenize( + &self.to, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `unwrapWETH9(uint256)` and selector `0x49616997`. +```solidity +function unwrapWETH9(uint256 amountMinimum) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unwrapWETH9Call { + pub amountMinimum: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`unwrapWETH9(uint256)`](unwrapWETH9Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unwrapWETH9Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unwrapWETH9Call) -> Self { + (value.amountMinimum,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unwrapWETH9Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { amountMinimum: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unwrapWETH9Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unwrapWETH9Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unwrapWETH9Call { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unwrapWETH9Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unwrapWETH9(uint256)"; + const SELECTOR: [u8; 4] = [73u8, 97u8, 105u8, 151u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amountMinimum), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`ISwapRouter02`](self) function calls. + pub enum ISwapRouter02Calls { + WETH9(WETH9Call), + exactInput(exactInputCall), + exactInputSingle(exactInputSingleCall), + multicall(multicallCall), + swapExactTokensForTokens(swapExactTokensForTokensCall), + unwrapWETH9(unwrapWETH9Call), + } + #[automatically_derived] + impl ISwapRouter02Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [4u8, 228u8, 90u8, 175u8], + [71u8, 43u8, 67u8, 243u8], + [73u8, 97u8, 105u8, 151u8], + [74u8, 164u8, 164u8, 252u8], + [90u8, 228u8, 1u8, 220u8], + [184u8, 88u8, 24u8, 63u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ISwapRouter02Calls { + const NAME: &'static str = "ISwapRouter02Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::WETH9(_) => ::SELECTOR, + Self::exactInput(_) => { + ::SELECTOR + } + Self::exactInputSingle(_) => { + ::SELECTOR + } + Self::multicall(_) => { + ::SELECTOR + } + Self::swapExactTokensForTokens(_) => { + ::SELECTOR + } + Self::unwrapWETH9(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn exactInputSingle( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISwapRouter02Calls::exactInputSingle) + } + exactInputSingle + }, + { + fn swapExactTokensForTokens( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISwapRouter02Calls::swapExactTokensForTokens) + } + swapExactTokensForTokens + }, + { + fn unwrapWETH9( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISwapRouter02Calls::unwrapWETH9) + } + unwrapWETH9 + }, + { + fn WETH9( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISwapRouter02Calls::WETH9) + } + WETH9 + }, + { + fn multicall( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISwapRouter02Calls::multicall) + } + multicall + }, + { + fn exactInput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ISwapRouter02Calls::exactInput) + } + exactInput + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::WETH9(inner) => { + ::abi_encoded_size(inner) + } + Self::exactInput(inner) => { + ::abi_encoded_size(inner) + } + Self::exactInputSingle(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::multicall(inner) => { + ::abi_encoded_size(inner) + } + Self::swapExactTokensForTokens(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::unwrapWETH9(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::WETH9(inner) => { + ::abi_encode_raw(inner, out) + } + Self::exactInput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::exactInputSingle(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::multicall(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::swapExactTokensForTokens(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::unwrapWETH9(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISwapRouter02`](self) contract instance. + +See the [wrapper's documentation](`ISwapRouter02Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISwapRouter02Instance { + ISwapRouter02Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ISwapRouter02Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ISwapRouter02Instance::::deploy_builder(provider) + } + /**A [`ISwapRouter02`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ISwapRouter02`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISwapRouter02Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISwapRouter02Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISwapRouter02Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISwapRouter02Instance { + /**Creates a new wrapper around an on-chain [`ISwapRouter02`](self) contract instance. + +See the [wrapper's documentation](`ISwapRouter02Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISwapRouter02Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISwapRouter02Instance { + ISwapRouter02Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISwapRouter02Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`WETH9`] function. + pub fn WETH9(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&WETH9Call {}) + } + ///Creates a new call builder for the [`exactInput`] function. + pub fn exactInput( + &self, + params: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&exactInputCall { params }) + } + ///Creates a new call builder for the [`exactInputSingle`] function. + pub fn exactInputSingle( + &self, + params: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&exactInputSingleCall { params }) + } + ///Creates a new call builder for the [`multicall`] function. + pub fn multicall( + &self, + deadline: alloy::sol_types::private::U256, + data: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&multicallCall { deadline, data }) + } + ///Creates a new call builder for the [`swapExactTokensForTokens`] function. + pub fn swapExactTokensForTokens( + &self, + amountIn: alloy::sol_types::private::U256, + amountOutMin: alloy::sol_types::private::U256, + path: alloy::sol_types::private::Vec, + to: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &swapExactTokensForTokensCall { + amountIn, + amountOutMin, + path, + to, + }, + ) + } + ///Creates a new call builder for the [`unwrapWETH9`] function. + pub fn unwrapWETH9( + &self, + amountMinimum: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&unwrapWETH9Call { amountMinimum }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISwapRouter02Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/ivalidationcallback.rs b/crates/bindings-uniswapx/src/ivalidationcallback.rs new file mode 100644 index 0000000..b9fb29b --- /dev/null +++ b/crates/bindings-uniswapx/src/ivalidationcallback.rs @@ -0,0 +1,1643 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IValidationCallback { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + function validate(address filler, ResolvedOrder memory resolvedOrder) external view; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "validate", + "inputs": [ + { + "name": "filler", + "type": "address", + "internalType": "address" + }, + { + "name": "resolvedOrder", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod IValidationCallback { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Function with signature `validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x6e84ba2b`. +```solidity +function validate(address filler, ResolvedOrder memory resolvedOrder) external view; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validateCall { + pub filler: alloy::sol_types::private::Address, + pub resolvedOrder: ::RustType, + } + ///Container type for the return parameters of the [`validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](validateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validateReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ResolvedOrder, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validateCall) -> Self { + (value.filler, value.resolvedOrder) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + filler: tuple.0, + resolvedOrder: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validateReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for validateCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address, ResolvedOrder); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = validateReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))"; + const SELECTOR: [u8; 4] = [110u8, 132u8, 186u8, 43u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.filler, + ), + ::tokenize( + &self.resolvedOrder, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IValidationCallback`](self) function calls. + pub enum IValidationCallbackCalls { + validate(validateCall), + } + #[automatically_derived] + impl IValidationCallbackCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[110u8, 132u8, 186u8, 43u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IValidationCallbackCalls { + const NAME: &'static str = "IValidationCallbackCalls"; + const MIN_DATA_LENGTH: usize = 512usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::validate(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn validate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IValidationCallbackCalls::validate) + } + validate + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::validate(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::validate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IValidationCallback`](self) contract instance. + +See the [wrapper's documentation](`IValidationCallbackInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IValidationCallbackInstance { + IValidationCallbackInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IValidationCallbackInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IValidationCallbackInstance::::deploy_builder(provider) + } + /**A [`IValidationCallback`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IValidationCallback`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IValidationCallbackInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IValidationCallbackInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IValidationCallbackInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IValidationCallbackInstance { + /**Creates a new wrapper around an on-chain [`IValidationCallback`](self) contract instance. + +See the [wrapper's documentation](`IValidationCallbackInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IValidationCallbackInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IValidationCallbackInstance { + IValidationCallbackInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IValidationCallbackInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`validate`] function. + pub fn validate( + &self, + filler: alloy::sol_types::private::Address, + resolvedOrder: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &validateCall { + filler, + resolvedOrder, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IValidationCallbackInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/lib.rs b/crates/bindings-uniswapx/src/lib.rs index 7e22f4b..073755a 100644 --- a/crates/bindings-uniswapx/src/lib.rs +++ b/crates/bindings-uniswapx/src/lib.rs @@ -1,105 +1,104 @@ -#![allow(clippy::all)] -//! This lib contains abigen! generated bindings for solidity contracts. +#![allow(unused_imports, clippy::all, rustdoc::all)] +//! This module contains the sol! generated bindings for solidity contracts. //! This is autogenerated code. //! Do not manually edit these files. //! These files may be overwritten by the codegen system at any time. -pub mod array_builder; -pub mod base_reactor; -pub mod block_numberish; -pub mod bytes_lib; -pub mod cosigner_lib; -pub mod currency_library; -pub mod curve_builder; -pub mod deploy_dutch; -pub mod deploy_dutch_v2; -pub mod deploy_dutch_v3; -pub mod deploy_exclusive_dutch; -pub mod deploy_permit_2; -pub mod deploy_priority_order_reactor; -pub mod deploy_swap_router_02_executor; -pub mod dutch_decay_lib; -pub mod dutch_order_lib; -pub mod dutch_order_reactor; +pub mod arraybuilder; +pub mod basereactor; +pub mod blocknumberish; +pub mod mockblocknumberish; +pub mod byteslib; +pub mod cosignerlib; +pub mod mockcosignerlibcontract; +pub mod currencylibrary; +pub mod curvebuilder; +pub mod deploydutch; +pub mod deploydutchv2; +pub mod deploydutchv3; +pub mod deployexclusivedutch; +pub mod deploymultifillerexecutor; +pub mod deploypermit2; +pub mod deploypriorityorderreactor; +pub mod deployswaprouter02executor; +pub mod dutchdecaylib; +pub mod dutchorderlib; +pub mod dutchorderreactor; pub mod ecdsa; pub mod eip712; pub mod erc20; -pub mod exclusive_dutch_order_lib; -pub mod exclusive_dutch_order_reactor; -pub mod exclusive_filler_validation; -pub mod exclusivity_lib; -pub mod fixed_point_math_lib; -pub mod gas_snapshot; -pub mod i_allowance_transfer; -pub mod i_arb_sys; -pub mod i_permit_2; -pub mod i_protocol_fee_controller; -pub mod i_reactor; -pub mod i_reactor_callback; -pub mod i_signature_transfer; -pub mod i_swap_router_02; -pub mod i_validation_callback; +pub mod exclusivedutchorderlib; +pub mod exclusivedutchorderreactor; +pub mod exclusivefillervalidation; +pub mod exclusivitylib; +pub mod fixedpointmathlib; +pub mod iallowancetransfer; +pub mod iarbsys; pub mod ieip712; pub mod ierc165; pub mod ierc20; pub mod ierc5267; pub mod ierc721; -pub mod ierc721_enumerable; -pub mod ierc721_metadata; -pub mod ierc721_token_receiver; -pub mod limit_order_lib; -pub mod limit_order_reactor; +pub mod ierc721enumerable; +pub mod ierc721metadata; +pub mod ierc721tokenreceiver; +pub mod ipermit2; +pub mod iprotocolfeecontroller; +pub mod ireactor; +pub mod ireactorcallback; +pub mod isignaturetransfer; +pub mod iswaprouter02; +pub mod ivalidationcallback; +pub mod limitorderlib; +pub mod limitorderreactor; pub mod math; -pub mod math_ext; -pub mod mock_arb_sys; -pub mod mock_block_numberish; -pub mod mock_cosigner_lib_contract; -pub mod mock_dutch_order_reactor; -pub mod mock_erc20; -pub mod mock_erc721; -pub mod mock_exclusivity_lib; -pub mod mock_fee_controller; -pub mod mock_fee_controller_duplicates; -pub mod mock_fee_controller_input_and_output_fees; -pub mod mock_fee_controller_input_fees; -pub mod mock_fee_controller_zero_fee; -pub mod mock_fill_contract; -pub mod mock_fill_contract_double_execution; -pub mod mock_fill_contract_with_output_override; -pub mod mock_protocol_fees; -pub mod mock_resolved_order_lib; -pub mod mock_swap_router; -pub mod mock_swapper; -pub mod mock_validation_contract; -pub mod nonlinear_dutch_decay_lib; -pub mod order_info_builder; -pub mod order_info_lib; -pub mod order_quoter; -pub mod outputs_builder; +pub mod mathext; +pub mod mockarbsys; +pub mod mockdutchorderreactor; +pub mod mockerc20; +pub mod mockerc721; +pub mod mockexclusivitylib; +pub mod mockfeecontroller; +pub mod mockfeecontrollerduplicates; +pub mod mockfeecontrollerinputandoutputfees; +pub mod mockfeecontrollerinputfees; +pub mod mockfeecontrollerzerofee; +pub mod mockfillcontract; +pub mod mockfillcontractdoubleexecution; +pub mod mockfillcontractwithoutputoverride; +pub mod mockprotocolfees; +pub mod mockresolvedorderlib; +pub mod mockswaprouter; +pub mod mockswapper; +pub mod mockvalidationcontract; +pub mod multifillerswaprouter02executor; +pub mod nonlineardutchdecaylib; +pub mod orderinfobuilder; +pub mod orderinfolib; +pub mod orderquoter; +pub mod outputsbuilder; pub mod owned; pub mod path; -pub mod path_builder; -pub mod permit_2_lib; -pub mod permit_signature; -pub mod priority_fee_lib; -pub mod priority_order_lib; -pub mod priority_order_reactor; -pub mod protocol_fees; -pub mod reactor_events; -pub mod reentrancy_guard; -pub mod resolved_order_lib; -pub mod safe_cast; -pub mod safe_transfer_lib; -pub mod shared_types; -pub mod short_strings; -pub mod signed_math; +pub mod pathbuilder; +pub mod permit2lib; +pub mod permitsignature; +pub mod priorityfeelib; +pub mod priorityorderlib; +pub mod priorityorderreactor; +pub mod protocolfees; +pub mod reactorevents; +pub mod reentrancyguard; +pub mod resolvedorderlib; +pub mod safecast; +pub mod safetransferlib; +pub mod shortstrings; +pub mod signedmath; pub mod solarray; -pub mod storage_slot; +pub mod storageslot; pub mod strings; -pub mod swap_router_02_executor; -pub mod uint_16_array_library; -pub mod uint_string; -pub mod v2_dutch_order_lib; -pub mod v2_dutch_order_reactor; -pub mod v3_dutch_order_lib; -pub mod v3_dutch_order_reactor; +pub mod swaprouter02executor; +pub mod uint16arraylibrary; +pub mod v2dutchorderlib; +pub mod v2dutchorderreactor; +pub mod v3dutchorderlib; +pub mod v3dutchorderreactor; pub mod weth; diff --git a/crates/bindings-uniswapx/src/limit_order_lib.rs b/crates/bindings-uniswapx/src/limit_order_lib.rs deleted file mode 100644 index 280ba52..0000000 --- a/crates/bindings-uniswapx/src/limit_order_lib.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use limit_order_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod limit_order_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static LIMITORDERLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xAC&\x07\n\xBF83\xEF0\xC9\x04(%\xEAOI\x18\x88\xEC\xAA8f\xBA#9\xA5R6\x1D\xF9\x13\xBCdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static LIMITORDERLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xAC&\x07\n\xBF83\xEF0\xC9\x04(%\xEAOI\x18\x88\xEC\xAA8f\xBA#9\xA5R6\x1D\xF9\x13\xBCdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static LIMITORDERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct LimitOrderLib(::ethers::contract::Contract); - impl ::core::clone::Clone for LimitOrderLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for LimitOrderLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for LimitOrderLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for LimitOrderLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(LimitOrderLib)) - .field(&self.address()) - .finish() - } - } - impl LimitOrderLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - LIMITORDERLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - LIMITORDERLIB_ABI.clone(), - LIMITORDERLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for LimitOrderLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/limit_order_reactor.rs b/crates/bindings-uniswapx/src/limit_order_reactor.rs deleted file mode 100644 index 84ffa00..0000000 --- a/crates/bindings-uniswapx/src/limit_order_reactor.rs +++ /dev/null @@ -1,1445 +0,0 @@ -pub use limit_order_reactor::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod limit_order_reactor { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_permit2"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_protocolFeeOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatchWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeBatchWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("feeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeController"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "contract IProtocolFeeController", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit2"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit2"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setProtocolFeeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "setProtocolFeeController", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Fill"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Fill"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("orderHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("swapper"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ProtocolFeeControllerSet"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "ProtocolFeeControllerSet", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("oldFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("duplicateToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("recipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("feeToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidReactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidReactor"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static LIMITORDERREACTOR_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0'\x938\x03\x80b\0'\x93\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa&\x82b\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x13+\x01Ra&\x82_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a\x19kV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a\x1A\x10V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a\x1AOV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a\x1A\xD7V[a\x06eV[a\0\xB4a\x01e6`\x04a\x1A\xF9V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a\x1A\xD7V[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a\x1B`V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\n\xDCV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a\x1D[V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B+V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta\x1B3V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa\x1B`V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a\x1E\x1EV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya\x1B`V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\n\xDCV[a\x04\x9F\x81a\x0B+V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a\x1B3V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa\x1B`V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a\x1B`V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\n\xDCV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\x1D[V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B+V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga\x1B`V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\n\xDCV[a\x08d\x81a\x0B+V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a\x1EZV[\x81\x01\x90a\nW\x91\x90a \xECV[\x90P`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01\x82` \x01Q\x81R` \x01\x82`@\x01Q\x81R` \x01\x84\x80` \x01\x90a\n\x91\x91\x90a\x1EZV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\n\xD3\x83a\x0CvV[\x90R\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\n\xFBWa\n\xFBa\x1B`V[` \x02` \x01\x01Q\x90Pa\x0B\x0E\x81a\rOV[a\x0B\x18\x813a\x12,V[a\x0B\"\x813a\x13)V[P`\x01\x01a\n\xE0V[\x80Q_[\x81\x81\x10\x15a\x0CeW_\x83\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x1B`V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0B\xC7W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B~Wa\x0B~a\x1B`V[` \x02` \x01\x01Q\x90Pa\x0B\xBE\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15+\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B_V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x0FWa\x0C\x0Fa\x1B`V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0CS\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B/V[PG\x15a\x04\xABWa\x04\xAB3Ga\x15rV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a%\xC0`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a%W`;\x919`@Q` \x01a\x0C\xBA\x92\x91\x90a\"\x02V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0C\xDC\x83_\x01Qa\x16\x08V[` \x80\x85\x01Q\x80Q\x91\x01Q`@\x86\x01Qa\x0C\xF5\x90a\x16\xA1V[`@\x80Q` \x81\x01\x96\x90\x96R\x85\x01\x93\x90\x93Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\roWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\r\xC5\x90\x85\x90`\x04\x01a\"\xF4V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xDFW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0E$\x91\x90\x81\x01\x90a#\x06V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x0E;\x82\x84a#\xCFV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ESWa\x0ESa\x1B3V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xBBW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0EqW\x90P[P\x90P_[\x83\x81\x10\x15a\x0F\x0BW\x85`@\x01Q\x81\x81Q\x81\x10a\x0E\xDEWa\x0E\xDEa\x1B`V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0E\xF8Wa\x0E\xF8a\x1B`V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E\xC0V[P_\x80_[\x84\x81\x10\x15a\x12\x1BW_\x87\x82\x81Q\x81\x10a\x0F+Wa\x0F+a\x1B`V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x0F\xE6W\x88\x81\x81Q\x81\x10a\x0FQWa\x0FQa\x1B`V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x0F\xDEW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x0F7V[P_\x80[\x88\x81\x10\x15a\x10\xA3W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x10\tWa\x10\ta\x1B`V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\x9AW\x85\x15a\x10\x84W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x10\x93\x90\x84a#\xCFV[\x92P`\x01\x96P[P`\x01\x01a\x0F\xEAV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x11\x1CW\x84\x15a\x11\x03W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11\x15\x90\x82a#\xCFV[\x90P`\x01\x93P[\x80_\x03a\x11pW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x11~\x81`\x05a'\x10a\x17=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x13\xE8\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x13\xF2\x85\x85a\x17vV[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a%\xC0`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a%W`;\x919`@Q` \x01a\x14B\x92\x91\x90a\"\x02V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a%\x92` \x83\x019`@Q` \x01a\x14\x95\x92\x91\x90a$5V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x15\x02\x96\x95\x94\x93\x92`\x04\x01a$\x8FV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x15\x19W_\x80\xFD[PZ\xF1\x15\x80\x15a\x13!W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x15PWa\x03L\x82\x82a\x15rV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x17\xBCV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x15\xC8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x15\xCDV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a%\xC0`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\r2\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16\xC0Wa\x16\xC0a\x1B3V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x16\xEAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x17-W_a\x17\x1B\x85\x83\x81Q\x81\x10a\x17\x0EWa\x17\x0Ea\x1B`V[` \x02` \x01\x01Qa\x18\xAAV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x16\xEFV[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x17oW_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x18\xA3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_`@Q\x80``\x01`@R\x80`;\x81R` \x01a%W`;\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x81Q\x95\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x90\x85\x01R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01a\r2V[_`@\x82\x84\x03\x12\x15a\x19 W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x196W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19MW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x19dW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\x19}W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\x94W_\x80\xFD[a\x19\xA0\x87\x83\x88\x01a\x19\x10V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\x19\xB5W_\x80\xFD[Pa\x19\xC2\x86\x82\x87\x01a\x19&V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a\x19\xDFW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xF6W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x19dW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a\x1A!W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A7W_\x80\xFD[a\x1AC\x85\x82\x86\x01a\x19\xCFV[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x1AbW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1AyW_\x80\xFD[a\x1A\x85\x88\x83\x89\x01a\x19\xCFV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x1A\x9DW_\x80\xFD[Pa\x1A\xAA\x87\x82\x88\x01a\x19&V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[_` \x82\x84\x03\x12\x15a\x1A\xE7W_\x80\xFD[\x815a\x1A\xF2\x81a\x1A\xB6V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x1B\tW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\x1FW_\x80\xFD[a\x1B+\x84\x82\x85\x01a\x19\x10V[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x1B\xA7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x1B\x8FV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x1B\xC6\x81` \x86\x01` \x86\x01a\x1B\x8DV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x1CVW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x1C\x0BV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra\x1C\xD4a\x01\xA0\x85\x01\x82a\x1B\xAFV[\x90P` \x83\x01Qa\x1D\x12` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra\x1D*\x82\x82a\x1B\xF8V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra\x1DD\x82\x82a\x1B\xAFV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a\x1D\xCEW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra\x1D\xBC\x86\x83Qa\x1CaV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a\x1D\x82V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a\x1EPW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x1E\x8DW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x1E\xA7W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x19dW_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1E\xDEWa\x1E\xDEa\x1B3V[`@R\x90V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1E\xDEWa\x1E\xDEa\x1B3V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1FNWa\x1FNa\x1B3V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x1FeW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1F\x7FWa\x1F\x7Fa\x1B3V[a\x1F\xB0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x1F\x07V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x1F\xC4W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a\x1F\xF0W_\x80\xFD[a\x1F\xF8a\x1E\xBBV[\x90P\x815a \x05\x81a\x1A\xB6V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a s\x92\xC6;\x1E\xF0[s{x\xF8\xAFQPH\xA9\x87E\xD4dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static LIMITORDERREACTOR_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a\x19kV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a\x1A\x10V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a\x1AOV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a\x1A\xD7V[a\x06eV[a\0\xB4a\x01e6`\x04a\x1A\xF9V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a\x1A\xD7V[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a\x1B`V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\n\xDCV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a\x1D[V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B+V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta\x1B3V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa\x1B`V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a\x1E\x1EV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya\x1B`V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\n\xDCV[a\x04\x9F\x81a\x0B+V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a\x1B3V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa\x1B`V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a\x1B`V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\n\xDCV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\x1D[V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B+V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga\x1B`V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\n\xDCV[a\x08d\x81a\x0B+V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a\x1EZV[\x81\x01\x90a\nW\x91\x90a \xECV[\x90P`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01\x82` \x01Q\x81R` \x01\x82`@\x01Q\x81R` \x01\x84\x80` \x01\x90a\n\x91\x91\x90a\x1EZV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\n\xD3\x83a\x0CvV[\x90R\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\n\xFBWa\n\xFBa\x1B`V[` \x02` \x01\x01Q\x90Pa\x0B\x0E\x81a\rOV[a\x0B\x18\x813a\x12,V[a\x0B\"\x813a\x13)V[P`\x01\x01a\n\xE0V[\x80Q_[\x81\x81\x10\x15a\x0CeW_\x83\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x1B`V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0B\xC7W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B~Wa\x0B~a\x1B`V[` \x02` \x01\x01Q\x90Pa\x0B\xBE\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15+\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B_V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x0FWa\x0C\x0Fa\x1B`V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0CS\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B/V[PG\x15a\x04\xABWa\x04\xAB3Ga\x15rV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a%\xC0`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a%W`;\x919`@Q` \x01a\x0C\xBA\x92\x91\x90a\"\x02V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0C\xDC\x83_\x01Qa\x16\x08V[` \x80\x85\x01Q\x80Q\x91\x01Q`@\x86\x01Qa\x0C\xF5\x90a\x16\xA1V[`@\x80Q` \x81\x01\x96\x90\x96R\x85\x01\x93\x90\x93Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\roWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\r\xC5\x90\x85\x90`\x04\x01a\"\xF4V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xDFW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0E$\x91\x90\x81\x01\x90a#\x06V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x0E;\x82\x84a#\xCFV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ESWa\x0ESa\x1B3V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xBBW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0EqW\x90P[P\x90P_[\x83\x81\x10\x15a\x0F\x0BW\x85`@\x01Q\x81\x81Q\x81\x10a\x0E\xDEWa\x0E\xDEa\x1B`V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0E\xF8Wa\x0E\xF8a\x1B`V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E\xC0V[P_\x80_[\x84\x81\x10\x15a\x12\x1BW_\x87\x82\x81Q\x81\x10a\x0F+Wa\x0F+a\x1B`V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x0F\xE6W\x88\x81\x81Q\x81\x10a\x0FQWa\x0FQa\x1B`V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x0F\xDEW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x0F7V[P_\x80[\x88\x81\x10\x15a\x10\xA3W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x10\tWa\x10\ta\x1B`V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\x9AW\x85\x15a\x10\x84W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x10\x93\x90\x84a#\xCFV[\x92P`\x01\x96P[P`\x01\x01a\x0F\xEAV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x11\x1CW\x84\x15a\x11\x03W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11\x15\x90\x82a#\xCFV[\x90P`\x01\x93P[\x80_\x03a\x11pW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x11~\x81`\x05a'\x10a\x17=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x13\xE8\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x13\xF2\x85\x85a\x17vV[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a%\xC0`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a%W`;\x919`@Q` \x01a\x14B\x92\x91\x90a\"\x02V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a%\x92` \x83\x019`@Q` \x01a\x14\x95\x92\x91\x90a$5V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x15\x02\x96\x95\x94\x93\x92`\x04\x01a$\x8FV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x15\x19W_\x80\xFD[PZ\xF1\x15\x80\x15a\x13!W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x15PWa\x03L\x82\x82a\x15rV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x17\xBCV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x15\xC8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x15\xCDV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a%\xC0`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\r2\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16\xC0Wa\x16\xC0a\x1B3V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x16\xEAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x17-W_a\x17\x1B\x85\x83\x81Q\x81\x10a\x17\x0EWa\x17\x0Ea\x1B`V[` \x02` \x01\x01Qa\x18\xAAV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x16\xEFV[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x17oW_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x18\xA3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_`@Q\x80``\x01`@R\x80`;\x81R` \x01a%W`;\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x81Q\x95\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x90\x85\x01R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01a\r2V[_`@\x82\x84\x03\x12\x15a\x19 W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x196W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19MW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x19dW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\x19}W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\x94W_\x80\xFD[a\x19\xA0\x87\x83\x88\x01a\x19\x10V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\x19\xB5W_\x80\xFD[Pa\x19\xC2\x86\x82\x87\x01a\x19&V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a\x19\xDFW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xF6W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x19dW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a\x1A!W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A7W_\x80\xFD[a\x1AC\x85\x82\x86\x01a\x19\xCFV[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x1AbW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1AyW_\x80\xFD[a\x1A\x85\x88\x83\x89\x01a\x19\xCFV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x1A\x9DW_\x80\xFD[Pa\x1A\xAA\x87\x82\x88\x01a\x19&V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[_` \x82\x84\x03\x12\x15a\x1A\xE7W_\x80\xFD[\x815a\x1A\xF2\x81a\x1A\xB6V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x1B\tW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\x1FW_\x80\xFD[a\x1B+\x84\x82\x85\x01a\x19\x10V[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x1B\xA7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x1B\x8FV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x1B\xC6\x81` \x86\x01` \x86\x01a\x1B\x8DV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x1CVW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x1C\x0BV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra\x1C\xD4a\x01\xA0\x85\x01\x82a\x1B\xAFV[\x90P` \x83\x01Qa\x1D\x12` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra\x1D*\x82\x82a\x1B\xF8V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra\x1DD\x82\x82a\x1B\xAFV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a\x1D\xCEW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra\x1D\xBC\x86\x83Qa\x1CaV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a\x1D\x82V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a\x1EPW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x1E\x8DW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x1E\xA7W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x19dW_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1E\xDEWa\x1E\xDEa\x1B3V[`@R\x90V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1E\xDEWa\x1E\xDEa\x1B3V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1FNWa\x1FNa\x1B3V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x1FeW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1F\x7FWa\x1F\x7Fa\x1B3V[a\x1F\xB0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x1F\x07V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x1F\xC4W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a\x1F\xF0W_\x80\xFD[a\x1F\xF8a\x1E\xBBV[\x90P\x815a \x05\x81a\x1A\xB6V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a s\x92\xC6;\x1E\xF0[s{x\xF8\xAFQPH\xA9\x87E\xD4dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static LIMITORDERREACTOR_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct LimitOrderReactor(::ethers::contract::Contract); - impl ::core::clone::Clone for LimitOrderReactor { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for LimitOrderReactor { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for LimitOrderReactor { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for LimitOrderReactor { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(LimitOrderReactor)) - .field(&self.address()) - .finish() - } - } - impl LimitOrderReactor { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - LIMITORDERREACTOR_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - LIMITORDERREACTOR_ABI.clone(), - LIMITORDERREACTOR_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `execute` (0x3f62192e) function - pub fn execute( - &self, - order: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 98, 25, 46], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x0d7a16c3) function - pub fn execute_batch( - &self, - orders: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 122, 22, 195], orders) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatchWithCallback` (0x13fb72c7) function - pub fn execute_batch_with_callback( - &self, - orders: ::std::vec::Vec, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([19, 251, 114, 199], (orders, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeWithCallback` (0x0d335884) function - pub fn execute_with_callback( - &self, - order: SignedOrder, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 51, 88, 132], (order, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `feeController` (0x6999b377) function - pub fn fee_controller( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([105, 153, 179, 119], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit2` (0x12261ee7) function - pub fn permit_2( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([18, 38, 30, 231], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setProtocolFeeController` (0x2d771389) function - pub fn set_protocol_fee_controller( - &self, - new_fee_controller: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([45, 119, 19, 137], new_fee_controller) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Fill` event - pub fn fill_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, FillFilter> { - self.0.event() - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - ///Gets the contract's `ProtocolFeeControllerSet` event - pub fn protocol_fee_controller_set_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ProtocolFeeControllerSetFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LimitOrderReactorEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for LimitOrderReactor { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `DuplicateFeeOutput` with signature `DuplicateFeeOutput(address)` and selector `0xfff08303` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DuplicateFeeOutput", abi = "DuplicateFeeOutput(address)")] - pub struct DuplicateFeeOutput { - pub duplicate_token: ::ethers::core::types::Address, - } - ///Custom Error type `FeeTooLarge` with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "FeeTooLarge", abi = "FeeTooLarge(address,uint256,address)")] - pub struct FeeTooLarge { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub recipient: ::ethers::core::types::Address, - } - ///Custom Error type `InputAndOutputFees` with signature `InputAndOutputFees()` and selector `0xedc7e2e4` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputFees", abi = "InputAndOutputFees()")] - pub struct InputAndOutputFees; - ///Custom Error type `InvalidFeeToken` with signature `InvalidFeeToken(address)` and selector `0xeddf07f5` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidFeeToken", abi = "InvalidFeeToken(address)")] - pub struct InvalidFeeToken { - pub fee_token: ::ethers::core::types::Address, - } - ///Custom Error type `InvalidReactor` with signature `InvalidReactor()` and selector `0x4ddf4a64` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidReactor", abi = "InvalidReactor()")] - pub struct InvalidReactor; - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum LimitOrderReactorErrors { - DuplicateFeeOutput(DuplicateFeeOutput), - FeeTooLarge(FeeTooLarge), - InputAndOutputFees(InputAndOutputFees), - InvalidFeeToken(InvalidFeeToken), - InvalidReactor(InvalidReactor), - NativeTransferFailed(NativeTransferFailed), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for LimitOrderReactorErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DuplicateFeeOutput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeTooLarge(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputFees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidFeeToken(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidReactor(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NativeTransferFailed(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for LimitOrderReactorErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::DuplicateFeeOutput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeTooLarge(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputFees(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidFeeToken(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidReactor(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NativeTransferFailed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for LimitOrderReactorErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for LimitOrderReactorErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DuplicateFeeOutput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeTooLarge(element) => ::core::fmt::Display::fmt(element, f), - Self::InputAndOutputFees(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidFeeToken(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidReactor(element) => ::core::fmt::Display::fmt(element, f), - Self::NativeTransferFailed(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for LimitOrderReactorErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for LimitOrderReactorErrors { - fn from(value: DuplicateFeeOutput) -> Self { - Self::DuplicateFeeOutput(value) - } - } - impl ::core::convert::From for LimitOrderReactorErrors { - fn from(value: FeeTooLarge) -> Self { - Self::FeeTooLarge(value) - } - } - impl ::core::convert::From for LimitOrderReactorErrors { - fn from(value: InputAndOutputFees) -> Self { - Self::InputAndOutputFees(value) - } - } - impl ::core::convert::From for LimitOrderReactorErrors { - fn from(value: InvalidFeeToken) -> Self { - Self::InvalidFeeToken(value) - } - } - impl ::core::convert::From for LimitOrderReactorErrors { - fn from(value: InvalidReactor) -> Self { - Self::InvalidReactor(value) - } - } - impl ::core::convert::From for LimitOrderReactorErrors { - fn from(value: NativeTransferFailed) -> Self { - Self::NativeTransferFailed(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Fill", abi = "Fill(bytes32,address,address,uint256)")] - pub struct FillFilter { - #[ethevent(indexed)] - pub order_hash: [u8; 32], - #[ethevent(indexed)] - pub filler: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub swapper: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "ProtocolFeeControllerSet", - abi = "ProtocolFeeControllerSet(address,address)" - )] - pub struct ProtocolFeeControllerSetFilter { - pub old_fee_controller: ::ethers::core::types::Address, - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum LimitOrderReactorEvents { - FillFilter(FillFilter), - OwnershipTransferredFilter(OwnershipTransferredFilter), - ProtocolFeeControllerSetFilter(ProtocolFeeControllerSetFilter), - } - impl ::ethers::contract::EthLogDecode for LimitOrderReactorEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = FillFilter::decode_log(log) { - return Ok(LimitOrderReactorEvents::FillFilter(decoded)); - } - if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) { - return Ok(LimitOrderReactorEvents::OwnershipTransferredFilter(decoded)); - } - if let Ok(decoded) = ProtocolFeeControllerSetFilter::decode_log(log) { - return Ok( - LimitOrderReactorEvents::ProtocolFeeControllerSetFilter(decoded), - ); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for LimitOrderReactorEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FillFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ProtocolFeeControllerSetFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for LimitOrderReactorEvents { - fn from(value: FillFilter) -> Self { - Self::FillFilter(value) - } - } - impl ::core::convert::From for LimitOrderReactorEvents { - fn from(value: OwnershipTransferredFilter) -> Self { - Self::OwnershipTransferredFilter(value) - } - } - impl ::core::convert::From - for LimitOrderReactorEvents { - fn from(value: ProtocolFeeControllerSetFilter) -> Self { - Self::ProtocolFeeControllerSetFilter(value) - } - } - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes))` and selector `0x3f62192e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes))")] - pub struct ExecuteCall { - pub order: SignedOrder, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((bytes,bytes)[])")] - pub struct ExecuteBatchCall { - pub orders: ::std::vec::Vec, - } - ///Container type for all input parameters for the `executeBatchWithCallback` function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeBatchWithCallback", - abi = "executeBatchWithCallback((bytes,bytes)[],bytes)" - )] - pub struct ExecuteBatchWithCallbackCall { - pub orders: ::std::vec::Vec, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `executeWithCallback` function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeWithCallback", - abi = "executeWithCallback((bytes,bytes),bytes)" - )] - pub struct ExecuteWithCallbackCall { - pub order: SignedOrder, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeController", abi = "feeController()")] - pub struct FeeControllerCall; - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "permit2", abi = "permit2()")] - pub struct Permit2Call; - ///Container type for all input parameters for the `setProtocolFeeController` function with signature `setProtocolFeeController(address)` and selector `0x2d771389` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "setProtocolFeeController", - abi = "setProtocolFeeController(address)" - )] - pub struct SetProtocolFeeControllerCall { - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum LimitOrderReactorCalls { - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ExecuteBatchWithCallback(ExecuteBatchWithCallbackCall), - ExecuteWithCallback(ExecuteWithCallbackCall), - FeeController(FeeControllerCall), - Owner(OwnerCall), - Permit2(Permit2Call), - SetProtocolFeeController(SetProtocolFeeControllerCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for LimitOrderReactorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatchWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Permit2(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetProtocolFeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for LimitOrderReactorCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteBatchWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Permit2(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetProtocolFeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for LimitOrderReactorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatchWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ExecuteWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeController(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit2(element) => ::core::fmt::Display::fmt(element, f), - Self::SetProtocolFeeController(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for LimitOrderReactorCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for LimitOrderReactorCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From for LimitOrderReactorCalls { - fn from(value: ExecuteBatchWithCallbackCall) -> Self { - Self::ExecuteBatchWithCallback(value) - } - } - impl ::core::convert::From for LimitOrderReactorCalls { - fn from(value: ExecuteWithCallbackCall) -> Self { - Self::ExecuteWithCallback(value) - } - } - impl ::core::convert::From for LimitOrderReactorCalls { - fn from(value: FeeControllerCall) -> Self { - Self::FeeController(value) - } - } - impl ::core::convert::From for LimitOrderReactorCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for LimitOrderReactorCalls { - fn from(value: Permit2Call) -> Self { - Self::Permit2(value) - } - } - impl ::core::convert::From for LimitOrderReactorCalls { - fn from(value: SetProtocolFeeControllerCall) -> Self { - Self::SetProtocolFeeController(value) - } - } - impl ::core::convert::From for LimitOrderReactorCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeControllerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct Permit2Return(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/limitorderlib.rs b/crates/bindings-uniswapx/src/limitorderlib.rs new file mode 100644 index 0000000..14fec01 --- /dev/null +++ b/crates/bindings-uniswapx/src/limitorderlib.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface LimitOrderLib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod LimitOrderLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122095bd1eb8b1a57102059bbfbe06672aa9509062121126f0a64e2cb8108159ff5b64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x95\xBD\x1E\xB8\xB1\xA5q\x02\x05\x9B\xBF\xBE\x06g*\xA9P\x90b\x12\x11&\xF0\xA6N,\xB8\x10\x81Y\xFF[dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122095bd1eb8b1a57102059bbfbe06672aa9509062121126f0a64e2cb8108159ff5b64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x95\xBD\x1E\xB8\xB1\xA5q\x02\x05\x9B\xBF\xBE\x06g*\xA9P\x90b\x12\x11&\xF0\xA6N,\xB8\x10\x81Y\xFF[dsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`LimitOrderLib`](self) contract instance. + +See the [wrapper's documentation](`LimitOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> LimitOrderLibInstance { + LimitOrderLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + LimitOrderLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + LimitOrderLibInstance::::deploy_builder(provider) + } + /**A [`LimitOrderLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`LimitOrderLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct LimitOrderLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for LimitOrderLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("LimitOrderLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > LimitOrderLibInstance { + /**Creates a new wrapper around an on-chain [`LimitOrderLib`](self) contract instance. + +See the [wrapper's documentation](`LimitOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl LimitOrderLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> LimitOrderLibInstance { + LimitOrderLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > LimitOrderLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > LimitOrderLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/limitorderreactor.rs b/crates/bindings-uniswapx/src/limitorderreactor.rs new file mode 100644 index 0000000..ec652cd --- /dev/null +++ b/crates/bindings-uniswapx/src/limitorderreactor.rs @@ -0,0 +1,3591 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface LimitOrderReactor { + struct SignedOrder { + bytes order; + bytes sig; + } + + error DuplicateFeeOutput(address duplicateToken); + error FeeTooLarge(address token, uint256 amount, address recipient); + error InputAndOutputFees(); + error InvalidFeeToken(address feeToken); + error InvalidReactor(); + error NativeTransferFailed(); + + event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); + event OwnershipTransferred(address indexed user, address indexed newOwner); + event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); + + constructor(address _permit2, address _protocolFeeOwner); + + receive() external payable; + + function execute(SignedOrder memory order) external payable; + function executeBatch(SignedOrder[] memory orders) external payable; + function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; + function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; + function feeController() external view returns (address); + function owner() external view returns (address); + function permit2() external view returns (address); + function setProtocolFeeController(address _newFeeController) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_permit2", + "type": "address", + "internalType": "contract IPermit2" + }, + { + "name": "_protocolFeeOwner", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatchWithCallback", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeWithCallback", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "feeController", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IProtocolFeeController" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit2", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPermit2" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setProtocolFeeController", + "inputs": [ + { + "name": "_newFeeController", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Fill", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "filler", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "swapper", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProtocolFeeControllerSet", + "inputs": [ + { + "name": "oldFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "DuplicateFeeOutput", + "inputs": [ + { + "name": "duplicateToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "FeeTooLarge", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InputAndOutputFees", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidFeeToken", + "inputs": [ + { + "name": "feeToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InvalidReactor", + "inputs": [] + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod LimitOrderReactor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a06040523480156200001157600080fd5b506040516200284e3803806200284e8339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051612735620001196000396000818160e0015261137501526127356000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046119d2565b6101eb565b005b6100b96100c9366004611a80565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004611ac2565b6104c5565b34801561014a57600080fd5b506100b9610159366004611b50565b610683565b6100b961016c366004611b74565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004611b50565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5611be0565b60200260200101819052506102d981610b03565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401611de3565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b54565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388611bb1565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466611be0565b90506020028101906104789190611ea9565b6109f6565b82828151811061048f5761048f611be0565b6020908102919091010152600101610449565b506104ac81610b03565b6104b581610b54565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9611bb1565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466611be0565b8282815181106105d9576105d9611be0565b60209081029190910101526001016105aa565b506105f681610b03565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401611de3565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b54565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869611be0565b602002602001018190525061087d81610b03565b61088681610b54565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380611ee7565b810190610a7c9190612189565b90506040518060a00160405280826000015181526020018260200151815260200182604001518152602001848060200190610ab79190611ee7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610afa83610ca7565b90529392505050565b805160005b8181101561035f576000838281518110610b2457610b24611be0565b60200260200101519050610b3781610d82565b610b418133611272565b610b4b8133611373565b50600101610b08565b805160005b81811015610c96576000838281518110610b7557610b75611be0565b602002602001015190506000816040015151905060005b81811015610bf657600083604001518281518110610bac57610bac611be0565b60200260200101519050610bed81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff1661157c9092919063ffffffff16565b50600101610b8c565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c3f57610c3f611be0565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610c8491815260200190565b60405180910390a45050600101610b59565b5047156104c1576104c133476115c3565b60006040518060c00160405280608d8152602001612673608d91396040518060600160405280603b815260200161260a603b9139604051602001610cec9291906122a7565b60405160208183030381529060405280519060200120610d0f836000015161165d565b60208085015180519101516040860151610d28906116f7565b60408051602081019690965285019390935273ffffffffffffffffffffffffffffffffffffffff9091166060840152608083015260a082015260c0015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff16610da25750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390610df990859060040161239a565b600060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e5c91908101906123ad565b6040830151518151919250906000610e74828461247d565b67ffffffffffffffff811115610e8c57610e8c611bb1565b604051908082528060200260200182016040528015610ef557816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eaa5790505b50905060005b83811015610f465785604001518181518110610f1957610f19611be0565b6020026020010151828281518110610f3357610f33611be0565b6020908102919091010152600101610efb565b5060008060005b84811015611261576000878281518110610f6957610f69611be0565b6020026020010151905060005b8281101561102757888181518110610f9057610f90611be0565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361101f5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b600101610f76565b506000805b888110156110e85760008b60400151828151811061104c5761104c611be0565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036110df5785156110c9576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516110d8908461247d565b9250600196505b5060010161102c565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff918216911603611161578415611148576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b0151015161115a908261247d565b9050600193505b806000036111b65781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6111c4816005612710611795565b82602001511115611237578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a018151811061124c5761124c611be0565b60209081029190910101525050600101610f4d565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146112c3576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b9061133f90849086906004016124b7565b60006040518083038186803b15801561135757600080fd5b505afa15801561136b573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611433846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b61143d85856117d1565b85600001516020015186608001516040518060c00160405280608d8152602001612673608d91396040518060600160405280603b815260200161260a603b913960405160200161148e9291906122a7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e80835290919061264560208301396040516020016114e19291906124e6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16835261154e9695949392600401612541565b600060405180830381600087803b15801561156857600080fd5b505af115801561136b573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff83166115a15761035f82826115c3565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484611818565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461161d576040519150601f19603f3d011682016040523d82523d6000602084013e611622565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001612673608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610d6598939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff81111561171757611717611bb1565b6040519080825280601f01601f191660200182016040528015611741576020820181803683370190505b50905060005b835181101561178657600061177485838151811061176757611767611be0565b602002602001015161190a565b60208381028501015250600101611747565b50805160209091012092915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026117ca57600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611903576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060600160405280603b815260200161260a603b9139805160209182012083518483015160408087015181519586019490945273ffffffffffffffffffffffffffffffffffffffff92831690850152606084015216608082015260a001610d65565b60006040828403121561198357600080fd5b50919050565b60008083601f84011261199b57600080fd5b50813567ffffffffffffffff8111156119b357600080fd5b6020830191508360208285010111156119cb57600080fd5b9250929050565b6000806000604084860312156119e757600080fd5b833567ffffffffffffffff808211156119ff57600080fd5b611a0b87838801611971565b94506020860135915080821115611a2157600080fd5b50611a2e86828701611989565b9497909650939450505050565b60008083601f840112611a4d57600080fd5b50813567ffffffffffffffff811115611a6557600080fd5b6020830191508360208260051b85010111156119cb57600080fd5b60008060208385031215611a9357600080fd5b823567ffffffffffffffff811115611aaa57600080fd5b611ab685828601611a3b565b90969095509350505050565b60008060008060408587031215611ad857600080fd5b843567ffffffffffffffff80821115611af057600080fd5b611afc88838901611a3b565b90965094506020870135915080821115611b1557600080fd5b50611b2287828801611989565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b600060208284031215611b6257600080fd5b8135611b6d81611b2e565b9392505050565b600060208284031215611b8657600080fd5b813567ffffffffffffffff811115611b9d57600080fd5b611ba984828501611971565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b83811015611c2a578181015183820152602001611c12565b50506000910152565b60008151808452611c4b816020860160208601611c0f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015611cdd578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101611c92565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c0610180850152611d5c6101a0850182611c33565b90506020830151611d9a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152611db28282611c7d565b915050606083015184820360a0860152611dcc8282611c33565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015611e58577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552611e46868351611ce8565b95509382019390820190600101611e0c565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112611edd57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f1c57600080fd5b83018035915067ffffffffffffffff821115611f3757600080fd5b6020019150368190038213156119cb57600080fd5b6040516060810167ffffffffffffffff81118282101715611f6f57611f6f611bb1565b60405290565b60405160c0810167ffffffffffffffff81118282101715611f6f57611f6f611bb1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611fdf57611fdf611bb1565b604052919050565b600082601f830112611ff857600080fd5b813567ffffffffffffffff81111561201257612012611bb1565b61204360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611f98565b81815284602083860101111561205857600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561208757600080fd5b61208f611f4c565b9050813561209c81611b2e565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff8211156120d4576120d4611bb1565b5060051b60200190565b600082601f8301126120ef57600080fd5b813560206121046120ff836120ba565b611f98565b8281526060928302850182019282820191908785111561212357600080fd5b8387015b8581101561217c5781818a03121561213f5760008081fd5b612147611f4c565b813561215281611b2e565b8152818601358682015260408083013561216b81611b2e565b908201528452928401928101612127565b5090979650505050505050565b60006020828403121561219b57600080fd5b813567ffffffffffffffff808211156121b357600080fd5b9083019060a082860312156121c757600080fd5b6121cf611f4c565b8235828111156121de57600080fd5b830160c081880312156121f057600080fd5b6121f8611f75565b813561220381611b2e565b8152602082013561221381611b2e565b806020830152506040820135604082015260608201356060820152608082013561223c81611b2e565b608082015260a08201358481111561225357600080fd5b61225f89828501611fe7565b60a0830152508252506122758660208501612075565b602082015260808301358281111561228c57600080fd5b612298878286016120de565b60408301525095945050505050565b7f4c696d69744f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f6164647265737320696e707574546f6b656e2c00000000000000000000000000601a8201527f75696e7432353620696e707574416d6f756e742c000000000000000000000000602d8201527f4f7574707574546f6b656e5b5d206f7574707574732900000000000000000000604182015260008351612377816057850160208801611c0f565b83519083019061238e816057840160208801611c0f565b01605701949350505050565b602081526000611b6d6020830184611ce8565b600060208083850312156123c057600080fd5b825167ffffffffffffffff8111156123d757600080fd5b8301601f810185136123e857600080fd5b80516123f66120ff826120ba565b8181526060918202830184019184820191908884111561241557600080fd5b938501935b838510156124715780858a0312156124325760008081fd5b61243a611f4c565b855161244581611b2e565b8152858701518782015260408087015161245e81611b2e565b908201528352938401939185019161241a565b50979650505050505050565b80820180821115611812577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611ba96040830184611ce8565b7f4c696d69744f72646572207769746e657373290000000000000000000000000081526000835161251e816013850160208801611c0f565b835190830190612535816013840160208801611c0f565b01601301949350505050565b6000610140612571838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526125b26080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526125e781840186611c33565b90508281036101208401526125fc8185611c33565b999850505050505050505056fe4f7574707574546f6b656e286164647265737320746f6b656e2c75696e7432353620616d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220d4d14b5726d449eaf302dfca86ae6979f6c36a875f1b771d39c9d8c74d2c47f664736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0(N8\x03\x80b\0(N\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa'5b\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x13u\x01Ra'5`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a\x19\xD2V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a\x1A\x80V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a\x1A\xC2V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a\x1BPV[a\x06\x83V[a\0\xB9a\x01l6`\x04a\x1BtV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a\x1BPV[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a\x1B\xE0V[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0B\x03V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a\x1D\xE3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0BTV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a\x1B\xB1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa\x1B\xE0V[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a\x1E\xA9V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0B\x03V[a\x04\xB5\x81a\x0BTV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a\x1B\xB1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa\x1B\xE0V[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0B\x03V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\x1D\xE3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0BTV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia\x1B\xE0V[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0B\x03V[a\x08\x86\x81a\x0BTV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a\x1E\xE7V[\x81\x01\x90a\n|\x91\x90a!\x89V[\x90P`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01\x82` \x01Q\x81R` \x01\x82`@\x01Q\x81R` \x01\x84\x80` \x01\x90a\n\xB7\x91\x90a\x1E\xE7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\n\xFA\x83a\x0C\xA7V[\x90R\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B$Wa\x0B$a\x1B\xE0V[` \x02` \x01\x01Q\x90Pa\x0B7\x81a\r\x82V[a\x0BA\x813a\x12rV[a\x0BK\x813a\x13sV[P`\x01\x01a\x0B\x08V[\x80Q`\0[\x81\x81\x10\x15a\x0C\x96W`\0\x83\x82\x81Q\x81\x10a\x0BuWa\x0Bua\x1B\xE0V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0B\xF6W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xACWa\x0B\xACa\x1B\xE0V[` \x02` \x01\x01Q\x90Pa\x0B\xED\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15|\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\x8CV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C?Wa\x0C?a\x1B\xE0V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\x84\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0BYV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x15\xC3V[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a&s`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a&\n`;\x919`@Q` \x01a\x0C\xEC\x92\x91\x90a\"\xA7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\r\x0F\x83`\0\x01Qa\x16]V[` \x80\x85\x01Q\x80Q\x91\x01Q`@\x86\x01Qa\r(\x90a\x16\xF7V[`@\x80Q` \x81\x01\x96\x90\x96R\x85\x01\x93\x90\x93Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\r\xA2WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\r\xF9\x90\x85\x90`\x04\x01a#\x9AV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x16W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0E\\\x91\x90\x81\x01\x90a#\xADV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x0Et\x82\x84a$}V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x8CWa\x0E\x8Ca\x1B\xB1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xF5W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xAAW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x0FFW\x85`@\x01Q\x81\x81Q\x81\x10a\x0F\x19Wa\x0F\x19a\x1B\xE0V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0F3Wa\x0F3a\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E\xFBV[P`\0\x80`\0[\x84\x81\x10\x15a\x12aW`\0\x87\x82\x81Q\x81\x10a\x0FiWa\x0Fia\x1B\xE0V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x10'W\x88\x81\x81Q\x81\x10a\x0F\x90Wa\x0F\x90a\x1B\xE0V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\x1FW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x0FvV[P`\0\x80[\x88\x81\x10\x15a\x10\xE8W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x10LWa\x10La\x1B\xE0V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\xDFW\x85\x15a\x10\xC9W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x10\xD8\x90\x84a$}V[\x92P`\x01\x96P[P`\x01\x01a\x10,V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x11aW\x84\x15a\x11HW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11Z\x90\x82a$}V[\x90P`\x01\x93P[\x80`\0\x03a\x11\xB6W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x11\xC4\x81`\x05a'\x10a\x17\x95V[\x82` \x01Q\x11\x15a\x127W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x12LWa\x12La\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x0FMV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x12\xC3W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x13?\x90\x84\x90\x86\x90`\x04\x01a$\xB7V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x13WW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x13kW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x143\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x14=\x85\x85a\x17\xD1V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a&s`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a&\n`;\x919`@Q` \x01a\x14\x8E\x92\x91\x90a\"\xA7V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a&E` \x83\x019`@Q` \x01a\x14\xE1\x92\x91\x90a$\xE6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x15N\x96\x95\x94\x93\x92`\x04\x01a%AV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15hW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13kW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x15\xA1Wa\x03_\x82\x82a\x15\xC3V[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x18\x18V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x16\x1DW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x16\"V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a&s`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\re\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x17\x17Wa\x17\x17a\x1B\xB1V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x17AW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x17\x86W`\0a\x17t\x85\x83\x81Q\x81\x10a\x17gWa\x17ga\x1B\xE0V[` \x02` \x01\x01Qa\x19\nV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x17GV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x17\xCAW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x19\x03W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0`@Q\x80``\x01`@R\x80`;\x81R` \x01a&\n`;\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x81Q\x95\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x90\x85\x01R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01a\reV[`\0`@\x82\x84\x03\x12\x15a\x19\x83W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x19\x9BW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xB3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x19\xCBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x19\xE7W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFFW`\0\x80\xFD[a\x1A\x0B\x87\x83\x88\x01a\x19qV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\x1A!W`\0\x80\xFD[Pa\x1A.\x86\x82\x87\x01a\x19\x89V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x1AMW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1AeW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x19\xCBW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x1A\x93W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A\xAAW`\0\x80\xFD[a\x1A\xB6\x85\x82\x86\x01a\x1A;V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x1A\xD8W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1A\xF0W`\0\x80\xFD[a\x1A\xFC\x88\x83\x89\x01a\x1A;V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x1B\x15W`\0\x80\xFD[Pa\x1B\"\x87\x82\x88\x01a\x19\x89V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1BbW`\0\x80\xFD[\x815a\x1Bm\x81a\x1B.V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x1B\x86W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\x9DW`\0\x80\xFD[a\x1B\xA9\x84\x82\x85\x01a\x19qV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x1C*W\x81\x81\x01Q\x83\x82\x01R` \x01a\x1C\x12V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x1CK\x81` \x86\x01` \x86\x01a\x1C\x0FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x1C\xDDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x1C\x92V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra\x1D\\a\x01\xA0\x85\x01\x82a\x1C3V[\x90P` \x83\x01Qa\x1D\x9A` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra\x1D\xB2\x82\x82a\x1C}V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra\x1D\xCC\x82\x82a\x1C3V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a\x1EXW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra\x1EF\x86\x83Qa\x1C\xE8V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a\x1E\x0CV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a\x1E\xDDW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x1F\x1CW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x1F7W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x19\xCBW`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1FoWa\x1Foa\x1B\xB1V[`@R\x90V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1FoWa\x1Foa\x1B\xB1V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1F\xDFWa\x1F\xDFa\x1B\xB1V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x1F\xF8W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \x12Wa \x12a\x1B\xB1V[a C` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x1F\x98V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a XW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a \x87W`\0\x80\xFD[a \x8Fa\x1FLV[\x90P\x815a \x9C\x81a\x1B.V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a \xD4Wa \xD4a\x1B\xB1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a \xEFW`\0\x80\xFD[\x815` a!\x04a \xFF\x83a \xBAV[a\x1F\x98V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a!#W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a!|W\x81\x81\x8A\x03\x12\x15a!?W`\0\x80\x81\xFD[a!Ga\x1FLV[\x815a!R\x81a\x1B.V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a!k\x81a\x1B.V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a!'V[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a!\x9BW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a!\xB3W`\0\x80\xFD[\x90\x83\x01\x90`\xA0\x82\x86\x03\x12\x15a!\xC7W`\0\x80\xFD[a!\xCFa\x1FLV[\x825\x82\x81\x11\x15a!\xDEW`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a!\xF0W`\0\x80\xFD[a!\xF8a\x1FuV[\x815a\"\x03\x81a\x1B.V[\x81R` \x82\x015a\"\x13\x81a\x1B.V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\"<\x81a\x1B.V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a\"SW`\0\x80\xFD[a\"_\x89\x82\x85\x01a\x1F\xE7V[`\xA0\x83\x01RP\x82RPa\"u\x86` \x85\x01a uV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\"\x8CW`\0\x80\xFD[a\"\x98\x87\x82\x86\x01a \xDEV[`@\x83\x01RP\x95\x94PPPPPV[\x7FLimitOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 inputAmount,\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7FOutputToken[] outputs)\0\0\0\0\0\0\0\0\0\0`A\x82\x01R`\0\x83Qa#w\x81`W\x85\x01` \x88\x01a\x1C\x0FV[\x83Q\x90\x83\x01\x90a#\x8E\x81`W\x84\x01` \x88\x01a\x1C\x0FV[\x01`W\x01\x94\x93PPPPV[` \x81R`\0a\x1Bm` \x83\x01\x84a\x1C\xE8V[`\0` \x80\x83\x85\x03\x12\x15a#\xC0W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xD7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a#\xE8W`\0\x80\xFD[\x80Qa#\xF6a \xFF\x82a \xBAV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a$\x15W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a$qW\x80\x85\x8A\x03\x12\x15a$2W`\0\x80\x81\xFD[a$:a\x1FLV[\x85Qa$E\x81a\x1B.V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa$^\x81a\x1B.V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a$\x1AV[P\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x18\x12W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1B\xA9`@\x83\x01\x84a\x1C\xE8V[\x7FLimitOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa%\x1E\x81`\x13\x85\x01` \x88\x01a\x1C\x0FV[\x83Q\x90\x83\x01\x90a%5\x81`\x13\x84\x01` \x88\x01a\x1C\x0FV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a%q\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra%\xB2`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra%\xE7\x81\x84\x01\x86a\x1C3V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%\xFC\x81\x85a\x1C3V[\x99\x98PPPPPPPPPV\xFEOutputToken(address token,uint256 amount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xD4\xD1KW&\xD4I\xEA\xF3\x02\xDF\xCA\x86\xAEiy\xF6\xC3j\x87_\x1Bw\x1D9\xC9\xD8\xC7M,G\xF6dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046119d2565b6101eb565b005b6100b96100c9366004611a80565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004611ac2565b6104c5565b34801561014a57600080fd5b506100b9610159366004611b50565b610683565b6100b961016c366004611b74565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004611b50565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5611be0565b60200260200101819052506102d981610b03565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401611de3565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b54565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388611bb1565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466611be0565b90506020028101906104789190611ea9565b6109f6565b82828151811061048f5761048f611be0565b6020908102919091010152600101610449565b506104ac81610b03565b6104b581610b54565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9611bb1565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466611be0565b8282815181106105d9576105d9611be0565b60209081029190910101526001016105aa565b506105f681610b03565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401611de3565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b54565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869611be0565b602002602001018190525061087d81610b03565b61088681610b54565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380611ee7565b810190610a7c9190612189565b90506040518060a00160405280826000015181526020018260200151815260200182604001518152602001848060200190610ab79190611ee7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610afa83610ca7565b90529392505050565b805160005b8181101561035f576000838281518110610b2457610b24611be0565b60200260200101519050610b3781610d82565b610b418133611272565b610b4b8133611373565b50600101610b08565b805160005b81811015610c96576000838281518110610b7557610b75611be0565b602002602001015190506000816040015151905060005b81811015610bf657600083604001518281518110610bac57610bac611be0565b60200260200101519050610bed81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff1661157c9092919063ffffffff16565b50600101610b8c565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c3f57610c3f611be0565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610c8491815260200190565b60405180910390a45050600101610b59565b5047156104c1576104c133476115c3565b60006040518060c00160405280608d8152602001612673608d91396040518060600160405280603b815260200161260a603b9139604051602001610cec9291906122a7565b60405160208183030381529060405280519060200120610d0f836000015161165d565b60208085015180519101516040860151610d28906116f7565b60408051602081019690965285019390935273ffffffffffffffffffffffffffffffffffffffff9091166060840152608083015260a082015260c0015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff16610da25750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390610df990859060040161239a565b600060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e5c91908101906123ad565b6040830151518151919250906000610e74828461247d565b67ffffffffffffffff811115610e8c57610e8c611bb1565b604051908082528060200260200182016040528015610ef557816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eaa5790505b50905060005b83811015610f465785604001518181518110610f1957610f19611be0565b6020026020010151828281518110610f3357610f33611be0565b6020908102919091010152600101610efb565b5060008060005b84811015611261576000878281518110610f6957610f69611be0565b6020026020010151905060005b8281101561102757888181518110610f9057610f90611be0565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361101f5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b600101610f76565b506000805b888110156110e85760008b60400151828151811061104c5761104c611be0565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036110df5785156110c9576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516110d8908461247d565b9250600196505b5060010161102c565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff918216911603611161578415611148576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b0151015161115a908261247d565b9050600193505b806000036111b65781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6111c4816005612710611795565b82602001511115611237578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a018151811061124c5761124c611be0565b60209081029190910101525050600101610f4d565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146112c3576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b9061133f90849086906004016124b7565b60006040518083038186803b15801561135757600080fd5b505afa15801561136b573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611433846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b61143d85856117d1565b85600001516020015186608001516040518060c00160405280608d8152602001612673608d91396040518060600160405280603b815260200161260a603b913960405160200161148e9291906122a7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e80835290919061264560208301396040516020016114e19291906124e6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16835261154e9695949392600401612541565b600060405180830381600087803b15801561156857600080fd5b505af115801561136b573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff83166115a15761035f82826115c3565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484611818565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461161d576040519150601f19603f3d011682016040523d82523d6000602084013e611622565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001612673608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610d6598939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff81111561171757611717611bb1565b6040519080825280601f01601f191660200182016040528015611741576020820181803683370190505b50905060005b835181101561178657600061177485838151811061176757611767611be0565b602002602001015161190a565b60208381028501015250600101611747565b50805160209091012092915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026117ca57600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611903576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060600160405280603b815260200161260a603b9139805160209182012083518483015160408087015181519586019490945273ffffffffffffffffffffffffffffffffffffffff92831690850152606084015216608082015260a001610d65565b60006040828403121561198357600080fd5b50919050565b60008083601f84011261199b57600080fd5b50813567ffffffffffffffff8111156119b357600080fd5b6020830191508360208285010111156119cb57600080fd5b9250929050565b6000806000604084860312156119e757600080fd5b833567ffffffffffffffff808211156119ff57600080fd5b611a0b87838801611971565b94506020860135915080821115611a2157600080fd5b50611a2e86828701611989565b9497909650939450505050565b60008083601f840112611a4d57600080fd5b50813567ffffffffffffffff811115611a6557600080fd5b6020830191508360208260051b85010111156119cb57600080fd5b60008060208385031215611a9357600080fd5b823567ffffffffffffffff811115611aaa57600080fd5b611ab685828601611a3b565b90969095509350505050565b60008060008060408587031215611ad857600080fd5b843567ffffffffffffffff80821115611af057600080fd5b611afc88838901611a3b565b90965094506020870135915080821115611b1557600080fd5b50611b2287828801611989565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b600060208284031215611b6257600080fd5b8135611b6d81611b2e565b9392505050565b600060208284031215611b8657600080fd5b813567ffffffffffffffff811115611b9d57600080fd5b611ba984828501611971565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b83811015611c2a578181015183820152602001611c12565b50506000910152565b60008151808452611c4b816020860160208601611c0f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015611cdd578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101611c92565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c0610180850152611d5c6101a0850182611c33565b90506020830151611d9a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152611db28282611c7d565b915050606083015184820360a0860152611dcc8282611c33565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015611e58577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552611e46868351611ce8565b95509382019390820190600101611e0c565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112611edd57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f1c57600080fd5b83018035915067ffffffffffffffff821115611f3757600080fd5b6020019150368190038213156119cb57600080fd5b6040516060810167ffffffffffffffff81118282101715611f6f57611f6f611bb1565b60405290565b60405160c0810167ffffffffffffffff81118282101715611f6f57611f6f611bb1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611fdf57611fdf611bb1565b604052919050565b600082601f830112611ff857600080fd5b813567ffffffffffffffff81111561201257612012611bb1565b61204360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611f98565b81815284602083860101111561205857600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561208757600080fd5b61208f611f4c565b9050813561209c81611b2e565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff8211156120d4576120d4611bb1565b5060051b60200190565b600082601f8301126120ef57600080fd5b813560206121046120ff836120ba565b611f98565b8281526060928302850182019282820191908785111561212357600080fd5b8387015b8581101561217c5781818a03121561213f5760008081fd5b612147611f4c565b813561215281611b2e565b8152818601358682015260408083013561216b81611b2e565b908201528452928401928101612127565b5090979650505050505050565b60006020828403121561219b57600080fd5b813567ffffffffffffffff808211156121b357600080fd5b9083019060a082860312156121c757600080fd5b6121cf611f4c565b8235828111156121de57600080fd5b830160c081880312156121f057600080fd5b6121f8611f75565b813561220381611b2e565b8152602082013561221381611b2e565b806020830152506040820135604082015260608201356060820152608082013561223c81611b2e565b608082015260a08201358481111561225357600080fd5b61225f89828501611fe7565b60a0830152508252506122758660208501612075565b602082015260808301358281111561228c57600080fd5b612298878286016120de565b60408301525095945050505050565b7f4c696d69744f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f6164647265737320696e707574546f6b656e2c00000000000000000000000000601a8201527f75696e7432353620696e707574416d6f756e742c000000000000000000000000602d8201527f4f7574707574546f6b656e5b5d206f7574707574732900000000000000000000604182015260008351612377816057850160208801611c0f565b83519083019061238e816057840160208801611c0f565b01605701949350505050565b602081526000611b6d6020830184611ce8565b600060208083850312156123c057600080fd5b825167ffffffffffffffff8111156123d757600080fd5b8301601f810185136123e857600080fd5b80516123f66120ff826120ba565b8181526060918202830184019184820191908884111561241557600080fd5b938501935b838510156124715780858a0312156124325760008081fd5b61243a611f4c565b855161244581611b2e565b8152858701518782015260408087015161245e81611b2e565b908201528352938401939185019161241a565b50979650505050505050565b80820180821115611812577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611ba96040830184611ce8565b7f4c696d69744f72646572207769746e657373290000000000000000000000000081526000835161251e816013850160208801611c0f565b835190830190612535816013840160208801611c0f565b01601301949350505050565b6000610140612571838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526125b26080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526125e781840186611c33565b90508281036101208401526125fc8185611c33565b999850505050505050505056fe4f7574707574546f6b656e286164647265737320746f6b656e2c75696e7432353620616d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220d4d14b5726d449eaf302dfca86ae6979f6c36a875f1b771d39c9d8c74d2c47f664736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a\x19\xD2V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a\x1A\x80V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a\x1A\xC2V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a\x1BPV[a\x06\x83V[a\0\xB9a\x01l6`\x04a\x1BtV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a\x1BPV[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a\x1B\xE0V[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0B\x03V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a\x1D\xE3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0BTV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a\x1B\xB1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa\x1B\xE0V[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a\x1E\xA9V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0B\x03V[a\x04\xB5\x81a\x0BTV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a\x1B\xB1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa\x1B\xE0V[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0B\x03V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\x1D\xE3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0BTV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia\x1B\xE0V[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0B\x03V[a\x08\x86\x81a\x0BTV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a\x1E\xE7V[\x81\x01\x90a\n|\x91\x90a!\x89V[\x90P`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01\x82` \x01Q\x81R` \x01\x82`@\x01Q\x81R` \x01\x84\x80` \x01\x90a\n\xB7\x91\x90a\x1E\xE7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\n\xFA\x83a\x0C\xA7V[\x90R\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B$Wa\x0B$a\x1B\xE0V[` \x02` \x01\x01Q\x90Pa\x0B7\x81a\r\x82V[a\x0BA\x813a\x12rV[a\x0BK\x813a\x13sV[P`\x01\x01a\x0B\x08V[\x80Q`\0[\x81\x81\x10\x15a\x0C\x96W`\0\x83\x82\x81Q\x81\x10a\x0BuWa\x0Bua\x1B\xE0V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0B\xF6W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xACWa\x0B\xACa\x1B\xE0V[` \x02` \x01\x01Q\x90Pa\x0B\xED\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15|\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\x8CV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C?Wa\x0C?a\x1B\xE0V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\x84\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0BYV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x15\xC3V[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a&s`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a&\n`;\x919`@Q` \x01a\x0C\xEC\x92\x91\x90a\"\xA7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\r\x0F\x83`\0\x01Qa\x16]V[` \x80\x85\x01Q\x80Q\x91\x01Q`@\x86\x01Qa\r(\x90a\x16\xF7V[`@\x80Q` \x81\x01\x96\x90\x96R\x85\x01\x93\x90\x93Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\r\xA2WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\r\xF9\x90\x85\x90`\x04\x01a#\x9AV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x16W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0E\\\x91\x90\x81\x01\x90a#\xADV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x0Et\x82\x84a$}V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x8CWa\x0E\x8Ca\x1B\xB1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xF5W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xAAW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x0FFW\x85`@\x01Q\x81\x81Q\x81\x10a\x0F\x19Wa\x0F\x19a\x1B\xE0V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0F3Wa\x0F3a\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E\xFBV[P`\0\x80`\0[\x84\x81\x10\x15a\x12aW`\0\x87\x82\x81Q\x81\x10a\x0FiWa\x0Fia\x1B\xE0V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x10'W\x88\x81\x81Q\x81\x10a\x0F\x90Wa\x0F\x90a\x1B\xE0V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\x1FW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x0FvV[P`\0\x80[\x88\x81\x10\x15a\x10\xE8W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x10LWa\x10La\x1B\xE0V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\xDFW\x85\x15a\x10\xC9W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x10\xD8\x90\x84a$}V[\x92P`\x01\x96P[P`\x01\x01a\x10,V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x11aW\x84\x15a\x11HW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11Z\x90\x82a$}V[\x90P`\x01\x93P[\x80`\0\x03a\x11\xB6W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x11\xC4\x81`\x05a'\x10a\x17\x95V[\x82` \x01Q\x11\x15a\x127W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x12LWa\x12La\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x0FMV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x12\xC3W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x13?\x90\x84\x90\x86\x90`\x04\x01a$\xB7V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x13WW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x13kW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x143\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x14=\x85\x85a\x17\xD1V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a&s`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a&\n`;\x919`@Q` \x01a\x14\x8E\x92\x91\x90a\"\xA7V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a&E` \x83\x019`@Q` \x01a\x14\xE1\x92\x91\x90a$\xE6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x15N\x96\x95\x94\x93\x92`\x04\x01a%AV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15hW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13kW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x15\xA1Wa\x03_\x82\x82a\x15\xC3V[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x18\x18V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x16\x1DW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x16\"V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a&s`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\re\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x17\x17Wa\x17\x17a\x1B\xB1V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x17AW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x17\x86W`\0a\x17t\x85\x83\x81Q\x81\x10a\x17gWa\x17ga\x1B\xE0V[` \x02` \x01\x01Qa\x19\nV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x17GV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x17\xCAW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x19\x03W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0`@Q\x80``\x01`@R\x80`;\x81R` \x01a&\n`;\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x81Q\x95\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x90\x85\x01R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01a\reV[`\0`@\x82\x84\x03\x12\x15a\x19\x83W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x19\x9BW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xB3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x19\xCBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x19\xE7W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFFW`\0\x80\xFD[a\x1A\x0B\x87\x83\x88\x01a\x19qV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\x1A!W`\0\x80\xFD[Pa\x1A.\x86\x82\x87\x01a\x19\x89V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x1AMW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1AeW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x19\xCBW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x1A\x93W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A\xAAW`\0\x80\xFD[a\x1A\xB6\x85\x82\x86\x01a\x1A;V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x1A\xD8W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1A\xF0W`\0\x80\xFD[a\x1A\xFC\x88\x83\x89\x01a\x1A;V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x1B\x15W`\0\x80\xFD[Pa\x1B\"\x87\x82\x88\x01a\x19\x89V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1BbW`\0\x80\xFD[\x815a\x1Bm\x81a\x1B.V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x1B\x86W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\x9DW`\0\x80\xFD[a\x1B\xA9\x84\x82\x85\x01a\x19qV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x1C*W\x81\x81\x01Q\x83\x82\x01R` \x01a\x1C\x12V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x1CK\x81` \x86\x01` \x86\x01a\x1C\x0FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x1C\xDDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x1C\x92V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra\x1D\\a\x01\xA0\x85\x01\x82a\x1C3V[\x90P` \x83\x01Qa\x1D\x9A` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra\x1D\xB2\x82\x82a\x1C}V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra\x1D\xCC\x82\x82a\x1C3V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a\x1EXW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra\x1EF\x86\x83Qa\x1C\xE8V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a\x1E\x0CV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a\x1E\xDDW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x1F\x1CW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x1F7W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x19\xCBW`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1FoWa\x1Foa\x1B\xB1V[`@R\x90V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1FoWa\x1Foa\x1B\xB1V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1F\xDFWa\x1F\xDFa\x1B\xB1V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x1F\xF8W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \x12Wa \x12a\x1B\xB1V[a C` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x1F\x98V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a XW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a \x87W`\0\x80\xFD[a \x8Fa\x1FLV[\x90P\x815a \x9C\x81a\x1B.V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a \xD4Wa \xD4a\x1B\xB1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a \xEFW`\0\x80\xFD[\x815` a!\x04a \xFF\x83a \xBAV[a\x1F\x98V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a!#W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a!|W\x81\x81\x8A\x03\x12\x15a!?W`\0\x80\x81\xFD[a!Ga\x1FLV[\x815a!R\x81a\x1B.V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a!k\x81a\x1B.V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a!'V[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a!\x9BW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a!\xB3W`\0\x80\xFD[\x90\x83\x01\x90`\xA0\x82\x86\x03\x12\x15a!\xC7W`\0\x80\xFD[a!\xCFa\x1FLV[\x825\x82\x81\x11\x15a!\xDEW`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a!\xF0W`\0\x80\xFD[a!\xF8a\x1FuV[\x815a\"\x03\x81a\x1B.V[\x81R` \x82\x015a\"\x13\x81a\x1B.V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\"<\x81a\x1B.V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a\"SW`\0\x80\xFD[a\"_\x89\x82\x85\x01a\x1F\xE7V[`\xA0\x83\x01RP\x82RPa\"u\x86` \x85\x01a uV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\"\x8CW`\0\x80\xFD[a\"\x98\x87\x82\x86\x01a \xDEV[`@\x83\x01RP\x95\x94PPPPPV[\x7FLimitOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 inputAmount,\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7FOutputToken[] outputs)\0\0\0\0\0\0\0\0\0\0`A\x82\x01R`\0\x83Qa#w\x81`W\x85\x01` \x88\x01a\x1C\x0FV[\x83Q\x90\x83\x01\x90a#\x8E\x81`W\x84\x01` \x88\x01a\x1C\x0FV[\x01`W\x01\x94\x93PPPPV[` \x81R`\0a\x1Bm` \x83\x01\x84a\x1C\xE8V[`\0` \x80\x83\x85\x03\x12\x15a#\xC0W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xD7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a#\xE8W`\0\x80\xFD[\x80Qa#\xF6a \xFF\x82a \xBAV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a$\x15W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a$qW\x80\x85\x8A\x03\x12\x15a$2W`\0\x80\x81\xFD[a$:a\x1FLV[\x85Qa$E\x81a\x1B.V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa$^\x81a\x1B.V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a$\x1AV[P\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x18\x12W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1B\xA9`@\x83\x01\x84a\x1C\xE8V[\x7FLimitOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa%\x1E\x81`\x13\x85\x01` \x88\x01a\x1C\x0FV[\x83Q\x90\x83\x01\x90a%5\x81`\x13\x84\x01` \x88\x01a\x1C\x0FV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a%q\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra%\xB2`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra%\xE7\x81\x84\x01\x86a\x1C3V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%\xFC\x81\x85a\x1C3V[\x99\x98PPPPPPPPPV\xFEOutputToken(address token,uint256 amount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xD4\xD1KW&\xD4I\xEA\xF3\x02\xDF\xCA\x86\xAEiy\xF6\xC3j\x87_\x1Bw\x1D9\xC9\xD8\xC7M,G\xF6dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `DuplicateFeeOutput(address)` and selector `0xfff08303`. +```solidity +error DuplicateFeeOutput(address duplicateToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DuplicateFeeOutput { + pub duplicateToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DuplicateFeeOutput) -> Self { + (value.duplicateToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DuplicateFeeOutput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { duplicateToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DuplicateFeeOutput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DuplicateFeeOutput(address)"; + const SELECTOR: [u8; 4] = [255u8, 240u8, 131u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.duplicateToken, + ), + ) + } + } + }; + /**Custom error with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656`. +```solidity +error FeeTooLarge(address token, uint256 amount, address recipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FeeTooLarge { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FeeTooLarge) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FeeTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for FeeTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "FeeTooLarge(address,uint256,address)"; + const SELECTOR: [u8; 4] = [130u8, 231u8, 86u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + } + }; + /**Custom error with signature `InputAndOutputFees()` and selector `0xedc7e2e4`. +```solidity +error InputAndOutputFees(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputFees {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputFees) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputFees { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputFees { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputFees()"; + const SELECTOR: [u8; 4] = [237u8, 199u8, 226u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidFeeToken(address)` and selector `0xeddf07f5`. +```solidity +error InvalidFeeToken(address feeToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidFeeToken { + pub feeToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidFeeToken) -> Self { + (value.feeToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidFeeToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { feeToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidFeeToken { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidFeeToken(address)"; + const SELECTOR: [u8; 4] = [237u8, 223u8, 7u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.feeToken, + ), + ) + } + } + }; + /**Custom error with signature `InvalidReactor()` and selector `0x4ddf4a64`. +```solidity +error InvalidReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReactor {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReactor()"; + const SELECTOR: [u8; 4] = [77u8, 223u8, 74u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Fill(bytes32,address,address,uint256)` and selector `0x78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66`. +```solidity +event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Fill { + #[allow(missing_docs)] + pub orderHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub filler: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub swapper: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Fill { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Fill(bytes32,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + orderHash: topics.1, + filler: topics.2, + swapper: topics.3, + nonce: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.orderHash.clone(), + self.filler.clone(), + self.swapper.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.orderHash); + out[2usize] = ::encode_topic( + &self.filler, + ); + out[3usize] = ::encode_topic( + &self.swapper, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Fill { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Fill> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Fill) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ProtocolFeeControllerSet(address,address)` and selector `0xb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0`. +```solidity +event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ProtocolFeeControllerSet { + #[allow(missing_docs)] + pub oldFeeController: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newFeeController: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProtocolFeeControllerSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ProtocolFeeControllerSet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldFeeController: data.0, + newFeeController: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldFeeController, + ), + ::tokenize( + &self.newFeeController, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ProtocolFeeControllerSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProtocolFeeControllerSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &ProtocolFeeControllerSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _permit2, address _protocolFeeOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _permit2: alloy::sol_types::private::Address, + pub _protocolFeeOwner: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._permit2, value._protocolFeeOwner) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _permit2: tuple.0, + _protocolFeeOwner: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._permit2, + ), + ::tokenize( + &self._protocolFeeOwner, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes))` and selector `0x3f62192e`. +```solidity +function execute(SignedOrder memory order) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes))"; + const SELECTOR: [u8; 4] = [63u8, 98u8, 25u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3`. +```solidity +function executeBatch(SignedOrder[] memory orders) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { orders: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[])"; + const SELECTOR: [u8; 4] = [13u8, 122u8, 22u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7`. +```solidity +function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackCall) -> Self { + (value.orders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchWithCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatchWithCallback((bytes,bytes)[],bytes)"; + const SELECTOR: [u8; 4] = [19u8, 251u8, 114u8, 199u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884`. +```solidity +function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackCall { + pub order: ::RustType, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + SignedOrder, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackCall) -> Self { + (value.order, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeWithCallbackCall { + type Parameters<'a> = (SignedOrder, alloy::sol_types::sol_data::Bytes); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeWithCallback((bytes,bytes),bytes)"; + const SELECTOR: [u8; 4] = [13u8, 51u8, 88u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `feeController()` and selector `0x6999b377`. +```solidity +function feeController() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerCall {} + ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeControllerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeControllerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeController()"; + const SELECTOR: [u8; 4] = [105u8, 153u8, 179u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit2()` and selector `0x12261ee7`. +```solidity +function permit2() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Call {} + ///Container type for the return parameters of the [`permit2()`](permit2Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Return { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit2Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit2Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit2()"; + const SELECTOR: [u8; 4] = [18u8, 38u8, 30u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setProtocolFeeController(address)` and selector `0x2d771389`. +```solidity +function setProtocolFeeController(address _newFeeController) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerCall { + pub _newFeeController: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerCall) -> Self { + (value._newFeeController,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _newFeeController: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProtocolFeeControllerCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProtocolFeeControllerReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProtocolFeeController(address)"; + const SELECTOR: [u8; 4] = [45u8, 119u8, 19u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newFeeController, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`LimitOrderReactor`](self) function calls. + pub enum LimitOrderReactorCalls { + execute(executeCall), + executeBatch(executeBatchCall), + executeBatchWithCallback(executeBatchWithCallbackCall), + executeWithCallback(executeWithCallbackCall), + feeController(feeControllerCall), + owner(ownerCall), + permit2(permit2Call), + setProtocolFeeController(setProtocolFeeControllerCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl LimitOrderReactorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 51u8, 88u8, 132u8], + [13u8, 122u8, 22u8, 195u8], + [18u8, 38u8, 30u8, 231u8], + [19u8, 251u8, 114u8, 199u8], + [45u8, 119u8, 19u8, 137u8], + [63u8, 98u8, 25u8, 46u8], + [105u8, 153u8, 179u8, 119u8], + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for LimitOrderReactorCalls { + const NAME: &'static str = "LimitOrderReactorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::executeBatchWithCallback(_) => { + ::SELECTOR + } + Self::executeWithCallback(_) => { + ::SELECTOR + } + Self::feeController(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::permit2(_) => ::SELECTOR, + Self::setProtocolFeeController(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn executeWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorCalls::executeWithCallback) + } + executeWithCallback + }, + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorCalls::executeBatch) + } + executeBatch + }, + { + fn permit2( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorCalls::permit2) + } + permit2 + }, + { + fn executeBatchWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorCalls::executeBatchWithCallback) + } + executeBatchWithCallback + }, + { + fn setProtocolFeeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorCalls::setProtocolFeeController) + } + setProtocolFeeController + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorCalls::execute) + } + execute + }, + { + fn feeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorCalls::feeController) + } + feeController + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::feeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::permit2(inner) => { + ::abi_encoded_size(inner) + } + Self::setProtocolFeeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::feeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit2(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setProtocolFeeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`LimitOrderReactor`](self) custom errors. + pub enum LimitOrderReactorErrors { + DuplicateFeeOutput(DuplicateFeeOutput), + FeeTooLarge(FeeTooLarge), + InputAndOutputFees(InputAndOutputFees), + InvalidFeeToken(InvalidFeeToken), + InvalidReactor(InvalidReactor), + NativeTransferFailed(NativeTransferFailed), + } + #[automatically_derived] + impl LimitOrderReactorErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [77u8, 223u8, 74u8, 100u8], + [130u8, 231u8, 86u8, 86u8], + [237u8, 199u8, 226u8, 228u8], + [237u8, 223u8, 7u8, 245u8], + [244u8, 179u8, 177u8, 188u8], + [255u8, 240u8, 131u8, 3u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for LimitOrderReactorErrors { + const NAME: &'static str = "LimitOrderReactorErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DuplicateFeeOutput(_) => { + ::SELECTOR + } + Self::FeeTooLarge(_) => { + ::SELECTOR + } + Self::InputAndOutputFees(_) => { + ::SELECTOR + } + Self::InvalidFeeToken(_) => { + ::SELECTOR + } + Self::InvalidReactor(_) => { + ::SELECTOR + } + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn InvalidReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorErrors::InvalidReactor) + } + InvalidReactor + }, + { + fn FeeTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorErrors::FeeTooLarge) + } + FeeTooLarge + }, + { + fn InputAndOutputFees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorErrors::InputAndOutputFees) + } + InputAndOutputFees + }, + { + fn InvalidFeeToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorErrors::InvalidFeeToken) + } + InvalidFeeToken + }, + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorErrors::NativeTransferFailed) + } + NativeTransferFailed + }, + { + fn DuplicateFeeOutput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(LimitOrderReactorErrors::DuplicateFeeOutput) + } + DuplicateFeeOutput + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DuplicateFeeOutput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encoded_size(inner) + } + Self::InputAndOutputFees(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DuplicateFeeOutput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`LimitOrderReactor`](self) events. + pub enum LimitOrderReactorEvents { + Fill(Fill), + OwnershipTransferred(OwnershipTransferred), + ProtocolFeeControllerSet(ProtocolFeeControllerSet), + } + #[automatically_derived] + impl LimitOrderReactorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ], + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + [ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for LimitOrderReactorEvents { + const NAME: &'static str = "LimitOrderReactorEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Fill) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ProtocolFeeControllerSet) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for LimitOrderReactorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`LimitOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`LimitOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> LimitOrderReactorInstance { + LimitOrderReactorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + LimitOrderReactorInstance::< + T, + P, + N, + >::deploy(provider, _permit2, _protocolFeeOwner) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + LimitOrderReactorInstance::< + T, + P, + N, + >::deploy_builder(provider, _permit2, _protocolFeeOwner) + } + /**A [`LimitOrderReactor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`LimitOrderReactor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct LimitOrderReactorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for LimitOrderReactorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("LimitOrderReactorInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > LimitOrderReactorInstance { + /**Creates a new wrapper around an on-chain [`LimitOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`LimitOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _permit2, + _protocolFeeOwner, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _permit2, + _protocolFeeOwner, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl LimitOrderReactorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> LimitOrderReactorInstance { + LimitOrderReactorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > LimitOrderReactorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeBatchCall { orders }) + } + ///Creates a new call builder for the [`executeBatchWithCallback`] function. + pub fn executeBatchWithCallback( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeBatchWithCallbackCall { + orders, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`executeWithCallback`] function. + pub fn executeWithCallback( + &self, + order: ::RustType, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeWithCallbackCall { + order, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`feeController`] function. + pub fn feeController( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeControllerCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`permit2`] function. + pub fn permit2(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&permit2Call {}) + } + ///Creates a new call builder for the [`setProtocolFeeController`] function. + pub fn setProtocolFeeController( + &self, + _newFeeController: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setProtocolFeeControllerCall { + _newFeeController, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > LimitOrderReactorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Fill`] event. + pub fn Fill_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ProtocolFeeControllerSet`] event. + pub fn ProtocolFeeControllerSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/math.rs b/crates/bindings-uniswapx/src/math.rs index a99ddab..4586c8d 100644 --- a/crates/bindings-uniswapx/src/math.rs +++ b/crates/bindings-uniswapx/src/math.rs @@ -1,123 +1,215 @@ -pub use math::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod math { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MATH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); +/** + +Generated by the following Solidity interface... +```solidity +interface Math {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Math { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eb66d4687cbe0ed8d033401bf5bfcb02f99879f7e01bc31b2c73edeeee81438564736f6c63430008180033 + /// ``` #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 6\x93\x81C\x04\x9CU\xA7]d\xA28\xFA\xF5c\x1A\xDDt\xD8\x17h$7\x07\x96~#$?\xEB\x93\x13dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MATH_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEBf\xD4h|\xBE\x0E\xD8\xD03@\x1B\xF5\xBF\xCB\x02\xF9\x98y\xF7\xE0\x1B\xC3\x1B,s\xED\xEE\xEE\x81C\x85dsolcC\0\x08\x18\x003", ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eb66d4687cbe0ed8d033401bf5bfcb02f99879f7e01bc31b2c73edeeee81438564736f6c63430008180033 + /// ``` #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 6\x93\x81C\x04\x9CU\xA7]d\xA28\xFA\xF5c\x1A\xDDt\xD8\x17h$7\x07\x96~#$?\xEB\x93\x13dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MATH_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEBf\xD4h|\xBE\x0E\xD8\xD03@\x1B\xF5\xBF\xCB\x02\xF9\x98y\xF7\xE0\x1B\xC3\x1B,s\xED\xEE\xEE\x81C\x85dsolcC\0\x08\x18\x003", ); - pub struct Math(::ethers::contract::Contract); - impl ::core::clone::Clone for Math { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Math`](self) contract instance. + +See the [wrapper's documentation](`MathInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> MathInstance { + MathInstance::::new(address, provider) } - impl ::core::ops::Deref for Math { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MathInstance::::deploy(provider) } - impl ::core::ops::DerefMut for Math { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + MathInstance::::deploy_builder(provider) } - impl ::core::fmt::Debug for Math { + /**A [`Math`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Math`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MathInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MathInstance { + #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Math)).field(&self.address()).finish() + f.debug_tuple("MathInstance").field(&self.address).finish() } } - impl Math { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MathInstance { + /**Creates a new wrapper around an on-chain [`Math`](self) contract instance. + +See the [wrapper's documentation](`MathInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MATH_ABI.clone(), - client, - ), + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), ) } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MathInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MathInstance { + MathInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MathInstance { + /// Creates a new call builder using this contract instance's provider and address. /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MATH_ABI.clone(), - MATH_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) } } - impl From<::ethers::contract::Contract> - for Math { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MathInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) } } } diff --git a/crates/bindings-uniswapx/src/math_ext.rs b/crates/bindings-uniswapx/src/math_ext.rs deleted file mode 100644 index b505e4c..0000000 --- a/crates/bindings-uniswapx/src/math_ext.rs +++ /dev/null @@ -1,123 +0,0 @@ -pub use math_ext::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod math_ext { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MATHEXT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xA6\x87\xAD\xCF\x95\x1D\xB7\x18TG=3)S\xDC\xC6\xDB\xA5\xAFw\xAC\x8E\x86&\x9E\x86?#4\xDCP\x82dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MATHEXT_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xA6\x87\xAD\xCF\x95\x1D\xB7\x18TG=3)S\xDC\xC6\xDB\xA5\xAFw\xAC\x8E\x86&\x9E\x86?#4\xDCP\x82dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MATHEXT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MathExt(::ethers::contract::Contract); - impl ::core::clone::Clone for MathExt { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MathExt { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MathExt { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MathExt { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MathExt)).field(&self.address()).finish() - } - } - impl MathExt { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MATHEXT_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MATHEXT_ABI.clone(), - MATHEXT_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for MathExt { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/mathext.rs b/crates/bindings-uniswapx/src/mathext.rs new file mode 100644 index 0000000..25f2056 --- /dev/null +++ b/crates/bindings-uniswapx/src/mathext.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MathExt {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MathExt { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122076b335432d1f7f53fc73ea76dd037abf7f8d5486ad4bb84bcfa50db8a3b9effc64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 v\xB35C-\x1F\x7FS\xFCs\xEAv\xDD\x03z\xBF\x7F\x8DT\x86\xADK\xB8K\xCF\xA5\r\xB8\xA3\xB9\xEF\xFCdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122076b335432d1f7f53fc73ea76dd037abf7f8d5486ad4bb84bcfa50db8a3b9effc64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 v\xB35C-\x1F\x7FS\xFCs\xEAv\xDD\x03z\xBF\x7F\x8DT\x86\xADK\xB8K\xCF\xA5\r\xB8\xA3\xB9\xEF\xFCdsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MathExt`](self) contract instance. + +See the [wrapper's documentation](`MathExtInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MathExtInstance { + MathExtInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MathExtInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + MathExtInstance::::deploy_builder(provider) + } + /**A [`MathExt`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MathExt`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MathExtInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MathExtInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MathExtInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MathExtInstance { + /**Creates a new wrapper around an on-chain [`MathExt`](self) contract instance. + +See the [wrapper's documentation](`MathExtInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MathExtInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MathExtInstance { + MathExtInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MathExtInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MathExtInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/mock_arb_sys.rs b/crates/bindings-uniswapx/src/mock_arb_sys.rs deleted file mode 100644 index a8f2e47..0000000 --- a/crates/bindings-uniswapx/src/mock_arb_sys.rs +++ /dev/null @@ -1,294 +0,0 @@ -pub use mock_arb_sys::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_arb_sys { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("arbBlockNumber"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("arbBlockNumber"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setBlockNumber"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setBlockNumber"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("blockNumber"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKARBSYS_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0EW_\x80\xFD[P`\xA5\x80a\0\x1B_9_\xF3\xFE`\x80`@R4\x80\x15`\x0EW_\x80\xFD[P`\x046\x10`0W_5`\xE0\x1C\x80c\xA3\xB1\xB3\x1D\x14`4W\x80c\xA8\xC3\xC8P\x14`HW[_\x80\xFD[_T`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`W`S6`\x04`YV[_UV[\0[_` \x82\x84\x03\x12\x15`hW_\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB0QS\xB1\xB4-\x15\x8CF%\xF2\xA2a\xD0\x15\xDF(\x81(X\x17h\x81e\x8F,\x01\x08!\x02\xBA\xB0dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKARBSYS_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15`\x0EW_\x80\xFD[P`\x046\x10`0W_5`\xE0\x1C\x80c\xA3\xB1\xB3\x1D\x14`4W\x80c\xA8\xC3\xC8P\x14`HW[_\x80\xFD[_T`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`W`S6`\x04`YV[_UV[\0[_` \x82\x84\x03\x12\x15`hW_\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB0QS\xB1\xB4-\x15\x8CF%\xF2\xA2a\xD0\x15\xDF(\x81(X\x17h\x81e\x8F,\x01\x08!\x02\xBA\xB0dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKARBSYS_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockArbSys(::ethers::contract::Contract); - impl ::core::clone::Clone for MockArbSys { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockArbSys { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockArbSys { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockArbSys { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockArbSys)).field(&self.address()).finish() - } - } - impl MockArbSys { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKARBSYS_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKARBSYS_ABI.clone(), - MOCKARBSYS_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `arbBlockNumber` (0xa3b1b31d) function - pub fn arb_block_number( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([163, 177, 179, 29], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setBlockNumber` (0xa8c3c850) function - pub fn set_block_number( - &self, - block_number: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([168, 195, 200, 80], block_number) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for MockArbSys { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `arbBlockNumber` function with signature `arbBlockNumber()` and selector `0xa3b1b31d` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "arbBlockNumber", abi = "arbBlockNumber()")] - pub struct ArbBlockNumberCall; - ///Container type for all input parameters for the `setBlockNumber` function with signature `setBlockNumber(uint256)` and selector `0xa8c3c850` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setBlockNumber", abi = "setBlockNumber(uint256)")] - pub struct SetBlockNumberCall { - pub block_number: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockArbSysCalls { - ArbBlockNumber(ArbBlockNumberCall), - SetBlockNumber(SetBlockNumberCall), - } - impl ::ethers::core::abi::AbiDecode for MockArbSysCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ArbBlockNumber(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetBlockNumber(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockArbSysCalls { - fn encode(self) -> Vec { - match self { - Self::ArbBlockNumber(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetBlockNumber(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockArbSysCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ArbBlockNumber(element) => ::core::fmt::Display::fmt(element, f), - Self::SetBlockNumber(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockArbSysCalls { - fn from(value: ArbBlockNumberCall) -> Self { - Self::ArbBlockNumber(value) - } - } - impl ::core::convert::From for MockArbSysCalls { - fn from(value: SetBlockNumberCall) -> Self { - Self::SetBlockNumber(value) - } - } - ///Container type for all return fields from the `arbBlockNumber` function with signature `arbBlockNumber()` and selector `0xa3b1b31d` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ArbBlockNumberReturn(pub ::ethers::core::types::U256); -} diff --git a/crates/bindings-uniswapx/src/mock_block_numberish.rs b/crates/bindings-uniswapx/src/mock_block_numberish.rs deleted file mode 100644 index 07336de..0000000 --- a/crates/bindings-uniswapx/src/mock_block_numberish.rs +++ /dev/null @@ -1,185 +0,0 @@ -pub use mock_block_numberish::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_block_numberish { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("getBlockNumberish"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getBlockNumberish"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKBLOCKNUMBERISH_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\xA4\xB1F\x03a\x004W`\x01`\x01`@\x1B\x03a\0ya\0O` \x1B\x17\x16`\x80Ra\0\xD1V[`\x01`\x01`@\x1B\x03a\0\xE8a\0\xB6` \x1B\x17\x16`\x80Ra\0\xD1V[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\x8DW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xB1\x91\x90a\0\xBAV[\x90P\x90V[C\x90V[_` \x82\x84\x03\x12\x15a\0\xCAW_\x80\xFD[PQ\x91\x90PV[`\x80Qa\x019a\0\xE8_9_`M\x01Ra\x019_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cM\xDC\xFF\x8E\x14a\0-W[_\x80\xFD[a\x005a\0GV[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[_a\0t\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P\x90V[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC4W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0t\x91\x90a\0\xECV[C\x90V[_` \x82\x84\x03\x12\x15a\0\xFCW_\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 i\x80\xEC\xBD\xFB_\x98o\x7F\x86>o\xF4\xBB\xEF\xDDM\x97_)\x13\xB4\xBB\x1A(c2\x15\xD3t\xEF\xCDdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKBLOCKNUMBERISH_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cM\xDC\xFF\x8E\x14a\0-W[_\x80\xFD[a\x005a\0GV[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[_a\0t\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P\x90V[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC4W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0t\x91\x90a\0\xECV[C\x90V[_` \x82\x84\x03\x12\x15a\0\xFCW_\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 i\x80\xEC\xBD\xFB_\x98o\x7F\x86>o\xF4\xBB\xEF\xDDM\x97_)\x13\xB4\xBB\x1A(c2\x15\xD3t\xEF\xCDdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKBLOCKNUMBERISH_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockBlockNumberish(::ethers::contract::Contract); - impl ::core::clone::Clone for MockBlockNumberish { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockBlockNumberish { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockBlockNumberish { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockBlockNumberish { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockBlockNumberish)) - .field(&self.address()) - .finish() - } - } - impl MockBlockNumberish { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKBLOCKNUMBERISH_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKBLOCKNUMBERISH_ABI.clone(), - MOCKBLOCKNUMBERISH_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `getBlockNumberish` (0x4ddcff8e) function - pub fn get_block_numberish( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([77, 220, 255, 142], ()) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for MockBlockNumberish { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `getBlockNumberish` function with signature `getBlockNumberish()` and selector `0x4ddcff8e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "getBlockNumberish", abi = "getBlockNumberish()")] - pub struct GetBlockNumberishCall; - ///Container type for all return fields from the `getBlockNumberish` function with signature `getBlockNumberish()` and selector `0x4ddcff8e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct GetBlockNumberishReturn(pub ::ethers::core::types::U256); -} diff --git a/crates/bindings-uniswapx/src/mock_cosigner_lib_contract.rs b/crates/bindings-uniswapx/src/mock_cosigner_lib_contract.rs deleted file mode 100644 index 52c7690..0000000 --- a/crates/bindings-uniswapx/src/mock_cosigner_lib_contract.rs +++ /dev/null @@ -1,217 +0,0 @@ -pub use mock_cosigner_lib_contract::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_cosigner_lib_contract { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("verify"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("verify"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("cosigner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("data"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("cosignature"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("InvalidCosignature"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidCosignature"), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKCOSIGNERLIBCONTRACT_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x03#\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80c\x1A\x86\xB5P\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x01\xA2V[a\0BV[\0[a\0M\x83\x83\x83a\0RV[PPPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\0h\x91\x90a\x02\x9EV[\x91P\x91P_\x83`@\x81Q\x81\x10a\0\x80Wa\0\x80a\x02\xC0V[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\0\xDAW=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x015WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x01lW`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[_\x80_``\x84\x86\x03\x12\x15a\x01\xB4W_\x80\xFD[\x835s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xD7W_\x80\xFD[\x92P` \x84\x015\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xFAW_\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02\rW_\x80\xFD[\x815\x81\x81\x11\x15a\x02\x1FWa\x02\x1Fa\x01uV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02eWa\x02ea\x01uV[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x02}W_\x80\xFD[\x82` \x86\x01` \x83\x017_` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[_\x80`@\x83\x85\x03\x12\x15a\x02\xAFW_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD\xFE\xA2dipfsX\"\x12 \x8B\x96\xEC\xB4\xE8\xFBJ\x92\xB2qDhm\x9A\xF9\xFB?\xBE&\xF8\xAAB\xC6\xB3\x86B\x16\x98\xAC\xED\x114dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKCOSIGNERLIBCONTRACT_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80c\x1A\x86\xB5P\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x01\xA2V[a\0BV[\0[a\0M\x83\x83\x83a\0RV[PPPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\0h\x91\x90a\x02\x9EV[\x91P\x91P_\x83`@\x81Q\x81\x10a\0\x80Wa\0\x80a\x02\xC0V[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\0\xDAW=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x015WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x01lW`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[_\x80_``\x84\x86\x03\x12\x15a\x01\xB4W_\x80\xFD[\x835s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xD7W_\x80\xFD[\x92P` \x84\x015\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xFAW_\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02\rW_\x80\xFD[\x815\x81\x81\x11\x15a\x02\x1FWa\x02\x1Fa\x01uV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02eWa\x02ea\x01uV[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x02}W_\x80\xFD[\x82` \x86\x01` \x83\x017_` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[_\x80`@\x83\x85\x03\x12\x15a\x02\xAFW_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD\xFE\xA2dipfsX\"\x12 \x8B\x96\xEC\xB4\xE8\xFBJ\x92\xB2qDhm\x9A\xF9\xFB?\xBE&\xF8\xAAB\xC6\xB3\x86B\x16\x98\xAC\xED\x114dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKCOSIGNERLIBCONTRACT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockCosignerLibContract(::ethers::contract::Contract); - impl ::core::clone::Clone for MockCosignerLibContract { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockCosignerLibContract { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockCosignerLibContract { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockCosignerLibContract { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockCosignerLibContract)) - .field(&self.address()) - .finish() - } - } - impl MockCosignerLibContract { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKCOSIGNERLIBCONTRACT_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKCOSIGNERLIBCONTRACT_ABI.clone(), - MOCKCOSIGNERLIBCONTRACT_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `verify` (0x1a86b550) function - pub fn verify( - &self, - cosigner: ::ethers::core::types::Address, - data: [u8; 32], - cosignature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([26, 134, 181, 80], (cosigner, data, cosignature)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for MockCosignerLibContract { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `InvalidCosignature` with signature `InvalidCosignature()` and selector `0xd7815be1` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidCosignature", abi = "InvalidCosignature()")] - pub struct InvalidCosignature; - ///Container type for all input parameters for the `verify` function with signature `verify(address,bytes32,bytes)` and selector `0x1a86b550` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "verify", abi = "verify(address,bytes32,bytes)")] - pub struct VerifyCall { - pub cosigner: ::ethers::core::types::Address, - pub data: [u8; 32], - pub cosignature: ::ethers::core::types::Bytes, - } -} diff --git a/crates/bindings-uniswapx/src/mock_dutch_order_reactor.rs b/crates/bindings-uniswapx/src/mock_dutch_order_reactor.rs deleted file mode 100644 index 788f339..0000000 --- a/crates/bindings-uniswapx/src/mock_dutch_order_reactor.rs +++ /dev/null @@ -1,1757 +0,0 @@ -pub use mock_dutch_order_reactor::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_dutch_order_reactor { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_permit2"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_protocolFeeOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatchWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeBatchWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("feeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeController"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "contract IProtocolFeeController", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit2"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit2"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("resolveOrder"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("resolveOrder"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("resolvedOrder"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setProtocolFeeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "setProtocolFeeController", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Fill"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Fill"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("orderHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("swapper"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ProtocolFeeControllerSet"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "ProtocolFeeControllerSet", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("oldFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DeadlineBeforeEndTime"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "DeadlineBeforeEndTime", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("duplicateToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("EndTimeBeforeStartTime"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "EndTimeBeforeStartTime", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("recipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("IncorrectAmounts"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("IncorrectAmounts"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputDecay"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InputAndOutputDecay", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("feeToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidReactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidReactor"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKDUTCHORDERREACTOR_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x000\xE28\x03\x80b\x000\xE2\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xBDV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x84\x92\x84\x92\x83\x92\x83\x92\x90\x91\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xFA\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xBAW_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xCFW_\x80\xFD[\x82Qb\0\0\xDC\x81b\0\0\xA5V[` \x84\x01Q\x90\x92Pb\0\0\xEF\x81b\0\0\xA5V[\x80\x91PP\x92P\x92\x90PV[`\x80Qa/\xC9b\0\x01\x19_9_\x81\x81`\xF4\x01Ra\x13\xCE\x01Ra/\xC9_\xF3\xFE`\x80`@R`\x046\x10a\0\xB0W_5`\xE0\x1C\x80c?b\x19.\x11a\0fW\x80c\x8D\xA5\xCB[\x11a\0LW\x80c\x8D\xA5\xCB[\x14a\x01\xB1W\x80c\x9B\xB3\"e\x14a\x01\xDCW\x80c\xF2\xFD\xE3\x8B\x14a\x02\x08W_\x80\xFD[\x80c?b\x19.\x14a\x01rW\x80ci\x99\xB3w\x14a\x01\x85W_\x80\xFD[\x80c\x12&\x1E\xE7\x11a\0\x96W\x80c\x12&\x1E\xE7\x14a\0\xE3W\x80c\x13\xFBr\xC7\x14a\x01@W\x80c-w\x13\x89\x14a\x01SW_\x80\xFD[\x80c\r3X\x84\x14a\0\xBBW\x80c\rz\x16\xC3\x14a\0\xD0W_\x80\xFD[6a\0\xB7W\0[_\x80\xFD[a\0\xCEa\0\xC96`\x04a\"\\V[a\x02'V[\0[a\0\xCEa\0\xDE6`\x04a#\x01V[a\x03\x98V[4\x80\x15a\0\xEEW_\x80\xFD[Pa\x01\x16\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xCEa\x01N6`\x04a#@V[a\x04\xF6V[4\x80\x15a\x01^W_\x80\xFD[Pa\0\xCEa\x01m6`\x04a#\xC8V[a\x06\xACV[a\0\xCEa\x01\x806`\x04a#\xEAV[a\x07\xB7V[4\x80\x15a\x01\x90W_\x80\xFD[P`\x01Ta\x01\x16\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xBCW_\x80\xFD[P_Ta\x01\x16\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xE7W_\x80\xFD[Pa\x01\xFBa\x01\xF66`\x04a#\xEAV[a\x08\xB9V[`@Qa\x017\x91\x90a%\xEAV[4\x80\x15a\x02\x13W_\x80\xFD[Pa\0\xCEa\x02\"6`\x04a#\xC8V[a\t6V[a\x02/a\n%V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02EW\x90PP\x90Pa\x02\xEC\x84a\n\x96V[\x81_\x81Q\x81\x10a\x02\xFEWa\x02\xFEa&)V[` \x02` \x01\x01\x81\x90RPa\x03\x12\x81a\x0B\rV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03R\x90\x84\x90\x87\x90\x87\x90`\x04\x01a&VV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03iW_\x80\xFD[PZ\xF1\x15\x80\x15a\x03{W=_\x80>=_\xFD[PPPPa\x03\x88\x81a\x0B\\V[Pa\x03\x93`\x01`\x02UV[PPPV[a\x03\xA0a\n%V[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\xBBWa\x03\xBBa%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04uW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xD9W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\xD3Wa\x04\xAE\x85\x85\x83\x81\x81\x10a\x04\x97Wa\x04\x97a&)V[\x90P` \x02\x81\x01\x90a\x04\xA9\x91\x90a'\x19V[a\n\x96V[\x82\x82\x81Q\x81\x10a\x04\xC0Wa\x04\xC0a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04zV[Pa\x04\xDD\x81a\x0B\rV[a\x04\xE6\x81a\x0B\\V[PPa\x04\xF2`\x01`\x02UV[PPV[a\x04\xFEa\n%V[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\x19Wa\x05\x19a%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xD3W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x057W\x90P[P\x90P_[\x82\x81\x10\x15a\x06\x1AWa\x05\xF5\x87\x87\x83\x81\x81\x10a\x04\x97Wa\x04\x97a&)V[\x82\x82\x81Q\x81\x10a\x06\x07Wa\x06\x07a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xD8V[Pa\x06$\x81a\x0B\rV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06d\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&VV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06{W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06\x8DW=_\x80>=_\xFD[PPPPa\x06\x9A\x81a\x0B\\V[PPa\x06\xA6`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x071W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\xBFa\n%V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xD5W\x90PP\x90Pa\x08|\x82a\n\x96V[\x81_\x81Q\x81\x10a\x08\x8EWa\x08\x8Ea&)V[` \x02` \x01\x01\x81\x90RPa\x08\xA2\x81a\x0B\rV[a\x08\xAB\x81a\x0B\\V[Pa\x08\xB6`\x01`\x02UV[PV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\t0\x82a\n\x96V[\x92\x91PPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\xB6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07(V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\n\x90W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07(V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\t0\x82a\x0C\xA7V[\x80Q_[\x81\x81\x10\x15a\x03\x93W_\x83\x82\x81Q\x81\x10a\x0B,Wa\x0B,a&)V[` \x02` \x01\x01Q\x90Pa\x0B?\x81a\r\xF2V[a\x0BI\x813a\x12\xCFV[a\x0BS\x813a\x13\xCCV[P`\x01\x01a\x0B\x11V[\x80Q_[\x81\x81\x10\x15a\x0C\x96W_\x83\x82\x81Q\x81\x10a\x0B{Wa\x0B{a&)V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0B\xF8W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xAFWa\x0B\xAFa&)V[` \x02` \x01\x01Q\x90Pa\x0B\xEF\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x17j\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\x90V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C@Wa\x0C@a&)V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\x84\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B`V[PG\x15a\x04\xF2Wa\x04\xF23Ga\x17\xB1V[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\r\x1F\x83\x80a'UV[\x81\x01\x90a\r,\x91\x90a*7V[\x90Pa\r7\x81a\x18GV[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\rl\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x191\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\r\x92\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x19\xFF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\r\xA7\x91\x90a'UV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\r\xE9\x83a\x1A\xE4V[\x90R\x93\x92PPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0E\x12WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x0Eh\x90\x85\x90`\x04\x01a%\xEAV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x82W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0E\xC7\x91\x90\x81\x01\x90a+cV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x0E\xDE\x82\x84a,YV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xF6Wa\x0E\xF6a%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0F\x14W\x90P[P\x90P_[\x83\x81\x10\x15a\x0F\xAEW\x85`@\x01Q\x81\x81Q\x81\x10a\x0F\x81Wa\x0F\x81a&)V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0F\x9BWa\x0F\x9Ba&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0FcV[P_\x80_[\x84\x81\x10\x15a\x12\xBEW_\x87\x82\x81Q\x81\x10a\x0F\xCEWa\x0F\xCEa&)V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x10\x89W\x88\x81\x81Q\x81\x10a\x0F\xF4Wa\x0F\xF4a&)V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\x81W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07(V[`\x01\x01a\x0F\xDAV[P_\x80[\x88\x81\x10\x15a\x11FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x10\xACWa\x10\xACa&)V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x11=W\x85\x15a\x11'W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x116\x90\x84a,YV[\x92P`\x01\x96P[P`\x01\x01a\x10\x8DV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x11\xBFW\x84\x15a\x11\xA6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11\xB8\x90\x82a,YV[\x90P`\x01\x93P[\x80_\x03a\x12\x13W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07(V[a\x12!\x81`\x05a'\x10a\x1DKV[\x82` \x01Q\x11\x15a\x12\x94W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07(V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x12\xA9Wa\x12\xA9a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x0F\xB3V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x13 W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xF2W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x13\x9C\x90\x84\x90\x86\x90`\x04\x01a,lV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x13\xB2W_\x80\xFD[PZ\xFA\x15\x80\x15a\x13\xC4W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x14\x8B\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x16\x14\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.\x87` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\x07`\x8D\x919`@Q` \x01a\x16\x81\x93\x92\x91\x90a,\x9AV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a.\xD9` \x83\x019`@Q` \x01a\x16\xD4\x92\x91\x90a,\xDCV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x17A\x96\x95\x94\x93\x92`\x04\x01a-6V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x17XW_\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xC4W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x17\x8FWa\x03\x93\x82\x82a\x17\xB1V[a\x03\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1D\x85V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x18\x07W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x18\x0CV[``\x91P[PP\x90P\x80a\x03\x93W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\x18\x8AW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\xB6W_[\x81`\x80\x01QQ\x81\x10\x15a\x04\xF2W\x81`\x80\x01Q\x81\x81Q\x81\x10a\x18\xC4Wa\x18\xC4a&)V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\x18\xE6Wa\x18\xE6a&)V[` \x02` \x01\x01Q` \x01Q\x14a\x19)W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x18\xA1V[a\x19h`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x19\xAAW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x19\xBF\x85` \x01Q\x86`@\x01Q\x86\x86a\x1EsV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A\x1DWa\x1A\x1Da%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1A\x85W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x1A;W\x90P[P\x91P_[\x81\x81\x10\x15a\x1A\xDBWa\x1A\xB6\x86\x82\x81Q\x81\x10a\x1A\xA7Wa\x1A\xA7a&)V[` \x02` \x01\x01Q\x86\x86a\x1E\xEFV[\x83\x82\x81Q\x81\x10a\x1A\xC8Wa\x1A\xC8a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1A\x8AV[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R_\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.\x87` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\x07`\x8D\x919`@Q` \x01a\x1C\x89\x93\x92\x91\x90a,\x9AV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1C\xAB\x83_\x01Qa\x1F\xBCV[\x83` \x01Q\x84`@\x01Q\x85``\x01Q_\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x1C\xDC\x89`\x80\x01Qa UV[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1D~W_\x80\xFD[P\x91\x02\x04\x90V[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1ElW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07(V[PPPPPV[_\x83\x85\x03a\x1E\x82WP\x83a\x1E\xE7V[\x82\x82\x11a\x1E\xBBW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1E\xC9WP\x82a\x1E\xE7V[B\x83\x10a\x1E\xD7WP\x83a\x1E\xE7V[a\x1E\xE4\x83\x83B\x88\x88a \xF0V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1FMW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1Fb\x85` \x01Q\x86`@\x01Q\x86\x86a\x1EsV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\x07`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x1D.\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a tWa ta%\xFCV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a \x9EW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a \xE1W_a \xCF\x85\x83\x81Q\x81\x10a \xC2Wa \xC2a&)V[` \x02` \x01\x01Qa!\nV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a \xA3V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_a \xFE\x86\x86\x86\x86\x86a!\x80V[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a.\x87`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x1D.\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x84\x84\x10a!\x8FWP\x80a!\x01V[_a!\x9A\x87\x86a-\xF0V[\x90P_a!\xA7\x88\x88a-\xF0V[\x90P_\x85\x85\x12\x15a!\xD8Wa!\xC8\x83\x83a!\xC1\x88\x8Aa.\x03V[\x91\x90a\x1DKV[a!\xD1\x90a.)V[\x90Pa!\xEAV[a!\xE7\x83\x83a!\xC1\x89\x89a.\x03V[\x90P[a!\xF4\x81\x87a._V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a\"\x11W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a\"'W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\">W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"UW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\"nW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"\x85W_\x80\xFD[a\"\x91\x87\x83\x88\x01a\"\x01V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\"\xA6W_\x80\xFD[Pa\"\xB3\x86\x82\x87\x01a\"\x17V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a\"\xD0W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xE7W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"UW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a#\x12W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#(W_\x80\xFD[a#4\x85\x82\x86\x01a\"\xC0V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a#SW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#jW_\x80\xFD[a#v\x88\x83\x89\x01a\"\xC0V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a#\x8EW_\x80\xFD[Pa#\x9B\x87\x82\x88\x01a\"\x17V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xB6W_\x80\xFD[_` \x82\x84\x03\x12\x15a#\xD8W_\x80\xFD[\x815a#\xE3\x81a#\xA7V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a#\xFAW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x10W_\x80\xFD[a\x1E\xE7\x84\x82\x85\x01a\"\x01V[_[\x83\x81\x10\x15a$6W\x81\x81\x01Q\x83\x82\x01R` \x01a$\x1EV[PP_\x91\x01RV[_\x81Q\x80\x84Ra$U\x81` \x86\x01` \x86\x01a$\x1CV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a$\xE5W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a$\x9AV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%ca\x01\xA0\x85\x01\x82a$>V[\x90P` \x83\x01Qa%\xA1` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra%\xB9\x82\x82a$\x87V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\xD3\x82\x82a$>V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[` \x81R_a#\xE3` \x83\x01\x84a$\xF0V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a&\xC9W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra&\xB7\x86\x83Qa$\xF0V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a&}V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'KW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a'\x88W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a'\xA2W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"UW_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x8FWa(\x8Fa%\xFCV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a(\xA6W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\xC0Wa(\xC0a%\xFCV[a(\xF1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(HV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)\x05W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a)1W_\x80\xFD[a)9a'\xB6V[\x90P\x815a)F\x81a#\xA7V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)}Wa)}a%\xFCV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a)\x96W_\x80\xFD[\x815` a)\xABa)\xA6\x83a)dV[a(HV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a)\xC9W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a*,W`\x80\x81\x89\x03\x12\x15a)\xE4W_\x80\xFD[a)\xECa'\xDFV[\x815a)\xF7\x81a#\xA7V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a*\x1A\x81a#\xA7V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a)\xCDV[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a*GW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a*^W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a*qW_\x80\xFD[a*ya(\x02V[\x825\x82\x81\x11\x15a*\x87W_\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a*\x98W_\x80\xFD[a*\xA0a(%V[\x815a*\xAB\x81a#\xA7V[\x81R` \x82\x015a*\xBB\x81a#\xA7V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a*\xE4\x81a#\xA7V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a*\xFAW_\x80\xFD[a+\x06\x89\x82\x85\x01a(\x97V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+2\x86``\x85\x01a)!V[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a+HW_\x80\xFD[a+T\x87\x82\x86\x01a)\x87V[`\x80\x83\x01RP\x95\x94PPPPPV[_` \x80\x83\x85\x03\x12\x15a+tW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+\x8AW_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a+\x9AW_\x80\xFD[\x80Qa+\xA8a)\xA6\x82a)dV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a+\xC6W_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a, W\x80\x85\x8A\x03\x12\x15a+\xE1W_\x80\xFD[a+\xE9a'\xB6V[\x85Qa+\xF4\x81a#\xA7V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa,\r\x81a#\xA7V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a+\xCBV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\t0Wa\t0a,,V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1E\xE7`@\x83\x01\x84a$\xF0V[_\x84Qa,\xAB\x81\x84` \x89\x01a$\x1CV[\x84Q\x90\x83\x01\x90a,\xBF\x81\x83` \x89\x01a$\x1CV[\x84Q\x91\x01\x90a,\xD2\x81\x83` \x88\x01a$\x1CV[\x01\x95\x94PPPPPV[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x83Qa-\x13\x81`\x13\x85\x01` \x88\x01a$\x1CV[\x83Q\x90\x83\x01\x90a-*\x81`\x13\x84\x01` \x88\x01a$\x1CV[\x01`\x13\x01\x94\x93PPPPV[_a\x01@a-e\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra-\xA6`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra-\xDB\x81\x84\x01\x86a$>V[\x90P\x82\x81\x03a\x01 \x84\x01Ra!\xF4\x81\x85a$>V[\x81\x81\x03\x81\x81\x11\x15a\t0Wa\t0a,,V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a.\"Wa.\"a,,V[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a.YWa.Ya,,V[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a.~Wa.~a,,V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 g\x9F\xB5\x13\x82\x11\xDF\xBEQ\xC8\xFC^C+s7\x02\xAB\xD7\xDE\x02\x10\x8C\xC4{\xAC\xE8\xF6\xCCp\xD9}dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKDUTCHORDERREACTOR_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\xB0W_5`\xE0\x1C\x80c?b\x19.\x11a\0fW\x80c\x8D\xA5\xCB[\x11a\0LW\x80c\x8D\xA5\xCB[\x14a\x01\xB1W\x80c\x9B\xB3\"e\x14a\x01\xDCW\x80c\xF2\xFD\xE3\x8B\x14a\x02\x08W_\x80\xFD[\x80c?b\x19.\x14a\x01rW\x80ci\x99\xB3w\x14a\x01\x85W_\x80\xFD[\x80c\x12&\x1E\xE7\x11a\0\x96W\x80c\x12&\x1E\xE7\x14a\0\xE3W\x80c\x13\xFBr\xC7\x14a\x01@W\x80c-w\x13\x89\x14a\x01SW_\x80\xFD[\x80c\r3X\x84\x14a\0\xBBW\x80c\rz\x16\xC3\x14a\0\xD0W_\x80\xFD[6a\0\xB7W\0[_\x80\xFD[a\0\xCEa\0\xC96`\x04a\"\\V[a\x02'V[\0[a\0\xCEa\0\xDE6`\x04a#\x01V[a\x03\x98V[4\x80\x15a\0\xEEW_\x80\xFD[Pa\x01\x16\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xCEa\x01N6`\x04a#@V[a\x04\xF6V[4\x80\x15a\x01^W_\x80\xFD[Pa\0\xCEa\x01m6`\x04a#\xC8V[a\x06\xACV[a\0\xCEa\x01\x806`\x04a#\xEAV[a\x07\xB7V[4\x80\x15a\x01\x90W_\x80\xFD[P`\x01Ta\x01\x16\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xBCW_\x80\xFD[P_Ta\x01\x16\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xE7W_\x80\xFD[Pa\x01\xFBa\x01\xF66`\x04a#\xEAV[a\x08\xB9V[`@Qa\x017\x91\x90a%\xEAV[4\x80\x15a\x02\x13W_\x80\xFD[Pa\0\xCEa\x02\"6`\x04a#\xC8V[a\t6V[a\x02/a\n%V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02EW\x90PP\x90Pa\x02\xEC\x84a\n\x96V[\x81_\x81Q\x81\x10a\x02\xFEWa\x02\xFEa&)V[` \x02` \x01\x01\x81\x90RPa\x03\x12\x81a\x0B\rV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03R\x90\x84\x90\x87\x90\x87\x90`\x04\x01a&VV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03iW_\x80\xFD[PZ\xF1\x15\x80\x15a\x03{W=_\x80>=_\xFD[PPPPa\x03\x88\x81a\x0B\\V[Pa\x03\x93`\x01`\x02UV[PPPV[a\x03\xA0a\n%V[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\xBBWa\x03\xBBa%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04uW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xD9W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\xD3Wa\x04\xAE\x85\x85\x83\x81\x81\x10a\x04\x97Wa\x04\x97a&)V[\x90P` \x02\x81\x01\x90a\x04\xA9\x91\x90a'\x19V[a\n\x96V[\x82\x82\x81Q\x81\x10a\x04\xC0Wa\x04\xC0a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04zV[Pa\x04\xDD\x81a\x0B\rV[a\x04\xE6\x81a\x0B\\V[PPa\x04\xF2`\x01`\x02UV[PPV[a\x04\xFEa\n%V[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\x19Wa\x05\x19a%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xD3W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x057W\x90P[P\x90P_[\x82\x81\x10\x15a\x06\x1AWa\x05\xF5\x87\x87\x83\x81\x81\x10a\x04\x97Wa\x04\x97a&)V[\x82\x82\x81Q\x81\x10a\x06\x07Wa\x06\x07a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xD8V[Pa\x06$\x81a\x0B\rV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06d\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&VV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06{W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06\x8DW=_\x80>=_\xFD[PPPPa\x06\x9A\x81a\x0B\\V[PPa\x06\xA6`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x071W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\xBFa\n%V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xD5W\x90PP\x90Pa\x08|\x82a\n\x96V[\x81_\x81Q\x81\x10a\x08\x8EWa\x08\x8Ea&)V[` \x02` \x01\x01\x81\x90RPa\x08\xA2\x81a\x0B\rV[a\x08\xAB\x81a\x0B\\V[Pa\x08\xB6`\x01`\x02UV[PV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\t0\x82a\n\x96V[\x92\x91PPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\xB6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07(V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\n\x90W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07(V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\t0\x82a\x0C\xA7V[\x80Q_[\x81\x81\x10\x15a\x03\x93W_\x83\x82\x81Q\x81\x10a\x0B,Wa\x0B,a&)V[` \x02` \x01\x01Q\x90Pa\x0B?\x81a\r\xF2V[a\x0BI\x813a\x12\xCFV[a\x0BS\x813a\x13\xCCV[P`\x01\x01a\x0B\x11V[\x80Q_[\x81\x81\x10\x15a\x0C\x96W_\x83\x82\x81Q\x81\x10a\x0B{Wa\x0B{a&)V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0B\xF8W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xAFWa\x0B\xAFa&)V[` \x02` \x01\x01Q\x90Pa\x0B\xEF\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x17j\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\x90V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C@Wa\x0C@a&)V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\x84\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B`V[PG\x15a\x04\xF2Wa\x04\xF23Ga\x17\xB1V[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\r\x1F\x83\x80a'UV[\x81\x01\x90a\r,\x91\x90a*7V[\x90Pa\r7\x81a\x18GV[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\rl\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x191\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\r\x92\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x19\xFF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\r\xA7\x91\x90a'UV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\r\xE9\x83a\x1A\xE4V[\x90R\x93\x92PPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0E\x12WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x0Eh\x90\x85\x90`\x04\x01a%\xEAV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x82W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0E\xC7\x91\x90\x81\x01\x90a+cV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x0E\xDE\x82\x84a,YV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xF6Wa\x0E\xF6a%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0F\x14W\x90P[P\x90P_[\x83\x81\x10\x15a\x0F\xAEW\x85`@\x01Q\x81\x81Q\x81\x10a\x0F\x81Wa\x0F\x81a&)V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0F\x9BWa\x0F\x9Ba&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0FcV[P_\x80_[\x84\x81\x10\x15a\x12\xBEW_\x87\x82\x81Q\x81\x10a\x0F\xCEWa\x0F\xCEa&)V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x10\x89W\x88\x81\x81Q\x81\x10a\x0F\xF4Wa\x0F\xF4a&)V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\x81W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07(V[`\x01\x01a\x0F\xDAV[P_\x80[\x88\x81\x10\x15a\x11FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x10\xACWa\x10\xACa&)V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x11=W\x85\x15a\x11'W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x116\x90\x84a,YV[\x92P`\x01\x96P[P`\x01\x01a\x10\x8DV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x11\xBFW\x84\x15a\x11\xA6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11\xB8\x90\x82a,YV[\x90P`\x01\x93P[\x80_\x03a\x12\x13W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07(V[a\x12!\x81`\x05a'\x10a\x1DKV[\x82` \x01Q\x11\x15a\x12\x94W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07(V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x12\xA9Wa\x12\xA9a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x0F\xB3V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x13 W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xF2W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x13\x9C\x90\x84\x90\x86\x90`\x04\x01a,lV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x13\xB2W_\x80\xFD[PZ\xFA\x15\x80\x15a\x13\xC4W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x14\x8B\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x16\x14\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.\x87` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\x07`\x8D\x919`@Q` \x01a\x16\x81\x93\x92\x91\x90a,\x9AV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a.\xD9` \x83\x019`@Q` \x01a\x16\xD4\x92\x91\x90a,\xDCV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x17A\x96\x95\x94\x93\x92`\x04\x01a-6V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x17XW_\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xC4W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x17\x8FWa\x03\x93\x82\x82a\x17\xB1V[a\x03\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1D\x85V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x18\x07W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x18\x0CV[``\x91P[PP\x90P\x80a\x03\x93W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\x18\x8AW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\xB6W_[\x81`\x80\x01QQ\x81\x10\x15a\x04\xF2W\x81`\x80\x01Q\x81\x81Q\x81\x10a\x18\xC4Wa\x18\xC4a&)V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\x18\xE6Wa\x18\xE6a&)V[` \x02` \x01\x01Q` \x01Q\x14a\x19)W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x18\xA1V[a\x19h`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x19\xAAW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x19\xBF\x85` \x01Q\x86`@\x01Q\x86\x86a\x1EsV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A\x1DWa\x1A\x1Da%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1A\x85W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x1A;W\x90P[P\x91P_[\x81\x81\x10\x15a\x1A\xDBWa\x1A\xB6\x86\x82\x81Q\x81\x10a\x1A\xA7Wa\x1A\xA7a&)V[` \x02` \x01\x01Q\x86\x86a\x1E\xEFV[\x83\x82\x81Q\x81\x10a\x1A\xC8Wa\x1A\xC8a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1A\x8AV[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R_\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.\x87` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\x07`\x8D\x919`@Q` \x01a\x1C\x89\x93\x92\x91\x90a,\x9AV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1C\xAB\x83_\x01Qa\x1F\xBCV[\x83` \x01Q\x84`@\x01Q\x85``\x01Q_\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x1C\xDC\x89`\x80\x01Qa UV[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1D~W_\x80\xFD[P\x91\x02\x04\x90V[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1ElW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07(V[PPPPPV[_\x83\x85\x03a\x1E\x82WP\x83a\x1E\xE7V[\x82\x82\x11a\x1E\xBBW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1E\xC9WP\x82a\x1E\xE7V[B\x83\x10a\x1E\xD7WP\x83a\x1E\xE7V[a\x1E\xE4\x83\x83B\x88\x88a \xF0V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1FMW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1Fb\x85` \x01Q\x86`@\x01Q\x86\x86a\x1EsV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\x07`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x1D.\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a tWa ta%\xFCV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a \x9EW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a \xE1W_a \xCF\x85\x83\x81Q\x81\x10a \xC2Wa \xC2a&)V[` \x02` \x01\x01Qa!\nV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a \xA3V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_a \xFE\x86\x86\x86\x86\x86a!\x80V[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a.\x87`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x1D.\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x84\x84\x10a!\x8FWP\x80a!\x01V[_a!\x9A\x87\x86a-\xF0V[\x90P_a!\xA7\x88\x88a-\xF0V[\x90P_\x85\x85\x12\x15a!\xD8Wa!\xC8\x83\x83a!\xC1\x88\x8Aa.\x03V[\x91\x90a\x1DKV[a!\xD1\x90a.)V[\x90Pa!\xEAV[a!\xE7\x83\x83a!\xC1\x89\x89a.\x03V[\x90P[a!\xF4\x81\x87a._V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a\"\x11W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a\"'W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\">W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"UW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\"nW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"\x85W_\x80\xFD[a\"\x91\x87\x83\x88\x01a\"\x01V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\"\xA6W_\x80\xFD[Pa\"\xB3\x86\x82\x87\x01a\"\x17V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a\"\xD0W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xE7W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"UW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a#\x12W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#(W_\x80\xFD[a#4\x85\x82\x86\x01a\"\xC0V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a#SW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#jW_\x80\xFD[a#v\x88\x83\x89\x01a\"\xC0V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a#\x8EW_\x80\xFD[Pa#\x9B\x87\x82\x88\x01a\"\x17V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xB6W_\x80\xFD[_` \x82\x84\x03\x12\x15a#\xD8W_\x80\xFD[\x815a#\xE3\x81a#\xA7V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a#\xFAW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x10W_\x80\xFD[a\x1E\xE7\x84\x82\x85\x01a\"\x01V[_[\x83\x81\x10\x15a$6W\x81\x81\x01Q\x83\x82\x01R` \x01a$\x1EV[PP_\x91\x01RV[_\x81Q\x80\x84Ra$U\x81` \x86\x01` \x86\x01a$\x1CV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a$\xE5W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a$\x9AV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%ca\x01\xA0\x85\x01\x82a$>V[\x90P` \x83\x01Qa%\xA1` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra%\xB9\x82\x82a$\x87V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\xD3\x82\x82a$>V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[` \x81R_a#\xE3` \x83\x01\x84a$\xF0V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a&\xC9W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra&\xB7\x86\x83Qa$\xF0V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a&}V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'KW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a'\x88W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a'\xA2W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"UW_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x8FWa(\x8Fa%\xFCV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a(\xA6W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\xC0Wa(\xC0a%\xFCV[a(\xF1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(HV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)\x05W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a)1W_\x80\xFD[a)9a'\xB6V[\x90P\x815a)F\x81a#\xA7V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)}Wa)}a%\xFCV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a)\x96W_\x80\xFD[\x815` a)\xABa)\xA6\x83a)dV[a(HV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a)\xC9W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a*,W`\x80\x81\x89\x03\x12\x15a)\xE4W_\x80\xFD[a)\xECa'\xDFV[\x815a)\xF7\x81a#\xA7V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a*\x1A\x81a#\xA7V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a)\xCDV[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a*GW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a*^W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a*qW_\x80\xFD[a*ya(\x02V[\x825\x82\x81\x11\x15a*\x87W_\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a*\x98W_\x80\xFD[a*\xA0a(%V[\x815a*\xAB\x81a#\xA7V[\x81R` \x82\x015a*\xBB\x81a#\xA7V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a*\xE4\x81a#\xA7V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a*\xFAW_\x80\xFD[a+\x06\x89\x82\x85\x01a(\x97V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+2\x86``\x85\x01a)!V[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a+HW_\x80\xFD[a+T\x87\x82\x86\x01a)\x87V[`\x80\x83\x01RP\x95\x94PPPPPV[_` \x80\x83\x85\x03\x12\x15a+tW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+\x8AW_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a+\x9AW_\x80\xFD[\x80Qa+\xA8a)\xA6\x82a)dV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a+\xC6W_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a, W\x80\x85\x8A\x03\x12\x15a+\xE1W_\x80\xFD[a+\xE9a'\xB6V[\x85Qa+\xF4\x81a#\xA7V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa,\r\x81a#\xA7V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a+\xCBV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\t0Wa\t0a,,V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1E\xE7`@\x83\x01\x84a$\xF0V[_\x84Qa,\xAB\x81\x84` \x89\x01a$\x1CV[\x84Q\x90\x83\x01\x90a,\xBF\x81\x83` \x89\x01a$\x1CV[\x84Q\x91\x01\x90a,\xD2\x81\x83` \x88\x01a$\x1CV[\x01\x95\x94PPPPPV[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x83Qa-\x13\x81`\x13\x85\x01` \x88\x01a$\x1CV[\x83Q\x90\x83\x01\x90a-*\x81`\x13\x84\x01` \x88\x01a$\x1CV[\x01`\x13\x01\x94\x93PPPPV[_a\x01@a-e\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra-\xA6`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra-\xDB\x81\x84\x01\x86a$>V[\x90P\x82\x81\x03a\x01 \x84\x01Ra!\xF4\x81\x85a$>V[\x81\x81\x03\x81\x81\x11\x15a\t0Wa\t0a,,V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a.\"Wa.\"a,,V[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a.YWa.Ya,,V[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a.~Wa.~a,,V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 g\x9F\xB5\x13\x82\x11\xDF\xBEQ\xC8\xFC^C+s7\x02\xAB\xD7\xDE\x02\x10\x8C\xC4{\xAC\xE8\xF6\xCCp\xD9}dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKDUTCHORDERREACTOR_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockDutchOrderReactor(::ethers::contract::Contract); - impl ::core::clone::Clone for MockDutchOrderReactor { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockDutchOrderReactor { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockDutchOrderReactor { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockDutchOrderReactor { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockDutchOrderReactor)) - .field(&self.address()) - .finish() - } - } - impl MockDutchOrderReactor { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKDUTCHORDERREACTOR_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKDUTCHORDERREACTOR_ABI.clone(), - MOCKDUTCHORDERREACTOR_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `execute` (0x3f62192e) function - pub fn execute( - &self, - order: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 98, 25, 46], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x0d7a16c3) function - pub fn execute_batch( - &self, - orders: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 122, 22, 195], orders) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatchWithCallback` (0x13fb72c7) function - pub fn execute_batch_with_callback( - &self, - orders: ::std::vec::Vec, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([19, 251, 114, 199], (orders, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeWithCallback` (0x0d335884) function - pub fn execute_with_callback( - &self, - order: SignedOrder, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 51, 88, 132], (order, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `feeController` (0x6999b377) function - pub fn fee_controller( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([105, 153, 179, 119], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit2` (0x12261ee7) function - pub fn permit_2( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([18, 38, 30, 231], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `resolveOrder` (0x9bb32265) function - pub fn resolve_order( - &self, - order: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([155, 179, 34, 101], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setProtocolFeeController` (0x2d771389) function - pub fn set_protocol_fee_controller( - &self, - new_fee_controller: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([45, 119, 19, 137], new_fee_controller) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Fill` event - pub fn fill_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, FillFilter> { - self.0.event() - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - ///Gets the contract's `ProtocolFeeControllerSet` event - pub fn protocol_fee_controller_set_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ProtocolFeeControllerSetFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - MockDutchOrderReactorEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for MockDutchOrderReactor { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `DeadlineBeforeEndTime` with signature `DeadlineBeforeEndTime()` and selector `0x773a6187` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DeadlineBeforeEndTime", abi = "DeadlineBeforeEndTime()")] - pub struct DeadlineBeforeEndTime; - ///Custom Error type `DuplicateFeeOutput` with signature `DuplicateFeeOutput(address)` and selector `0xfff08303` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DuplicateFeeOutput", abi = "DuplicateFeeOutput(address)")] - pub struct DuplicateFeeOutput { - pub duplicate_token: ::ethers::core::types::Address, - } - ///Custom Error type `EndTimeBeforeStartTime` with signature `EndTimeBeforeStartTime()` and selector `0x43133453` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "EndTimeBeforeStartTime", abi = "EndTimeBeforeStartTime()")] - pub struct EndTimeBeforeStartTime; - ///Custom Error type `FeeTooLarge` with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "FeeTooLarge", abi = "FeeTooLarge(address,uint256,address)")] - pub struct FeeTooLarge { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub recipient: ::ethers::core::types::Address, - } - ///Custom Error type `IncorrectAmounts` with signature `IncorrectAmounts()` and selector `0x7c1f8113` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "IncorrectAmounts", abi = "IncorrectAmounts()")] - pub struct IncorrectAmounts; - ///Custom Error type `InputAndOutputDecay` with signature `InputAndOutputDecay()` and selector `0xd303758b` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputDecay", abi = "InputAndOutputDecay()")] - pub struct InputAndOutputDecay; - ///Custom Error type `InputAndOutputFees` with signature `InputAndOutputFees()` and selector `0xedc7e2e4` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputFees", abi = "InputAndOutputFees()")] - pub struct InputAndOutputFees; - ///Custom Error type `InvalidFeeToken` with signature `InvalidFeeToken(address)` and selector `0xeddf07f5` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidFeeToken", abi = "InvalidFeeToken(address)")] - pub struct InvalidFeeToken { - pub fee_token: ::ethers::core::types::Address, - } - ///Custom Error type `InvalidReactor` with signature `InvalidReactor()` and selector `0x4ddf4a64` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidReactor", abi = "InvalidReactor()")] - pub struct InvalidReactor; - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockDutchOrderReactorErrors { - DeadlineBeforeEndTime(DeadlineBeforeEndTime), - DuplicateFeeOutput(DuplicateFeeOutput), - EndTimeBeforeStartTime(EndTimeBeforeStartTime), - FeeTooLarge(FeeTooLarge), - IncorrectAmounts(IncorrectAmounts), - InputAndOutputDecay(InputAndOutputDecay), - InputAndOutputFees(InputAndOutputFees), - InvalidFeeToken(InvalidFeeToken), - InvalidReactor(InvalidReactor), - NativeTransferFailed(NativeTransferFailed), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for MockDutchOrderReactorErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DeadlineBeforeEndTime(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DuplicateFeeOutput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::EndTimeBeforeStartTime(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeTooLarge(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IncorrectAmounts(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputDecay(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputFees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidFeeToken(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidReactor(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NativeTransferFailed(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockDutchOrderReactorErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::DeadlineBeforeEndTime(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::DuplicateFeeOutput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::EndTimeBeforeStartTime(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeTooLarge(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IncorrectAmounts(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputDecay(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputFees(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidFeeToken(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidReactor(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NativeTransferFailed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for MockDutchOrderReactorErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for MockDutchOrderReactorErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DeadlineBeforeEndTime(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::DuplicateFeeOutput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::EndTimeBeforeStartTime(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeTooLarge(element) => ::core::fmt::Display::fmt(element, f), - Self::IncorrectAmounts(element) => ::core::fmt::Display::fmt(element, f), - Self::InputAndOutputDecay(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InputAndOutputFees(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidFeeToken(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidReactor(element) => ::core::fmt::Display::fmt(element, f), - Self::NativeTransferFailed(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for MockDutchOrderReactorErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorErrors { - fn from(value: DeadlineBeforeEndTime) -> Self { - Self::DeadlineBeforeEndTime(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorErrors { - fn from(value: DuplicateFeeOutput) -> Self { - Self::DuplicateFeeOutput(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorErrors { - fn from(value: EndTimeBeforeStartTime) -> Self { - Self::EndTimeBeforeStartTime(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorErrors { - fn from(value: FeeTooLarge) -> Self { - Self::FeeTooLarge(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorErrors { - fn from(value: IncorrectAmounts) -> Self { - Self::IncorrectAmounts(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorErrors { - fn from(value: InputAndOutputDecay) -> Self { - Self::InputAndOutputDecay(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorErrors { - fn from(value: InputAndOutputFees) -> Self { - Self::InputAndOutputFees(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorErrors { - fn from(value: InvalidFeeToken) -> Self { - Self::InvalidFeeToken(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorErrors { - fn from(value: InvalidReactor) -> Self { - Self::InvalidReactor(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorErrors { - fn from(value: NativeTransferFailed) -> Self { - Self::NativeTransferFailed(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Fill", abi = "Fill(bytes32,address,address,uint256)")] - pub struct FillFilter { - #[ethevent(indexed)] - pub order_hash: [u8; 32], - #[ethevent(indexed)] - pub filler: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub swapper: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "ProtocolFeeControllerSet", - abi = "ProtocolFeeControllerSet(address,address)" - )] - pub struct ProtocolFeeControllerSetFilter { - pub old_fee_controller: ::ethers::core::types::Address, - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockDutchOrderReactorEvents { - FillFilter(FillFilter), - OwnershipTransferredFilter(OwnershipTransferredFilter), - ProtocolFeeControllerSetFilter(ProtocolFeeControllerSetFilter), - } - impl ::ethers::contract::EthLogDecode for MockDutchOrderReactorEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = FillFilter::decode_log(log) { - return Ok(MockDutchOrderReactorEvents::FillFilter(decoded)); - } - if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) { - return Ok( - MockDutchOrderReactorEvents::OwnershipTransferredFilter(decoded), - ); - } - if let Ok(decoded) = ProtocolFeeControllerSetFilter::decode_log(log) { - return Ok( - MockDutchOrderReactorEvents::ProtocolFeeControllerSetFilter(decoded), - ); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for MockDutchOrderReactorEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FillFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ProtocolFeeControllerSetFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for MockDutchOrderReactorEvents { - fn from(value: FillFilter) -> Self { - Self::FillFilter(value) - } - } - impl ::core::convert::From - for MockDutchOrderReactorEvents { - fn from(value: OwnershipTransferredFilter) -> Self { - Self::OwnershipTransferredFilter(value) - } - } - impl ::core::convert::From - for MockDutchOrderReactorEvents { - fn from(value: ProtocolFeeControllerSetFilter) -> Self { - Self::ProtocolFeeControllerSetFilter(value) - } - } - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes))` and selector `0x3f62192e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes))")] - pub struct ExecuteCall { - pub order: SignedOrder, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((bytes,bytes)[])")] - pub struct ExecuteBatchCall { - pub orders: ::std::vec::Vec, - } - ///Container type for all input parameters for the `executeBatchWithCallback` function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeBatchWithCallback", - abi = "executeBatchWithCallback((bytes,bytes)[],bytes)" - )] - pub struct ExecuteBatchWithCallbackCall { - pub orders: ::std::vec::Vec, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `executeWithCallback` function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeWithCallback", - abi = "executeWithCallback((bytes,bytes),bytes)" - )] - pub struct ExecuteWithCallbackCall { - pub order: SignedOrder, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeController", abi = "feeController()")] - pub struct FeeControllerCall; - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "permit2", abi = "permit2()")] - pub struct Permit2Call; - ///Container type for all input parameters for the `resolveOrder` function with signature `resolveOrder((bytes,bytes))` and selector `0x9bb32265` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "resolveOrder", abi = "resolveOrder((bytes,bytes))")] - pub struct ResolveOrderCall { - pub order: SignedOrder, - } - ///Container type for all input parameters for the `setProtocolFeeController` function with signature `setProtocolFeeController(address)` and selector `0x2d771389` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "setProtocolFeeController", - abi = "setProtocolFeeController(address)" - )] - pub struct SetProtocolFeeControllerCall { - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockDutchOrderReactorCalls { - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ExecuteBatchWithCallback(ExecuteBatchWithCallbackCall), - ExecuteWithCallback(ExecuteWithCallbackCall), - FeeController(FeeControllerCall), - Owner(OwnerCall), - Permit2(Permit2Call), - ResolveOrder(ResolveOrderCall), - SetProtocolFeeController(SetProtocolFeeControllerCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for MockDutchOrderReactorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatchWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Permit2(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ResolveOrder(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetProtocolFeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockDutchOrderReactorCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteBatchWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Permit2(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ResolveOrder(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetProtocolFeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockDutchOrderReactorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatchWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ExecuteWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeController(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit2(element) => ::core::fmt::Display::fmt(element, f), - Self::ResolveOrder(element) => ::core::fmt::Display::fmt(element, f), - Self::SetProtocolFeeController(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockDutchOrderReactorCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From - for MockDutchOrderReactorCalls { - fn from(value: ExecuteBatchWithCallbackCall) -> Self { - Self::ExecuteBatchWithCallback(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorCalls { - fn from(value: ExecuteWithCallbackCall) -> Self { - Self::ExecuteWithCallback(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorCalls { - fn from(value: FeeControllerCall) -> Self { - Self::FeeController(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorCalls { - fn from(value: Permit2Call) -> Self { - Self::Permit2(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorCalls { - fn from(value: ResolveOrderCall) -> Self { - Self::ResolveOrder(value) - } - } - impl ::core::convert::From - for MockDutchOrderReactorCalls { - fn from(value: SetProtocolFeeControllerCall) -> Self { - Self::SetProtocolFeeController(value) - } - } - impl ::core::convert::From for MockDutchOrderReactorCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeControllerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct Permit2Return(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `resolveOrder` function with signature `resolveOrder((bytes,bytes))` and selector `0x9bb32265` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ResolveOrderReturn { - pub resolved_order: ResolvedOrder, - } -} diff --git a/crates/bindings-uniswapx/src/mock_erc20.rs b/crates/bindings-uniswapx/src/mock_erc20.rs deleted file mode 100644 index 4f08a74..0000000 --- a/crates/bindings-uniswapx/src/mock_erc20.rs +++ /dev/null @@ -1,1443 +0,0 @@ -pub use mock_erc20::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_erc20 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("allowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("allowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("decimals"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("decimals"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("initialize"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("initialize"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("name_"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("symbol_"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("decimals_"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("name"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("name"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("nonces"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("nonces"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("deadline"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("v"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("r"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("s"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("symbol"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("symbol"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("totalSupply"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("totalSupply"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKERC20_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x11\x83\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0\xDAW_5`\xE0\x1C\x80c6D\xE5\x15\x11a\0\x88W\x80c\x95\xD8\x9BA\x11a\0cW\x80c\x95\xD8\x9BA\x14a\x01\xCAW\x80c\xA9\x05\x9C\xBB\x14a\x01\xD2W\x80c\xD5\x05\xAC\xCF\x14a\x01\xE5W\x80c\xDDb\xED>\x14a\x01\xF8W_\x80\xFD[\x80c6D\xE5\x15\x14a\x01nW\x80cp\xA0\x821\x14a\x01vW\x80c~\xCE\xBE\0\x14a\x01\xABW_\x80\xFD[\x80c\x18\x16\r\xDD\x11a\0\xB8W\x80c\x18\x16\r\xDD\x14a\x014W\x80c#\xB8r\xDD\x14a\x01FW\x80c1<\xE5g\x14a\x01YW_\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xDEW\x80c\t^\xA7\xB3\x14a\0\xFCW\x80c\x16$\xF6\xC6\x14a\x01\x1FW[_\x80\xFD[a\0\xE6a\x02=V[`@Qa\0\xF3\x91\x90a\x0B\x85V[`@Q\x80\x91\x03\x90\xF3[a\x01\x0Fa\x01\n6`\x04a\x0C\x17V[a\x02\xCCV[`@Q\x90\x15\x15\x81R` \x01a\0\xF3V[a\x012a\x01-6`\x04a\r#V[a\x03EV[\0[`\x03T[`@Q\x90\x81R` \x01a\0\xF3V[a\x01\x0Fa\x01T6`\x04a\r\x92V[a\x04CV[`\x02T`@Q`\xFF\x90\x91\x16\x81R` \x01a\0\xF3V[a\x018a\x05\xB2V[a\x018a\x01\x846`\x04a\r\xCBV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x04` R`@\x90 T\x90V[a\x018a\x01\xB96`\x04a\r\xCBV[`\x08` R_\x90\x81R`@\x90 T\x81V[a\0\xE6a\x05\xD7V[a\x01\x0Fa\x01\xE06`\x04a\x0C\x17V[a\x05\xE6V[a\x012a\x01\xF36`\x04a\r\xE4V[a\x06\x94V[a\x018a\x02\x066`\x04a\x0EIV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[``_\x80Ta\x02K\x90a\x0EzV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02w\x90a\x0EzV[\x80\x15a\x02\xC2W\x80`\x1F\x10a\x02\x99Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xC2V[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xA5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[3_\x81\x81R`\x05` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x033\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[`\tT`\xFF\x16\x15a\x03\xB7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FALREADY_INITIALIZED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_a\x03\xC2\x84\x82a\x0F\x17V[P`\x01a\x03\xCF\x83\x82a\x0F\x17V[P`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\xFF\x83\x16\x17\x90Ua\x04\x05a\t\xD4V[`\x06Ua\x04\x10a\t\xECV[`\x07UPP`\t\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x04\xD5Wa\x04\xA4\x81\x84a\n\x8DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16_\x90\x81R`\x04` R`@\x90 Ta\x05\x04\x90\x84a\n\x8DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16_\x90\x81R`\x04` R`@\x80\x82 \x93\x90\x93U\x90\x86\x16\x81R Ta\x05?\x90\x84a\x0B\tV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x86\x16_\x81\x81R`\x04` R`@\x90\x81\x90 \x93\x90\x93U\x91Q\x90\x87\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x05\x9F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[_`\x06Ta\x05\xBEa\t\xD4V[\x14a\x05\xD0Wa\x05\xCBa\t\xECV[\x90P\x90V[P`\x07T\x90V[```\x01\x80Ta\x02K\x90a\x0EzV[3_\x90\x81R`\x04` R`@\x81 Ta\x05\xFF\x90\x83a\n\x8DV[3_\x90\x81R`\x04` R`@\x80\x82 \x92\x90\x92Us\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x81R Ta\x067\x90\x83a\x0B\tV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16_\x81\x81R`\x04` R`@\x90\x81\x90 \x92\x90\x92U\x90Q3\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x033\x90\x86\x81R` \x01\x90V[B\x84\x10\x15a\x06\xFEW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xAEV[_`\x01a\x07\ta\x05\xB2V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8A\x16_\x90\x81R`\x08` R`@\x81 \x80T\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x92\x8D\x92\x8D\x92\x8D\x92\x90\x91\x90a\x07c\x83a\x10`V[\x90\x91UP`@\x80Q` \x81\x01\x96\x90\x96Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x85\x16\x90\x86\x01R\x92\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x81\x01\x88\x90R`\xE0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `@Q` \x01a\x08\x04\x92\x91\x90\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x02\x81\x01\x92\x90\x92R`\"\x82\x01R`B\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 _\x84R\x90\x83\x01\x80\x83RR`\xFF\x87\x16\x90\x82\x01R``\x81\x01\x85\x90R`\x80\x81\x01\x84\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x08}W=_\x80>=_\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\x08\xF8WP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\t^W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xAEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x81\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x8B\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x8A\x90UQ\x89\x81R\x91\x92\x8B\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPPV[_a\x0B\x81\x80a\t\xE5c\xFF\xFF\xFF\xFF\x82\x16V[\x92PPP\x90V[_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F_`@Qa\n\x1C\x91\x90a\x10\x97V[`@Q\x80\x91\x03\x90 \x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6a\nMa\t\xD4V[`@\x80Q` \x81\x01\x95\x90\x95R\x84\x01\x92\x90\x92R``\x83\x01R`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[_\x81\x83\x10\x15a\n\xF8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FERC20: subtraction underflow\0\0\0\0`D\x82\x01R`d\x01a\x03\xAEV[a\x0B\x02\x82\x84a\x11'V[\x93\x92PPPV[_\x80a\x0B\x15\x83\x85a\x11:V[\x90P\x83\x81\x10\x15a\x0B\x02W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FERC20: addition overflow\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xAEV[F\x90V[_` \x80\x83R\x83Q\x80` \x85\x01R_[\x81\x81\x10\x15a\x0B\xB1W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0B\x95V[P_`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x12W_\x80\xFD[\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x0C(W_\x80\xFD[a\x0C1\x83a\x0B\xEFV[\x94` \x93\x90\x93\x015\x93PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0C{W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x96Wa\x0C\x96a\x0C?V[`@Q`\x1F\x83\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0C\xDCWa\x0C\xDCa\x0C?V[\x81`@R\x83\x81R\x86` \x85\x88\x01\x01\x11\x15a\x0C\xF4W_\x80\xFD[\x83` \x87\x01` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[\x805`\xFF\x81\x16\x81\x14a\x0C\x12W_\x80\xFD[_\x80_``\x84\x86\x03\x12\x15a\r5W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\rLW_\x80\xFD[a\rX\x87\x83\x88\x01a\x0ClV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\rmW_\x80\xFD[Pa\rz\x86\x82\x87\x01a\x0ClV[\x92PPa\r\x89`@\x85\x01a\r\x13V[\x90P\x92P\x92P\x92V[_\x80_``\x84\x86\x03\x12\x15a\r\xA4W_\x80\xFD[a\r\xAD\x84a\x0B\xEFV[\x92Pa\r\xBB` \x85\x01a\x0B\xEFV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\r\xDBW_\x80\xFD[a\x0B\x02\x82a\x0B\xEFV[_\x80_\x80_\x80_`\xE0\x88\x8A\x03\x12\x15a\r\xFAW_\x80\xFD[a\x0E\x03\x88a\x0B\xEFV[\x96Pa\x0E\x11` \x89\x01a\x0B\xEFV[\x95P`@\x88\x015\x94P``\x88\x015\x93Pa\x0E-`\x80\x89\x01a\r\x13V[\x92P`\xA0\x88\x015\x91P`\xC0\x88\x015\x90P\x92\x95\x98\x91\x94\x97P\x92\x95PV[_\x80`@\x83\x85\x03\x12\x15a\x0EZW_\x80\xFD[a\x0Ec\x83a\x0B\xEFV[\x91Pa\x0Eq` \x84\x01a\x0B\xEFV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0E\x8EW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0E\xC5W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x0F\x12W\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\x0E\xF0WP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x0F\x0FW_\x81U`\x01\x01a\x0E\xFCV[PP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0F1Wa\x0F1a\x0C?V[a\x0FE\x81a\x0F?\x84Ta\x0EzV[\x84a\x0E\xCBV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x0F\x97W_\x84\x15a\x0FaWP\x85\x83\x01Q[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x10+V[_\x85\x81R` \x81 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x86\x16\x91[\x82\x81\x10\x15a\x0F\xE3W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x0F\xC4V[P\x85\x82\x10\x15a\x10\x1FW\x87\x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PP`\x01\x84`\x01\x1B\x01\x85U[PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x10\x90Wa\x10\x90a\x103V[P`\x01\x01\x90V[_\x80\x83Ta\x10\xA4\x81a\x0EzV[`\x01\x82\x81\x16\x80\x15a\x10\xBCW`\x01\x81\x14a\x10\xEFWa\x11\x1BV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pa\x11\x1BV[\x87_R` \x80_ _[\x85\x81\x10\x15a\x11\x12W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a\x10\xF9V[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[\x81\x81\x03\x81\x81\x11\x15a\x03?Wa\x03?a\x103V[\x80\x82\x01\x80\x82\x11\x15a\x03?Wa\x03?a\x103V\xFE\xA2dipfsX\"\x12 \xC8\xE3\xEAI\x81\xE0'F\xDF\xA5\xB3`\xB1\x0Fb\x02\xD7\xA9\xBC\xCB\xDB\x12\x83\xDE\xA5\xBD\x9A\xD5c\x0E\x8B\xF1dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKERC20_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0\xDAW_5`\xE0\x1C\x80c6D\xE5\x15\x11a\0\x88W\x80c\x95\xD8\x9BA\x11a\0cW\x80c\x95\xD8\x9BA\x14a\x01\xCAW\x80c\xA9\x05\x9C\xBB\x14a\x01\xD2W\x80c\xD5\x05\xAC\xCF\x14a\x01\xE5W\x80c\xDDb\xED>\x14a\x01\xF8W_\x80\xFD[\x80c6D\xE5\x15\x14a\x01nW\x80cp\xA0\x821\x14a\x01vW\x80c~\xCE\xBE\0\x14a\x01\xABW_\x80\xFD[\x80c\x18\x16\r\xDD\x11a\0\xB8W\x80c\x18\x16\r\xDD\x14a\x014W\x80c#\xB8r\xDD\x14a\x01FW\x80c1<\xE5g\x14a\x01YW_\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xDEW\x80c\t^\xA7\xB3\x14a\0\xFCW\x80c\x16$\xF6\xC6\x14a\x01\x1FW[_\x80\xFD[a\0\xE6a\x02=V[`@Qa\0\xF3\x91\x90a\x0B\x85V[`@Q\x80\x91\x03\x90\xF3[a\x01\x0Fa\x01\n6`\x04a\x0C\x17V[a\x02\xCCV[`@Q\x90\x15\x15\x81R` \x01a\0\xF3V[a\x012a\x01-6`\x04a\r#V[a\x03EV[\0[`\x03T[`@Q\x90\x81R` \x01a\0\xF3V[a\x01\x0Fa\x01T6`\x04a\r\x92V[a\x04CV[`\x02T`@Q`\xFF\x90\x91\x16\x81R` \x01a\0\xF3V[a\x018a\x05\xB2V[a\x018a\x01\x846`\x04a\r\xCBV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x04` R`@\x90 T\x90V[a\x018a\x01\xB96`\x04a\r\xCBV[`\x08` R_\x90\x81R`@\x90 T\x81V[a\0\xE6a\x05\xD7V[a\x01\x0Fa\x01\xE06`\x04a\x0C\x17V[a\x05\xE6V[a\x012a\x01\xF36`\x04a\r\xE4V[a\x06\x94V[a\x018a\x02\x066`\x04a\x0EIV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[``_\x80Ta\x02K\x90a\x0EzV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02w\x90a\x0EzV[\x80\x15a\x02\xC2W\x80`\x1F\x10a\x02\x99Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xC2V[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xA5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[3_\x81\x81R`\x05` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x033\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[`\tT`\xFF\x16\x15a\x03\xB7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FALREADY_INITIALIZED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_a\x03\xC2\x84\x82a\x0F\x17V[P`\x01a\x03\xCF\x83\x82a\x0F\x17V[P`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\xFF\x83\x16\x17\x90Ua\x04\x05a\t\xD4V[`\x06Ua\x04\x10a\t\xECV[`\x07UPP`\t\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x04\xD5Wa\x04\xA4\x81\x84a\n\x8DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16_\x90\x81R`\x04` R`@\x90 Ta\x05\x04\x90\x84a\n\x8DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16_\x90\x81R`\x04` R`@\x80\x82 \x93\x90\x93U\x90\x86\x16\x81R Ta\x05?\x90\x84a\x0B\tV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x86\x16_\x81\x81R`\x04` R`@\x90\x81\x90 \x93\x90\x93U\x91Q\x90\x87\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x05\x9F\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[_`\x06Ta\x05\xBEa\t\xD4V[\x14a\x05\xD0Wa\x05\xCBa\t\xECV[\x90P\x90V[P`\x07T\x90V[```\x01\x80Ta\x02K\x90a\x0EzV[3_\x90\x81R`\x04` R`@\x81 Ta\x05\xFF\x90\x83a\n\x8DV[3_\x90\x81R`\x04` R`@\x80\x82 \x92\x90\x92Us\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x81R Ta\x067\x90\x83a\x0B\tV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16_\x81\x81R`\x04` R`@\x90\x81\x90 \x92\x90\x92U\x90Q3\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x033\x90\x86\x81R` \x01\x90V[B\x84\x10\x15a\x06\xFEW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xAEV[_`\x01a\x07\ta\x05\xB2V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8A\x16_\x90\x81R`\x08` R`@\x81 \x80T\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x92\x8D\x92\x8D\x92\x8D\x92\x90\x91\x90a\x07c\x83a\x10`V[\x90\x91UP`@\x80Q` \x81\x01\x96\x90\x96Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x85\x16\x90\x86\x01R\x92\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x81\x01\x88\x90R`\xE0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `@Q` \x01a\x08\x04\x92\x91\x90\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x02\x81\x01\x92\x90\x92R`\"\x82\x01R`B\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 _\x84R\x90\x83\x01\x80\x83RR`\xFF\x87\x16\x90\x82\x01R``\x81\x01\x85\x90R`\x80\x81\x01\x84\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x08}W=_\x80>=_\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\x08\xF8WP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\t^W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xAEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x81\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x8B\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x8A\x90UQ\x89\x81R\x91\x92\x8B\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPPV[_a\x0B\x81\x80a\t\xE5c\xFF\xFF\xFF\xFF\x82\x16V[\x92PPP\x90V[_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F_`@Qa\n\x1C\x91\x90a\x10\x97V[`@Q\x80\x91\x03\x90 \x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6a\nMa\t\xD4V[`@\x80Q` \x81\x01\x95\x90\x95R\x84\x01\x92\x90\x92R``\x83\x01R`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[_\x81\x83\x10\x15a\n\xF8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FERC20: subtraction underflow\0\0\0\0`D\x82\x01R`d\x01a\x03\xAEV[a\x0B\x02\x82\x84a\x11'V[\x93\x92PPPV[_\x80a\x0B\x15\x83\x85a\x11:V[\x90P\x83\x81\x10\x15a\x0B\x02W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FERC20: addition overflow\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xAEV[F\x90V[_` \x80\x83R\x83Q\x80` \x85\x01R_[\x81\x81\x10\x15a\x0B\xB1W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0B\x95V[P_`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x12W_\x80\xFD[\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x0C(W_\x80\xFD[a\x0C1\x83a\x0B\xEFV[\x94` \x93\x90\x93\x015\x93PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0C{W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\x96Wa\x0C\x96a\x0C?V[`@Q`\x1F\x83\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0C\xDCWa\x0C\xDCa\x0C?V[\x81`@R\x83\x81R\x86` \x85\x88\x01\x01\x11\x15a\x0C\xF4W_\x80\xFD[\x83` \x87\x01` \x83\x017_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[\x805`\xFF\x81\x16\x81\x14a\x0C\x12W_\x80\xFD[_\x80_``\x84\x86\x03\x12\x15a\r5W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\rLW_\x80\xFD[a\rX\x87\x83\x88\x01a\x0ClV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\rmW_\x80\xFD[Pa\rz\x86\x82\x87\x01a\x0ClV[\x92PPa\r\x89`@\x85\x01a\r\x13V[\x90P\x92P\x92P\x92V[_\x80_``\x84\x86\x03\x12\x15a\r\xA4W_\x80\xFD[a\r\xAD\x84a\x0B\xEFV[\x92Pa\r\xBB` \x85\x01a\x0B\xEFV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\r\xDBW_\x80\xFD[a\x0B\x02\x82a\x0B\xEFV[_\x80_\x80_\x80_`\xE0\x88\x8A\x03\x12\x15a\r\xFAW_\x80\xFD[a\x0E\x03\x88a\x0B\xEFV[\x96Pa\x0E\x11` \x89\x01a\x0B\xEFV[\x95P`@\x88\x015\x94P``\x88\x015\x93Pa\x0E-`\x80\x89\x01a\r\x13V[\x92P`\xA0\x88\x015\x91P`\xC0\x88\x015\x90P\x92\x95\x98\x91\x94\x97P\x92\x95PV[_\x80`@\x83\x85\x03\x12\x15a\x0EZW_\x80\xFD[a\x0Ec\x83a\x0B\xEFV[\x91Pa\x0Eq` \x84\x01a\x0B\xEFV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0E\x8EW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0E\xC5W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x0F\x12W\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15a\x0E\xF0WP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x0F\x0FW_\x81U`\x01\x01a\x0E\xFCV[PP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0F1Wa\x0F1a\x0C?V[a\x0FE\x81a\x0F?\x84Ta\x0EzV[\x84a\x0E\xCBV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x0F\x97W_\x84\x15a\x0FaWP\x85\x83\x01Q[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x10+V[_\x85\x81R` \x81 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x86\x16\x91[\x82\x81\x10\x15a\x0F\xE3W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x0F\xC4V[P\x85\x82\x10\x15a\x10\x1FW\x87\x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PP`\x01\x84`\x01\x1B\x01\x85U[PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x10\x90Wa\x10\x90a\x103V[P`\x01\x01\x90V[_\x80\x83Ta\x10\xA4\x81a\x0EzV[`\x01\x82\x81\x16\x80\x15a\x10\xBCW`\x01\x81\x14a\x10\xEFWa\x11\x1BV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pa\x11\x1BV[\x87_R` \x80_ _[\x85\x81\x10\x15a\x11\x12W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a\x10\xF9V[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[\x81\x81\x03\x81\x81\x11\x15a\x03?Wa\x03?a\x103V[\x80\x82\x01\x80\x82\x11\x15a\x03?Wa\x03?a\x103V\xFE\xA2dipfsX\"\x12 \xC8\xE3\xEAI\x81\xE0'F\xDF\xA5\xB3`\xB1\x0Fb\x02\xD7\xA9\xBC\xCB\xDB\x12\x83\xDE\xA5\xBD\x9A\xD5c\x0E\x8B\xF1dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKERC20_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockERC20(::ethers::contract::Contract); - impl ::core::clone::Clone for MockERC20 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockERC20 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockERC20 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockERC20 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockERC20)).field(&self.address()).finish() - } - } - impl MockERC20 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKERC20_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKERC20_ABI.clone(), - MOCKERC20_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function - pub fn domain_separator( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([54, 68, 229, 21], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `allowance` (0xdd62ed3e) function - pub fn allowance( - &self, - owner: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([221, 98, 237, 62], (owner, spender)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `approve` (0x095ea7b3) function - pub fn approve( - &self, - spender: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (spender, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) function - pub fn balance_of( - &self, - owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 160, 130, 49], owner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `decimals` (0x313ce567) function - pub fn decimals(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([49, 60, 229, 103], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `initialize` (0x1624f6c6) function - pub fn initialize( - &self, - name: ::std::string::String, - symbol: ::std::string::String, - decimals: u8, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([22, 36, 246, 198], (name, symbol, decimals)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `name` (0x06fdde03) function - pub fn name( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([6, 253, 222, 3], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `nonces` (0x7ecebe00) function - pub fn nonces( - &self, - p0: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([126, 206, 190, 0], p0) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit` (0xd505accf) function - pub fn permit( - &self, - owner: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - value: ::ethers::core::types::U256, - deadline: ::ethers::core::types::U256, - v: u8, - r: [u8; 32], - s: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [213, 5, 172, 207], - (owner, spender, value, deadline, v, r, s), - ) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `symbol` (0x95d89b41) function - pub fn symbol( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([149, 216, 155, 65], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `totalSupply` (0x18160ddd) function - pub fn total_supply( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([24, 22, 13, 221], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transfer` (0xa9059cbb) function - pub fn transfer( - &self, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([169, 5, 156, 187], (to, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x23b872dd) function - pub fn transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, amount)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - MockERC20Events, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for MockERC20 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockERC20Events { - ApprovalFilter(ApprovalFilter), - TransferFilter(TransferFilter), - } - impl ::ethers::contract::EthLogDecode for MockERC20Events { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(MockERC20Events::ApprovalFilter(decoded)); - } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(MockERC20Events::TransferFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for MockERC20Events { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockERC20Events { - fn from(value: ApprovalFilter) -> Self { - Self::ApprovalFilter(value) - } - } - impl ::core::convert::From for MockERC20Events { - fn from(value: TransferFilter) -> Self { - Self::TransferFilter(value) - } - } - ///Container type for all input parameters for the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] - pub struct DomainSeparatorCall; - ///Container type for all input parameters for the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "allowance", abi = "allowance(address,address)")] - pub struct AllowanceCall { - pub owner: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `decimals` function with signature `decimals()` and selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "decimals", abi = "decimals()")] - pub struct DecimalsCall; - ///Container type for all input parameters for the `initialize` function with signature `initialize(string,string,uint8)` and selector `0x1624f6c6` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "initialize", abi = "initialize(string,string,uint8)")] - pub struct InitializeCall { - pub name: ::std::string::String, - pub symbol: ::std::string::String, - pub decimals: u8, - } - ///Container type for all input parameters for the `name` function with signature `name()` and selector `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "name", abi = "name()")] - pub struct NameCall; - ///Container type for all input parameters for the `nonces` function with signature `nonces(address)` and selector `0x7ecebe00` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "nonces", abi = "nonces(address)")] - pub struct NoncesCall(pub ::ethers::core::types::Address); - ///Container type for all input parameters for the `permit` function with signature `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)` and selector `0xd505accf` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permit", - abi = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" - )] - pub struct PermitCall { - pub owner: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - pub deadline: ::ethers::core::types::U256, - pub v: u8, - pub r: [u8; 32], - pub s: [u8; 32], - } - ///Container type for all input parameters for the `symbol` function with signature `symbol()` and selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "symbol", abi = "symbol()")] - pub struct SymbolCall; - ///Container type for all input parameters for the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "totalSupply", abi = "totalSupply()")] - pub struct TotalSupplyCall; - ///Container type for all input parameters for the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] - pub struct TransferCall { - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] - pub struct TransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockERC20Calls { - DomainSeparator(DomainSeparatorCall), - Allowance(AllowanceCall), - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - Decimals(DecimalsCall), - Initialize(InitializeCall), - Name(NameCall), - Nonces(NoncesCall), - Permit(PermitCall), - Symbol(SymbolCall), - TotalSupply(TotalSupplyCall), - Transfer(TransferCall), - TransferFrom(TransferFromCall), - } - impl ::ethers::core::abi::AbiDecode for MockERC20Calls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DomainSeparator(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Allowance(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Approve(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::BalanceOf(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Decimals(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Initialize(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Name(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Nonces(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Permit(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Symbol(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TotalSupply(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Transfer(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferFrom(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockERC20Calls { - fn encode(self) -> Vec { - match self { - Self::DomainSeparator(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Allowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Decimals(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Initialize(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Nonces(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Permit(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TotalSupply(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Transfer(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockERC20Calls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), - Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), - Self::Decimals(element) => ::core::fmt::Display::fmt(element, f), - Self::Initialize(element) => ::core::fmt::Display::fmt(element, f), - Self::Name(element) => ::core::fmt::Display::fmt(element, f), - Self::Nonces(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit(element) => ::core::fmt::Display::fmt(element, f), - Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), - Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), - Self::Transfer(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: DomainSeparatorCall) -> Self { - Self::DomainSeparator(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: AllowanceCall) -> Self { - Self::Allowance(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: ApproveCall) -> Self { - Self::Approve(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: BalanceOfCall) -> Self { - Self::BalanceOf(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: DecimalsCall) -> Self { - Self::Decimals(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: InitializeCall) -> Self { - Self::Initialize(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: NameCall) -> Self { - Self::Name(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: NoncesCall) -> Self { - Self::Nonces(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: PermitCall) -> Self { - Self::Permit(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: SymbolCall) -> Self { - Self::Symbol(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: TotalSupplyCall) -> Self { - Self::TotalSupply(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: TransferCall) -> Self { - Self::Transfer(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: TransferFromCall) -> Self { - Self::TransferFrom(value) - } - } - ///Container type for all return fields from the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct DomainSeparatorReturn(pub [u8; 32]); - ///Container type for all return fields from the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct AllowanceReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ApproveReturn(pub bool); - ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct BalanceOfReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `decimals` function with signature `decimals()` and selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct DecimalsReturn(pub u8); - ///Container type for all return fields from the `name` function with signature `name()` and selector `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct NameReturn(pub ::std::string::String); - ///Container type for all return fields from the `nonces` function with signature `nonces(address)` and selector `0x7ecebe00` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct NoncesReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `symbol` function with signature `symbol()` and selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SymbolReturn(pub ::std::string::String); - ///Container type for all return fields from the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TransferReturn(pub bool); - ///Container type for all return fields from the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TransferFromReturn(pub bool); -} diff --git a/crates/bindings-uniswapx/src/mock_erc721.rs b/crates/bindings-uniswapx/src/mock_erc721.rs deleted file mode 100644 index cc2b692..0000000 --- a/crates/bindings-uniswapx/src/mock_erc721.rs +++ /dev/null @@ -1,1529 +0,0 @@ -pub use mock_erc721::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_erc721 { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("id"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("getApproved"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getApproved"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("id"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("initialize"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("initialize"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("name_"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("symbol_"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("isApprovedForAll"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isApprovedForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("name"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("name"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ownerOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("ownerOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("id"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("id"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("id"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("data"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setApprovalForAll"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setApprovalForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("supportsInterface"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("supportsInterface"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("interfaceId"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("symbol"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("symbol"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("tokenURI"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("tokenURI"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("id"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("id"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ApprovalForAll"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("ApprovalForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKERC721_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x14C\x80a\0\x1D_9_\xF3\xFE`\x80`@R`\x046\x10a\0\xD9W_5`\xE0\x1C\x80ccR!\x1E\x11a\0|W\x80c\xA2,\xB4e\x11a\0WW\x80c\xA2,\xB4e\x14a\x02RW\x80c\xB8\x8DO\xDE\x14a\x02qW\x80c\xC8{V\xDD\x14a\x02\x84W\x80c\xE9\x85\xE9\xC5\x14a\x02\xA4W_\x80\xFD[\x80ccR!\x1E\x14a\x01\xF2W\x80cp\xA0\x821\x14a\x02\x11W\x80c\x95\xD8\x9BA\x14a\x02>W_\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xB7W\x80c\t^\xA7\xB3\x14a\x01\x98W\x80c#\xB8r\xDD\x14a\x01\xADW\x80cB\x84.\x0E\x14a\x01\xC0W\x80cL\xD8\x8Bv\x14a\x01\xD3W_\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xDDW\x80c\x06\xFD\xDE\x03\x14a\x01\x11W\x80c\x08\x18\x12\xFC\x14a\x012W[_\x80\xFD[4\x80\x15a\0\xE8W_\x80\xFD[Pa\0\xFCa\0\xF76`\x04a\r\xF4V[a\x02\xF8V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x1CW_\x80\xFD[Pa\x01%a\x03\xDCV[`@Qa\x01\x08\x91\x90a\x0EwV[4\x80\x15a\x01=W_\x80\xFD[Pa\x01sa\x01L6`\x04a\x0E\x89V[_\x90\x81R`\x04` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x08V[a\x01\xABa\x01\xA66`\x04a\x0E\xC3V[a\x04kV[\0[a\x01\xABa\x01\xBB6`\x04a\x0E\xEBV[a\x05\xB7V[a\x01\xABa\x01\xCE6`\x04a\x0E\xEBV[a\x08\xA6V[4\x80\x15a\x01\xDEW_\x80\xFD[Pa\x01\xABa\x01\xED6`\x04a\x10\0V[a\t\xF6V[4\x80\x15a\x01\xFDW_\x80\xFD[Pa\x01sa\x02\x0C6`\x04a\x0E\x89V[a\n\xABV[4\x80\x15a\x02\x1CW_\x80\xFD[Pa\x020a\x02+6`\x04a\x10`V[a\x0B;V[`@Q\x90\x81R` \x01a\x01\x08V[4\x80\x15a\x02IW_\x80\xFD[Pa\x01%a\x0B\xE1V[4\x80\x15a\x02]W_\x80\xFD[Pa\x01\xABa\x02l6`\x04a\x10yV[a\x0B\xF0V[a\x01\xABa\x02\x7F6`\x04a\x10\xB2V[a\x0C\x86V[4\x80\x15a\x02\x8FW_\x80\xFD[Pa\x01%a\x02\x9E6`\x04a\x0E\x89V[P``\x90V[4\x80\x15a\x02\xAFW_\x80\xFD[Pa\0\xFCa\x02\xBE6`\x04a\x11)V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T`\xFF\x16\x90V[_\x7F\x01\xFF\xC9\xA7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x14\x80a\x03\x8AWP\x7F\x80\xACX\xCD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x14[\x80a\x03\xD6WP\x7F[^\x13\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x14[\x92\x91PPV[``_\x80Ta\x03\xEA\x90a\x11ZV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x16\x90a\x11ZV[\x80\x15a\x04aW\x80`\x1F\x10a\x048Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04aV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x04DW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[_\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x81\x14\x80a\x04\xCCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 T`\xFF\x16[a\x057W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FNOT_AUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_\x82\x81R`\x04` R`@\x80\x82 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x81\x16\x91\x82\x17\x90\x92U\x91Q\x85\x93\x91\x85\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\xA4PPPV[_\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x81\x16\x91\x16\x14a\x06FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\n`$\x82\x01R\x7FWRONG_FROM\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x06\xC3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FINVALID_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x14\x80a\x07\x16WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 T`\xFF\x16[\x80a\x07CWP_\x81\x81R`\x04` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14[a\x07\xA9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FNOT_AUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x90\x81R`\x03` R`@\x81 \x80T\x91a\x07\xD9\x83a\x11\xD8V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x90\x81R`\x03` R`@\x81 \x80T\x91a\x08\x0E\x83a\x12\x0CV[\x90\x91UPP_\x81\x81R`\x02` \x90\x81R`@\x80\x83 \x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x88\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x92\x83\x16\x81\x17\x90\x93U`\x04\x90\x94R\x82\x85 \x80T\x90\x91\x16\x90U\x90Q\x84\x93\x91\x92\x87\x16\x91\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\xA4PPPV[a\x08\xB1\x83\x83\x83a\x05\xB7V[\x81;\x15\x80a\t\x8BWP`@Q\x7F\x15\x0Bz\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x82R3`\x04\x83\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x81\x16`$\x84\x01R`D\x83\x01\x84\x90R`\x80`d\x84\x01R_`\x84\x84\x01R\x90\x91\x90\x84\x16\x90c\x15\x0Bz\x02\x90`\xA4\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\tCW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tg\x91\x90a\x12CV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\t\xF1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[PPPV[`\x06T`\xFF\x16\x15a\ncW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FALREADY_INITIALIZED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[_a\nn\x83\x82a\x12\xA9V[P`\x01a\n{\x82\x82a\x12\xA9V[PP`\x06\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UPV[_\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x80a\x0B6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\n`$\x82\x01R\x7FNOT_MINTED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[\x91\x90PV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x0B\xB9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FZERO_ADDRESS\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[```\x01\x80Ta\x03\xEA\x90a\x11ZV[3_\x81\x81R`\x05` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\x0C\x91\x84\x84\x84a\x05\xB7V[\x82;\x15\x80a\rXWP`@Q\x7F\x15\x0Bz\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x82R\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x15\x0Bz\x02\x90a\x0C\xF4\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x13\xC5V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\r\x10W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r4\x91\x90a\x12CV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\r\xBEW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[PPPPV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\r\xF1W_\x80\xFD[PV[_` \x82\x84\x03\x12\x15a\x0E\x04W_\x80\xFD[\x815a\x0E\x0F\x81a\r\xC4V[\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x0E:W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0E\x1EV[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a\x0E\x0F` \x83\x01\x84a\x0E\x16V[_` \x82\x84\x03\x12\x15a\x0E\x99W_\x80\xFD[P5\x91\x90PV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B6W_\x80\xFD[_\x80`@\x83\x85\x03\x12\x15a\x0E\xD4W_\x80\xFD[a\x0E\xDD\x83a\x0E\xA0V[\x94` \x93\x90\x93\x015\x93PPPV[_\x80_``\x84\x86\x03\x12\x15a\x0E\xFDW_\x80\xFD[a\x0F\x06\x84a\x0E\xA0V[\x92Pa\x0F\x14` \x85\x01a\x0E\xA0V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x0FkWa\x0Fka\x0F$V[`@Q`\x1F\x85\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0F\xB1Wa\x0F\xB1a\x0F$V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x0F\xC9W_\x80\xFD[\x85\x85` \x83\x017_` \x87\x83\x01\x01RPPP\x93\x92PPPV[_\x82`\x1F\x83\x01\x12a\x0F\xF1W_\x80\xFD[a\x0E\x0F\x83\x835` \x85\x01a\x0FQV[_\x80`@\x83\x85\x03\x12\x15a\x10\x11W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x10(W_\x80\xFD[a\x104\x86\x83\x87\x01a\x0F\xE2V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x10IW_\x80\xFD[Pa\x10V\x85\x82\x86\x01a\x0F\xE2V[\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x10pW_\x80\xFD[a\x0E\x0F\x82a\x0E\xA0V[_\x80`@\x83\x85\x03\x12\x15a\x10\x8AW_\x80\xFD[a\x10\x93\x83a\x0E\xA0V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x10\xA7W_\x80\xFD[\x80\x91PP\x92P\x92\x90PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15a\x10\xC5W_\x80\xFD[a\x10\xCE\x85a\x0E\xA0V[\x93Pa\x10\xDC` \x86\x01a\x0E\xA0V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x10\xFEW_\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x11\x0EW_\x80\xFD[a\x11\x1D\x87\x825` \x84\x01a\x0FQV[\x91PP\x92\x95\x91\x94P\x92PV[_\x80`@\x83\x85\x03\x12\x15a\x11:W_\x80\xFD[a\x11C\x83a\x0E\xA0V[\x91Pa\x11Q` \x84\x01a\x0E\xA0V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x11nW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x11\xA5W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[_\x81a\x11\xE6Wa\x11\xE6a\x11\xABV[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x12W_\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xB7W\x80c\t^\xA7\xB3\x14a\x01\x98W\x80c#\xB8r\xDD\x14a\x01\xADW\x80cB\x84.\x0E\x14a\x01\xC0W\x80cL\xD8\x8Bv\x14a\x01\xD3W_\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xDDW\x80c\x06\xFD\xDE\x03\x14a\x01\x11W\x80c\x08\x18\x12\xFC\x14a\x012W[_\x80\xFD[4\x80\x15a\0\xE8W_\x80\xFD[Pa\0\xFCa\0\xF76`\x04a\r\xF4V[a\x02\xF8V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x1CW_\x80\xFD[Pa\x01%a\x03\xDCV[`@Qa\x01\x08\x91\x90a\x0EwV[4\x80\x15a\x01=W_\x80\xFD[Pa\x01sa\x01L6`\x04a\x0E\x89V[_\x90\x81R`\x04` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x08V[a\x01\xABa\x01\xA66`\x04a\x0E\xC3V[a\x04kV[\0[a\x01\xABa\x01\xBB6`\x04a\x0E\xEBV[a\x05\xB7V[a\x01\xABa\x01\xCE6`\x04a\x0E\xEBV[a\x08\xA6V[4\x80\x15a\x01\xDEW_\x80\xFD[Pa\x01\xABa\x01\xED6`\x04a\x10\0V[a\t\xF6V[4\x80\x15a\x01\xFDW_\x80\xFD[Pa\x01sa\x02\x0C6`\x04a\x0E\x89V[a\n\xABV[4\x80\x15a\x02\x1CW_\x80\xFD[Pa\x020a\x02+6`\x04a\x10`V[a\x0B;V[`@Q\x90\x81R` \x01a\x01\x08V[4\x80\x15a\x02IW_\x80\xFD[Pa\x01%a\x0B\xE1V[4\x80\x15a\x02]W_\x80\xFD[Pa\x01\xABa\x02l6`\x04a\x10yV[a\x0B\xF0V[a\x01\xABa\x02\x7F6`\x04a\x10\xB2V[a\x0C\x86V[4\x80\x15a\x02\x8FW_\x80\xFD[Pa\x01%a\x02\x9E6`\x04a\x0E\x89V[P``\x90V[4\x80\x15a\x02\xAFW_\x80\xFD[Pa\0\xFCa\x02\xBE6`\x04a\x11)V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T`\xFF\x16\x90V[_\x7F\x01\xFF\xC9\xA7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x14\x80a\x03\x8AWP\x7F\x80\xACX\xCD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x14[\x80a\x03\xD6WP\x7F[^\x13\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x14[\x92\x91PPV[``_\x80Ta\x03\xEA\x90a\x11ZV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x16\x90a\x11ZV[\x80\x15a\x04aW\x80`\x1F\x10a\x048Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04aV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x04DW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[_\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x81\x14\x80a\x04\xCCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 T`\xFF\x16[a\x057W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FNOT_AUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_\x82\x81R`\x04` R`@\x80\x82 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x81\x16\x91\x82\x17\x90\x92U\x91Q\x85\x93\x91\x85\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\xA4PPPV[_\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x81\x16\x91\x16\x14a\x06FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\n`$\x82\x01R\x7FWRONG_FROM\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x06\xC3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FINVALID_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x14\x80a\x07\x16WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 T`\xFF\x16[\x80a\x07CWP_\x81\x81R`\x04` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14[a\x07\xA9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FNOT_AUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x90\x81R`\x03` R`@\x81 \x80T\x91a\x07\xD9\x83a\x11\xD8V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x90\x81R`\x03` R`@\x81 \x80T\x91a\x08\x0E\x83a\x12\x0CV[\x90\x91UPP_\x81\x81R`\x02` \x90\x81R`@\x80\x83 \x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x88\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x92\x83\x16\x81\x17\x90\x93U`\x04\x90\x94R\x82\x85 \x80T\x90\x91\x16\x90U\x90Q\x84\x93\x91\x92\x87\x16\x91\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\xA4PPPV[a\x08\xB1\x83\x83\x83a\x05\xB7V[\x81;\x15\x80a\t\x8BWP`@Q\x7F\x15\x0Bz\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x82R3`\x04\x83\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x81\x16`$\x84\x01R`D\x83\x01\x84\x90R`\x80`d\x84\x01R_`\x84\x84\x01R\x90\x91\x90\x84\x16\x90c\x15\x0Bz\x02\x90`\xA4\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\tCW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tg\x91\x90a\x12CV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\t\xF1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[PPPV[`\x06T`\xFF\x16\x15a\ncW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FALREADY_INITIALIZED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[_a\nn\x83\x82a\x12\xA9V[P`\x01a\n{\x82\x82a\x12\xA9V[PP`\x06\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UPV[_\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x80a\x0B6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\n`$\x82\x01R\x7FNOT_MINTED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[\x91\x90PV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x0B\xB9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FZERO_ADDRESS\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[```\x01\x80Ta\x03\xEA\x90a\x11ZV[3_\x81\x81R`\x05` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\x0C\x91\x84\x84\x84a\x05\xB7V[\x82;\x15\x80a\rXWP`@Q\x7F\x15\x0Bz\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x82R\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x15\x0Bz\x02\x90a\x0C\xF4\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x13\xC5V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\r\x10W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r4\x91\x90a\x12CV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\r\xBEW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[PPPPV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\r\xF1W_\x80\xFD[PV[_` \x82\x84\x03\x12\x15a\x0E\x04W_\x80\xFD[\x815a\x0E\x0F\x81a\r\xC4V[\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x0E:W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0E\x1EV[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a\x0E\x0F` \x83\x01\x84a\x0E\x16V[_` \x82\x84\x03\x12\x15a\x0E\x99W_\x80\xFD[P5\x91\x90PV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B6W_\x80\xFD[_\x80`@\x83\x85\x03\x12\x15a\x0E\xD4W_\x80\xFD[a\x0E\xDD\x83a\x0E\xA0V[\x94` \x93\x90\x93\x015\x93PPPV[_\x80_``\x84\x86\x03\x12\x15a\x0E\xFDW_\x80\xFD[a\x0F\x06\x84a\x0E\xA0V[\x92Pa\x0F\x14` \x85\x01a\x0E\xA0V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x0FkWa\x0Fka\x0F$V[`@Q`\x1F\x85\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0F\xB1Wa\x0F\xB1a\x0F$V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x0F\xC9W_\x80\xFD[\x85\x85` \x83\x017_` \x87\x83\x01\x01RPPP\x93\x92PPPV[_\x82`\x1F\x83\x01\x12a\x0F\xF1W_\x80\xFD[a\x0E\x0F\x83\x835` \x85\x01a\x0FQV[_\x80`@\x83\x85\x03\x12\x15a\x10\x11W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x10(W_\x80\xFD[a\x104\x86\x83\x87\x01a\x0F\xE2V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x10IW_\x80\xFD[Pa\x10V\x85\x82\x86\x01a\x0F\xE2V[\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x10pW_\x80\xFD[a\x0E\x0F\x82a\x0E\xA0V[_\x80`@\x83\x85\x03\x12\x15a\x10\x8AW_\x80\xFD[a\x10\x93\x83a\x0E\xA0V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x10\xA7W_\x80\xFD[\x80\x91PP\x92P\x92\x90PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15a\x10\xC5W_\x80\xFD[a\x10\xCE\x85a\x0E\xA0V[\x93Pa\x10\xDC` \x86\x01a\x0E\xA0V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x10\xFEW_\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x11\x0EW_\x80\xFD[a\x11\x1D\x87\x825` \x84\x01a\x0FQV[\x91PP\x92\x95\x91\x94P\x92PV[_\x80`@\x83\x85\x03\x12\x15a\x11:W_\x80\xFD[a\x11C\x83a\x0E\xA0V[\x91Pa\x11Q` \x84\x01a\x0E\xA0V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x11nW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x11\xA5W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[_\x81a\x11\xE6Wa\x11\xE6a\x11\xABV[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x12(::ethers::contract::Contract); - impl ::core::clone::Clone for MockERC721 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockERC721 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockERC721 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockERC721 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockERC721)).field(&self.address()).finish() - } - } - impl MockERC721 { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKERC721_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKERC721_ABI.clone(), - MOCKERC721_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `approve` (0x095ea7b3) function - pub fn approve( - &self, - spender: ::ethers::core::types::Address, - id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (spender, id)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) function - pub fn balance_of( - &self, - owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 160, 130, 49], owner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getApproved` (0x081812fc) function - pub fn get_approved( - &self, - id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([8, 24, 18, 252], id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `initialize` (0x4cd88b76) function - pub fn initialize( - &self, - name: ::std::string::String, - symbol: ::std::string::String, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([76, 216, 139, 118], (name, symbol)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isApprovedForAll` (0xe985e9c5) function - pub fn is_approved_for_all( - &self, - owner: ::ethers::core::types::Address, - operator: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([233, 133, 233, 197], (owner, operator)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `name` (0x06fdde03) function - pub fn name( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([6, 253, 222, 3], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `ownerOf` (0x6352211e) function - pub fn owner_of( - &self, - id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([99, 82, 33, 30], id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `safeTransferFrom` (0x42842e0e) function - pub fn safe_transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([66, 132, 46, 14], (from, to, id)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `safeTransferFrom` (0xb88d4fde) function - pub fn safe_transfer_from_with_from_and_to_and_data( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - id: ::ethers::core::types::U256, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([184, 141, 79, 222], (from, to, id, data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setApprovalForAll` (0xa22cb465) function - pub fn set_approval_for_all( - &self, - operator: ::ethers::core::types::Address, - approved: bool, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([162, 44, 180, 101], (operator, approved)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `supportsInterface` (0x01ffc9a7) function - pub fn supports_interface( - &self, - interface_id: [u8; 4], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([1, 255, 201, 167], interface_id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `symbol` (0x95d89b41) function - pub fn symbol( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([149, 216, 155, 65], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `tokenURI` (0xc87b56dd) function - pub fn token_uri( - &self, - id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([200, 123, 86, 221], id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x23b872dd) function - pub fn transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, id)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `ApprovalForAll` event - pub fn approval_for_all_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalForAllFilter, - > { - self.0.event() - } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - MockERC721Events, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for MockERC721 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub approved: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token_id: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "ApprovalForAll", abi = "ApprovalForAll(address,address,bool)")] - pub struct ApprovalForAllFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub operator: ::ethers::core::types::Address, - pub approved: bool, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockERC721Events { - ApprovalFilter(ApprovalFilter), - ApprovalForAllFilter(ApprovalForAllFilter), - TransferFilter(TransferFilter), - } - impl ::ethers::contract::EthLogDecode for MockERC721Events { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(MockERC721Events::ApprovalFilter(decoded)); - } - if let Ok(decoded) = ApprovalForAllFilter::decode_log(log) { - return Ok(MockERC721Events::ApprovalForAllFilter(decoded)); - } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(MockERC721Events::TransferFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for MockERC721Events { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::ApprovalForAllFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockERC721Events { - fn from(value: ApprovalFilter) -> Self { - Self::ApprovalFilter(value) - } - } - impl ::core::convert::From for MockERC721Events { - fn from(value: ApprovalForAllFilter) -> Self { - Self::ApprovalForAllFilter(value) - } - } - impl ::core::convert::From for MockERC721Events { - fn from(value: TransferFilter) -> Self { - Self::TransferFilter(value) - } - } - ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub spender: ::ethers::core::types::Address, - pub id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "getApproved", abi = "getApproved(uint256)")] - pub struct GetApprovedCall { - pub id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `initialize` function with signature `initialize(string,string)` and selector `0x4cd88b76` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "initialize", abi = "initialize(string,string)")] - pub struct InitializeCall { - pub name: ::std::string::String, - pub symbol: ::std::string::String, - } - ///Container type for all input parameters for the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "isApprovedForAll", abi = "isApprovedForAll(address,address)")] - pub struct IsApprovedForAllCall { - pub owner: ::ethers::core::types::Address, - pub operator: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `name` function with signature `name()` and selector `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "name", abi = "name()")] - pub struct NameCall; - ///Container type for all input parameters for the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "ownerOf", abi = "ownerOf(uint256)")] - pub struct OwnerOfCall { - pub id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256)" - )] - pub struct SafeTransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256,bytes)" - )] - pub struct SafeTransferFromWithFromAndToAndDataCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub id: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `setApprovalForAll` function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setApprovalForAll", abi = "setApprovalForAll(address,bool)")] - pub struct SetApprovalForAllCall { - pub operator: ::ethers::core::types::Address, - pub approved: bool, - } - ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] - pub struct SupportsInterfaceCall { - pub interface_id: [u8; 4], - } - ///Container type for all input parameters for the `symbol` function with signature `symbol()` and selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "symbol", abi = "symbol()")] - pub struct SymbolCall; - ///Container type for all input parameters for the `tokenURI` function with signature `tokenURI(uint256)` and selector `0xc87b56dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "tokenURI", abi = "tokenURI(uint256)")] - pub struct TokenURICall { - pub id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] - pub struct TransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub id: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockERC721Calls { - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - GetApproved(GetApprovedCall), - Initialize(InitializeCall), - IsApprovedForAll(IsApprovedForAllCall), - Name(NameCall), - OwnerOf(OwnerOfCall), - SafeTransferFrom(SafeTransferFromCall), - SafeTransferFromWithFromAndToAndData(SafeTransferFromWithFromAndToAndDataCall), - SetApprovalForAll(SetApprovalForAllCall), - SupportsInterface(SupportsInterfaceCall), - Symbol(SymbolCall), - TokenURI(TokenURICall), - TransferFrom(TransferFromCall), - } - impl ::ethers::core::abi::AbiDecode for MockERC721Calls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Approve(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::BalanceOf(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::GetApproved(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Initialize(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IsApprovedForAll(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Name(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::OwnerOf(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SafeTransferFrom(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SafeTransferFromWithFromAndToAndData(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetApprovalForAll(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SupportsInterface(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Symbol(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TokenURI(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferFrom(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockERC721Calls { - fn encode(self) -> Vec { - match self { - Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::GetApproved(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Initialize(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IsApprovedForAll(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::OwnerOf(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SafeTransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SafeTransferFromWithFromAndToAndData(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetApprovalForAll(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SupportsInterface(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TokenURI(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockERC721Calls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), - Self::GetApproved(element) => ::core::fmt::Display::fmt(element, f), - Self::Initialize(element) => ::core::fmt::Display::fmt(element, f), - Self::IsApprovedForAll(element) => ::core::fmt::Display::fmt(element, f), - Self::Name(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnerOf(element) => ::core::fmt::Display::fmt(element, f), - Self::SafeTransferFrom(element) => ::core::fmt::Display::fmt(element, f), - Self::SafeTransferFromWithFromAndToAndData(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::SetApprovalForAll(element) => ::core::fmt::Display::fmt(element, f), - Self::SupportsInterface(element) => ::core::fmt::Display::fmt(element, f), - Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), - Self::TokenURI(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: ApproveCall) -> Self { - Self::Approve(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: BalanceOfCall) -> Self { - Self::BalanceOf(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: GetApprovedCall) -> Self { - Self::GetApproved(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: InitializeCall) -> Self { - Self::Initialize(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: IsApprovedForAllCall) -> Self { - Self::IsApprovedForAll(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: NameCall) -> Self { - Self::Name(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: OwnerOfCall) -> Self { - Self::OwnerOf(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: SafeTransferFromCall) -> Self { - Self::SafeTransferFrom(value) - } - } - impl ::core::convert::From - for MockERC721Calls { - fn from(value: SafeTransferFromWithFromAndToAndDataCall) -> Self { - Self::SafeTransferFromWithFromAndToAndData(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: SetApprovalForAllCall) -> Self { - Self::SetApprovalForAll(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: SupportsInterfaceCall) -> Self { - Self::SupportsInterface(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: SymbolCall) -> Self { - Self::Symbol(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: TokenURICall) -> Self { - Self::TokenURI(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: TransferFromCall) -> Self { - Self::TransferFrom(value) - } - } - ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct BalanceOfReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct GetApprovedReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsApprovedForAllReturn(pub bool); - ///Container type for all return fields from the `name` function with signature `name()` and selector `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct NameReturn(pub ::std::string::String); - ///Container type for all return fields from the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerOfReturn { - pub owner: ::ethers::core::types::Address, - } - ///Container type for all return fields from the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SupportsInterfaceReturn(pub bool); - ///Container type for all return fields from the `symbol` function with signature `symbol()` and selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SymbolReturn(pub ::std::string::String); - ///Container type for all return fields from the `tokenURI` function with signature `tokenURI(uint256)` and selector `0xc87b56dd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TokenURIReturn(pub ::std::string::String); -} diff --git a/crates/bindings-uniswapx/src/mock_exclusivity_lib.rs b/crates/bindings-uniswapx/src/mock_exclusivity_lib.rs deleted file mode 100644 index 073659f..0000000 --- a/crates/bindings-uniswapx/src/mock_exclusivity_lib.rs +++ /dev/null @@ -1,703 +0,0 @@ -pub use mock_exclusivity_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_exclusivity_lib { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("handleExclusiveOverrideBlock"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "handleExclusiveOverrideBlock", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("exclusive"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("exclusivityEnd"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "exclusivityOverrideBps", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("blockNumberish"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("handleExclusiveOverrideTimestamp"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "handleExclusiveOverrideTimestamp", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("exclusive"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("exclusivityEnd"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "exclusivityOverrideBps", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("hasFillingRights"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("hasFillingRights"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("exclusive"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("exclusivityEnd"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("currentPosition"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("pass"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("NoExclusiveOverride"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NoExclusiveOverride", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKEXCLUSIVITYLIB_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\nw\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\xCA\xFFN\xF6\x14a\0CW\x80c\xDF$\x81\x18\x14a\0lW\x80c\xF8\x81>\xE7\x14a\0\x7FW[_\x80\xFD[a\0Va\0Q6`\x04a\x06\xF1V[a\0\xA2V[`@Qa\0c\x91\x90a\x08\x16V[`@Q\x80\x91\x03\x90\xF3[a\0Va\0z6`\x04a\t?V[a\x01%V[a\0\x92a\0\x8D6`\x04a\t\xA4V[a\x01\xAAV[`@Q\x90\x15\x15\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01\x1C\x85\x85\x85\x85a\x01\xBEV[P\x92\x93\x92PPPV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01\xA0\x86\x86\x86\x86\x86a\x01\xD1V[P\x93\x94\x93PPPPV[_a\x01\xB6\x84\x84\x84a\x01\xE5V[\x94\x93PPPPV[a\x01\xCB\x84\x84\x84\x84Ba\x020V[PPPPV[a\x01\xDE\x85\x85\x85\x85\x85a\x020V[PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\x02\x08WP\x82\x82\x11[\x80a\x01\xB6WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[a\x02;\x84\x84\x83a\x01\xE5V[a\x01\xDEW\x81a\x02vW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a\x02\xD0W_\x82\x82\x81Q\x81\x10a\x02\x99Wa\x02\x99a\t\xD6V[` \x02` \x01\x01Q\x90Pa\x02\xC2\x85a'\x10a\x02\xB4\x91\x90a\n\x03V[` \x83\x01Q\x90a'\x10a\x02\xD9V[` \x90\x91\x01R`\x01\x01a\x02}V[PPPPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x03\x0CW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03kWa\x03ka\x03\x1BV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03kWa\x03ka\x03\x1BV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\xDBWa\x03\xDBa\x03\x1BV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\x04W_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x04\x16W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x040Wa\x040a\x03\x1BV[a\x04a` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x03\x94V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04uW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x04\xA1W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x04\xC5Wa\x04\xC5a\x03\x1BV[\x81`@R\x82\x93P\x845\x91Pa\x04\xD9\x82a\x03\xE3V[\x90\x82R` \x84\x015\x90a\x04\xEB\x82a\x03\xE3V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x05\x15\x82a\x03\xE3V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x05.W_\x80\xFD[Pa\x05;\x85\x82\x86\x01a\x04\x07V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x05XW_\x80\xFD[a\x05`a\x03HV[\x90P\x815a\x05m\x81a\x03\xE3V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x05\x9AW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xB6Wa\x05\xB6a\x03\x1BV[a\x05\xC4\x81\x83`\x05\x1B\x01a\x03\x94V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x05\xE2W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x069W\x81\x81\x8A\x03\x12\x15a\x05\xFCW_\x80\xFD[a\x06\x04a\x03HV[\x815a\x06\x0F\x81a\x03\xE3V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x06(\x81a\x03\xE3V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x05\xE6V[P\x90\x97\x96PPPPPPPV[_`\xE0\x82\x84\x03\x12\x15a\x06VW_\x80\xFD[a\x06^a\x03qV[\x90P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06wW_\x80\xFD[a\x06\x83\x85\x83\x86\x01a\x04\x91V[\x83Ra\x06\x92\x85` \x86\x01a\x05HV[` \x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x06\xAAW_\x80\xFD[a\x06\xB6\x85\x83\x86\x01a\x05\x8BV[`@\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x06\xCEW_\x80\xFD[Pa\x06\xDB\x84\x82\x85\x01a\x04\x07V[``\x83\x01RP`\xC0\x82\x015`\x80\x82\x01R\x92\x91PPV[_\x80_\x80`\x80\x85\x87\x03\x12\x15a\x07\x04W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x1AW_\x80\xFD[a\x07&\x87\x82\x88\x01a\x06FV[\x94PP` \x85\x015a\x077\x81a\x03\xE3V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x07pW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x07TV[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x08\x0BW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x07\xC0V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x08\x91a\x01\xC0\x84\x01\x82a\x07LV[\x90P` \x84\x01Qa\x08\xCF`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\t\n\x83\x83a\x07\xADV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\t(\x82\x82a\x07LV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_\x80_\x80_`\xA0\x86\x88\x03\x12\x15a\tSW_\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\tiW_\x80\xFD[a\tu\x88\x82\x89\x01a\x06FV[\x95PP` \x86\x015a\t\x86\x81a\x03\xE3V[\x94\x97\x94\x96PPPP`@\x83\x015\x92``\x81\x015\x92`\x80\x90\x91\x015\x91PV[_\x80_``\x84\x86\x03\x12\x15a\t\xB6W_\x80\xFD[\x835a\t\xC1\x81a\x03\xE3V[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\n;W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xEF\x1D\xCA+;Sn\x12F\x0C\xD8y\xAE4lZ\x99\x8F\x86\x8B\xF9+~)\xB6\xFBon3\xA9\x87dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKEXCLUSIVITYLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\xCA\xFFN\xF6\x14a\0CW\x80c\xDF$\x81\x18\x14a\0lW\x80c\xF8\x81>\xE7\x14a\0\x7FW[_\x80\xFD[a\0Va\0Q6`\x04a\x06\xF1V[a\0\xA2V[`@Qa\0c\x91\x90a\x08\x16V[`@Q\x80\x91\x03\x90\xF3[a\0Va\0z6`\x04a\t?V[a\x01%V[a\0\x92a\0\x8D6`\x04a\t\xA4V[a\x01\xAAV[`@Q\x90\x15\x15\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01\x1C\x85\x85\x85\x85a\x01\xBEV[P\x92\x93\x92PPPV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01\xA0\x86\x86\x86\x86\x86a\x01\xD1V[P\x93\x94\x93PPPPV[_a\x01\xB6\x84\x84\x84a\x01\xE5V[\x94\x93PPPPV[a\x01\xCB\x84\x84\x84\x84Ba\x020V[PPPPV[a\x01\xDE\x85\x85\x85\x85\x85a\x020V[PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\x02\x08WP\x82\x82\x11[\x80a\x01\xB6WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[a\x02;\x84\x84\x83a\x01\xE5V[a\x01\xDEW\x81a\x02vW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a\x02\xD0W_\x82\x82\x81Q\x81\x10a\x02\x99Wa\x02\x99a\t\xD6V[` \x02` \x01\x01Q\x90Pa\x02\xC2\x85a'\x10a\x02\xB4\x91\x90a\n\x03V[` \x83\x01Q\x90a'\x10a\x02\xD9V[` \x90\x91\x01R`\x01\x01a\x02}V[PPPPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x03\x0CW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03kWa\x03ka\x03\x1BV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03kWa\x03ka\x03\x1BV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\xDBWa\x03\xDBa\x03\x1BV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\x04W_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x04\x16W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x040Wa\x040a\x03\x1BV[a\x04a` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x03\x94V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04uW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x04\xA1W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x04\xC5Wa\x04\xC5a\x03\x1BV[\x81`@R\x82\x93P\x845\x91Pa\x04\xD9\x82a\x03\xE3V[\x90\x82R` \x84\x015\x90a\x04\xEB\x82a\x03\xE3V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x05\x15\x82a\x03\xE3V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x05.W_\x80\xFD[Pa\x05;\x85\x82\x86\x01a\x04\x07V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x05XW_\x80\xFD[a\x05`a\x03HV[\x90P\x815a\x05m\x81a\x03\xE3V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x05\x9AW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xB6Wa\x05\xB6a\x03\x1BV[a\x05\xC4\x81\x83`\x05\x1B\x01a\x03\x94V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x05\xE2W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x069W\x81\x81\x8A\x03\x12\x15a\x05\xFCW_\x80\xFD[a\x06\x04a\x03HV[\x815a\x06\x0F\x81a\x03\xE3V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x06(\x81a\x03\xE3V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x05\xE6V[P\x90\x97\x96PPPPPPPV[_`\xE0\x82\x84\x03\x12\x15a\x06VW_\x80\xFD[a\x06^a\x03qV[\x90P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06wW_\x80\xFD[a\x06\x83\x85\x83\x86\x01a\x04\x91V[\x83Ra\x06\x92\x85` \x86\x01a\x05HV[` \x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x06\xAAW_\x80\xFD[a\x06\xB6\x85\x83\x86\x01a\x05\x8BV[`@\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x06\xCEW_\x80\xFD[Pa\x06\xDB\x84\x82\x85\x01a\x04\x07V[``\x83\x01RP`\xC0\x82\x015`\x80\x82\x01R\x92\x91PPV[_\x80_\x80`\x80\x85\x87\x03\x12\x15a\x07\x04W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x1AW_\x80\xFD[a\x07&\x87\x82\x88\x01a\x06FV[\x94PP` \x85\x015a\x077\x81a\x03\xE3V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x07pW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x07TV[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x08\x0BW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x07\xC0V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x08\x91a\x01\xC0\x84\x01\x82a\x07LV[\x90P` \x84\x01Qa\x08\xCF`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\t\n\x83\x83a\x07\xADV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\t(\x82\x82a\x07LV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_\x80_\x80_`\xA0\x86\x88\x03\x12\x15a\tSW_\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\tiW_\x80\xFD[a\tu\x88\x82\x89\x01a\x06FV[\x95PP` \x86\x015a\t\x86\x81a\x03\xE3V[\x94\x97\x94\x96PPPP`@\x83\x015\x92``\x81\x015\x92`\x80\x90\x91\x015\x91PV[_\x80_``\x84\x86\x03\x12\x15a\t\xB6W_\x80\xFD[\x835a\t\xC1\x81a\x03\xE3V[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\n;W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xEF\x1D\xCA+;Sn\x12F\x0C\xD8y\xAE4lZ\x99\x8F\x86\x8B\xF9+~)\xB6\xFBon3\xA9\x87dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKEXCLUSIVITYLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockExclusivityLib(::ethers::contract::Contract); - impl ::core::clone::Clone for MockExclusivityLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockExclusivityLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockExclusivityLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockExclusivityLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockExclusivityLib)) - .field(&self.address()) - .finish() - } - } - impl MockExclusivityLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKEXCLUSIVITYLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKEXCLUSIVITYLIB_ABI.clone(), - MOCKEXCLUSIVITYLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `handleExclusiveOverrideBlock` (0xdf248118) function - pub fn handle_exclusive_override_block( - &self, - order: ResolvedOrder, - exclusive: ::ethers::core::types::Address, - exclusivity_end: ::ethers::core::types::U256, - exclusivity_override_bps: ::ethers::core::types::U256, - block_numberish: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [223, 36, 129, 24], - ( - order, - exclusive, - exclusivity_end, - exclusivity_override_bps, - block_numberish, - ), - ) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `handleExclusiveOverrideTimestamp` (0xcaff4ef6) function - pub fn handle_exclusive_override_timestamp( - &self, - order: ResolvedOrder, - exclusive: ::ethers::core::types::Address, - exclusivity_end: ::ethers::core::types::U256, - exclusivity_override_bps: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [202, 255, 78, 246], - (order, exclusive, exclusivity_end, exclusivity_override_bps), - ) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `hasFillingRights` (0xf8813ee7) function - pub fn has_filling_rights( - &self, - exclusive: ::ethers::core::types::Address, - exclusivity_end: ::ethers::core::types::U256, - current_position: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [248, 129, 62, 231], - (exclusive, exclusivity_end, current_position), - ) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for MockExclusivityLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `NoExclusiveOverride` with signature `NoExclusiveOverride()` and selector `0xb9ec1e96` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NoExclusiveOverride", abi = "NoExclusiveOverride()")] - pub struct NoExclusiveOverride; - ///Container type for all input parameters for the `handleExclusiveOverrideBlock` function with signature `handleExclusiveOverrideBlock(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256,uint256)` and selector `0xdf248118` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "handleExclusiveOverrideBlock", - abi = "handleExclusiveOverrideBlock(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256,uint256)" - )] - pub struct HandleExclusiveOverrideBlockCall { - pub order: ResolvedOrder, - pub exclusive: ::ethers::core::types::Address, - pub exclusivity_end: ::ethers::core::types::U256, - pub exclusivity_override_bps: ::ethers::core::types::U256, - pub block_numberish: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `handleExclusiveOverrideTimestamp` function with signature `handleExclusiveOverrideTimestamp(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256)` and selector `0xcaff4ef6` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "handleExclusiveOverrideTimestamp", - abi = "handleExclusiveOverrideTimestamp(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256)" - )] - pub struct HandleExclusiveOverrideTimestampCall { - pub order: ResolvedOrder, - pub exclusive: ::ethers::core::types::Address, - pub exclusivity_end: ::ethers::core::types::U256, - pub exclusivity_override_bps: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `hasFillingRights` function with signature `hasFillingRights(address,uint256,uint256)` and selector `0xf8813ee7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "hasFillingRights", - abi = "hasFillingRights(address,uint256,uint256)" - )] - pub struct HasFillingRightsCall { - pub exclusive: ::ethers::core::types::Address, - pub exclusivity_end: ::ethers::core::types::U256, - pub current_position: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockExclusivityLibCalls { - HandleExclusiveOverrideBlock(HandleExclusiveOverrideBlockCall), - HandleExclusiveOverrideTimestamp(HandleExclusiveOverrideTimestampCall), - HasFillingRights(HasFillingRightsCall), - } - impl ::ethers::core::abi::AbiDecode for MockExclusivityLibCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::HandleExclusiveOverrideBlock(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::HandleExclusiveOverrideTimestamp(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::HasFillingRights(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockExclusivityLibCalls { - fn encode(self) -> Vec { - match self { - Self::HandleExclusiveOverrideBlock(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::HandleExclusiveOverrideTimestamp(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::HasFillingRights(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockExclusivityLibCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::HandleExclusiveOverrideBlock(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::HandleExclusiveOverrideTimestamp(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::HasFillingRights(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From - for MockExclusivityLibCalls { - fn from(value: HandleExclusiveOverrideBlockCall) -> Self { - Self::HandleExclusiveOverrideBlock(value) - } - } - impl ::core::convert::From - for MockExclusivityLibCalls { - fn from(value: HandleExclusiveOverrideTimestampCall) -> Self { - Self::HandleExclusiveOverrideTimestamp(value) - } - } - impl ::core::convert::From for MockExclusivityLibCalls { - fn from(value: HasFillingRightsCall) -> Self { - Self::HasFillingRights(value) - } - } - ///Container type for all return fields from the `handleExclusiveOverrideBlock` function with signature `handleExclusiveOverrideBlock(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256,uint256)` and selector `0xdf248118` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct HandleExclusiveOverrideBlockReturn(pub ResolvedOrder); - ///Container type for all return fields from the `handleExclusiveOverrideTimestamp` function with signature `handleExclusiveOverrideTimestamp(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256)` and selector `0xcaff4ef6` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct HandleExclusiveOverrideTimestampReturn(pub ResolvedOrder); - ///Container type for all return fields from the `hasFillingRights` function with signature `hasFillingRights(address,uint256,uint256)` and selector `0xf8813ee7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct HasFillingRightsReturn { - pub pass: bool, - } -} diff --git a/crates/bindings-uniswapx/src/mock_fee_controller.rs b/crates/bindings-uniswapx/src/mock_fee_controller.rs deleted file mode 100644 index aa53363..0000000 --- a/crates/bindings-uniswapx/src/mock_fee_controller.rs +++ /dev/null @@ -1,750 +0,0 @@ -pub use mock_fee_controller::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_fee_controller { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_feeRecipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("feeRecipient"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeRecipient"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("fees"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("fees"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenIn"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ERC20"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenOut"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("getFeeOutputs"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getFeeOutputs"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("result"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct OutputToken[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setFee"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setFee"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenIn"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ERC20"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenOut"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("fee"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKFEECONTROLLER_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\x0C\x828\x03\x80a\x0C\x82\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\x7FV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xACV[_` \x82\x84\x03\x12\x15a\0\x8FW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xA5W_\x80\xFD[\x93\x92PPPV[`\x80Qa\x0B\xB8a\0\xCA_9_\x81\x81`x\x01Ra\x03d\x01Ra\x0B\xB8_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0MW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x03W\x80c\xDC~\x98\xDF\x14a\x01;W\x80c\xF2\xFD\xE3\x8B\x14a\x01PW_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x08\xB5V[a\x01cV[`@Qa\0\xBB\x91\x90a\t\x80V[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01-a\x01\x116`\x04a\t\xF2V[`\x01` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[a\x01Na\x01I6`\x04a\n)V[a\x03\xDEV[\0[a\x01Na\x01^6`\x04a\ngV[a\x04\x9BV[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x83Wa\x01\x83a\x05\x8AV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xEBW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA1W\x90P[P` \x83\x01QQ\x90\x91P_\x80[\x84`@\x01QQ\x81\x10\x15a\x03\xD5W_\x85`@\x01Q\x82\x81Q\x81\x10a\x02\x1CWa\x02\x1Ca\n\x89V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16_\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x03\xCBW_a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x7FWa\x02\x7Fa\n\x89V[` \x02` \x01\x01Q` \x01Qa\x02\x95\x91\x90a\n\xE3V[a\x02\x9F\x91\x90a\x0B\0V[\x90P_\x80[\x86\x81\x10\x15a\x03\"W_\x89\x82\x81Q\x81\x10a\x02\xBFWa\x02\xBFa\n\x89V[` \x02` \x01\x01Q\x90P\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x03\x19W`\x01\x92P\x83\x81` \x01\x81\x81Qa\x03\x15\x91\x90a\x0B8V[\x90RP[P`\x01\x01a\x02\xA4V[P\x80\x15\x80\x15a\x030WP_\x82\x11[\x15a\x03\xC8W`@Q\x80``\x01`@R\x80\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x88\x87\x81Q\x81\x10a\x03\xAEWa\x03\xAEa\n\x89V[` \x02` \x01\x01\x81\x90RP\x85\x80a\x03\xC4\x90a\x0BKV[\x96PP[PP[PP`\x01\x01a\x01\xF8V[P\x82RP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04cW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x1BW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04ZV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xDAWa\x05\xDAa\x05\x8AV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xDAWa\x05\xDAa\x05\x8AV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x06JWa\x06Ja\x05\x8AV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06sW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x06\x85W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x9FWa\x06\x9Fa\x05\x8AV[a\x06\xD0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x06\x03V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xE4W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x07\x10W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x074Wa\x074a\x05\x8AV[\x81`@R\x82\x93P\x845\x91Pa\x07H\x82a\x06RV[\x90\x82R` \x84\x015\x90a\x07Z\x82a\x06RV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x84\x82a\x06RV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x9DW_\x80\xFD[Pa\x07\xAA\x85\x82\x86\x01a\x06vV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xC7W_\x80\xFD[a\x07\xCFa\x05\xB7V[\x90P\x815a\x07\xDC\x81a\x06RV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x08\tW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08%Wa\x08%a\x05\x8AV[a\x083\x81\x83`\x05\x1B\x01a\x06\x03V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08QW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xA8W\x81\x81\x8A\x03\x12\x15a\x08kW_\x80\xFD[a\x08sa\x05\xB7V[\x815a\x08~\x81a\x06RV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x97\x81a\x06RV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08UV[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x08\xC5W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xDCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08\xEFW_\x80\xFD[a\x08\xF7a\x05\xE0V[\x825\x82\x81\x11\x15a\t\x05W_\x80\xFD[a\t\x11\x87\x82\x86\x01a\x07\0V[\x82RPa\t!\x86` \x85\x01a\x07\xB7V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\t7W_\x80\xFD[a\tC\x87\x82\x86\x01a\x07\xFAV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\tZW_\x80\xFD[a\tf\x87\x82\x86\x01a\x06vV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\t\xE5W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\x9CV[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\n\x03W_\x80\xFD[\x825a\n\x0E\x81a\x06RV[\x91P` \x83\x015a\n\x1E\x81a\x06RV[\x80\x91PP\x92P\x92\x90PV[_\x80_``\x84\x86\x03\x12\x15a\n;W_\x80\xFD[\x835a\nF\x81a\x06RV[\x92P` \x84\x015a\nV\x81a\x06RV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\nwW_\x80\xFD[\x815a\n\x82\x81a\x06RV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n\xFAWa\n\xFAa\n\xB6V[\x92\x91PPV[_\x82a\x0B3W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\n\xFAWa\n\xFAa\n\xB6V[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x0B{Wa\x0B{a\n\xB6V[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x82\xD8\x1F\xBB\xB4\xE8\xF1\x8D\x9B\xBEr\x07L\x0B\t\xF0\x97\x7F%u\xA0\xDA\x011\x02\xD3\xDB\xB5\x94\x83\x02\x1FdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKFEECONTROLLER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0MW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x03W\x80c\xDC~\x98\xDF\x14a\x01;W\x80c\xF2\xFD\xE3\x8B\x14a\x01PW_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x08\xB5V[a\x01cV[`@Qa\0\xBB\x91\x90a\t\x80V[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01-a\x01\x116`\x04a\t\xF2V[`\x01` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[a\x01Na\x01I6`\x04a\n)V[a\x03\xDEV[\0[a\x01Na\x01^6`\x04a\ngV[a\x04\x9BV[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x83Wa\x01\x83a\x05\x8AV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xEBW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA1W\x90P[P` \x83\x01QQ\x90\x91P_\x80[\x84`@\x01QQ\x81\x10\x15a\x03\xD5W_\x85`@\x01Q\x82\x81Q\x81\x10a\x02\x1CWa\x02\x1Ca\n\x89V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16_\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x03\xCBW_a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x7FWa\x02\x7Fa\n\x89V[` \x02` \x01\x01Q` \x01Qa\x02\x95\x91\x90a\n\xE3V[a\x02\x9F\x91\x90a\x0B\0V[\x90P_\x80[\x86\x81\x10\x15a\x03\"W_\x89\x82\x81Q\x81\x10a\x02\xBFWa\x02\xBFa\n\x89V[` \x02` \x01\x01Q\x90P\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x03\x19W`\x01\x92P\x83\x81` \x01\x81\x81Qa\x03\x15\x91\x90a\x0B8V[\x90RP[P`\x01\x01a\x02\xA4V[P\x80\x15\x80\x15a\x030WP_\x82\x11[\x15a\x03\xC8W`@Q\x80``\x01`@R\x80\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x88\x87\x81Q\x81\x10a\x03\xAEWa\x03\xAEa\n\x89V[` \x02` \x01\x01\x81\x90RP\x85\x80a\x03\xC4\x90a\x0BKV[\x96PP[PP[PP`\x01\x01a\x01\xF8V[P\x82RP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04cW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x1BW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04ZV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xDAWa\x05\xDAa\x05\x8AV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xDAWa\x05\xDAa\x05\x8AV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x06JWa\x06Ja\x05\x8AV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06sW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x06\x85W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x9FWa\x06\x9Fa\x05\x8AV[a\x06\xD0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x06\x03V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xE4W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x07\x10W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x074Wa\x074a\x05\x8AV[\x81`@R\x82\x93P\x845\x91Pa\x07H\x82a\x06RV[\x90\x82R` \x84\x015\x90a\x07Z\x82a\x06RV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x84\x82a\x06RV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x9DW_\x80\xFD[Pa\x07\xAA\x85\x82\x86\x01a\x06vV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xC7W_\x80\xFD[a\x07\xCFa\x05\xB7V[\x90P\x815a\x07\xDC\x81a\x06RV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x08\tW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08%Wa\x08%a\x05\x8AV[a\x083\x81\x83`\x05\x1B\x01a\x06\x03V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08QW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xA8W\x81\x81\x8A\x03\x12\x15a\x08kW_\x80\xFD[a\x08sa\x05\xB7V[\x815a\x08~\x81a\x06RV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x97\x81a\x06RV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08UV[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x08\xC5W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xDCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08\xEFW_\x80\xFD[a\x08\xF7a\x05\xE0V[\x825\x82\x81\x11\x15a\t\x05W_\x80\xFD[a\t\x11\x87\x82\x86\x01a\x07\0V[\x82RPa\t!\x86` \x85\x01a\x07\xB7V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\t7W_\x80\xFD[a\tC\x87\x82\x86\x01a\x07\xFAV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\tZW_\x80\xFD[a\tf\x87\x82\x86\x01a\x06vV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\t\xE5W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\x9CV[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\n\x03W_\x80\xFD[\x825a\n\x0E\x81a\x06RV[\x91P` \x83\x015a\n\x1E\x81a\x06RV[\x80\x91PP\x92P\x92\x90PV[_\x80_``\x84\x86\x03\x12\x15a\n;W_\x80\xFD[\x835a\nF\x81a\x06RV[\x92P` \x84\x015a\nV\x81a\x06RV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\nwW_\x80\xFD[\x815a\n\x82\x81a\x06RV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n\xFAWa\n\xFAa\n\xB6V[\x92\x91PPV[_\x82a\x0B3W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\n\xFAWa\n\xFAa\n\xB6V[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x0B{Wa\x0B{a\n\xB6V[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x82\xD8\x1F\xBB\xB4\xE8\xF1\x8D\x9B\xBEr\x07L\x0B\t\xF0\x97\x7F%u\xA0\xDA\x011\x02\xD3\xDB\xB5\x94\x83\x02\x1FdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKFEECONTROLLER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockFeeController(::ethers::contract::Contract); - impl ::core::clone::Clone for MockFeeController { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockFeeController { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockFeeController { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockFeeController { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockFeeController)) - .field(&self.address()) - .finish() - } - } - impl MockFeeController { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKFEECONTROLLER_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKFEECONTROLLER_ABI.clone(), - MOCKFEECONTROLLER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `feeRecipient` (0x46904840) function - pub fn fee_recipient( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([70, 144, 72, 64], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `fees` (0x9b9ac2cb) function - pub fn fees( - &self, - token_in: ::ethers::core::types::Address, - token_out: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([155, 154, 194, 203], (token_in, token_out)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getFeeOutputs` (0x8aa6cf03) function - pub fn get_fee_outputs( - &self, - order: ResolvedOrder, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec, - > { - self.0 - .method_hash([138, 166, 207, 3], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setFee` (0xdc7e98df) function - pub fn set_fee( - &self, - token_in: ::ethers::core::types::Address, - token_out: ::ethers::core::types::Address, - fee: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([220, 126, 152, 223], (token_in, token_out, fee)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for MockFeeController { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `feeRecipient` function with signature `feeRecipient()` and selector `0x46904840` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeRecipient", abi = "feeRecipient()")] - pub struct FeeRecipientCall; - ///Container type for all input parameters for the `fees` function with signature `fees(address,address)` and selector `0x9b9ac2cb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "fees", abi = "fees(address,address)")] - pub struct FeesCall { - pub token_in: ::ethers::core::types::Address, - pub token_out: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getFeeOutputs` function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "getFeeOutputs", - abi = "getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))" - )] - pub struct GetFeeOutputsCall { - pub order: ResolvedOrder, - } - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `setFee` function with signature `setFee(address,address,uint256)` and selector `0xdc7e98df` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setFee", abi = "setFee(address,address,uint256)")] - pub struct SetFeeCall { - pub token_in: ::ethers::core::types::Address, - pub token_out: ::ethers::core::types::Address, - pub fee: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockFeeControllerCalls { - FeeRecipient(FeeRecipientCall), - Fees(FeesCall), - GetFeeOutputs(GetFeeOutputsCall), - Owner(OwnerCall), - SetFee(SetFeeCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for MockFeeControllerCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeRecipient(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Fees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::GetFeeOutputs(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetFee(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockFeeControllerCalls { - fn encode(self) -> Vec { - match self { - Self::FeeRecipient(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Fees(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::GetFeeOutputs(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetFee(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockFeeControllerCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FeeRecipient(element) => ::core::fmt::Display::fmt(element, f), - Self::Fees(element) => ::core::fmt::Display::fmt(element, f), - Self::GetFeeOutputs(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::SetFee(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockFeeControllerCalls { - fn from(value: FeeRecipientCall) -> Self { - Self::FeeRecipient(value) - } - } - impl ::core::convert::From for MockFeeControllerCalls { - fn from(value: FeesCall) -> Self { - Self::Fees(value) - } - } - impl ::core::convert::From for MockFeeControllerCalls { - fn from(value: GetFeeOutputsCall) -> Self { - Self::GetFeeOutputs(value) - } - } - impl ::core::convert::From for MockFeeControllerCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for MockFeeControllerCalls { - fn from(value: SetFeeCall) -> Self { - Self::SetFee(value) - } - } - impl ::core::convert::From for MockFeeControllerCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeRecipient` function with signature `feeRecipient()` and selector `0x46904840` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeRecipientReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `fees` function with signature `fees(address,address)` and selector `0x9b9ac2cb` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeesReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getFeeOutputs` function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct GetFeeOutputsReturn { - pub result: ::std::vec::Vec, - } - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/mock_fee_controller_duplicates.rs b/crates/bindings-uniswapx/src/mock_fee_controller_duplicates.rs deleted file mode 100644 index 3caa1db..0000000 --- a/crates/bindings-uniswapx/src/mock_fee_controller_duplicates.rs +++ /dev/null @@ -1,751 +0,0 @@ -pub use mock_fee_controller_duplicates::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_fee_controller_duplicates { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_feeRecipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("feeRecipient"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeRecipient"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("fees"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("fees"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenIn"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ERC20"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenOut"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("getFeeOutputs"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getFeeOutputs"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("result"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct OutputToken[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setFee"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setFee"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenIn"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ERC20"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenOut"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("fee"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKFEECONTROLLERDUPLICATES_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\x0B\xD98\x03\x80a\x0B\xD9\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\x7FV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xACV[_` \x82\x84\x03\x12\x15a\0\x8FW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xA5W_\x80\xFD[\x93\x92PPPV[`\x80Qa\x0B\x0Fa\0\xCA_9_\x81\x81`x\x01Ra\x02\xD0\x01Ra\x0B\x0F_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0MW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x03W\x80c\xDC~\x98\xDF\x14a\x01;W\x80c\xF2\xFD\xE3\x8B\x14a\x01PW_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x08\x1FV[a\x01cV[`@Qa\0\xBB\x91\x90a\x08\xEAV[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01-a\x01\x116`\x04a\t\\V[`\x01` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[a\x01Na\x01I6`\x04a\t\x93V[a\x03HV[\0[a\x01Na\x01^6`\x04a\t\xD1V[a\x04\x05V[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x83Wa\x01\x83a\x04\xF4V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xEBW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA1W\x90P[P` \x83\x01QQ\x90\x91P_\x80[\x84`@\x01QQ\x81\x10\x15a\x03?W_\x85`@\x01Q\x82\x81Q\x81\x10a\x02\x1CWa\x02\x1Ca\t\xF3V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16_\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x035W_a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x7FWa\x02\x7Fa\t\xF3V[` \x02` \x01\x01Q` \x01Qa\x02\x95\x91\x90a\nMV[a\x02\x9F\x91\x90a\njV[\x90P`@Q\x80``\x01`@R\x80\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x87\x86\x81Q\x81\x10a\x03\x1AWa\x03\x1Aa\t\xF3V[` \x02` \x01\x01\x81\x90RP\x84\x80a\x030\x90a\n\xA2V[\x95PPP[PP`\x01\x01a\x01\xF8V[P\x82RP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xCDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\x85W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xC4V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05DWa\x05Da\x04\xF4V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05DWa\x05Da\x04\xF4V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xB4Wa\x05\xB4a\x04\xF4V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\xDDW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x05\xEFW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\tWa\x06\ta\x04\xF4V[a\x06:` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05mV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06NW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06zW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\x9EWa\x06\x9Ea\x04\xF4V[\x81`@R\x82\x93P\x845\x91Pa\x06\xB2\x82a\x05\xBCV[\x90\x82R` \x84\x015\x90a\x06\xC4\x82a\x05\xBCV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06\xEE\x82a\x05\xBCV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x07W_\x80\xFD[Pa\x07\x14\x85\x82\x86\x01a\x05\xE0V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x071W_\x80\xFD[a\x079a\x05!V[\x90P\x815a\x07F\x81a\x05\xBCV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07sW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x8FWa\x07\x8Fa\x04\xF4V[a\x07\x9D\x81\x83`\x05\x1B\x01a\x05mV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xBBW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\x12W\x81\x81\x8A\x03\x12\x15a\x07\xD5W_\x80\xFD[a\x07\xDDa\x05!V[\x815a\x07\xE8\x81a\x05\xBCV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x01\x81a\x05\xBCV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xBFV[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x08/W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08FW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08YW_\x80\xFD[a\x08aa\x05JV[\x825\x82\x81\x11\x15a\x08oW_\x80\xFD[a\x08{\x87\x82\x86\x01a\x06jV[\x82RPa\x08\x8B\x86` \x85\x01a\x07!V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x08\xA1W_\x80\xFD[a\x08\xAD\x87\x82\x86\x01a\x07dV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\xC4W_\x80\xFD[a\x08\xD0\x87\x82\x86\x01a\x05\xE0V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\tOW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\x06V[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\tmW_\x80\xFD[\x825a\tx\x81a\x05\xBCV[\x91P` \x83\x015a\t\x88\x81a\x05\xBCV[\x80\x91PP\x92P\x92\x90PV[_\x80_``\x84\x86\x03\x12\x15a\t\xA5W_\x80\xFD[\x835a\t\xB0\x81a\x05\xBCV[\x92P` \x84\x015a\t\xC0\x81a\x05\xBCV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\t\xE1W_\x80\xFD[\x815a\t\xEC\x81a\x05\xBCV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\ndWa\nda\n V[\x92\x91PPV[_\x82a\n\x9DW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\n\xD2Wa\n\xD2a\n V[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 `+S\xD5 \xB2\xE1YO\x96O\xDE\xDE\xD2E\xEB\xFE)\xCD\xA6X\xF78\xDD\x07\x99\xBB\x11h\xE2\xE9\x14dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKFEECONTROLLERDUPLICATES_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0MW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x03W\x80c\xDC~\x98\xDF\x14a\x01;W\x80c\xF2\xFD\xE3\x8B\x14a\x01PW_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x08\x1FV[a\x01cV[`@Qa\0\xBB\x91\x90a\x08\xEAV[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01-a\x01\x116`\x04a\t\\V[`\x01` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[a\x01Na\x01I6`\x04a\t\x93V[a\x03HV[\0[a\x01Na\x01^6`\x04a\t\xD1V[a\x04\x05V[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x83Wa\x01\x83a\x04\xF4V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xEBW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA1W\x90P[P` \x83\x01QQ\x90\x91P_\x80[\x84`@\x01QQ\x81\x10\x15a\x03?W_\x85`@\x01Q\x82\x81Q\x81\x10a\x02\x1CWa\x02\x1Ca\t\xF3V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16_\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x035W_a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x7FWa\x02\x7Fa\t\xF3V[` \x02` \x01\x01Q` \x01Qa\x02\x95\x91\x90a\nMV[a\x02\x9F\x91\x90a\njV[\x90P`@Q\x80``\x01`@R\x80\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x87\x86\x81Q\x81\x10a\x03\x1AWa\x03\x1Aa\t\xF3V[` \x02` \x01\x01\x81\x90RP\x84\x80a\x030\x90a\n\xA2V[\x95PPP[PP`\x01\x01a\x01\xF8V[P\x82RP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xCDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\x85W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xC4V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05DWa\x05Da\x04\xF4V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05DWa\x05Da\x04\xF4V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xB4Wa\x05\xB4a\x04\xF4V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\xDDW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x05\xEFW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\tWa\x06\ta\x04\xF4V[a\x06:` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05mV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06NW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06zW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\x9EWa\x06\x9Ea\x04\xF4V[\x81`@R\x82\x93P\x845\x91Pa\x06\xB2\x82a\x05\xBCV[\x90\x82R` \x84\x015\x90a\x06\xC4\x82a\x05\xBCV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06\xEE\x82a\x05\xBCV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x07W_\x80\xFD[Pa\x07\x14\x85\x82\x86\x01a\x05\xE0V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x071W_\x80\xFD[a\x079a\x05!V[\x90P\x815a\x07F\x81a\x05\xBCV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07sW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x8FWa\x07\x8Fa\x04\xF4V[a\x07\x9D\x81\x83`\x05\x1B\x01a\x05mV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xBBW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\x12W\x81\x81\x8A\x03\x12\x15a\x07\xD5W_\x80\xFD[a\x07\xDDa\x05!V[\x815a\x07\xE8\x81a\x05\xBCV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x01\x81a\x05\xBCV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xBFV[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x08/W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08FW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08YW_\x80\xFD[a\x08aa\x05JV[\x825\x82\x81\x11\x15a\x08oW_\x80\xFD[a\x08{\x87\x82\x86\x01a\x06jV[\x82RPa\x08\x8B\x86` \x85\x01a\x07!V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x08\xA1W_\x80\xFD[a\x08\xAD\x87\x82\x86\x01a\x07dV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\xC4W_\x80\xFD[a\x08\xD0\x87\x82\x86\x01a\x05\xE0V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\tOW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\x06V[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\tmW_\x80\xFD[\x825a\tx\x81a\x05\xBCV[\x91P` \x83\x015a\t\x88\x81a\x05\xBCV[\x80\x91PP\x92P\x92\x90PV[_\x80_``\x84\x86\x03\x12\x15a\t\xA5W_\x80\xFD[\x835a\t\xB0\x81a\x05\xBCV[\x92P` \x84\x015a\t\xC0\x81a\x05\xBCV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\t\xE1W_\x80\xFD[\x815a\t\xEC\x81a\x05\xBCV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\ndWa\nda\n V[\x92\x91PPV[_\x82a\n\x9DW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\n\xD2Wa\n\xD2a\n V[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 `+S\xD5 \xB2\xE1YO\x96O\xDE\xDE\xD2E\xEB\xFE)\xCD\xA6X\xF78\xDD\x07\x99\xBB\x11h\xE2\xE9\x14dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKFEECONTROLLERDUPLICATES_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockFeeControllerDuplicates(::ethers::contract::Contract); - impl ::core::clone::Clone for MockFeeControllerDuplicates { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockFeeControllerDuplicates { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockFeeControllerDuplicates { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockFeeControllerDuplicates { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockFeeControllerDuplicates)) - .field(&self.address()) - .finish() - } - } - impl MockFeeControllerDuplicates { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKFEECONTROLLERDUPLICATES_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKFEECONTROLLERDUPLICATES_ABI.clone(), - MOCKFEECONTROLLERDUPLICATES_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `feeRecipient` (0x46904840) function - pub fn fee_recipient( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([70, 144, 72, 64], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `fees` (0x9b9ac2cb) function - pub fn fees( - &self, - token_in: ::ethers::core::types::Address, - token_out: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([155, 154, 194, 203], (token_in, token_out)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getFeeOutputs` (0x8aa6cf03) function - pub fn get_fee_outputs( - &self, - order: ResolvedOrder, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec, - > { - self.0 - .method_hash([138, 166, 207, 3], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setFee` (0xdc7e98df) function - pub fn set_fee( - &self, - token_in: ::ethers::core::types::Address, - token_out: ::ethers::core::types::Address, - fee: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([220, 126, 152, 223], (token_in, token_out, fee)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for MockFeeControllerDuplicates { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `feeRecipient` function with signature `feeRecipient()` and selector `0x46904840` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeRecipient", abi = "feeRecipient()")] - pub struct FeeRecipientCall; - ///Container type for all input parameters for the `fees` function with signature `fees(address,address)` and selector `0x9b9ac2cb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "fees", abi = "fees(address,address)")] - pub struct FeesCall { - pub token_in: ::ethers::core::types::Address, - pub token_out: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getFeeOutputs` function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "getFeeOutputs", - abi = "getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))" - )] - pub struct GetFeeOutputsCall { - pub order: ResolvedOrder, - } - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `setFee` function with signature `setFee(address,address,uint256)` and selector `0xdc7e98df` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setFee", abi = "setFee(address,address,uint256)")] - pub struct SetFeeCall { - pub token_in: ::ethers::core::types::Address, - pub token_out: ::ethers::core::types::Address, - pub fee: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockFeeControllerDuplicatesCalls { - FeeRecipient(FeeRecipientCall), - Fees(FeesCall), - GetFeeOutputs(GetFeeOutputsCall), - Owner(OwnerCall), - SetFee(SetFeeCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for MockFeeControllerDuplicatesCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeRecipient(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Fees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::GetFeeOutputs(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetFee(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockFeeControllerDuplicatesCalls { - fn encode(self) -> Vec { - match self { - Self::FeeRecipient(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Fees(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::GetFeeOutputs(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetFee(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockFeeControllerDuplicatesCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FeeRecipient(element) => ::core::fmt::Display::fmt(element, f), - Self::Fees(element) => ::core::fmt::Display::fmt(element, f), - Self::GetFeeOutputs(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::SetFee(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockFeeControllerDuplicatesCalls { - fn from(value: FeeRecipientCall) -> Self { - Self::FeeRecipient(value) - } - } - impl ::core::convert::From for MockFeeControllerDuplicatesCalls { - fn from(value: FeesCall) -> Self { - Self::Fees(value) - } - } - impl ::core::convert::From for MockFeeControllerDuplicatesCalls { - fn from(value: GetFeeOutputsCall) -> Self { - Self::GetFeeOutputs(value) - } - } - impl ::core::convert::From for MockFeeControllerDuplicatesCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for MockFeeControllerDuplicatesCalls { - fn from(value: SetFeeCall) -> Self { - Self::SetFee(value) - } - } - impl ::core::convert::From - for MockFeeControllerDuplicatesCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeRecipient` function with signature `feeRecipient()` and selector `0x46904840` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeRecipientReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `fees` function with signature `fees(address,address)` and selector `0x9b9ac2cb` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeesReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getFeeOutputs` function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct GetFeeOutputsReturn { - pub result: ::std::vec::Vec, - } - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/mock_fee_controller_input_and_output_fees.rs b/crates/bindings-uniswapx/src/mock_fee_controller_input_and_output_fees.rs deleted file mode 100644 index 2fbf54c..0000000 --- a/crates/bindings-uniswapx/src/mock_fee_controller_input_and_output_fees.rs +++ /dev/null @@ -1,735 +0,0 @@ -pub use mock_fee_controller_input_and_output_fees::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_fee_controller_input_and_output_fees { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_feeRecipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("feeRecipient"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeRecipient"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("fees"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("fees"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenIn"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ERC20"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("getFeeOutputs"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getFeeOutputs"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("result"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct OutputToken[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setFee"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setFee"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenIn"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ERC20"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("fee"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKFEECONTROLLERINPUTANDOUTPUTFEES_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\x0B\xBD8\x03\x80a\x0B\xBD\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\x7FV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xACV[_` \x82\x84\x03\x12\x15a\0\x8FW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xA5W_\x80\xFD[\x93\x92PPPV[`\x80Qa\n\xECa\0\xD1_9_\x81\x81`x\x01R\x81\x81a\x02=\x01Ra\x03a\x01Ra\n\xEC_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\xE5QV\xB5\x11a\0MW\x80c\xE5QV\xB5\x14a\x01\x03W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x18W\x80c\xFA\xAE\xBD!\x14a\x01+W_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x08\x86V[a\x01XV[`@Qa\0\xBB\x91\x90a\tQV[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x16a\x01\x116`\x04a\t\xC3V[a\x03\xBFV[\0[a\x01\x16a\x01&6`\x04a\t\xEDV[a\x04lV[a\x01Ja\x0196`\x04a\t\xEDV[`\x01` R_\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[`@\x80Q`\x02\x80\x82R``\x82\x81\x01\x90\x93R\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01nWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x01\xFB\x90\x84\x90a\n\x0FV[a\x02\x05\x91\x90a\nQV[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83_\x81Q\x81\x10a\x02\x87Wa\x02\x87a\n\x89V[` \x02` \x01\x01\x81\x90RP_\x84`@\x01Q_\x81Q\x81\x10a\x02\xA9Wa\x02\xA9a\n\x89V[` \x02` \x01\x01Q_\x01Q\x90P`\x01_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x92Pa'\x10\x83\x86`@\x01Q_\x81Q\x81\x10a\x03\x10Wa\x03\x10a\n\x89V[` \x02` \x01\x01Q` \x01Qa\x03&\x91\x90a\n\x0FV[a\x030\x91\x90a\nQV[\x91P`@Q\x80``\x01`@R\x80\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x84`\x01\x81Q\x81\x10a\x03\xACWa\x03\xACa\n\x89V[` \x02` \x01\x01\x81\x90RPPPP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16_\x90\x81R`\x01` R`@\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\xECW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04;V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xABWa\x05\xABa\x05[V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xABWa\x05\xABa\x05[V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x06\x1BWa\x06\x1Ba\x05[V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06DW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x06VW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06pWa\x06pa\x05[V[a\x06\xA1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\xD4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xB5W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06\xE1W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x07\x05Wa\x07\x05a\x05[V[\x81`@R\x82\x93P\x845\x91Pa\x07\x19\x82a\x06#V[\x90\x82R` \x84\x015\x90a\x07+\x82a\x06#V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07U\x82a\x06#V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07nW_\x80\xFD[Pa\x07{\x85\x82\x86\x01a\x06GV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\x98W_\x80\xFD[a\x07\xA0a\x05\x88V[\x90P\x815a\x07\xAD\x81a\x06#V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07\xDAW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\xF6Wa\x07\xF6a\x05[V[a\x08\x04\x81\x83`\x05\x1B\x01a\x05\xD4V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08\"W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08yW\x81\x81\x8A\x03\x12\x15a\x08\xA1\x04\xB6?A\xE1\xC5H\xA4>dt\xAD\x8DTJ\xF6wS.\xC9\xF9\xD4dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKFEECONTROLLERINPUTANDOUTPUTFEES_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\xE5QV\xB5\x11a\0MW\x80c\xE5QV\xB5\x14a\x01\x03W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x18W\x80c\xFA\xAE\xBD!\x14a\x01+W_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x08\x86V[a\x01XV[`@Qa\0\xBB\x91\x90a\tQV[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x16a\x01\x116`\x04a\t\xC3V[a\x03\xBFV[\0[a\x01\x16a\x01&6`\x04a\t\xEDV[a\x04lV[a\x01Ja\x0196`\x04a\t\xEDV[`\x01` R_\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[`@\x80Q`\x02\x80\x82R``\x82\x81\x01\x90\x93R\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01nWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x01\xFB\x90\x84\x90a\n\x0FV[a\x02\x05\x91\x90a\nQV[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83_\x81Q\x81\x10a\x02\x87Wa\x02\x87a\n\x89V[` \x02` \x01\x01\x81\x90RP_\x84`@\x01Q_\x81Q\x81\x10a\x02\xA9Wa\x02\xA9a\n\x89V[` \x02` \x01\x01Q_\x01Q\x90P`\x01_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x92Pa'\x10\x83\x86`@\x01Q_\x81Q\x81\x10a\x03\x10Wa\x03\x10a\n\x89V[` \x02` \x01\x01Q` \x01Qa\x03&\x91\x90a\n\x0FV[a\x030\x91\x90a\nQV[\x91P`@Q\x80``\x01`@R\x80\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x84`\x01\x81Q\x81\x10a\x03\xACWa\x03\xACa\n\x89V[` \x02` \x01\x01\x81\x90RPPPP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16_\x90\x81R`\x01` R`@\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\xECW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04;V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xABWa\x05\xABa\x05[V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xABWa\x05\xABa\x05[V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x06\x1BWa\x06\x1Ba\x05[V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06DW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x06VW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06pWa\x06pa\x05[V[a\x06\xA1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\xD4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xB5W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06\xE1W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x07\x05Wa\x07\x05a\x05[V[\x81`@R\x82\x93P\x845\x91Pa\x07\x19\x82a\x06#V[\x90\x82R` \x84\x015\x90a\x07+\x82a\x06#V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07U\x82a\x06#V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07nW_\x80\xFD[Pa\x07{\x85\x82\x86\x01a\x06GV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\x98W_\x80\xFD[a\x07\xA0a\x05\x88V[\x90P\x815a\x07\xAD\x81a\x06#V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07\xDAW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\xF6Wa\x07\xF6a\x05[V[a\x08\x04\x81\x83`\x05\x1B\x01a\x05\xD4V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08\"W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08yW\x81\x81\x8A\x03\x12\x15a\x08\xA1\x04\xB6?A\xE1\xC5H\xA4>dt\xAD\x8DTJ\xF6wS.\xC9\xF9\xD4dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKFEECONTROLLERINPUTANDOUTPUTFEES_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockFeeControllerInputAndOutputFees(::ethers::contract::Contract); - impl ::core::clone::Clone for MockFeeControllerInputAndOutputFees { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockFeeControllerInputAndOutputFees { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockFeeControllerInputAndOutputFees { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockFeeControllerInputAndOutputFees { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockFeeControllerInputAndOutputFees)) - .field(&self.address()) - .finish() - } - } - impl MockFeeControllerInputAndOutputFees { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKFEECONTROLLERINPUTANDOUTPUTFEES_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKFEECONTROLLERINPUTANDOUTPUTFEES_ABI.clone(), - MOCKFEECONTROLLERINPUTANDOUTPUTFEES_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `feeRecipient` (0x46904840) function - pub fn fee_recipient( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([70, 144, 72, 64], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `fees` (0xfaaebd21) function - pub fn fees( - &self, - token_in: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([250, 174, 189, 33], token_in) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getFeeOutputs` (0x8aa6cf03) function - pub fn get_fee_outputs( - &self, - order: ResolvedOrder, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec, - > { - self.0 - .method_hash([138, 166, 207, 3], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setFee` (0xe55156b5) function - pub fn set_fee( - &self, - token_in: ::ethers::core::types::Address, - fee: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([229, 81, 86, 181], (token_in, fee)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for MockFeeControllerInputAndOutputFees { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `feeRecipient` function with signature `feeRecipient()` and selector `0x46904840` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeRecipient", abi = "feeRecipient()")] - pub struct FeeRecipientCall; - ///Container type for all input parameters for the `fees` function with signature `fees(address)` and selector `0xfaaebd21` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "fees", abi = "fees(address)")] - pub struct FeesCall { - pub token_in: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getFeeOutputs` function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "getFeeOutputs", - abi = "getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))" - )] - pub struct GetFeeOutputsCall { - pub order: ResolvedOrder, - } - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `setFee` function with signature `setFee(address,uint256)` and selector `0xe55156b5` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setFee", abi = "setFee(address,uint256)")] - pub struct SetFeeCall { - pub token_in: ::ethers::core::types::Address, - pub fee: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockFeeControllerInputAndOutputFeesCalls { - FeeRecipient(FeeRecipientCall), - Fees(FeesCall), - GetFeeOutputs(GetFeeOutputsCall), - Owner(OwnerCall), - SetFee(SetFeeCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for MockFeeControllerInputAndOutputFeesCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeRecipient(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Fees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::GetFeeOutputs(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetFee(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockFeeControllerInputAndOutputFeesCalls { - fn encode(self) -> Vec { - match self { - Self::FeeRecipient(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Fees(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::GetFeeOutputs(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetFee(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockFeeControllerInputAndOutputFeesCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FeeRecipient(element) => ::core::fmt::Display::fmt(element, f), - Self::Fees(element) => ::core::fmt::Display::fmt(element, f), - Self::GetFeeOutputs(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::SetFee(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From - for MockFeeControllerInputAndOutputFeesCalls { - fn from(value: FeeRecipientCall) -> Self { - Self::FeeRecipient(value) - } - } - impl ::core::convert::From for MockFeeControllerInputAndOutputFeesCalls { - fn from(value: FeesCall) -> Self { - Self::Fees(value) - } - } - impl ::core::convert::From - for MockFeeControllerInputAndOutputFeesCalls { - fn from(value: GetFeeOutputsCall) -> Self { - Self::GetFeeOutputs(value) - } - } - impl ::core::convert::From for MockFeeControllerInputAndOutputFeesCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for MockFeeControllerInputAndOutputFeesCalls { - fn from(value: SetFeeCall) -> Self { - Self::SetFee(value) - } - } - impl ::core::convert::From - for MockFeeControllerInputAndOutputFeesCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeRecipient` function with signature `feeRecipient()` and selector `0x46904840` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeRecipientReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `fees` function with signature `fees(address)` and selector `0xfaaebd21` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeesReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getFeeOutputs` function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct GetFeeOutputsReturn { - pub result: ::std::vec::Vec, - } - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/mock_fee_controller_input_fees.rs b/crates/bindings-uniswapx/src/mock_fee_controller_input_fees.rs deleted file mode 100644 index 6ac62b7..0000000 --- a/crates/bindings-uniswapx/src/mock_fee_controller_input_fees.rs +++ /dev/null @@ -1,733 +0,0 @@ -pub use mock_fee_controller_input_fees::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_fee_controller_input_fees { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_feeRecipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("feeRecipient"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeRecipient"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("fees"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("fees"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenIn"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ERC20"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("getFeeOutputs"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getFeeOutputs"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("result"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct OutputToken[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setFee"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setFee"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenIn"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ERC20"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("fee"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKFEECONTROLLERINPUTFEES_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\n\x918\x03\x80a\n\x91\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\x7FV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xACV[_` \x82\x84\x03\x12\x15a\0\x8FW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xA5W_\x80\xFD[\x93\x92PPPV[`\x80Qa\t\xC7a\0\xCA_9_\x81\x81`x\x01Ra\x02>\x01Ra\t\xC7_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\xE5QV\xB5\x11a\0MW\x80c\xE5QV\xB5\x14a\x01\x03W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x18W\x80c\xFA\xAE\xBD!\x14a\x01+W_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x07aV[a\x01XV[`@Qa\0\xBB\x91\x90a\x08,V[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x16a\x01\x116`\x04a\x08\x9EV[a\x02\x9AV[\0[a\x01\x16a\x01&6`\x04a\x08\xC8V[a\x03GV[a\x01Ja\x0196`\x04a\x08\xC8V[`\x01` R_\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R``\x91\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01oWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x01\xFC\x90\x84\x90a\x08\xEAV[a\x02\x06\x91\x90a\t,V[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83_\x81Q\x81\x10a\x02\x88Wa\x02\x88a\tdV[` \x02` \x01\x01\x81\x90RPPP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\x1FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16_\x90\x81R`\x01` R`@\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xC7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\x16V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x86Wa\x04\x86a\x046V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x86Wa\x04\x86a\x046V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xF6Wa\x04\xF6a\x046V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\x1FW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x051W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05KWa\x05Ka\x046V[a\x05|` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x04\xAFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\x90W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x05\xBCW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x05\xE0Wa\x05\xE0a\x046V[\x81`@R\x82\x93P\x845\x91Pa\x05\xF4\x82a\x04\xFEV[\x90\x82R` \x84\x015\x90a\x06\x06\x82a\x04\xFEV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x060\x82a\x04\xFEV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06IW_\x80\xFD[Pa\x06V\x85\x82\x86\x01a\x05\"V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x06sW_\x80\xFD[a\x06{a\x04cV[\x90P\x815a\x06\x88\x81a\x04\xFEV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x06\xB5W_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\xD1Wa\x06\xD1a\x046V[a\x06\xDF\x81\x83`\x05\x1B\x01a\x04\xAFV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x06\xFDW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07TW\x81\x81\x8A\x03\x12\x15a\x07\x17W_\x80\xFD[a\x07\x1Fa\x04cV[\x815a\x07*\x81a\x04\xFEV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07C\x81a\x04\xFEV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\x01V[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x07qW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\x88W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x07\x9BW_\x80\xFD[a\x07\xA3a\x04\x8CV[\x825\x82\x81\x11\x15a\x07\xB1W_\x80\xFD[a\x07\xBD\x87\x82\x86\x01a\x05\xACV[\x82RPa\x07\xCD\x86` \x85\x01a\x06cV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x07\xE3W_\x80\xFD[a\x07\xEF\x87\x82\x86\x01a\x06\xA6V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\x06W_\x80\xFD[a\x08\x12\x87\x82\x86\x01a\x05\"V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\x08\x91W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\x08HV[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xAFW_\x80\xFD[\x825a\x08\xBA\x81a\x04\xFEV[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a\x08\xD8W_\x80\xFD[\x815a\x08\xE3\x81a\x04\xFEV[\x93\x92PPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\t&W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x92\x91PPV[_\x82a\t_W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD\xFE\xA2dipfsX\"\x12 \xF0>\x87\x03\xC6\x9C\x9A\x95\xB9w 4jr:\xA8\xE4\x84\x92\x82\xB4\x1Cg\xCE\xB5\xEA\xE5S\x1C]l\x81dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKFEECONTROLLERINPUTFEES_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\xE5QV\xB5\x11a\0MW\x80c\xE5QV\xB5\x14a\x01\x03W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x18W\x80c\xFA\xAE\xBD!\x14a\x01+W_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x07aV[a\x01XV[`@Qa\0\xBB\x91\x90a\x08,V[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x16a\x01\x116`\x04a\x08\x9EV[a\x02\x9AV[\0[a\x01\x16a\x01&6`\x04a\x08\xC8V[a\x03GV[a\x01Ja\x0196`\x04a\x08\xC8V[`\x01` R_\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R``\x91\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01oWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x01\xFC\x90\x84\x90a\x08\xEAV[a\x02\x06\x91\x90a\t,V[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83_\x81Q\x81\x10a\x02\x88Wa\x02\x88a\tdV[` \x02` \x01\x01\x81\x90RPPP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\x1FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16_\x90\x81R`\x01` R`@\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xC7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\x16V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x86Wa\x04\x86a\x046V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x86Wa\x04\x86a\x046V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xF6Wa\x04\xF6a\x046V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\x1FW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x051W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05KWa\x05Ka\x046V[a\x05|` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x04\xAFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\x90W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x05\xBCW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x05\xE0Wa\x05\xE0a\x046V[\x81`@R\x82\x93P\x845\x91Pa\x05\xF4\x82a\x04\xFEV[\x90\x82R` \x84\x015\x90a\x06\x06\x82a\x04\xFEV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x060\x82a\x04\xFEV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06IW_\x80\xFD[Pa\x06V\x85\x82\x86\x01a\x05\"V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x06sW_\x80\xFD[a\x06{a\x04cV[\x90P\x815a\x06\x88\x81a\x04\xFEV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x06\xB5W_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\xD1Wa\x06\xD1a\x046V[a\x06\xDF\x81\x83`\x05\x1B\x01a\x04\xAFV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x06\xFDW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07TW\x81\x81\x8A\x03\x12\x15a\x07\x17W_\x80\xFD[a\x07\x1Fa\x04cV[\x815a\x07*\x81a\x04\xFEV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07C\x81a\x04\xFEV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\x01V[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x07qW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\x88W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x07\x9BW_\x80\xFD[a\x07\xA3a\x04\x8CV[\x825\x82\x81\x11\x15a\x07\xB1W_\x80\xFD[a\x07\xBD\x87\x82\x86\x01a\x05\xACV[\x82RPa\x07\xCD\x86` \x85\x01a\x06cV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x07\xE3W_\x80\xFD[a\x07\xEF\x87\x82\x86\x01a\x06\xA6V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\x06W_\x80\xFD[a\x08\x12\x87\x82\x86\x01a\x05\"V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\x08\x91W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\x08HV[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xAFW_\x80\xFD[\x825a\x08\xBA\x81a\x04\xFEV[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a\x08\xD8W_\x80\xFD[\x815a\x08\xE3\x81a\x04\xFEV[\x93\x92PPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\t&W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x92\x91PPV[_\x82a\t_W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD\xFE\xA2dipfsX\"\x12 \xF0>\x87\x03\xC6\x9C\x9A\x95\xB9w 4jr:\xA8\xE4\x84\x92\x82\xB4\x1Cg\xCE\xB5\xEA\xE5S\x1C]l\x81dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKFEECONTROLLERINPUTFEES_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockFeeControllerInputFees(::ethers::contract::Contract); - impl ::core::clone::Clone for MockFeeControllerInputFees { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockFeeControllerInputFees { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockFeeControllerInputFees { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockFeeControllerInputFees { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockFeeControllerInputFees)) - .field(&self.address()) - .finish() - } - } - impl MockFeeControllerInputFees { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKFEECONTROLLERINPUTFEES_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKFEECONTROLLERINPUTFEES_ABI.clone(), - MOCKFEECONTROLLERINPUTFEES_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `feeRecipient` (0x46904840) function - pub fn fee_recipient( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([70, 144, 72, 64], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `fees` (0xfaaebd21) function - pub fn fees( - &self, - token_in: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([250, 174, 189, 33], token_in) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getFeeOutputs` (0x8aa6cf03) function - pub fn get_fee_outputs( - &self, - order: ResolvedOrder, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec, - > { - self.0 - .method_hash([138, 166, 207, 3], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setFee` (0xe55156b5) function - pub fn set_fee( - &self, - token_in: ::ethers::core::types::Address, - fee: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([229, 81, 86, 181], (token_in, fee)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for MockFeeControllerInputFees { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `feeRecipient` function with signature `feeRecipient()` and selector `0x46904840` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeRecipient", abi = "feeRecipient()")] - pub struct FeeRecipientCall; - ///Container type for all input parameters for the `fees` function with signature `fees(address)` and selector `0xfaaebd21` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "fees", abi = "fees(address)")] - pub struct FeesCall { - pub token_in: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getFeeOutputs` function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "getFeeOutputs", - abi = "getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))" - )] - pub struct GetFeeOutputsCall { - pub order: ResolvedOrder, - } - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `setFee` function with signature `setFee(address,uint256)` and selector `0xe55156b5` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setFee", abi = "setFee(address,uint256)")] - pub struct SetFeeCall { - pub token_in: ::ethers::core::types::Address, - pub fee: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockFeeControllerInputFeesCalls { - FeeRecipient(FeeRecipientCall), - Fees(FeesCall), - GetFeeOutputs(GetFeeOutputsCall), - Owner(OwnerCall), - SetFee(SetFeeCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for MockFeeControllerInputFeesCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeRecipient(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Fees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::GetFeeOutputs(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetFee(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockFeeControllerInputFeesCalls { - fn encode(self) -> Vec { - match self { - Self::FeeRecipient(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Fees(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::GetFeeOutputs(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetFee(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockFeeControllerInputFeesCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FeeRecipient(element) => ::core::fmt::Display::fmt(element, f), - Self::Fees(element) => ::core::fmt::Display::fmt(element, f), - Self::GetFeeOutputs(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::SetFee(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockFeeControllerInputFeesCalls { - fn from(value: FeeRecipientCall) -> Self { - Self::FeeRecipient(value) - } - } - impl ::core::convert::From for MockFeeControllerInputFeesCalls { - fn from(value: FeesCall) -> Self { - Self::Fees(value) - } - } - impl ::core::convert::From for MockFeeControllerInputFeesCalls { - fn from(value: GetFeeOutputsCall) -> Self { - Self::GetFeeOutputs(value) - } - } - impl ::core::convert::From for MockFeeControllerInputFeesCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for MockFeeControllerInputFeesCalls { - fn from(value: SetFeeCall) -> Self { - Self::SetFee(value) - } - } - impl ::core::convert::From - for MockFeeControllerInputFeesCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeRecipient` function with signature `feeRecipient()` and selector `0x46904840` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeRecipientReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `fees` function with signature `fees(address)` and selector `0xfaaebd21` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeesReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getFeeOutputs` function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct GetFeeOutputsReturn { - pub result: ::std::vec::Vec, - } - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/mock_fee_controller_zero_fee.rs b/crates/bindings-uniswapx/src/mock_fee_controller_zero_fee.rs deleted file mode 100644 index c7c120d..0000000 --- a/crates/bindings-uniswapx/src/mock_fee_controller_zero_fee.rs +++ /dev/null @@ -1,748 +0,0 @@ -pub use mock_fee_controller_zero_fee::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_fee_controller_zero_fee { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_feeRecipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("feeRecipient"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeRecipient"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("fees"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("fees"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenIn"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ERC20"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenOut"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("getFeeOutputs"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getFeeOutputs"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("result"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct OutputToken[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setFee"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setFee"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenIn"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ERC20"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenOut"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("fee"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKFEECONTROLLERZEROFEE_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\n`8\x03\x80a\n`\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\x7FV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xACV[_` \x82\x84\x03\x12\x15a\0\x8FW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xA5W_\x80\xFD[\x93\x92PPPV[`\x80Qa\t\x9Da\0\xC3_9_`x\x01Ra\t\x9D_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0MW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x03W\x80c\xDC~\x98\xDF\x14a\x01;W\x80c\xF2\xFD\xE3\x8B\x14a\x01PW_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x07fV[a\x01cV[`@Qa\0\xBB\x91\x90a\x081V[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01-a\x01\x116`\x04a\x08\xA3V[`\x01` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[a\x01Na\x01I6`\x04a\x08\xDAV[a\x02\x8FV[\0[a\x01Na\x01^6`\x04a\t\x18V[a\x03LV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R``\x91\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01zW\x90PP\x90P_\x81_\x81Q\x81\x10a\x01\xD9Wa\x01\xD9a\t:V[` \x02` \x01\x01Q_\x01\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RPP_\x81_\x81Q\x81\x10a\x02)Wa\x02)a\t:V[` \x02` \x01\x01Q`@\x01\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RPP_\x81_\x81Q\x81\x10a\x02zWa\x02za\t:V[` \x02` \x01\x01Q` \x01\x81\x81RPP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\x14W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\x0BV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x8BWa\x04\x8Ba\x04;V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x8BWa\x04\x8Ba\x04;V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xFBWa\x04\xFBa\x04;V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05$W_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x056W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05PWa\x05Pa\x04;V[a\x05\x81` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x04\xB4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\x95W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x05\xC1W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x05\xE5Wa\x05\xE5a\x04;V[\x81`@R\x82\x93P\x845\x91Pa\x05\xF9\x82a\x05\x03V[\x90\x82R` \x84\x015\x90a\x06\x0B\x82a\x05\x03V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x065\x82a\x05\x03V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06NW_\x80\xFD[Pa\x06[\x85\x82\x86\x01a\x05'V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x06xW_\x80\xFD[a\x06\x80a\x04hV[\x90P\x815a\x06\x8D\x81a\x05\x03V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x06\xBAW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\xD6Wa\x06\xD6a\x04;V[a\x06\xE4\x81\x83`\x05\x1B\x01a\x04\xB4V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\x02W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07YW\x81\x81\x8A\x03\x12\x15a\x07\x1CW_\x80\xFD[a\x07$a\x04hV[\x815a\x07/\x81a\x05\x03V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07H\x81a\x05\x03V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\x06V[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x07vW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\x8DW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x07\xA0W_\x80\xFD[a\x07\xA8a\x04\x91V[\x825\x82\x81\x11\x15a\x07\xB6W_\x80\xFD[a\x07\xC2\x87\x82\x86\x01a\x05\xB1V[\x82RPa\x07\xD2\x86` \x85\x01a\x06hV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x07\xE8W_\x80\xFD[a\x07\xF4\x87\x82\x86\x01a\x06\xABV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\x0BW_\x80\xFD[a\x08\x17\x87\x82\x86\x01a\x05'V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\x08\x96W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\x08MV[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xB4W_\x80\xFD[\x825a\x08\xBF\x81a\x05\x03V[\x91P` \x83\x015a\x08\xCF\x81a\x05\x03V[\x80\x91PP\x92P\x92\x90PV[_\x80_``\x84\x86\x03\x12\x15a\x08\xECW_\x80\xFD[\x835a\x08\xF7\x81a\x05\x03V[\x92P` \x84\x015a\t\x07\x81a\x05\x03V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\t(W_\x80\xFD[\x815a\t3\x81a\x05\x03V[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD\xFE\xA2dipfsX\"\x12 \xD0\xF7\xD9\x11_\"\xC9\x04^\xD4\xD9\xB6\xAFp\xF5G\xCC\xC7\xFE\x87T\xEFOm\xE2\xDB\xA2\xD6\xF6\xB1\xA0NdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKFEECONTROLLERZEROFEE_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0MW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x03W\x80c\xDC~\x98\xDF\x14a\x01;W\x80c\xF2\xFD\xE3\x8B\x14a\x01PW_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x07fV[a\x01cV[`@Qa\0\xBB\x91\x90a\x081V[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01-a\x01\x116`\x04a\x08\xA3V[`\x01` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[a\x01Na\x01I6`\x04a\x08\xDAV[a\x02\x8FV[\0[a\x01Na\x01^6`\x04a\t\x18V[a\x03LV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R``\x91\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01zW\x90PP\x90P_\x81_\x81Q\x81\x10a\x01\xD9Wa\x01\xD9a\t:V[` \x02` \x01\x01Q_\x01\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RPP_\x81_\x81Q\x81\x10a\x02)Wa\x02)a\t:V[` \x02` \x01\x01Q`@\x01\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RPP_\x81_\x81Q\x81\x10a\x02zWa\x02za\t:V[` \x02` \x01\x01Q` \x01\x81\x81RPP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\x14W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\x0BV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x8BWa\x04\x8Ba\x04;V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x8BWa\x04\x8Ba\x04;V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xFBWa\x04\xFBa\x04;V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05$W_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x056W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05PWa\x05Pa\x04;V[a\x05\x81` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x04\xB4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\x95W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x05\xC1W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x05\xE5Wa\x05\xE5a\x04;V[\x81`@R\x82\x93P\x845\x91Pa\x05\xF9\x82a\x05\x03V[\x90\x82R` \x84\x015\x90a\x06\x0B\x82a\x05\x03V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x065\x82a\x05\x03V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06NW_\x80\xFD[Pa\x06[\x85\x82\x86\x01a\x05'V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x06xW_\x80\xFD[a\x06\x80a\x04hV[\x90P\x815a\x06\x8D\x81a\x05\x03V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x06\xBAW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\xD6Wa\x06\xD6a\x04;V[a\x06\xE4\x81\x83`\x05\x1B\x01a\x04\xB4V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\x02W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07YW\x81\x81\x8A\x03\x12\x15a\x07\x1CW_\x80\xFD[a\x07$a\x04hV[\x815a\x07/\x81a\x05\x03V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07H\x81a\x05\x03V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\x06V[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x07vW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\x8DW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x07\xA0W_\x80\xFD[a\x07\xA8a\x04\x91V[\x825\x82\x81\x11\x15a\x07\xB6W_\x80\xFD[a\x07\xC2\x87\x82\x86\x01a\x05\xB1V[\x82RPa\x07\xD2\x86` \x85\x01a\x06hV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x07\xE8W_\x80\xFD[a\x07\xF4\x87\x82\x86\x01a\x06\xABV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\x0BW_\x80\xFD[a\x08\x17\x87\x82\x86\x01a\x05'V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\x08\x96W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\x08MV[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xB4W_\x80\xFD[\x825a\x08\xBF\x81a\x05\x03V[\x91P` \x83\x015a\x08\xCF\x81a\x05\x03V[\x80\x91PP\x92P\x92\x90PV[_\x80_``\x84\x86\x03\x12\x15a\x08\xECW_\x80\xFD[\x835a\x08\xF7\x81a\x05\x03V[\x92P` \x84\x015a\t\x07\x81a\x05\x03V[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\t(W_\x80\xFD[\x815a\t3\x81a\x05\x03V[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD\xFE\xA2dipfsX\"\x12 \xD0\xF7\xD9\x11_\"\xC9\x04^\xD4\xD9\xB6\xAFp\xF5G\xCC\xC7\xFE\x87T\xEFOm\xE2\xDB\xA2\xD6\xF6\xB1\xA0NdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKFEECONTROLLERZEROFEE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockFeeControllerZeroFee(::ethers::contract::Contract); - impl ::core::clone::Clone for MockFeeControllerZeroFee { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockFeeControllerZeroFee { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockFeeControllerZeroFee { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockFeeControllerZeroFee { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockFeeControllerZeroFee)) - .field(&self.address()) - .finish() - } - } - impl MockFeeControllerZeroFee { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKFEECONTROLLERZEROFEE_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKFEECONTROLLERZEROFEE_ABI.clone(), - MOCKFEECONTROLLERZEROFEE_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `feeRecipient` (0x46904840) function - pub fn fee_recipient( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([70, 144, 72, 64], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `fees` (0x9b9ac2cb) function - pub fn fees( - &self, - token_in: ::ethers::core::types::Address, - token_out: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([155, 154, 194, 203], (token_in, token_out)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getFeeOutputs` (0x8aa6cf03) function - pub fn get_fee_outputs( - &self, - p0: ResolvedOrder, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec, - > { - self.0 - .method_hash([138, 166, 207, 3], (p0,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setFee` (0xdc7e98df) function - pub fn set_fee( - &self, - token_in: ::ethers::core::types::Address, - token_out: ::ethers::core::types::Address, - fee: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([220, 126, 152, 223], (token_in, token_out, fee)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for MockFeeControllerZeroFee { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `feeRecipient` function with signature `feeRecipient()` and selector `0x46904840` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeRecipient", abi = "feeRecipient()")] - pub struct FeeRecipientCall; - ///Container type for all input parameters for the `fees` function with signature `fees(address,address)` and selector `0x9b9ac2cb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "fees", abi = "fees(address,address)")] - pub struct FeesCall { - pub token_in: ::ethers::core::types::Address, - pub token_out: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getFeeOutputs` function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "getFeeOutputs", - abi = "getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))" - )] - pub struct GetFeeOutputsCall(pub ResolvedOrder); - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `setFee` function with signature `setFee(address,address,uint256)` and selector `0xdc7e98df` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setFee", abi = "setFee(address,address,uint256)")] - pub struct SetFeeCall { - pub token_in: ::ethers::core::types::Address, - pub token_out: ::ethers::core::types::Address, - pub fee: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockFeeControllerZeroFeeCalls { - FeeRecipient(FeeRecipientCall), - Fees(FeesCall), - GetFeeOutputs(GetFeeOutputsCall), - Owner(OwnerCall), - SetFee(SetFeeCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for MockFeeControllerZeroFeeCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeRecipient(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Fees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::GetFeeOutputs(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetFee(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockFeeControllerZeroFeeCalls { - fn encode(self) -> Vec { - match self { - Self::FeeRecipient(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Fees(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::GetFeeOutputs(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetFee(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockFeeControllerZeroFeeCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FeeRecipient(element) => ::core::fmt::Display::fmt(element, f), - Self::Fees(element) => ::core::fmt::Display::fmt(element, f), - Self::GetFeeOutputs(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::SetFee(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockFeeControllerZeroFeeCalls { - fn from(value: FeeRecipientCall) -> Self { - Self::FeeRecipient(value) - } - } - impl ::core::convert::From for MockFeeControllerZeroFeeCalls { - fn from(value: FeesCall) -> Self { - Self::Fees(value) - } - } - impl ::core::convert::From for MockFeeControllerZeroFeeCalls { - fn from(value: GetFeeOutputsCall) -> Self { - Self::GetFeeOutputs(value) - } - } - impl ::core::convert::From for MockFeeControllerZeroFeeCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for MockFeeControllerZeroFeeCalls { - fn from(value: SetFeeCall) -> Self { - Self::SetFee(value) - } - } - impl ::core::convert::From for MockFeeControllerZeroFeeCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeRecipient` function with signature `feeRecipient()` and selector `0x46904840` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeRecipientReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `fees` function with signature `fees(address,address)` and selector `0x9b9ac2cb` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeesReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getFeeOutputs` function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct GetFeeOutputsReturn { - pub result: ::std::vec::Vec, - } - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/mock_fill_contract.rs b/crates/bindings-uniswapx/src/mock_fill_contract.rs deleted file mode 100644 index 7fda139..0000000 --- a/crates/bindings-uniswapx/src/mock_fill_contract.rs +++ /dev/null @@ -1,441 +0,0 @@ -pub use mock_fill_contract::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_fill_contract { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_reactor"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("reactorCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("reactorCallback"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("resolvedOrders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKFILLCONTRACT_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\x0C\x848\x03\x80a\x0C\x84\x839\x81\x01`@\x81\x90Ra\0.\x91a\0?V[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0lV[_` \x82\x84\x03\x12\x15a\0OW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0eW_\x80\xFD[\x93\x92PPPV[`\x80Qa\x0B\xECa\0\x98_9_\x81\x81`\xBB\x01R\x81\x81a\x01`\x01R\x81\x81a\x02s\x01Ra\x02\xE0\x01Ra\x0B\xEC_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\rz\x16\xC3\x14a\0CW\x80c?b\x19.\x14a\0XW\x80cX]\xA6(\x14a\0kW[_\x80\xFD[a\0Va\0Q6`\x04a\x04(V[a\0~V[\0[a\0Va\0f6`\x04a\x04\x97V[a\x01#V[a\0Va\0y6`\x04a\x08\x0EV[a\x01\xC5V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\0\xF2\x90\x85\x90\x85\x90`\x04\x01a\n\x83V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\tW_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x1BW=_\x80>=_\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\x95\x90\x84\x90`\x04\x01a\x0BBV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xACW_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xBEW=_\x80>=_\xFD[PPPPPV[_[\x82Q\x81\x10\x15a\x03\x8DW_[\x83\x82\x81Q\x81\x10a\x01\xE4Wa\x01\xE4a\x0BjV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\x84W_\x84\x83\x81Q\x81\x10a\x02\x0BWa\x02\x0Ba\x0BjV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x02(Wa\x02(a\x0BjV[` \x02` \x01\x01Q\x90Pa\x02i\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x02\xA1Wa\x02\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82` \x01Qa\x03\x92V[a\x03{V[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x03UW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03y\x91\x90a\x0B\x97V[P[P`\x01\x01a\x01\xD2V[P`\x01\x01a\x01\xC7V[PPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x03\xE8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x03\xEDV[``\x91P[PP\x90P\x80a\x03\x8DW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80` \x83\x85\x03\x12\x15a\x049W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04PW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04cW_\x80\xFD[\x815\x81\x81\x11\x15a\x04qW_\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\x85W_\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[_` \x82\x84\x03\x12\x15a\x04\xA7W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xBDW_\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x04\xCEW_\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05%Wa\x05%a\x04\xD5V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05%Wa\x05%a\x04\xD5V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x95Wa\x05\x95a\x04\xD5V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xB6Wa\x05\xB6a\x04\xD5V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\xE1W_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x05\xF3W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\rWa\x06\ra\x04\xD5V[a\x06>` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05NV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06RW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06~W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xA2Wa\x06\xA2a\x04\xD5V[\x81`@R\x82\x93P\x845\x91Pa\x06\xB6\x82a\x05\xC0V[\x90\x82R` \x84\x015\x90a\x06\xC8\x82a\x05\xC0V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06\xF2\x82a\x05\xC0V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x0BW_\x80\xFD[Pa\x07\x18\x85\x82\x86\x01a\x05\xE4V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x075W_\x80\xFD[a\x07=a\x05\x02V[\x90P\x815a\x07J\x81a\x05\xC0V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07wW_\x80\xFD[\x815` a\x07\x8Ca\x07\x87\x83a\x05\x9DV[a\x05NV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xAAW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\x01W\x81\x81\x8A\x03\x12\x15a\x07\xC4W_\x80\xFD[a\x07\xCCa\x05\x02V[\x815a\x07\xD7\x81a\x05\xC0V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07\xF0\x81a\x05\xC0V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xAEV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\x1FW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x086W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08IW_\x80\xFD[\x815` a\x08Ya\x07\x87\x83a\x05\x9DV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08wW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t^W\x805\x86\x81\x11\x15a\x08\x91W_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08\xC5W_\x80\xFD[a\x08\xCDa\x05+V[\x86\x83\x015\x89\x81\x11\x15a\x08\xDDW_\x80\xFD[a\x08\xEB\x8F\x89\x83\x87\x01\x01a\x06nV[\x82RPa\x08\xFB\x8E`@\x85\x01a\x07%V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\x10W_\x80\xFD[a\t\x1E\x8F\x89\x83\x87\x01\x01a\x07hV[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t5W_\x80\xFD[a\tC\x8F\x89\x83\x87\x01\x01a\x05\xE4V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08{V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\ttW_\x80\xFD[Pa\t\x81\x85\x82\x86\x01a\x05\xE4V[\x91PP\x92P\x92\x90PV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\t\xBEW_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\xDDW_\x80\xFD[\x806\x03\x82\x13\x15a\t\xEBW_\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\nD\x82\x83a\t\x8BV[`@\x85Ra\nV`@\x86\x01\x82\x84a\t\xF2V[\x91PPa\nf` \x84\x01\x84a\t\x8BV[\x85\x83\x03` \x87\x01Ra\ny\x83\x82\x84a\t\xF2V[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R_```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83[\x86\x81\x10\x15a\x0B!W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x896\x03\x01\x81\x12a\n\xFFW_\x80\xFD[a\x0B\x0B\x85\x8A\x83\x01a\n9V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\n\x9FV[PPP\x82\x81\x03` \x84\x01Ra\x0B9\x81_\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R_a\x0BT`@\x83\x01\x84a\n9V[\x82\x81\x03` \x93\x84\x01R_\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x0B\xA7W_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x04\xCEW_\x80\xFD\xFE\xA2dipfsX\"\x12 #a\x94\"\x95\x18\x98U:j\x9B\xCB\x95\x1B `\xED\x0C\x1Am)^ke\xF9\x80\xF4\xD7*\xF1L\x06dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKFILLCONTRACT_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\rz\x16\xC3\x14a\0CW\x80c?b\x19.\x14a\0XW\x80cX]\xA6(\x14a\0kW[_\x80\xFD[a\0Va\0Q6`\x04a\x04(V[a\0~V[\0[a\0Va\0f6`\x04a\x04\x97V[a\x01#V[a\0Va\0y6`\x04a\x08\x0EV[a\x01\xC5V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\0\xF2\x90\x85\x90\x85\x90`\x04\x01a\n\x83V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\tW_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x1BW=_\x80>=_\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\x95\x90\x84\x90`\x04\x01a\x0BBV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xACW_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xBEW=_\x80>=_\xFD[PPPPPV[_[\x82Q\x81\x10\x15a\x03\x8DW_[\x83\x82\x81Q\x81\x10a\x01\xE4Wa\x01\xE4a\x0BjV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\x84W_\x84\x83\x81Q\x81\x10a\x02\x0BWa\x02\x0Ba\x0BjV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x02(Wa\x02(a\x0BjV[` \x02` \x01\x01Q\x90Pa\x02i\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x02\xA1Wa\x02\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82` \x01Qa\x03\x92V[a\x03{V[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x03UW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03y\x91\x90a\x0B\x97V[P[P`\x01\x01a\x01\xD2V[P`\x01\x01a\x01\xC7V[PPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x03\xE8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x03\xEDV[``\x91P[PP\x90P\x80a\x03\x8DW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80` \x83\x85\x03\x12\x15a\x049W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04PW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04cW_\x80\xFD[\x815\x81\x81\x11\x15a\x04qW_\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\x85W_\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[_` \x82\x84\x03\x12\x15a\x04\xA7W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xBDW_\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x04\xCEW_\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05%Wa\x05%a\x04\xD5V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05%Wa\x05%a\x04\xD5V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x95Wa\x05\x95a\x04\xD5V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xB6Wa\x05\xB6a\x04\xD5V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\xE1W_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x05\xF3W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\rWa\x06\ra\x04\xD5V[a\x06>` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05NV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06RW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06~W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xA2Wa\x06\xA2a\x04\xD5V[\x81`@R\x82\x93P\x845\x91Pa\x06\xB6\x82a\x05\xC0V[\x90\x82R` \x84\x015\x90a\x06\xC8\x82a\x05\xC0V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06\xF2\x82a\x05\xC0V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x0BW_\x80\xFD[Pa\x07\x18\x85\x82\x86\x01a\x05\xE4V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x075W_\x80\xFD[a\x07=a\x05\x02V[\x90P\x815a\x07J\x81a\x05\xC0V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07wW_\x80\xFD[\x815` a\x07\x8Ca\x07\x87\x83a\x05\x9DV[a\x05NV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xAAW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\x01W\x81\x81\x8A\x03\x12\x15a\x07\xC4W_\x80\xFD[a\x07\xCCa\x05\x02V[\x815a\x07\xD7\x81a\x05\xC0V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07\xF0\x81a\x05\xC0V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xAEV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\x1FW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x086W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08IW_\x80\xFD[\x815` a\x08Ya\x07\x87\x83a\x05\x9DV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08wW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t^W\x805\x86\x81\x11\x15a\x08\x91W_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08\xC5W_\x80\xFD[a\x08\xCDa\x05+V[\x86\x83\x015\x89\x81\x11\x15a\x08\xDDW_\x80\xFD[a\x08\xEB\x8F\x89\x83\x87\x01\x01a\x06nV[\x82RPa\x08\xFB\x8E`@\x85\x01a\x07%V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\x10W_\x80\xFD[a\t\x1E\x8F\x89\x83\x87\x01\x01a\x07hV[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t5W_\x80\xFD[a\tC\x8F\x89\x83\x87\x01\x01a\x05\xE4V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08{V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\ttW_\x80\xFD[Pa\t\x81\x85\x82\x86\x01a\x05\xE4V[\x91PP\x92P\x92\x90PV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\t\xBEW_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\xDDW_\x80\xFD[\x806\x03\x82\x13\x15a\t\xEBW_\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\nD\x82\x83a\t\x8BV[`@\x85Ra\nV`@\x86\x01\x82\x84a\t\xF2V[\x91PPa\nf` \x84\x01\x84a\t\x8BV[\x85\x83\x03` \x87\x01Ra\ny\x83\x82\x84a\t\xF2V[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R_```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83[\x86\x81\x10\x15a\x0B!W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x896\x03\x01\x81\x12a\n\xFFW_\x80\xFD[a\x0B\x0B\x85\x8A\x83\x01a\n9V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\n\x9FV[PPP\x82\x81\x03` \x84\x01Ra\x0B9\x81_\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R_a\x0BT`@\x83\x01\x84a\n9V[\x82\x81\x03` \x93\x84\x01R_\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x0B\xA7W_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x04\xCEW_\x80\xFD\xFE\xA2dipfsX\"\x12 #a\x94\"\x95\x18\x98U:j\x9B\xCB\x95\x1B `\xED\x0C\x1Am)^ke\xF9\x80\xF4\xD7*\xF1L\x06dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKFILLCONTRACT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockFillContract(::ethers::contract::Contract); - impl ::core::clone::Clone for MockFillContract { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockFillContract { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockFillContract { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockFillContract { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockFillContract)) - .field(&self.address()) - .finish() - } - } - impl MockFillContract { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKFILLCONTRACT_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKFILLCONTRACT_ABI.clone(), - MOCKFILLCONTRACT_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `execute` (0x3f62192e) function - pub fn execute( - &self, - order: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 98, 25, 46], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x0d7a16c3) function - pub fn execute_batch( - &self, - orders: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 122, 22, 195], orders) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `reactorCallback` (0x585da628) function - pub fn reactor_callback( - &self, - resolved_orders: ::std::vec::Vec, - p1: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([88, 93, 166, 40], (resolved_orders, p1)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for MockFillContract { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes))` and selector `0x3f62192e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes))")] - pub struct ExecuteCall { - pub order: SignedOrder, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((bytes,bytes)[])")] - pub struct ExecuteBatchCall { - pub orders: ::std::vec::Vec, - } - ///Container type for all input parameters for the `reactorCallback` function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "reactorCallback", - abi = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)" - )] - pub struct ReactorCallbackCall { - pub resolved_orders: ::std::vec::Vec, - pub p1: ::ethers::core::types::Bytes, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockFillContractCalls { - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ReactorCallback(ReactorCallbackCall), - } - impl ::ethers::core::abi::AbiDecode for MockFillContractCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ReactorCallback(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockFillContractCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ReactorCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockFillContractCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ReactorCallback(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockFillContractCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for MockFillContractCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From for MockFillContractCalls { - fn from(value: ReactorCallbackCall) -> Self { - Self::ReactorCallback(value) - } - } -} diff --git a/crates/bindings-uniswapx/src/mock_fill_contract_double_execution.rs b/crates/bindings-uniswapx/src/mock_fill_contract_double_execution.rs deleted file mode 100644 index c26b6ff..0000000 --- a/crates/bindings-uniswapx/src/mock_fill_contract_double_execution.rs +++ /dev/null @@ -1,393 +0,0 @@ -pub use mock_fill_contract_double_execution::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_fill_contract_double_execution { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_reactor1"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_reactor2"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("other"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("reactorCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("reactorCallback"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("resolvedOrders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("otherSignedOrder"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKFILLCONTRACTDOUBLEEXECUTION_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xC0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\r?8\x03\x80a\r?\x839\x81\x01`@\x81\x90Ra\0.\x91a\0`V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x80R\x16`\xA0Ra\0\x91V[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0[W_\x80\xFD[\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\0qW_\x80\xFD[a\0z\x83a\0EV[\x91Pa\0\x88` \x84\x01a\0EV[\x90P\x92P\x92\x90PV[`\x80Q`\xA0Qa\x0C\x87a\0\xB8_9_a\x02\xD1\x01R_\x81\x81`b\x01Ra\x02\xA9\x01Ra\x0C\x87_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\x004W_5`\xE0\x1C\x80cP\xDF-@\x14a\08W\x80cX]\xA6(\x14a\0MW[_\x80\xFD[a\0Ka\0F6`\x04a\x03\xF0V[a\0`V[\0[a\0Ka\0[6`\x04a\x07\x91V[a\x01\x0BV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x83\x83`@Q` \x01a\0\xAE\x91\x90a\t\xFCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDA\x92\x91\x90a\n\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\0\xF1W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x03W=_\x80>=_\xFD[PPPPPPV[_[\x82Q\x81\x10\x15a\x02\x91W_[\x83\x82\x81Q\x81\x10a\x01*Wa\x01*a\n\xADV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x02\x88W_\x84\x83\x81Q\x81\x10a\x01QWa\x01Qa\n\xADV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x01nWa\x01na\n\xADV[` \x02` \x01\x01Q\x90Pa\x01\xAF\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x01\xC7Wa\x01\xC23\x82` \x01Qa\x03?V[a\x02\x7FV[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x02YW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02}\x91\x90a\n\xDAV[P[P`\x01\x01a\x01\x18V[P`\x01\x01a\x01\rV[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x163\x03a\x03;W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x82\x80` \x01\x90Q\x81\x01\x90a\x03\x1F\x91\x90a\x0BCV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDA\x91\x90a\x0B\xE4V[PPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x03\x95W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x03\x9AV[``\x91P[PP\x90P\x80a\x03\xD5W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_`@\x82\x84\x03\x12\x15a\x03\xEAW_\x80\xFD[P\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x04\x01W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\x18W_\x80\xFD[a\x04$\x86\x83\x87\x01a\x03\xDAV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x049W_\x80\xFD[Pa\x04F\x85\x82\x86\x01a\x03\xDAV[\x91PP\x92P\x92\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xA0Wa\x04\xA0a\x04PV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xA0Wa\x04\xA0a\x04PV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x10Wa\x05\x10a\x04PV[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x051Wa\x051a\x04PV[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\\W_\x80\xFD[PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05xWa\x05xa\x04PV[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x05\xB3W_\x80\xFD[\x815a\x05\xC6a\x05\xC1\x82a\x05_V[a\x04\xC9V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xDAW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06\x06W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06*Wa\x06*a\x04PV[\x81`@R\x82\x93P\x845\x91Pa\x06>\x82a\x05;V[\x90\x82R` \x84\x015\x90a\x06P\x82a\x05;V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06z\x82a\x05;V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06\x93W_\x80\xFD[Pa\x06\xA0\x85\x82\x86\x01a\x05\xA4V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x06\xBDW_\x80\xFD[a\x06\xC5a\x04}V[\x90P\x815a\x06\xD2\x81a\x05;V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x06\xFFW_\x80\xFD[\x815` a\x07\x0Fa\x05\xC1\x83a\x05\x18V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07-W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07\x84W\x81\x81\x8A\x03\x12\x15a\x07GW_\x80\xFD[a\x07Oa\x04}V[\x815a\x07Z\x81a\x05;V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07s\x81a\x05;V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x071V[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x07\xA2W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xB9W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x07\xCCW_\x80\xFD[\x815` a\x07\xDCa\x05\xC1\x83a\x05\x18V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x07\xFAW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x08\xE1W\x805\x86\x81\x11\x15a\x08\x14W_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08HW_\x80\xFD[a\x08Pa\x04\xA6V[\x86\x83\x015\x89\x81\x11\x15a\x08`W_\x80\xFD[a\x08n\x8F\x89\x83\x87\x01\x01a\x05\xF6V[\x82RPa\x08~\x8E`@\x85\x01a\x06\xADV[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\x08\x93W_\x80\xFD[a\x08\xA1\x8F\x89\x83\x87\x01\x01a\x06\xF0V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\x08\xB8W_\x80\xFD[a\x08\xC6\x8F\x89\x83\x87\x01\x01a\x05\xA4V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x07\xFEV[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x08\xF7W_\x80\xFD[Pa\x04F\x85\x82\x86\x01a\x05\xA4V[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\t7W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\tVW_\x80\xFD[\x806\x03\x82\x13\x15a\tdW_\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\t\xBD\x82\x83a\t\x04V[`@\x85Ra\t\xCF`@\x86\x01\x82\x84a\tkV[\x91PPa\t\xDF` \x84\x01\x84a\t\x04V[\x85\x83\x03` \x87\x01Ra\t\xF2\x83\x82\x84a\tkV[\x96\x95PPPPPPV[` \x81R_a\n\x0E` \x83\x01\x84a\t\xB2V[\x93\x92PPPV[_[\x83\x81\x10\x15a\n/W\x81\x81\x01Q\x83\x82\x01R` \x01a\n\x17V[PP_\x91\x01RV[_\x81Q\x80\x84Ra\nN\x81` \x86\x01` \x86\x01a\n\x15V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`@\x81R_a\n\x92`@\x83\x01\x85a\t\xB2V[\x82\x81\x03` \x84\x01Ra\n\xA4\x81\x85a\n7V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\n\xEAW_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\n\x0EW_\x80\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x08W_\x80\xFD[\x81Qa\x0B\x16a\x05\xC1\x82a\x05_V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B*W_\x80\xFD[a\x0B;\x82` \x83\x01` \x87\x01a\n\x15V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a\x0BSW_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0BjW_\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0B}W_\x80\xFD[`@Q`@\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x0B\x98Wa\x0B\x98a\x04PV[`@R\x82Q\x82\x81\x11\x15a\x0B\xA9W_\x80\xFD[a\x0B\xB5\x87\x82\x86\x01a\n\xF9V[\x82RP` \x83\x01Q\x82\x81\x11\x15a\x0B\xC9W_\x80\xFD[a\x0B\xD5\x87\x82\x86\x01a\n\xF9V[` \x83\x01RP\x95\x94PPPPPV[`@\x81R_\x82Q`@\x80\x84\x01Ra\x0B\xFE`\x80\x84\x01\x82a\n7V[\x90P` \x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\x0C9\x82\x82a\n7V[\x84\x81\x03` \x95\x86\x01R_\x81R\x93\x90\x93\x01\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \xF4q\xBFk\xB1\x87\xF6b\xB2\xF5dh+\x8A9/\xBD\x99\xF3Z)s\xA99]\xCEU\xA4\xBE\t\xC4\xD3dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKFILLCONTRACTDOUBLEEXECUTION_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\x004W_5`\xE0\x1C\x80cP\xDF-@\x14a\08W\x80cX]\xA6(\x14a\0MW[_\x80\xFD[a\0Ka\0F6`\x04a\x03\xF0V[a\0`V[\0[a\0Ka\0[6`\x04a\x07\x91V[a\x01\x0BV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x83\x83`@Q` \x01a\0\xAE\x91\x90a\t\xFCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDA\x92\x91\x90a\n\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\0\xF1W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x03W=_\x80>=_\xFD[PPPPPPV[_[\x82Q\x81\x10\x15a\x02\x91W_[\x83\x82\x81Q\x81\x10a\x01*Wa\x01*a\n\xADV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x02\x88W_\x84\x83\x81Q\x81\x10a\x01QWa\x01Qa\n\xADV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x01nWa\x01na\n\xADV[` \x02` \x01\x01Q\x90Pa\x01\xAF\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x01\xC7Wa\x01\xC23\x82` \x01Qa\x03?V[a\x02\x7FV[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x02YW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02}\x91\x90a\n\xDAV[P[P`\x01\x01a\x01\x18V[P`\x01\x01a\x01\rV[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x163\x03a\x03;W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x82\x80` \x01\x90Q\x81\x01\x90a\x03\x1F\x91\x90a\x0BCV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDA\x91\x90a\x0B\xE4V[PPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x03\x95W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x03\x9AV[``\x91P[PP\x90P\x80a\x03\xD5W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_`@\x82\x84\x03\x12\x15a\x03\xEAW_\x80\xFD[P\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x04\x01W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\x18W_\x80\xFD[a\x04$\x86\x83\x87\x01a\x03\xDAV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x049W_\x80\xFD[Pa\x04F\x85\x82\x86\x01a\x03\xDAV[\x91PP\x92P\x92\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xA0Wa\x04\xA0a\x04PV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xA0Wa\x04\xA0a\x04PV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x10Wa\x05\x10a\x04PV[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x051Wa\x051a\x04PV[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\\W_\x80\xFD[PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05xWa\x05xa\x04PV[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x05\xB3W_\x80\xFD[\x815a\x05\xC6a\x05\xC1\x82a\x05_V[a\x04\xC9V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xDAW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06\x06W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06*Wa\x06*a\x04PV[\x81`@R\x82\x93P\x845\x91Pa\x06>\x82a\x05;V[\x90\x82R` \x84\x015\x90a\x06P\x82a\x05;V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06z\x82a\x05;V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06\x93W_\x80\xFD[Pa\x06\xA0\x85\x82\x86\x01a\x05\xA4V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x06\xBDW_\x80\xFD[a\x06\xC5a\x04}V[\x90P\x815a\x06\xD2\x81a\x05;V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x06\xFFW_\x80\xFD[\x815` a\x07\x0Fa\x05\xC1\x83a\x05\x18V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07-W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07\x84W\x81\x81\x8A\x03\x12\x15a\x07GW_\x80\xFD[a\x07Oa\x04}V[\x815a\x07Z\x81a\x05;V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07s\x81a\x05;V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x071V[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x07\xA2W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xB9W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x07\xCCW_\x80\xFD[\x815` a\x07\xDCa\x05\xC1\x83a\x05\x18V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x07\xFAW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x08\xE1W\x805\x86\x81\x11\x15a\x08\x14W_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08HW_\x80\xFD[a\x08Pa\x04\xA6V[\x86\x83\x015\x89\x81\x11\x15a\x08`W_\x80\xFD[a\x08n\x8F\x89\x83\x87\x01\x01a\x05\xF6V[\x82RPa\x08~\x8E`@\x85\x01a\x06\xADV[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\x08\x93W_\x80\xFD[a\x08\xA1\x8F\x89\x83\x87\x01\x01a\x06\xF0V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\x08\xB8W_\x80\xFD[a\x08\xC6\x8F\x89\x83\x87\x01\x01a\x05\xA4V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x07\xFEV[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x08\xF7W_\x80\xFD[Pa\x04F\x85\x82\x86\x01a\x05\xA4V[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\t7W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\tVW_\x80\xFD[\x806\x03\x82\x13\x15a\tdW_\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\t\xBD\x82\x83a\t\x04V[`@\x85Ra\t\xCF`@\x86\x01\x82\x84a\tkV[\x91PPa\t\xDF` \x84\x01\x84a\t\x04V[\x85\x83\x03` \x87\x01Ra\t\xF2\x83\x82\x84a\tkV[\x96\x95PPPPPPV[` \x81R_a\n\x0E` \x83\x01\x84a\t\xB2V[\x93\x92PPPV[_[\x83\x81\x10\x15a\n/W\x81\x81\x01Q\x83\x82\x01R` \x01a\n\x17V[PP_\x91\x01RV[_\x81Q\x80\x84Ra\nN\x81` \x86\x01` \x86\x01a\n\x15V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`@\x81R_a\n\x92`@\x83\x01\x85a\t\xB2V[\x82\x81\x03` \x84\x01Ra\n\xA4\x81\x85a\n7V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\n\xEAW_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\n\x0EW_\x80\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x08W_\x80\xFD[\x81Qa\x0B\x16a\x05\xC1\x82a\x05_V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B*W_\x80\xFD[a\x0B;\x82` \x83\x01` \x87\x01a\n\x15V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a\x0BSW_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0BjW_\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0B}W_\x80\xFD[`@Q`@\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x0B\x98Wa\x0B\x98a\x04PV[`@R\x82Q\x82\x81\x11\x15a\x0B\xA9W_\x80\xFD[a\x0B\xB5\x87\x82\x86\x01a\n\xF9V[\x82RP` \x83\x01Q\x82\x81\x11\x15a\x0B\xC9W_\x80\xFD[a\x0B\xD5\x87\x82\x86\x01a\n\xF9V[` \x83\x01RP\x95\x94PPPPPV[`@\x81R_\x82Q`@\x80\x84\x01Ra\x0B\xFE`\x80\x84\x01\x82a\n7V[\x90P` \x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\x0C9\x82\x82a\n7V[\x84\x81\x03` \x95\x86\x01R_\x81R\x93\x90\x93\x01\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \xF4q\xBFk\xB1\x87\xF6b\xB2\xF5dh+\x8A9/\xBD\x99\xF3Z)s\xA99]\xCEU\xA4\xBE\t\xC4\xD3dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKFILLCONTRACTDOUBLEEXECUTION_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockFillContractDoubleExecution(::ethers::contract::Contract); - impl ::core::clone::Clone for MockFillContractDoubleExecution { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockFillContractDoubleExecution { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockFillContractDoubleExecution { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockFillContractDoubleExecution { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockFillContractDoubleExecution)) - .field(&self.address()) - .finish() - } - } - impl MockFillContractDoubleExecution { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKFILLCONTRACTDOUBLEEXECUTION_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKFILLCONTRACTDOUBLEEXECUTION_ABI.clone(), - MOCKFILLCONTRACTDOUBLEEXECUTION_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `execute` (0x50df2d40) function - pub fn execute( - &self, - order: SignedOrder, - other: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([80, 223, 45, 64], (order, other)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `reactorCallback` (0x585da628) function - pub fn reactor_callback( - &self, - resolved_orders: ::std::vec::Vec, - other_signed_order: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([88, 93, 166, 40], (resolved_orders, other_signed_order)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for MockFillContractDoubleExecution { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes),(bytes,bytes))` and selector `0x50df2d40` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes),(bytes,bytes))")] - pub struct ExecuteCall { - pub order: SignedOrder, - pub other: SignedOrder, - } - ///Container type for all input parameters for the `reactorCallback` function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "reactorCallback", - abi = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)" - )] - pub struct ReactorCallbackCall { - pub resolved_orders: ::std::vec::Vec, - pub other_signed_order: ::ethers::core::types::Bytes, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockFillContractDoubleExecutionCalls { - Execute(ExecuteCall), - ReactorCallback(ReactorCallbackCall), - } - impl ::ethers::core::abi::AbiDecode for MockFillContractDoubleExecutionCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ReactorCallback(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockFillContractDoubleExecutionCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ReactorCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockFillContractDoubleExecutionCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ReactorCallback(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockFillContractDoubleExecutionCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From - for MockFillContractDoubleExecutionCalls { - fn from(value: ReactorCallbackCall) -> Self { - Self::ReactorCallback(value) - } - } -} diff --git a/crates/bindings-uniswapx/src/mock_fill_contract_with_output_override.rs b/crates/bindings-uniswapx/src/mock_fill_contract_with_output_override.rs deleted file mode 100644 index 6ca2cf1..0000000 --- a/crates/bindings-uniswapx/src/mock_fill_contract_with_output_override.rs +++ /dev/null @@ -1,507 +0,0 @@ -pub use mock_fill_contract_with_output_override::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_fill_contract_with_output_override { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_reactor"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("reactorCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("reactorCallback"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("resolvedOrders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setOutputAmount"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setOutputAmount"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKFILLCONTRACTWITHOUTPUTOVERRIDE_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\x0C\xAE8\x03\x80a\x0C\xAE\x839\x81\x01`@\x81\x90Ra\0.\x91a\0?V[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0lV[_` \x82\x84\x03\x12\x15a\0OW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0eW_\x80\xFD[\x93\x92PPPV[`\x80Qa\x0C\x16a\0\x98_9_\x81\x81`\xD8\x01R\x81\x81a\x01}\x01R\x81\x81a\x02\x89\x01Ra\x02\xF2\x01Ra\x0C\x16_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0JW_5`\xE0\x1C\x80c\rz\x16\xC3\x14a\0NW\x80c$\xF9\xC44\x14a\0cW\x80c?b\x19.\x14a\0uW\x80cX]\xA6(\x14a\0\x88W[_\x80\xFD[a\0aa\0\\6`\x04a\x04;V[a\0\x9BV[\0[a\0aa\0q6`\x04a\x04\xAAV[_UV[a\0aa\0\x836`\x04a\x04\xC1V[a\x01@V[a\0aa\0\x966`\x04a\x088V[a\x01\xE2V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x01\x0F\x90\x85\x90\x85\x90`\x04\x01a\n\xADV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01&W_\x80\xFD[PZ\xF1\x15\x80\x15a\x018W=_\x80>=_\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\xB2\x90\x84\x90`\x04\x01a\x0BlV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC9W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xDBW=_\x80>=_\xFD[PPPPPV[_[\x82Q\x81\x10\x15a\x03\xA0W_[\x83\x82\x81Q\x81\x10a\x02\x01Wa\x02\x01a\x0B\x94V[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\x97W_\x84\x83\x81Q\x81\x10a\x02(Wa\x02(a\x0B\x94V[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x02EWa\x02Ea\x0B\x94V[` \x02` \x01\x01Q\x90P_\x80T_\x14a\x02_W_Ta\x02eV[\x81` \x01Q[\x82Q\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x02\xB3Wa\x02\xAE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82a\x03\xA5V[a\x03\x8DV[\x81Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x03gW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x8B\x91\x90a\x0B\xC1V[P[PP`\x01\x01a\x01\xEFV[P`\x01\x01a\x01\xE4V[PPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x03\xFBW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x04\0V[``\x91P[PP\x90P\x80a\x03\xA0W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80` \x83\x85\x03\x12\x15a\x04LW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04cW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04vW_\x80\xFD[\x815\x81\x81\x11\x15a\x04\x84W_\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\x98W_\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[_` \x82\x84\x03\x12\x15a\x04\xBAW_\x80\xFD[P5\x91\x90PV[_` \x82\x84\x03\x12\x15a\x04\xD1W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE7W_\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x04\xF8W_\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05OWa\x05Oa\x04\xFFV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05OWa\x05Oa\x04\xFFV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xBFWa\x05\xBFa\x04\xFFV[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xE0Wa\x05\xE0a\x04\xFFV[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x0BW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x06\x1DW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x067Wa\x067a\x04\xFFV[a\x06h` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05xV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06|W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06\xA8W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xCCWa\x06\xCCa\x04\xFFV[\x81`@R\x82\x93P\x845\x91Pa\x06\xE0\x82a\x05\xEAV[\x90\x82R` \x84\x015\x90a\x06\xF2\x82a\x05\xEAV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x1C\x82a\x05\xEAV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x075W_\x80\xFD[Pa\x07B\x85\x82\x86\x01a\x06\x0EV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07_W_\x80\xFD[a\x07ga\x05,V[\x90P\x815a\x07t\x81a\x05\xEAV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07\xA1W_\x80\xFD[\x815` a\x07\xB6a\x07\xB1\x83a\x05\xC7V[a\x05xV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xD4W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08+W\x81\x81\x8A\x03\x12\x15a\x07\xEEW_\x80\xFD[a\x07\xF6a\x05,V[\x815a\x08\x01\x81a\x05\xEAV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x1A\x81a\x05\xEAV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xD8V[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08IW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08`W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08sW_\x80\xFD[\x815` a\x08\x83a\x07\xB1\x83a\x05\xC7V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08\xA1W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\x88W\x805\x86\x81\x11\x15a\x08\xBBW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08\xEFW_\x80\xFD[a\x08\xF7a\x05UV[\x86\x83\x015\x89\x81\x11\x15a\t\x07W_\x80\xFD[a\t\x15\x8F\x89\x83\x87\x01\x01a\x06\x98V[\x82RPa\t%\x8E`@\x85\x01a\x07OV[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t:W_\x80\xFD[a\tH\x8F\x89\x83\x87\x01\x01a\x07\x92V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t_W_\x80\xFD[a\tm\x8F\x89\x83\x87\x01\x01a\x06\x0EV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08\xA5V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t\x9EW_\x80\xFD[Pa\t\xAB\x85\x82\x86\x01a\x06\x0EV[\x91PP\x92P\x92\x90PV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\t\xE8W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\x07W_\x80\xFD[\x806\x03\x82\x13\x15a\n\x15W_\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\nn\x82\x83a\t\xB5V[`@\x85Ra\n\x80`@\x86\x01\x82\x84a\n\x1CV[\x91PPa\n\x90` \x84\x01\x84a\t\xB5V[\x85\x83\x03` \x87\x01Ra\n\xA3\x83\x82\x84a\n\x1CV[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R_```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83[\x86\x81\x10\x15a\x0BKW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x896\x03\x01\x81\x12a\x0B)W_\x80\xFD[a\x0B5\x85\x8A\x83\x01a\ncV[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\n\xC9V[PPP\x82\x81\x03` \x84\x01Ra\x0Bc\x81_\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R_a\x0B~`@\x83\x01\x84a\ncV[\x82\x81\x03` \x93\x84\x01R_\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x0B\xD1W_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x04\xF8W_\x80\xFD\xFE\xA2dipfsX\"\x12 \xA8\xC5\xD7\x1C\xA3h\x7F%[t\x16u\"\x1A\xCF\x8C\xF6\x82\xD8\xA0\xDE\xE3\xF4L\xEA,\xB6\x94\n\xEE\n\xFAdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKFILLCONTRACTWITHOUTPUTOVERRIDE_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0JW_5`\xE0\x1C\x80c\rz\x16\xC3\x14a\0NW\x80c$\xF9\xC44\x14a\0cW\x80c?b\x19.\x14a\0uW\x80cX]\xA6(\x14a\0\x88W[_\x80\xFD[a\0aa\0\\6`\x04a\x04;V[a\0\x9BV[\0[a\0aa\0q6`\x04a\x04\xAAV[_UV[a\0aa\0\x836`\x04a\x04\xC1V[a\x01@V[a\0aa\0\x966`\x04a\x088V[a\x01\xE2V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x01\x0F\x90\x85\x90\x85\x90`\x04\x01a\n\xADV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01&W_\x80\xFD[PZ\xF1\x15\x80\x15a\x018W=_\x80>=_\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\xB2\x90\x84\x90`\x04\x01a\x0BlV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC9W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xDBW=_\x80>=_\xFD[PPPPPV[_[\x82Q\x81\x10\x15a\x03\xA0W_[\x83\x82\x81Q\x81\x10a\x02\x01Wa\x02\x01a\x0B\x94V[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\x97W_\x84\x83\x81Q\x81\x10a\x02(Wa\x02(a\x0B\x94V[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x02EWa\x02Ea\x0B\x94V[` \x02` \x01\x01Q\x90P_\x80T_\x14a\x02_W_Ta\x02eV[\x81` \x01Q[\x82Q\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x02\xB3Wa\x02\xAE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82a\x03\xA5V[a\x03\x8DV[\x81Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x03gW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x8B\x91\x90a\x0B\xC1V[P[PP`\x01\x01a\x01\xEFV[P`\x01\x01a\x01\xE4V[PPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x03\xFBW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x04\0V[``\x91P[PP\x90P\x80a\x03\xA0W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80` \x83\x85\x03\x12\x15a\x04LW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04cW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04vW_\x80\xFD[\x815\x81\x81\x11\x15a\x04\x84W_\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\x98W_\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[_` \x82\x84\x03\x12\x15a\x04\xBAW_\x80\xFD[P5\x91\x90PV[_` \x82\x84\x03\x12\x15a\x04\xD1W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE7W_\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x04\xF8W_\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05OWa\x05Oa\x04\xFFV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05OWa\x05Oa\x04\xFFV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xBFWa\x05\xBFa\x04\xFFV[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xE0Wa\x05\xE0a\x04\xFFV[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x0BW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x06\x1DW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x067Wa\x067a\x04\xFFV[a\x06h` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05xV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06|W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06\xA8W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xCCWa\x06\xCCa\x04\xFFV[\x81`@R\x82\x93P\x845\x91Pa\x06\xE0\x82a\x05\xEAV[\x90\x82R` \x84\x015\x90a\x06\xF2\x82a\x05\xEAV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x1C\x82a\x05\xEAV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x075W_\x80\xFD[Pa\x07B\x85\x82\x86\x01a\x06\x0EV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07_W_\x80\xFD[a\x07ga\x05,V[\x90P\x815a\x07t\x81a\x05\xEAV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07\xA1W_\x80\xFD[\x815` a\x07\xB6a\x07\xB1\x83a\x05\xC7V[a\x05xV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xD4W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08+W\x81\x81\x8A\x03\x12\x15a\x07\xEEW_\x80\xFD[a\x07\xF6a\x05,V[\x815a\x08\x01\x81a\x05\xEAV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x1A\x81a\x05\xEAV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xD8V[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08IW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08`W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08sW_\x80\xFD[\x815` a\x08\x83a\x07\xB1\x83a\x05\xC7V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08\xA1W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\x88W\x805\x86\x81\x11\x15a\x08\xBBW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08\xEFW_\x80\xFD[a\x08\xF7a\x05UV[\x86\x83\x015\x89\x81\x11\x15a\t\x07W_\x80\xFD[a\t\x15\x8F\x89\x83\x87\x01\x01a\x06\x98V[\x82RPa\t%\x8E`@\x85\x01a\x07OV[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t:W_\x80\xFD[a\tH\x8F\x89\x83\x87\x01\x01a\x07\x92V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t_W_\x80\xFD[a\tm\x8F\x89\x83\x87\x01\x01a\x06\x0EV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08\xA5V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t\x9EW_\x80\xFD[Pa\t\xAB\x85\x82\x86\x01a\x06\x0EV[\x91PP\x92P\x92\x90PV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\t\xE8W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\x07W_\x80\xFD[\x806\x03\x82\x13\x15a\n\x15W_\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\nn\x82\x83a\t\xB5V[`@\x85Ra\n\x80`@\x86\x01\x82\x84a\n\x1CV[\x91PPa\n\x90` \x84\x01\x84a\t\xB5V[\x85\x83\x03` \x87\x01Ra\n\xA3\x83\x82\x84a\n\x1CV[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R_```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83[\x86\x81\x10\x15a\x0BKW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x896\x03\x01\x81\x12a\x0B)W_\x80\xFD[a\x0B5\x85\x8A\x83\x01a\ncV[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\n\xC9V[PPP\x82\x81\x03` \x84\x01Ra\x0Bc\x81_\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R_a\x0B~`@\x83\x01\x84a\ncV[\x82\x81\x03` \x93\x84\x01R_\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x0B\xD1W_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x04\xF8W_\x80\xFD\xFE\xA2dipfsX\"\x12 \xA8\xC5\xD7\x1C\xA3h\x7F%[t\x16u\"\x1A\xCF\x8C\xF6\x82\xD8\xA0\xDE\xE3\xF4L\xEA,\xB6\x94\n\xEE\n\xFAdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKFILLCONTRACTWITHOUTPUTOVERRIDE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockFillContractWithOutputOverride(::ethers::contract::Contract); - impl ::core::clone::Clone for MockFillContractWithOutputOverride { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockFillContractWithOutputOverride { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockFillContractWithOutputOverride { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockFillContractWithOutputOverride { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockFillContractWithOutputOverride)) - .field(&self.address()) - .finish() - } - } - impl MockFillContractWithOutputOverride { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKFILLCONTRACTWITHOUTPUTOVERRIDE_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKFILLCONTRACTWITHOUTPUTOVERRIDE_ABI.clone(), - MOCKFILLCONTRACTWITHOUTPUTOVERRIDE_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `execute` (0x3f62192e) function - pub fn execute( - &self, - order: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 98, 25, 46], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x0d7a16c3) function - pub fn execute_batch( - &self, - orders: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 122, 22, 195], orders) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `reactorCallback` (0x585da628) function - pub fn reactor_callback( - &self, - resolved_orders: ::std::vec::Vec, - p1: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([88, 93, 166, 40], (resolved_orders, p1)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setOutputAmount` (0x24f9c434) function - pub fn set_output_amount( - &self, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([36, 249, 196, 52], amount) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for MockFillContractWithOutputOverride { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes))` and selector `0x3f62192e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes))")] - pub struct ExecuteCall { - pub order: SignedOrder, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((bytes,bytes)[])")] - pub struct ExecuteBatchCall { - pub orders: ::std::vec::Vec, - } - ///Container type for all input parameters for the `reactorCallback` function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "reactorCallback", - abi = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)" - )] - pub struct ReactorCallbackCall { - pub resolved_orders: ::std::vec::Vec, - pub p1: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `setOutputAmount` function with signature `setOutputAmount(uint256)` and selector `0x24f9c434` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setOutputAmount", abi = "setOutputAmount(uint256)")] - pub struct SetOutputAmountCall { - pub amount: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockFillContractWithOutputOverrideCalls { - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ReactorCallback(ReactorCallbackCall), - SetOutputAmount(SetOutputAmountCall), - } - impl ::ethers::core::abi::AbiDecode for MockFillContractWithOutputOverrideCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ReactorCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetOutputAmount(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockFillContractWithOutputOverrideCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ReactorCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetOutputAmount(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockFillContractWithOutputOverrideCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ReactorCallback(element) => ::core::fmt::Display::fmt(element, f), - Self::SetOutputAmount(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockFillContractWithOutputOverrideCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From - for MockFillContractWithOutputOverrideCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From - for MockFillContractWithOutputOverrideCalls { - fn from(value: ReactorCallbackCall) -> Self { - Self::ReactorCallback(value) - } - } - impl ::core::convert::From - for MockFillContractWithOutputOverrideCalls { - fn from(value: SetOutputAmountCall) -> Self { - Self::SetOutputAmount(value) - } - } -} diff --git a/crates/bindings-uniswapx/src/mock_protocol_fees.rs b/crates/bindings-uniswapx/src/mock_protocol_fees.rs deleted file mode 100644 index fa4dc59..0000000 --- a/crates/bindings-uniswapx/src/mock_protocol_fees.rs +++ /dev/null @@ -1,1052 +0,0 @@ -pub use mock_protocol_fees::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_protocol_fees { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_protocolFeeOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("feeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeController"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "contract IProtocolFeeController", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setProtocolFeeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "setProtocolFeeController", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("takeFees"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("takeFees"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ProtocolFeeControllerSet"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "ProtocolFeeControllerSet", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("oldFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("duplicateToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("recipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("feeToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKPROTOCOLFEES_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\x10\xE18\x03\x80a\x10\xE1\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\x7FV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x83\x92\x83\x92\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PPPa\0\xACV[_` \x82\x84\x03\x12\x15a\0\x8FW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xA5W_\x80\xFD[\x93\x92PPPV[a\x10(\x80a\0\xB9_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0dW_5`\xE0\x1C\x80co\x12\xF4B\x11a\0MW\x80co\x12\xF4B\x14a\0\xC7W\x80c\x8D\xA5\xCB[\x14a\0\xE7W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x06W_\x80\xFD[\x80c-w\x13\x89\x14a\0hW\x80ci\x99\xB3w\x14a\0}W[_\x80\xFD[a\0{a\0v6`\x04a\x08\xC9V[a\x01\x19V[\0[`\x01Ta\0\x9D\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDAa\0\xD56`\x04a\x0C\0V[a\x02$V[`@Qa\0\xBE\x91\x90a\r\x95V[_Ta\0\x9D\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\0{a\x01\x146`\x04a\x08\xC9V[a\x02\x9FV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x01\x9EW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x02\x9B\x82a\x03\x8EV[P\x90V[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\x1FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x01\x95V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x03\xAEWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x04\x04\x90\x85\x90`\x04\x01a\r\x95V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\x1EW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04c\x91\x90\x81\x01\x90a\x0E\xBEV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x04z\x82\x84a\x0F\x87V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\x92Wa\x04\x92a\x08\xEBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\xFAW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xB0W\x90P[P\x90P_[\x83\x81\x10\x15a\x05JW\x85`@\x01Q\x81\x81Q\x81\x10a\x05\x1DWa\x05\x1Da\x0F\xC5V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x057Wa\x057a\x0F\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04\xFFV[P_\x80_[\x84\x81\x10\x15a\x08ZW_\x87\x82\x81Q\x81\x10a\x05jWa\x05ja\x0F\xC5V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x06%W\x88\x81\x81Q\x81\x10a\x05\x90Wa\x05\x90a\x0F\xC5V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x06\x1DW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x01\x95V[`\x01\x01a\x05vV[P_\x80[\x88\x81\x10\x15a\x06\xE2W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x06HWa\x06Ha\x0F\xC5V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x06\xD9W\x85\x15a\x06\xC3W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x06\xD2\x90\x84a\x0F\x87V[\x92P`\x01\x96P[P`\x01\x01a\x06)V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x07[W\x84\x15a\x07BW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x07T\x90\x82a\x0F\x87V[\x90P`\x01\x93P[\x80_\x03a\x07\xAFW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x01\x95V[a\x07\xBD\x81`\x05a'\x10a\x08kV[\x82` \x01Q\x11\x15a\x080W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x01\x95V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x08EWa\x08Ea\x0F\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x05OV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x08\x9EW_\x80\xFD[P\x91\x02\x04\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xC6W_\x80\xFD[PV[_` \x82\x84\x03\x12\x15a\x08\xD9W_\x80\xFD[\x815a\x08\xE4\x81a\x08\xA5V[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t;Wa\t;a\x08\xEBV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t;Wa\t;a\x08\xEBV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t\xABWa\t\xABa\x08\xEBV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\t\xC2W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\xDCWa\t\xDCa\x08\xEBV[a\n\r` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\tdV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\n!W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\nMW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\nqWa\nqa\x08\xEBV[\x81`@R\x82\x93P\x845\x91Pa\n\x85\x82a\x08\xA5V[\x90\x82R` \x84\x015\x90a\n\x97\x82a\x08\xA5V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\n\xC1\x82a\x08\xA5V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\n\xDAW_\x80\xFD[Pa\n\xE7\x85\x82\x86\x01a\t\xB3V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x0B\x04W_\x80\xFD[a\x0B\x0Ca\t\x18V[\x90P\x815a\x0B\x19\x81a\x08\xA5V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0BPWa\x0BPa\x08\xEBV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x0BiW_\x80\xFD[\x815` a\x0B~a\x0By\x83a\x0B7V[a\tdV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0B\x9CW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x0B\xF3W\x81\x81\x8A\x03\x12\x15a\x0B\xB6W_\x80\xFD[a\x0B\xBEa\t\x18V[\x815a\x0B\xC9\x81a\x08\xA5V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x0B\xE2\x81a\x08\xA5V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0B\xA0V[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x0C\x10W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C'W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C:W_\x80\xFD[a\x0CBa\tAV[\x825\x82\x81\x11\x15a\x0CPW_\x80\xFD[a\x0C\\\x87\x82\x86\x01a\n=V[\x82RPa\x0Cl\x86` \x85\x01a\n\xF4V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x0C\x82W_\x80\xFD[a\x0C\x8E\x87\x82\x86\x01a\x0BZV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x0C\xA5W_\x80\xFD[a\x0C\xB1\x87\x82\x86\x01a\t\xB3V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x0C\xEFW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0C\xD3V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\r\x8AW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\r?V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x0E\x10a\x01\xC0\x84\x01\x82a\x0C\xCBV[\x90P` \x84\x01Qa\x0EN`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x0E\x89\x83\x83a\r,V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x0E\xA7\x82\x82a\x0C\xCBV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_` \x80\x83\x85\x03\x12\x15a\x0E\xCFW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xE5W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x0E\xF5W_\x80\xFD[\x80Qa\x0F\x03a\x0By\x82a\x0B7V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a\x0F!W_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a\x0F{W\x80\x85\x8A\x03\x12\x15a\x0F=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04c\x91\x90\x81\x01\x90a\x0E\xBEV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x04z\x82\x84a\x0F\x87V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\x92Wa\x04\x92a\x08\xEBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\xFAW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xB0W\x90P[P\x90P_[\x83\x81\x10\x15a\x05JW\x85`@\x01Q\x81\x81Q\x81\x10a\x05\x1DWa\x05\x1Da\x0F\xC5V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x057Wa\x057a\x0F\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04\xFFV[P_\x80_[\x84\x81\x10\x15a\x08ZW_\x87\x82\x81Q\x81\x10a\x05jWa\x05ja\x0F\xC5V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x06%W\x88\x81\x81Q\x81\x10a\x05\x90Wa\x05\x90a\x0F\xC5V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x06\x1DW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x01\x95V[`\x01\x01a\x05vV[P_\x80[\x88\x81\x10\x15a\x06\xE2W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x06HWa\x06Ha\x0F\xC5V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x06\xD9W\x85\x15a\x06\xC3W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x06\xD2\x90\x84a\x0F\x87V[\x92P`\x01\x96P[P`\x01\x01a\x06)V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x07[W\x84\x15a\x07BW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x07T\x90\x82a\x0F\x87V[\x90P`\x01\x93P[\x80_\x03a\x07\xAFW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x01\x95V[a\x07\xBD\x81`\x05a'\x10a\x08kV[\x82` \x01Q\x11\x15a\x080W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x01\x95V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x08EWa\x08Ea\x0F\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x05OV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x08\x9EW_\x80\xFD[P\x91\x02\x04\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xC6W_\x80\xFD[PV[_` \x82\x84\x03\x12\x15a\x08\xD9W_\x80\xFD[\x815a\x08\xE4\x81a\x08\xA5V[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t;Wa\t;a\x08\xEBV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t;Wa\t;a\x08\xEBV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t\xABWa\t\xABa\x08\xEBV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\t\xC2W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\xDCWa\t\xDCa\x08\xEBV[a\n\r` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\tdV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\n!W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\nMW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\nqWa\nqa\x08\xEBV[\x81`@R\x82\x93P\x845\x91Pa\n\x85\x82a\x08\xA5V[\x90\x82R` \x84\x015\x90a\n\x97\x82a\x08\xA5V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\n\xC1\x82a\x08\xA5V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\n\xDAW_\x80\xFD[Pa\n\xE7\x85\x82\x86\x01a\t\xB3V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x0B\x04W_\x80\xFD[a\x0B\x0Ca\t\x18V[\x90P\x815a\x0B\x19\x81a\x08\xA5V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0BPWa\x0BPa\x08\xEBV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x0BiW_\x80\xFD[\x815` a\x0B~a\x0By\x83a\x0B7V[a\tdV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0B\x9CW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x0B\xF3W\x81\x81\x8A\x03\x12\x15a\x0B\xB6W_\x80\xFD[a\x0B\xBEa\t\x18V[\x815a\x0B\xC9\x81a\x08\xA5V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x0B\xE2\x81a\x08\xA5V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0B\xA0V[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x0C\x10W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C'W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C:W_\x80\xFD[a\x0CBa\tAV[\x825\x82\x81\x11\x15a\x0CPW_\x80\xFD[a\x0C\\\x87\x82\x86\x01a\n=V[\x82RPa\x0Cl\x86` \x85\x01a\n\xF4V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x0C\x82W_\x80\xFD[a\x0C\x8E\x87\x82\x86\x01a\x0BZV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x0C\xA5W_\x80\xFD[a\x0C\xB1\x87\x82\x86\x01a\t\xB3V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x0C\xEFW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0C\xD3V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\r\x8AW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\r?V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x0E\x10a\x01\xC0\x84\x01\x82a\x0C\xCBV[\x90P` \x84\x01Qa\x0EN`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x0E\x89\x83\x83a\r,V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x0E\xA7\x82\x82a\x0C\xCBV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_` \x80\x83\x85\x03\x12\x15a\x0E\xCFW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xE5W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x0E\xF5W_\x80\xFD[\x80Qa\x0F\x03a\x0By\x82a\x0B7V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a\x0F!W_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a\x0F{W\x80\x85\x8A\x03\x12\x15a\x0F(::ethers::contract::Contract); - impl ::core::clone::Clone for MockProtocolFees { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockProtocolFees { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockProtocolFees { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockProtocolFees { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockProtocolFees)) - .field(&self.address()) - .finish() - } - } - impl MockProtocolFees { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKPROTOCOLFEES_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKPROTOCOLFEES_ABI.clone(), - MOCKPROTOCOLFEES_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `feeController` (0x6999b377) function - pub fn fee_controller( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([105, 153, 179, 119], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setProtocolFeeController` (0x2d771389) function - pub fn set_protocol_fee_controller( - &self, - new_fee_controller: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([45, 119, 19, 137], new_fee_controller) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `takeFees` (0x6f12f442) function - pub fn take_fees( - &self, - order: ResolvedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([111, 18, 244, 66], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - ///Gets the contract's `ProtocolFeeControllerSet` event - pub fn protocol_fee_controller_set_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ProtocolFeeControllerSetFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - MockProtocolFeesEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for MockProtocolFees { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `DuplicateFeeOutput` with signature `DuplicateFeeOutput(address)` and selector `0xfff08303` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DuplicateFeeOutput", abi = "DuplicateFeeOutput(address)")] - pub struct DuplicateFeeOutput { - pub duplicate_token: ::ethers::core::types::Address, - } - ///Custom Error type `FeeTooLarge` with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "FeeTooLarge", abi = "FeeTooLarge(address,uint256,address)")] - pub struct FeeTooLarge { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub recipient: ::ethers::core::types::Address, - } - ///Custom Error type `InputAndOutputFees` with signature `InputAndOutputFees()` and selector `0xedc7e2e4` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputFees", abi = "InputAndOutputFees()")] - pub struct InputAndOutputFees; - ///Custom Error type `InvalidFeeToken` with signature `InvalidFeeToken(address)` and selector `0xeddf07f5` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidFeeToken", abi = "InvalidFeeToken(address)")] - pub struct InvalidFeeToken { - pub fee_token: ::ethers::core::types::Address, - } - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockProtocolFeesErrors { - DuplicateFeeOutput(DuplicateFeeOutput), - FeeTooLarge(FeeTooLarge), - InputAndOutputFees(InputAndOutputFees), - InvalidFeeToken(InvalidFeeToken), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for MockProtocolFeesErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DuplicateFeeOutput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeTooLarge(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputFees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidFeeToken(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockProtocolFeesErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::DuplicateFeeOutput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeTooLarge(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputFees(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidFeeToken(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for MockProtocolFeesErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for MockProtocolFeesErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DuplicateFeeOutput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeTooLarge(element) => ::core::fmt::Display::fmt(element, f), - Self::InputAndOutputFees(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidFeeToken(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for MockProtocolFeesErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for MockProtocolFeesErrors { - fn from(value: DuplicateFeeOutput) -> Self { - Self::DuplicateFeeOutput(value) - } - } - impl ::core::convert::From for MockProtocolFeesErrors { - fn from(value: FeeTooLarge) -> Self { - Self::FeeTooLarge(value) - } - } - impl ::core::convert::From for MockProtocolFeesErrors { - fn from(value: InputAndOutputFees) -> Self { - Self::InputAndOutputFees(value) - } - } - impl ::core::convert::From for MockProtocolFeesErrors { - fn from(value: InvalidFeeToken) -> Self { - Self::InvalidFeeToken(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "ProtocolFeeControllerSet", - abi = "ProtocolFeeControllerSet(address,address)" - )] - pub struct ProtocolFeeControllerSetFilter { - pub old_fee_controller: ::ethers::core::types::Address, - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockProtocolFeesEvents { - OwnershipTransferredFilter(OwnershipTransferredFilter), - ProtocolFeeControllerSetFilter(ProtocolFeeControllerSetFilter), - } - impl ::ethers::contract::EthLogDecode for MockProtocolFeesEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) { - return Ok(MockProtocolFeesEvents::OwnershipTransferredFilter(decoded)); - } - if let Ok(decoded) = ProtocolFeeControllerSetFilter::decode_log(log) { - return Ok( - MockProtocolFeesEvents::ProtocolFeeControllerSetFilter(decoded), - ); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for MockProtocolFeesEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ProtocolFeeControllerSetFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for MockProtocolFeesEvents { - fn from(value: OwnershipTransferredFilter) -> Self { - Self::OwnershipTransferredFilter(value) - } - } - impl ::core::convert::From - for MockProtocolFeesEvents { - fn from(value: ProtocolFeeControllerSetFilter) -> Self { - Self::ProtocolFeeControllerSetFilter(value) - } - } - ///Container type for all input parameters for the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeController", abi = "feeController()")] - pub struct FeeControllerCall; - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `setProtocolFeeController` function with signature `setProtocolFeeController(address)` and selector `0x2d771389` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "setProtocolFeeController", - abi = "setProtocolFeeController(address)" - )] - pub struct SetProtocolFeeControllerCall { - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `takeFees` function with signature `takeFees(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x6f12f442` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "takeFees", - abi = "takeFees(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))" - )] - pub struct TakeFeesCall { - pub order: ResolvedOrder, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockProtocolFeesCalls { - FeeController(FeeControllerCall), - Owner(OwnerCall), - SetProtocolFeeController(SetProtocolFeeControllerCall), - TakeFees(TakeFeesCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for MockProtocolFeesCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetProtocolFeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TakeFees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockProtocolFeesCalls { - fn encode(self) -> Vec { - match self { - Self::FeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetProtocolFeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TakeFees(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockProtocolFeesCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FeeController(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::SetProtocolFeeController(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TakeFees(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockProtocolFeesCalls { - fn from(value: FeeControllerCall) -> Self { - Self::FeeController(value) - } - } - impl ::core::convert::From for MockProtocolFeesCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for MockProtocolFeesCalls { - fn from(value: SetProtocolFeeControllerCall) -> Self { - Self::SetProtocolFeeController(value) - } - } - impl ::core::convert::From for MockProtocolFeesCalls { - fn from(value: TakeFeesCall) -> Self { - Self::TakeFees(value) - } - } - impl ::core::convert::From for MockProtocolFeesCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeControllerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `takeFees` function with signature `takeFees(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x6f12f442` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TakeFeesReturn(pub ResolvedOrder); -} diff --git a/crates/bindings-uniswapx/src/mock_resolved_order_lib.rs b/crates/bindings-uniswapx/src/mock_resolved_order_lib.rs deleted file mode 100644 index b05e698..0000000 --- a/crates/bindings-uniswapx/src/mock_resolved_order_lib.rs +++ /dev/null @@ -1,243 +0,0 @@ -pub use mock_resolved_order_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_resolved_order_lib { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("validate"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("validate"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("resolvedOrder"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("InvalidReactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidReactor"), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKRESOLVEDORDERLIB_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x07\x92\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cX\xC9\xED\xBF\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x04\x88V[a\0BV[\0[a\0L\x82\x82a\0PV[PPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\0\xA1W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\0LW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x01\x1D\x90\x84\x90\x86\x90`\x04\x01a\x06.V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x013W_\x80\xFD[PZ\xFA\x15\x80\x15a\x01EW=_\x80>=_\xFD[PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9DWa\x01\x9Da\x01MV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9DWa\x01\x9Da\x01MV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\rWa\x02\ra\x01MV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x026W_\x80\xFD[PV[\x805a\x02D\x81a\x02\x15V[\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x02XW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02rWa\x02ra\x01MV[a\x02\xA3` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x01\xC6V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x02\xB7W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x02\xE3W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x03\x07Wa\x03\x07a\x01MV[\x81`@R\x82\x93P\x845\x91Pa\x03\x1B\x82a\x02\x15V[\x90\x82R` \x84\x015\x90a\x03-\x82a\x02\x15V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x03W\x82a\x02\x15V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x03pW_\x80\xFD[Pa\x03}\x85\x82\x86\x01a\x02IV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x03\x9AW_\x80\xFD[a\x03\xA2a\x01zV[\x90P\x815a\x03\xAF\x81a\x02\x15V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x03\xDCW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x03\xF8Wa\x03\xF8a\x01MV[a\x04\x06\x81\x83`\x05\x1B\x01a\x01\xC6V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x04$W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x04{W\x81\x81\x8A\x03\x12\x15a\x04>W_\x80\xFD[a\x04Fa\x01zV[\x815a\x04Q\x81a\x02\x15V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x04j\x81a\x02\x15V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x04(V[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\x99W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xB0W_\x80\xFD[\x90\x84\x01\x90`\xE0\x82\x87\x03\x12\x15a\x04\xC3W_\x80\xFD[a\x04\xCBa\x01\xA3V[\x825\x82\x81\x11\x15a\x04\xD9W_\x80\xFD[a\x04\xE5\x88\x82\x86\x01a\x02\xD3V[\x82RPa\x04\xF5\x87` \x85\x01a\x03\x8AV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x05\x0BW_\x80\xFD[a\x05\x17\x88\x82\x86\x01a\x03\xCDV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x05.W_\x80\xFD[a\x05:\x88\x82\x86\x01a\x02IV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x91Pa\x05[` \x84\x01a\x029V[\x90P\x92P\x92\x90PV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x05\x88W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05lV[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x06#W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xD8V[P\x94\x95\x94PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x83R`@` \x84\x01R\x83Q`\xE0`@\x85\x01R\x81\x81Q\x16a\x01 \x85\x01R\x81` \x82\x01Q\x16a\x01@\x85\x01R`@\x81\x01Qa\x01`\x85\x01R``\x81\x01Qa\x01\x80\x85\x01R\x81`\x80\x82\x01Q\x16a\x01\xA0\x85\x01R`\xA0\x81\x01Q\x91PP`\xC0a\x01\xC0\x84\x01Ra\x06\xB1a\x01\xE0\x84\x01\x82a\x05dV[` \x85\x81\x01Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x87\x01R\x90\x81\x01Q`\x80\x86\x01R`@\x81\x01Q`\xA0\x86\x01R\x90\x91PP`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x80\x85\x84\x03\x01`\xC0\x86\x01Ra\x07%\x83\x83a\x05\xC5V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xE0\x86\x01RPa\x07C\x82\x82a\x05dV[\x91PP`\x80\x84\x01Qa\x01\0\x84\x01R\x80\x91PP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xD3x\xEE\xD4\x90\x9C\xDEs\x07\xDB\xBB\x10K\x94\xFE\xDC\xFA\xBF|5c\x87\xA0\xC8\xB7\x19)T\x0C\xD7\xEF\x80dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKRESOLVEDORDERLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cX\xC9\xED\xBF\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x04\x88V[a\0BV[\0[a\0L\x82\x82a\0PV[PPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\0\xA1W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\0LW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x01\x1D\x90\x84\x90\x86\x90`\x04\x01a\x06.V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x013W_\x80\xFD[PZ\xFA\x15\x80\x15a\x01EW=_\x80>=_\xFD[PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9DWa\x01\x9Da\x01MV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9DWa\x01\x9Da\x01MV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\rWa\x02\ra\x01MV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x026W_\x80\xFD[PV[\x805a\x02D\x81a\x02\x15V[\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x02XW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02rWa\x02ra\x01MV[a\x02\xA3` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x01\xC6V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x02\xB7W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x02\xE3W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x03\x07Wa\x03\x07a\x01MV[\x81`@R\x82\x93P\x845\x91Pa\x03\x1B\x82a\x02\x15V[\x90\x82R` \x84\x015\x90a\x03-\x82a\x02\x15V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x03W\x82a\x02\x15V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x03pW_\x80\xFD[Pa\x03}\x85\x82\x86\x01a\x02IV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x03\x9AW_\x80\xFD[a\x03\xA2a\x01zV[\x90P\x815a\x03\xAF\x81a\x02\x15V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x03\xDCW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x03\xF8Wa\x03\xF8a\x01MV[a\x04\x06\x81\x83`\x05\x1B\x01a\x01\xC6V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x04$W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x04{W\x81\x81\x8A\x03\x12\x15a\x04>W_\x80\xFD[a\x04Fa\x01zV[\x815a\x04Q\x81a\x02\x15V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x04j\x81a\x02\x15V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x04(V[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\x99W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xB0W_\x80\xFD[\x90\x84\x01\x90`\xE0\x82\x87\x03\x12\x15a\x04\xC3W_\x80\xFD[a\x04\xCBa\x01\xA3V[\x825\x82\x81\x11\x15a\x04\xD9W_\x80\xFD[a\x04\xE5\x88\x82\x86\x01a\x02\xD3V[\x82RPa\x04\xF5\x87` \x85\x01a\x03\x8AV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x05\x0BW_\x80\xFD[a\x05\x17\x88\x82\x86\x01a\x03\xCDV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x05.W_\x80\xFD[a\x05:\x88\x82\x86\x01a\x02IV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x91Pa\x05[` \x84\x01a\x029V[\x90P\x92P\x92\x90PV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x05\x88W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05lV[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x06#W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xD8V[P\x94\x95\x94PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x83R`@` \x84\x01R\x83Q`\xE0`@\x85\x01R\x81\x81Q\x16a\x01 \x85\x01R\x81` \x82\x01Q\x16a\x01@\x85\x01R`@\x81\x01Qa\x01`\x85\x01R``\x81\x01Qa\x01\x80\x85\x01R\x81`\x80\x82\x01Q\x16a\x01\xA0\x85\x01R`\xA0\x81\x01Q\x91PP`\xC0a\x01\xC0\x84\x01Ra\x06\xB1a\x01\xE0\x84\x01\x82a\x05dV[` \x85\x81\x01Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x87\x01R\x90\x81\x01Q`\x80\x86\x01R`@\x81\x01Q`\xA0\x86\x01R\x90\x91PP`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x80\x85\x84\x03\x01`\xC0\x86\x01Ra\x07%\x83\x83a\x05\xC5V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xE0\x86\x01RPa\x07C\x82\x82a\x05dV[\x91PP`\x80\x84\x01Qa\x01\0\x84\x01R\x80\x91PP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xD3x\xEE\xD4\x90\x9C\xDEs\x07\xDB\xBB\x10K\x94\xFE\xDC\xFA\xBF|5c\x87\xA0\xC8\xB7\x19)T\x0C\xD7\xEF\x80dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKRESOLVEDORDERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockResolvedOrderLib(::ethers::contract::Contract); - impl ::core::clone::Clone for MockResolvedOrderLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockResolvedOrderLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockResolvedOrderLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockResolvedOrderLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockResolvedOrderLib)) - .field(&self.address()) - .finish() - } - } - impl MockResolvedOrderLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKRESOLVEDORDERLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKRESOLVEDORDERLIB_ABI.clone(), - MOCKRESOLVEDORDERLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `validate` (0x58c9edbf) function - pub fn validate( - &self, - resolved_order: ResolvedOrder, - filler: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([88, 201, 237, 191], (resolved_order, filler)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for MockResolvedOrderLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `InvalidReactor` with signature `InvalidReactor()` and selector `0x4ddf4a64` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidReactor", abi = "InvalidReactor()")] - pub struct InvalidReactor; - ///Container type for all input parameters for the `validate` function with signature `validate(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address)` and selector `0x58c9edbf` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "validate", - abi = "validate(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address)" - )] - pub struct ValidateCall { - pub resolved_order: ResolvedOrder, - pub filler: ::ethers::core::types::Address, - } -} diff --git a/crates/bindings-uniswapx/src/mock_swap_router.rs b/crates/bindings-uniswapx/src/mock_swap_router.rs deleted file mode 100644 index 1aaf4cf..0000000 --- a/crates/bindings-uniswapx/src/mock_swap_router.rs +++ /dev/null @@ -1,659 +0,0 @@ -pub use mock_swap_router::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_swap_router { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("wethAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("SWAP_RATE_GRANULARITY"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "SWAP_RATE_GRANULARITY", - ), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("WETH9"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("WETH9"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("exactInput"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("exactInput"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("params"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ExactInputParams"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amountOut"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("multicall"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("multicall"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("data"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Bytes, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes[]"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("results"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Bytes, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setSwapRate"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setSwapRate"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newRate"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("swapRate"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("swapRate"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKSWAPROUTER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@Ra'\x10_U4\x80\x15a\0\x14W_\x80\xFD[P`@Qa\x0Fp8\x03\x80a\x0Fp\x839\x81\x01`@\x81\x90Ra\x003\x91a\0DV[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0qV[_` \x82\x84\x03\x12\x15a\0TW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0jW_\x80\xFD[\x93\x92PPPV[`\x80Qa\x0E\xE8a\0\x88_9_`x\x01Ra\x0E\xE8_\xF3\xFE`\x80`@R`\x046\x10a\0cW_5`\xE0\x1C\x80cwr\xE9\x04\x11a\0AW\x80cwr\xE9\x04\x14a\x01\x06W\x80c\xB8X\x18?\x14a\x01\x1BW\x80c\xF4\xCD\xE4i\x14a\x01:W_\x80\xFD[\x80cJ\xA4\xA4\xFC\x14a\0gW\x80cZ\xE4\x01\xDC\x14a\0\xC4W\x80ci\x85\x18\xE5\x14a\0\xE4W[_\x80\xFD[4\x80\x15a\0rW_\x80\xFD[Pa\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\n|V[a\x01ZV[`@Qa\0\xBB\x91\x90a\x0B_V[4\x80\x15a\0\xEFW_\x80\xFD[Pa\0\xF8_T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[4\x80\x15a\x01\x11W_\x80\xFD[Pa\0\xF8a'\x10\x81V[4\x80\x15a\x01&W_\x80\xFD[Pa\0\xF8a\x0156`\x04a\x0B\xDFV[a\x02\xC5V[4\x80\x15a\x01EW_\x80\xFD[Pa\x01Xa\x01T6`\x04a\x0C\x1DV[_UV[\0[``\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01uWa\x01ua\x0C4V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xA8W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x01\x93W\x90P[P\x90P_[\x82\x81\x10\x15a\x02\xBDW_\x800\x86\x86\x85\x81\x81\x10a\x01\xCAWa\x01\xCAa\x0CaV[\x90P` \x02\x81\x01\x90a\x01\xDC\x91\x90a\x0C\x8EV[`@Qa\x01\xEA\x92\x91\x90a\x0C\xF6V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x02\"W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02'V[``\x91P[P\x91P\x91P\x81a\x02\x95W`D\x81Q\x10\x15a\x02?W_\x80\xFD[`\x04\x81\x01\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x02Y\x91\x90a\r\x05V[`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01a\x02\x8C\x91\x90a\r\xCBV[`@Q\x80\x91\x03\x90\xFD[\x80\x84\x84\x81Q\x81\x10a\x02\xA8Wa\x02\xA8a\x0CaV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x01\xADV[P\x93\x92PPPV[_\x80a\x02\xD1\x83\x80a\x0C\x8EV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x82\x90RP\x93\x94Pa\x03\x12\x92P\x84\x91Pa\x040\x90PV[PP\x90P[a\x03 \x82a\x04kV[\x15a\x035Wa\x03.\x82a\x04\xA4V[\x91Pa\x03\x17V[_a\x03?\x83a\x040V[P\x91PPa'\x10_T\x86`@\x015a\x03W\x91\x90a\x0E\nV[a\x03a\x91\x90a\x0E!V[\x93P\x84``\x015\x84\x10\x15a\x03\xD1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FToo little received\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\x03\xF7s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x1630`@\x89\x015a\x04\xDBV[a\x04(a\x04\n`@\x87\x01` \x88\x01a\x0EYV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x86a\x05\xC9V[PPP\x91\x90PV[_\x80\x80a\x04=\x84\x82a\x06\x9AV[\x92Pa\x04J\x84`\x14a\x07\x9DV[\x90Pa\x04ba\x04[`\x03`\x14a\x0E\x8CV[\x85\x90a\x06\x9AV[\x91P\x91\x93\x90\x92PV[_a\x04x`\x03`\x14a\x0E\x8CV[`\x14a\x04\x85`\x03\x82a\x0E\x8CV[a\x04\x8F\x91\x90a\x0E\x8CV[a\x04\x99\x91\x90a\x0E\x8CV[\x82Q\x10\x15\x90P\x91\x90PV[``a\x04\xD5a\x04\xB5`\x03`\x14a\x0E\x8CV[a\x04\xC1`\x03`\x14a\x0E\x8CV[\x84Qa\x04\xCD\x91\x90a\x0E\x9FV[\x84\x91\x90a\x08\x90V[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x05\xC2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[PPPPPV[_`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x06\x94W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[PPPPV[_\x81a\x06\xA7\x81`\x14a\x0E\x8CV[\x10\x15a\x07\x0FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x12`$\x82\x01R\x7FtoAddress_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\x07\x1A\x82`\x14a\x0E\x8CV[\x83Q\x10\x15a\x07\x84W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FtoAddress_outOfBounds\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[P\x01` \x01Ql\x01\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04\x90V[_\x81a\x07\xAA\x81`\x03a\x0E\x8CV[\x10\x15a\x08\x12W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FtoUint24_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\x08\x1D\x82`\x03a\x0E\x8CV[\x83Q\x10\x15a\x08\x87W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FtoUint24_outOfBounds\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[P\x01`\x03\x01Q\x90V[``\x81a\x08\x9E\x81`\x1Fa\x0E\x8CV[\x10\x15a\t\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7Fslice_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[\x82a\t\x11\x83\x82a\x0E\x8CV[\x10\x15a\tyW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7Fslice_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\t\x83\x82\x84a\x0E\x8CV[\x84Q\x10\x15a\t\xEDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7Fslice_outOfBounds\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[``\x82\x15\x80\x15a\n\x0BW`@Q\x91P_\x82R` \x82\x01`@Ra\nsV[`@Q\x91P`\x1F\x84\x16\x80\x15` \x02\x81\x84\x01\x01\x85\x81\x01\x87\x83\x15` \x02\x84\x8B\x01\x01\x01[\x81\x83\x10\x15a\nDW\x80Q\x83R` \x92\x83\x01\x92\x01a\n,V[PP\x85\x84R`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16`@RP[P\x94\x93PPPPV[_\x80_`@\x84\x86\x03\x12\x15a\n\x8EW_\x80\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\n\xACW_\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\n\xBFW_\x80\xFD[\x815\x81\x81\x11\x15a\n\xCDW_\x80\xFD[\x87` \x82`\x05\x1B\x85\x01\x01\x11\x15a\n\xE1W_\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[_[\x83\x81\x10\x15a\x0B\x0EW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xF6V[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x0B-\x81` \x86\x01` \x86\x01a\n\xF4V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15a\x0B\xD2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x88\x86\x03\x01\x84Ra\x0B\xC0\x85\x83Qa\x0B\x16V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0B\x86V[P\x92\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x0B\xEFW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\x05W_\x80\xFD[\x82\x01`\x80\x81\x85\x03\x12\x15a\x0C\x16W_\x80\xFD[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x0C-W_\x80\xFD[P5\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x0C\xC1W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0C\xDBW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x0C\xEFW_\x80\xFD[\x92P\x92\x90PV[\x81\x83\x827_\x91\x01\x90\x81R\x91\x90PV[_` \x82\x84\x03\x12\x15a\r\x15W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\r,W_\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\r?W_\x80\xFD[\x81Q\x81\x81\x11\x15a\rQWa\rQa\x0C4V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\r\x97Wa\r\x97a\x0C4V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\r\xAFW_\x80\xFD[a\r\xC0\x83` \x83\x01` \x88\x01a\n\xF4V[\x97\x96PPPPPPPV[` \x81R_a\x0C\x16` \x83\x01\x84a\x0B\x16V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\xD5Wa\x04\xD5a\r\xDDV[_\x82a\x0ETW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[_` \x82\x84\x03\x12\x15a\x0EiW_\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x16W_\x80\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\xD5Wa\x04\xD5a\r\xDDV[\x81\x81\x03\x81\x81\x11\x15a\x04\xD5Wa\x04\xD5a\r\xDDV\xFE\xA2dipfsX\"\x12 \xD4\xAC\x81?\n\xFE\xD8\x15\x14\"\x0E\x0F\x02\xEF\xCC\xF5L\x0C\x89\xFCI\xCF\xED\x17Q\xFF\x82\x92\xDD\x11k\xB8dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKSWAPROUTER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0cW_5`\xE0\x1C\x80cwr\xE9\x04\x11a\0AW\x80cwr\xE9\x04\x14a\x01\x06W\x80c\xB8X\x18?\x14a\x01\x1BW\x80c\xF4\xCD\xE4i\x14a\x01:W_\x80\xFD[\x80cJ\xA4\xA4\xFC\x14a\0gW\x80cZ\xE4\x01\xDC\x14a\0\xC4W\x80ci\x85\x18\xE5\x14a\0\xE4W[_\x80\xFD[4\x80\x15a\0rW_\x80\xFD[Pa\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\n|V[a\x01ZV[`@Qa\0\xBB\x91\x90a\x0B_V[4\x80\x15a\0\xEFW_\x80\xFD[Pa\0\xF8_T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[4\x80\x15a\x01\x11W_\x80\xFD[Pa\0\xF8a'\x10\x81V[4\x80\x15a\x01&W_\x80\xFD[Pa\0\xF8a\x0156`\x04a\x0B\xDFV[a\x02\xC5V[4\x80\x15a\x01EW_\x80\xFD[Pa\x01Xa\x01T6`\x04a\x0C\x1DV[_UV[\0[``\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01uWa\x01ua\x0C4V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xA8W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x01\x93W\x90P[P\x90P_[\x82\x81\x10\x15a\x02\xBDW_\x800\x86\x86\x85\x81\x81\x10a\x01\xCAWa\x01\xCAa\x0CaV[\x90P` \x02\x81\x01\x90a\x01\xDC\x91\x90a\x0C\x8EV[`@Qa\x01\xEA\x92\x91\x90a\x0C\xF6V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x02\"W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02'V[``\x91P[P\x91P\x91P\x81a\x02\x95W`D\x81Q\x10\x15a\x02?W_\x80\xFD[`\x04\x81\x01\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x02Y\x91\x90a\r\x05V[`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01a\x02\x8C\x91\x90a\r\xCBV[`@Q\x80\x91\x03\x90\xFD[\x80\x84\x84\x81Q\x81\x10a\x02\xA8Wa\x02\xA8a\x0CaV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x01\xADV[P\x93\x92PPPV[_\x80a\x02\xD1\x83\x80a\x0C\x8EV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x82\x90RP\x93\x94Pa\x03\x12\x92P\x84\x91Pa\x040\x90PV[PP\x90P[a\x03 \x82a\x04kV[\x15a\x035Wa\x03.\x82a\x04\xA4V[\x91Pa\x03\x17V[_a\x03?\x83a\x040V[P\x91PPa'\x10_T\x86`@\x015a\x03W\x91\x90a\x0E\nV[a\x03a\x91\x90a\x0E!V[\x93P\x84``\x015\x84\x10\x15a\x03\xD1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FToo little received\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\x03\xF7s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x1630`@\x89\x015a\x04\xDBV[a\x04(a\x04\n`@\x87\x01` \x88\x01a\x0EYV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x86a\x05\xC9V[PPP\x91\x90PV[_\x80\x80a\x04=\x84\x82a\x06\x9AV[\x92Pa\x04J\x84`\x14a\x07\x9DV[\x90Pa\x04ba\x04[`\x03`\x14a\x0E\x8CV[\x85\x90a\x06\x9AV[\x91P\x91\x93\x90\x92PV[_a\x04x`\x03`\x14a\x0E\x8CV[`\x14a\x04\x85`\x03\x82a\x0E\x8CV[a\x04\x8F\x91\x90a\x0E\x8CV[a\x04\x99\x91\x90a\x0E\x8CV[\x82Q\x10\x15\x90P\x91\x90PV[``a\x04\xD5a\x04\xB5`\x03`\x14a\x0E\x8CV[a\x04\xC1`\x03`\x14a\x0E\x8CV[\x84Qa\x04\xCD\x91\x90a\x0E\x9FV[\x84\x91\x90a\x08\x90V[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x05\xC2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[PPPPPV[_`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x06\x94W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[PPPPV[_\x81a\x06\xA7\x81`\x14a\x0E\x8CV[\x10\x15a\x07\x0FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x12`$\x82\x01R\x7FtoAddress_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\x07\x1A\x82`\x14a\x0E\x8CV[\x83Q\x10\x15a\x07\x84W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FtoAddress_outOfBounds\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[P\x01` \x01Ql\x01\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04\x90V[_\x81a\x07\xAA\x81`\x03a\x0E\x8CV[\x10\x15a\x08\x12W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FtoUint24_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\x08\x1D\x82`\x03a\x0E\x8CV[\x83Q\x10\x15a\x08\x87W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FtoUint24_outOfBounds\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[P\x01`\x03\x01Q\x90V[``\x81a\x08\x9E\x81`\x1Fa\x0E\x8CV[\x10\x15a\t\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7Fslice_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[\x82a\t\x11\x83\x82a\x0E\x8CV[\x10\x15a\tyW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7Fslice_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\t\x83\x82\x84a\x0E\x8CV[\x84Q\x10\x15a\t\xEDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7Fslice_outOfBounds\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[``\x82\x15\x80\x15a\n\x0BW`@Q\x91P_\x82R` \x82\x01`@Ra\nsV[`@Q\x91P`\x1F\x84\x16\x80\x15` \x02\x81\x84\x01\x01\x85\x81\x01\x87\x83\x15` \x02\x84\x8B\x01\x01\x01[\x81\x83\x10\x15a\nDW\x80Q\x83R` \x92\x83\x01\x92\x01a\n,V[PP\x85\x84R`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16`@RP[P\x94\x93PPPPV[_\x80_`@\x84\x86\x03\x12\x15a\n\x8EW_\x80\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\n\xACW_\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\n\xBFW_\x80\xFD[\x815\x81\x81\x11\x15a\n\xCDW_\x80\xFD[\x87` \x82`\x05\x1B\x85\x01\x01\x11\x15a\n\xE1W_\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[_[\x83\x81\x10\x15a\x0B\x0EW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xF6V[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x0B-\x81` \x86\x01` \x86\x01a\n\xF4V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15a\x0B\xD2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x88\x86\x03\x01\x84Ra\x0B\xC0\x85\x83Qa\x0B\x16V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0B\x86V[P\x92\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x0B\xEFW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\x05W_\x80\xFD[\x82\x01`\x80\x81\x85\x03\x12\x15a\x0C\x16W_\x80\xFD[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x0C-W_\x80\xFD[P5\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x0C\xC1W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0C\xDBW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x0C\xEFW_\x80\xFD[\x92P\x92\x90PV[\x81\x83\x827_\x91\x01\x90\x81R\x91\x90PV[_` \x82\x84\x03\x12\x15a\r\x15W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\r,W_\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\r?W_\x80\xFD[\x81Q\x81\x81\x11\x15a\rQWa\rQa\x0C4V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\r\x97Wa\r\x97a\x0C4V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\r\xAFW_\x80\xFD[a\r\xC0\x83` \x83\x01` \x88\x01a\n\xF4V[\x97\x96PPPPPPPV[` \x81R_a\x0C\x16` \x83\x01\x84a\x0B\x16V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\xD5Wa\x04\xD5a\r\xDDV[_\x82a\x0ETW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[_` \x82\x84\x03\x12\x15a\x0EiW_\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x16W_\x80\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\xD5Wa\x04\xD5a\r\xDDV[\x81\x81\x03\x81\x81\x11\x15a\x04\xD5Wa\x04\xD5a\r\xDDV\xFE\xA2dipfsX\"\x12 \xD4\xAC\x81?\n\xFE\xD8\x15\x14\"\x0E\x0F\x02\xEF\xCC\xF5L\x0C\x89\xFCI\xCF\xED\x17Q\xFF\x82\x92\xDD\x11k\xB8dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKSWAPROUTER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockSwapRouter(::ethers::contract::Contract); - impl ::core::clone::Clone for MockSwapRouter { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockSwapRouter { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockSwapRouter { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockSwapRouter { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockSwapRouter)) - .field(&self.address()) - .finish() - } - } - impl MockSwapRouter { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKSWAPROUTER_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKSWAPROUTER_ABI.clone(), - MOCKSWAPROUTER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `SWAP_RATE_GRANULARITY` (0x7772e904) function - pub fn swap_rate_granularity( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([119, 114, 233, 4], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `WETH9` (0x4aa4a4fc) function - pub fn weth9( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([74, 164, 164, 252], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `exactInput` (0xb858183f) function - pub fn exact_input( - &self, - params: ExactInputParams, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([184, 88, 24, 63], (params,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `multicall` (0x5ae401dc) function - pub fn multicall( - &self, - p0: ::ethers::core::types::U256, - data: ::std::vec::Vec<::ethers::core::types::Bytes>, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec<::ethers::core::types::Bytes>, - > { - self.0 - .method_hash([90, 228, 1, 220], (p0, data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setSwapRate` (0xf4cde469) function - pub fn set_swap_rate( - &self, - new_rate: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([244, 205, 228, 105], new_rate) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `swapRate` (0x698518e5) function - pub fn swap_rate( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([105, 133, 24, 229], ()) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for MockSwapRouter { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `SWAP_RATE_GRANULARITY` function with signature `SWAP_RATE_GRANULARITY()` and selector `0x7772e904` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "SWAP_RATE_GRANULARITY", abi = "SWAP_RATE_GRANULARITY()")] - pub struct SwapRateGranularityCall; - ///Container type for all input parameters for the `WETH9` function with signature `WETH9()` and selector `0x4aa4a4fc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "WETH9", abi = "WETH9()")] - pub struct Weth9Call; - ///Container type for all input parameters for the `exactInput` function with signature `exactInput((bytes,address,uint256,uint256))` and selector `0xb858183f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "exactInput", abi = "exactInput((bytes,address,uint256,uint256))")] - pub struct ExactInputCall { - pub params: ExactInputParams, - } - ///Container type for all input parameters for the `multicall` function with signature `multicall(uint256,bytes[])` and selector `0x5ae401dc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "multicall", abi = "multicall(uint256,bytes[])")] - pub struct MulticallCall { - pub p0: ::ethers::core::types::U256, - pub data: ::std::vec::Vec<::ethers::core::types::Bytes>, - } - ///Container type for all input parameters for the `setSwapRate` function with signature `setSwapRate(uint256)` and selector `0xf4cde469` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setSwapRate", abi = "setSwapRate(uint256)")] - pub struct SetSwapRateCall { - pub new_rate: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `swapRate` function with signature `swapRate()` and selector `0x698518e5` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "swapRate", abi = "swapRate()")] - pub struct SwapRateCall; - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockSwapRouterCalls { - SwapRateGranularity(SwapRateGranularityCall), - Weth9(Weth9Call), - ExactInput(ExactInputCall), - Multicall(MulticallCall), - SetSwapRate(SetSwapRateCall), - SwapRate(SwapRateCall), - } - impl ::ethers::core::abi::AbiDecode for MockSwapRouterCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SwapRateGranularity(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Weth9(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExactInput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Multicall(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetSwapRate(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SwapRate(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockSwapRouterCalls { - fn encode(self) -> Vec { - match self { - Self::SwapRateGranularity(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Weth9(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExactInput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Multicall(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetSwapRate(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SwapRate(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockSwapRouterCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::SwapRateGranularity(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::Weth9(element) => ::core::fmt::Display::fmt(element, f), - Self::ExactInput(element) => ::core::fmt::Display::fmt(element, f), - Self::Multicall(element) => ::core::fmt::Display::fmt(element, f), - Self::SetSwapRate(element) => ::core::fmt::Display::fmt(element, f), - Self::SwapRate(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockSwapRouterCalls { - fn from(value: SwapRateGranularityCall) -> Self { - Self::SwapRateGranularity(value) - } - } - impl ::core::convert::From for MockSwapRouterCalls { - fn from(value: Weth9Call) -> Self { - Self::Weth9(value) - } - } - impl ::core::convert::From for MockSwapRouterCalls { - fn from(value: ExactInputCall) -> Self { - Self::ExactInput(value) - } - } - impl ::core::convert::From for MockSwapRouterCalls { - fn from(value: MulticallCall) -> Self { - Self::Multicall(value) - } - } - impl ::core::convert::From for MockSwapRouterCalls { - fn from(value: SetSwapRateCall) -> Self { - Self::SetSwapRate(value) - } - } - impl ::core::convert::From for MockSwapRouterCalls { - fn from(value: SwapRateCall) -> Self { - Self::SwapRate(value) - } - } - ///Container type for all return fields from the `SWAP_RATE_GRANULARITY` function with signature `SWAP_RATE_GRANULARITY()` and selector `0x7772e904` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SwapRateGranularityReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `WETH9` function with signature `WETH9()` and selector `0x4aa4a4fc` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct Weth9Return(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `exactInput` function with signature `exactInput((bytes,address,uint256,uint256))` and selector `0xb858183f` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ExactInputReturn { - pub amount_out: ::ethers::core::types::U256, - } - ///Container type for all return fields from the `multicall` function with signature `multicall(uint256,bytes[])` and selector `0x5ae401dc` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct MulticallReturn { - pub results: ::std::vec::Vec<::ethers::core::types::Bytes>, - } - ///Container type for all return fields from the `swapRate` function with signature `swapRate()` and selector `0x698518e5` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SwapRateReturn(pub ::ethers::core::types::U256); -} diff --git a/crates/bindings-uniswapx/src/mock_swapper.rs b/crates/bindings-uniswapx/src/mock_swapper.rs deleted file mode 100644 index 704a88d..0000000 --- a/crates/bindings-uniswapx/src/mock_swapper.rs +++ /dev/null @@ -1,192 +0,0 @@ -pub use mock_swapper::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_swapper { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKSWAPPER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x01\x9B\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80c\xE1\xF2\x1Cg\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x01\x06V[a\0BV[\0[`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`$\x82\x01\x83\x90R\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\0\xB4W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xD8\x91\x90a\x01?V[PPPPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\x01W_\x80\xFD[\x91\x90PV[_\x80_``\x84\x86\x03\x12\x15a\x01\x18W_\x80\xFD[a\x01!\x84a\0\xDEV[\x92Pa\x01/` \x85\x01a\0\xDEV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x01OW_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x01^W_\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x90\"|\xBE\xB79\x07x\x7F4\x9F1\xEDer\x06\x16\x9A>\xB0\xAB\xC1\x89\xF4\xF9\xD1,!f\xEEn\x9FdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static MOCKSWAPPER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80c\xE1\xF2\x1Cg\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x01\x06V[a\0BV[\0[`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`$\x82\x01\x83\x90R\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\0\xB4W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xD8\x91\x90a\x01?V[PPPPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\x01W_\x80\xFD[\x91\x90PV[_\x80_``\x84\x86\x03\x12\x15a\x01\x18W_\x80\xFD[a\x01!\x84a\0\xDEV[\x92Pa\x01/` \x85\x01a\0\xDEV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x01OW_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x01^W_\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \x90\"|\xBE\xB79\x07x\x7F4\x9F1\xEDer\x06\x16\x9A>\xB0\xAB\xC1\x89\xF4\xF9\xD1,!f\xEEn\x9FdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static MOCKSWAPPER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct MockSwapper(::ethers::contract::Contract); - impl ::core::clone::Clone for MockSwapper { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockSwapper { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockSwapper { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockSwapper { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockSwapper)) - .field(&self.address()) - .finish() - } - } - impl MockSwapper { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKSWAPPER_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKSWAPPER_ABI.clone(), - MOCKSWAPPER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `approve` (0xe1f21c67) function - pub fn approve( - &self, - token: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([225, 242, 28, 103], (token, to, amount)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for MockSwapper { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `approve` function with signature `approve(address,address,uint256)` and selector `0xe1f21c67` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "approve", abi = "approve(address,address,uint256)")] - pub struct ApproveCall { - pub token: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } -} diff --git a/crates/bindings-uniswapx/src/mock_validation_contract.rs b/crates/bindings-uniswapx/src/mock_validation_contract.rs deleted file mode 100644 index 993b0ba..0000000 --- a/crates/bindings-uniswapx/src/mock_validation_contract.rs +++ /dev/null @@ -1,419 +0,0 @@ -pub use mock_validation_contract::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod mock_validation_contract { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("setValid"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setValid"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_valid"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("valid"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("valid"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("validate"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("validate"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("MockValidationError"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "MockValidationError", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKVALIDATIONCONTRACT_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x05[\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cld\xED\xEE\x14a\0CW\x80cn\x84\xBA+\x14a\0\x83W\x80c\xC1\x99\x12\x19\x14a\0\x96W[_\x80\xFD[a\0\x81a\0Q6`\x04a\0\xF5V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[\0[a\0\x81a\0\x916`\x04a\x04FV[a\0\xB6V[_Ta\0\xA2\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[_T`\xFF\x16a\0\xF1W`@Q\x7F\xB3\xCA.(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[_` \x82\x84\x03\x12\x15a\x01\x05W_\x80\xFD[\x815\x80\x15\x15\x81\x14a\x01\x14W_\x80\xFD[\x93\x92PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01(::ethers::contract::Contract); - impl ::core::clone::Clone for MockValidationContract { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockValidationContract { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockValidationContract { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockValidationContract { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockValidationContract)) - .field(&self.address()) - .finish() - } - } - impl MockValidationContract { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - MOCKVALIDATIONCONTRACT_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - MOCKVALIDATIONCONTRACT_ABI.clone(), - MOCKVALIDATIONCONTRACT_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `setValid` (0x6c64edee) function - pub fn set_valid( - &self, - valid: bool, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([108, 100, 237, 238], valid) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `valid` (0xc1991219) function - pub fn valid(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([193, 153, 18, 25], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `validate` (0x6e84ba2b) function - pub fn validate( - &self, - p0: ::ethers::core::types::Address, - p1: ResolvedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([110, 132, 186, 43], (p0, p1)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for MockValidationContract { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `MockValidationError` with signature `MockValidationError()` and selector `0xb3ca2e28` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "MockValidationError", abi = "MockValidationError()")] - pub struct MockValidationError; - ///Container type for all input parameters for the `setValid` function with signature `setValid(bool)` and selector `0x6c64edee` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "setValid", abi = "setValid(bool)")] - pub struct SetValidCall { - pub valid: bool, - } - ///Container type for all input parameters for the `valid` function with signature `valid()` and selector `0xc1991219` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "valid", abi = "valid()")] - pub struct ValidCall; - ///Container type for all input parameters for the `validate` function with signature `validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x6e84ba2b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "validate", - abi = "validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))" - )] - pub struct ValidateCall(pub ::ethers::core::types::Address, pub ResolvedOrder); - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum MockValidationContractCalls { - SetValid(SetValidCall), - Valid(ValidCall), - Validate(ValidateCall), - } - impl ::ethers::core::abi::AbiDecode for MockValidationContractCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetValid(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Valid(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Validate(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockValidationContractCalls { - fn encode(self) -> Vec { - match self { - Self::SetValid(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Valid(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Validate(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockValidationContractCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::SetValid(element) => ::core::fmt::Display::fmt(element, f), - Self::Valid(element) => ::core::fmt::Display::fmt(element, f), - Self::Validate(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockValidationContractCalls { - fn from(value: SetValidCall) -> Self { - Self::SetValid(value) - } - } - impl ::core::convert::From for MockValidationContractCalls { - fn from(value: ValidCall) -> Self { - Self::Valid(value) - } - } - impl ::core::convert::From for MockValidationContractCalls { - fn from(value: ValidateCall) -> Self { - Self::Validate(value) - } - } - ///Container type for all return fields from the `valid` function with signature `valid()` and selector `0xc1991219` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ValidReturn(pub bool); -} diff --git a/crates/bindings-uniswapx/src/mockarbsys.rs b/crates/bindings-uniswapx/src/mockarbsys.rs new file mode 100644 index 0000000..eabac9d --- /dev/null +++ b/crates/bindings-uniswapx/src/mockarbsys.rs @@ -0,0 +1,618 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockArbSys { + function arbBlockNumber() external view returns (uint256); + function setBlockNumber(uint256 blockNumber) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "arbBlockNumber", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setBlockNumber", + "inputs": [ + { + "name": "blockNumber", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockArbSys { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052348015600f57600080fd5b5060ac8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a3b1b31d146037578063a8c3c85014604c575b600080fd5b60005460405190815260200160405180910390f35b605c6057366004605e565b600055565b005b600060208284031215606f57600080fd5b503591905056fea2646970667358221220e7d3f10689d2e9fb5e8a938fb9383f27cf062835ed1bb59a79ed4ca9688817aa64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\xAC\x80a\0\x1E`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`2W`\x005`\xE0\x1C\x80c\xA3\xB1\xB3\x1D\x14`7W\x80c\xA8\xC3\xC8P\x14`LW[`\0\x80\xFD[`\0T`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\\`W6`\x04`^V[`\0UV[\0[`\0` \x82\x84\x03\x12\x15`oW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \xE7\xD3\xF1\x06\x89\xD2\xE9\xFB^\x8A\x93\x8F\xB98?'\xCF\x06(5\xED\x1B\xB5\x9Ay\xEDL\xA9h\x88\x17\xAAdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052348015600f57600080fd5b506004361060325760003560e01c8063a3b1b31d146037578063a8c3c85014604c575b600080fd5b60005460405190815260200160405180910390f35b605c6057366004605e565b600055565b005b600060208284031215606f57600080fd5b503591905056fea2646970667358221220e7d3f10689d2e9fb5e8a938fb9383f27cf062835ed1bb59a79ed4ca9688817aa64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`2W`\x005`\xE0\x1C\x80c\xA3\xB1\xB3\x1D\x14`7W\x80c\xA8\xC3\xC8P\x14`LW[`\0\x80\xFD[`\0T`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\\`W6`\x04`^V[`\0UV[\0[`\0` \x82\x84\x03\x12\x15`oW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \xE7\xD3\xF1\x06\x89\xD2\xE9\xFB^\x8A\x93\x8F\xB98?'\xCF\x06(5\xED\x1B\xB5\x9Ay\xEDL\xA9h\x88\x17\xAAdsolcC\0\x08\x18\x003", + ); + /**Function with signature `arbBlockNumber()` and selector `0xa3b1b31d`. +```solidity +function arbBlockNumber() external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct arbBlockNumberCall {} + ///Container type for the return parameters of the [`arbBlockNumber()`](arbBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct arbBlockNumberReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: arbBlockNumberCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for arbBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: arbBlockNumberReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for arbBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for arbBlockNumberCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = arbBlockNumberReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "arbBlockNumber()"; + const SELECTOR: [u8; 4] = [163u8, 177u8, 179u8, 29u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setBlockNumber(uint256)` and selector `0xa8c3c850`. +```solidity +function setBlockNumber(uint256 blockNumber) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setBlockNumberCall { + pub blockNumber: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`setBlockNumber(uint256)`](setBlockNumberCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setBlockNumberReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setBlockNumberCall) -> Self { + (value.blockNumber,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setBlockNumberCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { blockNumber: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setBlockNumberReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setBlockNumberReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setBlockNumberCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setBlockNumberReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setBlockNumber(uint256)"; + const SELECTOR: [u8; 4] = [168u8, 195u8, 200u8, 80u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.blockNumber), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockArbSys`](self) function calls. + pub enum MockArbSysCalls { + arbBlockNumber(arbBlockNumberCall), + setBlockNumber(setBlockNumberCall), + } + #[automatically_derived] + impl MockArbSysCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [163u8, 177u8, 179u8, 29u8], + [168u8, 195u8, 200u8, 80u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockArbSysCalls { + const NAME: &'static str = "MockArbSysCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::arbBlockNumber(_) => { + ::SELECTOR + } + Self::setBlockNumber(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn arbBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockArbSysCalls::arbBlockNumber) + } + arbBlockNumber + }, + { + fn setBlockNumber( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockArbSysCalls::setBlockNumber) + } + setBlockNumber + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::arbBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setBlockNumber(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::arbBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setBlockNumber(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockArbSys`](self) contract instance. + +See the [wrapper's documentation](`MockArbSysInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockArbSysInstance { + MockArbSysInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockArbSysInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + MockArbSysInstance::::deploy_builder(provider) + } + /**A [`MockArbSys`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockArbSys`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockArbSysInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockArbSysInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockArbSysInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockArbSysInstance { + /**Creates a new wrapper around an on-chain [`MockArbSys`](self) contract instance. + +See the [wrapper's documentation](`MockArbSysInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockArbSysInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockArbSysInstance { + MockArbSysInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockArbSysInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`arbBlockNumber`] function. + pub fn arbBlockNumber( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&arbBlockNumberCall {}) + } + ///Creates a new call builder for the [`setBlockNumber`] function. + pub fn setBlockNumber( + &self, + blockNumber: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setBlockNumberCall { blockNumber }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockArbSysInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/mockblocknumberish.rs b/crates/bindings-uniswapx/src/mockblocknumberish.rs new file mode 100644 index 0000000..5c73a21 --- /dev/null +++ b/crates/bindings-uniswapx/src/mockblocknumberish.rs @@ -0,0 +1,449 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockBlockNumberish { + function getBlockNumberish() external view returns (uint256); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "getBlockNumberish", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockBlockNumberish { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b5061a4b14603610035576001600160401b0361007d61005060201b17166080526100d7565b6001600160401b036100ef6100ba60201b17166080526100d7565b600060646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b591906100be565b905090565b4390565b6000602082840312156100d057600080fd5b5051919050565b6080516101426100f16000396000605101526101426000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80634ddcff8e14610030575b600080fd5b61003861004a565b60405190815260200160405180910390f35b60006100787f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100cb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061007891906100f3565b4390565b60006020828403121561010557600080fd5b505191905056fea2646970667358221220d865a023cfa68b2602b12cc4b5c55cacd435516c10a7e3170176c6e72d78038264736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\xA4\xB1F\x03a\x005W`\x01`\x01`@\x1B\x03a\0}a\0P` \x1B\x17\x16`\x80Ra\0\xD7V[`\x01`\x01`@\x1B\x03a\0\xEFa\0\xBA` \x1B\x17\x16`\x80Ra\0\xD7V[`\0`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\x91W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xB5\x91\x90a\0\xBEV[\x90P\x90V[C\x90V[`\0` \x82\x84\x03\x12\x15a\0\xD0W`\0\x80\xFD[PQ\x91\x90PV[`\x80Qa\x01Ba\0\xF1`\09`\0`Q\x01Ra\x01B`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cM\xDC\xFF\x8E\x14a\x000W[`\0\x80\xFD[a\08a\0JV[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0a\0x\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P\x90V[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xCBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0x\x91\x90a\0\xF3V[C\x90V[`\0` \x82\x84\x03\x12\x15a\x01\x05W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xD8e\xA0#\xCF\xA6\x8B&\x02\xB1,\xC4\xB5\xC5\\\xAC\xD45Ql\x10\xA7\xE3\x17\x01v\xC6\xE7-x\x03\x82dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80634ddcff8e14610030575b600080fd5b61003861004a565b60405190815260200160405180910390f35b60006100787f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100cb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061007891906100f3565b4390565b60006020828403121561010557600080fd5b505191905056fea2646970667358221220d865a023cfa68b2602b12cc4b5c55cacd435516c10a7e3170176c6e72d78038264736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cM\xDC\xFF\x8E\x14a\x000W[`\0\x80\xFD[a\08a\0JV[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0a\0x\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P\x90V[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xCBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0x\x91\x90a\0\xF3V[C\x90V[`\0` \x82\x84\x03\x12\x15a\x01\x05W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xD8e\xA0#\xCF\xA6\x8B&\x02\xB1,\xC4\xB5\xC5\\\xAC\xD45Ql\x10\xA7\xE3\x17\x01v\xC6\xE7-x\x03\x82dsolcC\0\x08\x18\x003", + ); + /**Function with signature `getBlockNumberish()` and selector `0x4ddcff8e`. +```solidity +function getBlockNumberish() external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getBlockNumberishCall {} + ///Container type for the return parameters of the [`getBlockNumberish()`](getBlockNumberishCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getBlockNumberishReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getBlockNumberishCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getBlockNumberishCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: getBlockNumberishReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for getBlockNumberishReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getBlockNumberishCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getBlockNumberishReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getBlockNumberish()"; + const SELECTOR: [u8; 4] = [77u8, 220u8, 255u8, 142u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockBlockNumberish`](self) function calls. + pub enum MockBlockNumberishCalls { + getBlockNumberish(getBlockNumberishCall), + } + #[automatically_derived] + impl MockBlockNumberishCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[77u8, 220u8, 255u8, 142u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockBlockNumberishCalls { + const NAME: &'static str = "MockBlockNumberishCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::getBlockNumberish(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn getBlockNumberish( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockBlockNumberishCalls::getBlockNumberish) + } + getBlockNumberish + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::getBlockNumberish(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::getBlockNumberish(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockBlockNumberish`](self) contract instance. + +See the [wrapper's documentation](`MockBlockNumberishInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockBlockNumberishInstance { + MockBlockNumberishInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockBlockNumberishInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + MockBlockNumberishInstance::::deploy_builder(provider) + } + /**A [`MockBlockNumberish`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockBlockNumberish`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockBlockNumberishInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockBlockNumberishInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockBlockNumberishInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockBlockNumberishInstance { + /**Creates a new wrapper around an on-chain [`MockBlockNumberish`](self) contract instance. + +See the [wrapper's documentation](`MockBlockNumberishInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockBlockNumberishInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockBlockNumberishInstance { + MockBlockNumberishInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockBlockNumberishInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`getBlockNumberish`] function. + pub fn getBlockNumberish( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getBlockNumberishCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockBlockNumberishInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/mockcosignerlibcontract.rs b/crates/bindings-uniswapx/src/mockcosignerlibcontract.rs new file mode 100644 index 0000000..26d240f --- /dev/null +++ b/crates/bindings-uniswapx/src/mockcosignerlibcontract.rs @@ -0,0 +1,649 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockCosignerLibContract { + error InvalidCosignature(); + + function verify(address cosigner, bytes32 data, bytes memory cosignature) external pure; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "verify", + "inputs": [ + { + "name": "cosigner", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "cosignature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "pure" + }, + { + "type": "error", + "name": "InvalidCosignature", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockCosignerLibContract { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50610339806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631a86b55014610030575b600080fd5b61004361003e3660046101ac565b610045565b005b610050838383610055565b505050565b6000808280602001905181019061006c91906102b0565b91509150600083604081518110610085576100856102d4565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156100e2573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158061013d575073ffffffffffffffffffffffffffffffffffffffff8116155b15610174576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156101c157600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146101e557600080fd5b925060208401359150604084013567ffffffffffffffff8082111561020957600080fd5b818601915086601f83011261021d57600080fd5b81358181111561022f5761022f61017d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156102755761027561017d565b8160405282815289602084870101111561028e57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080604083850312156102c357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220ed58753e7da908296b6666861af247eef36639f7a8c4d0afcf579f646d109dbc64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x039\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80c\x1A\x86\xB5P\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01\xACV[a\0EV[\0[a\0P\x83\x83\x83a\0UV[PPPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a\0l\x91\x90a\x02\xB0V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a\0\x85Wa\0\x85a\x02\xD4V[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\0\xE2W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x01=WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x01tW`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\x01\xC1W`\0\x80\xFD[\x835s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xE5W`\0\x80\xFD[\x92P` \x84\x015\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\tW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02\x1DW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02/Wa\x02/a\x01}V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02uWa\x02ua\x01}V[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x02\x8EW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\x02\xC3W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xEDXu>}\xA9\x08)kff\x86\x1A\xF2G\xEE\xF3f9\xF7\xA8\xC4\xD0\xAF\xCFW\x9Fdm\x10\x9D\xBCdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80631a86b55014610030575b600080fd5b61004361003e3660046101ac565b610045565b005b610050838383610055565b505050565b6000808280602001905181019061006c91906102b0565b91509150600083604081518110610085576100856102d4565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156100e2573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158061013d575073ffffffffffffffffffffffffffffffffffffffff8116155b15610174576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156101c157600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146101e557600080fd5b925060208401359150604084013567ffffffffffffffff8082111561020957600080fd5b818601915086601f83011261021d57600080fd5b81358181111561022f5761022f61017d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156102755761027561017d565b8160405282815289602084870101111561028e57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080604083850312156102c357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220ed58753e7da908296b6666861af247eef36639f7a8c4d0afcf579f646d109dbc64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80c\x1A\x86\xB5P\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01\xACV[a\0EV[\0[a\0P\x83\x83\x83a\0UV[PPPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a\0l\x91\x90a\x02\xB0V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a\0\x85Wa\0\x85a\x02\xD4V[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\0\xE2W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x01=WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x01tW`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\x01\xC1W`\0\x80\xFD[\x835s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xE5W`\0\x80\xFD[\x92P` \x84\x015\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\tW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02\x1DW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02/Wa\x02/a\x01}V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02uWa\x02ua\x01}V[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x02\x8EW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\x02\xC3W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xEDXu>}\xA9\x08)kff\x86\x1A\xF2G\xEE\xF3f9\xF7\xA8\xC4\xD0\xAF\xCFW\x9Fdm\x10\x9D\xBCdsolcC\0\x08\x18\x003", + ); + /**Custom error with signature `InvalidCosignature()` and selector `0xd7815be1`. +```solidity +error InvalidCosignature(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidCosignature {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidCosignature) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidCosignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidCosignature { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidCosignature()"; + const SELECTOR: [u8; 4] = [215u8, 129u8, 91u8, 225u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Function with signature `verify(address,bytes32,bytes)` and selector `0x1a86b550`. +```solidity +function verify(address cosigner, bytes32 data, bytes memory cosignature) external pure; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct verifyCall { + pub cosigner: alloy::sol_types::private::Address, + pub data: alloy::sol_types::private::FixedBytes<32>, + pub cosignature: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`verify(address,bytes32,bytes)`](verifyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct verifyReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyCall) -> Self { + (value.cosigner, value.data, value.cosignature) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + cosigner: tuple.0, + data: tuple.1, + cosignature: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: verifyReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for verifyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for verifyCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = verifyReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "verify(address,bytes32,bytes)"; + const SELECTOR: [u8; 4] = [26u8, 134u8, 181u8, 80u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.cosigner, + ), + as alloy_sol_types::SolType>::tokenize(&self.data), + ::tokenize( + &self.cosignature, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockCosignerLibContract`](self) function calls. + pub enum MockCosignerLibContractCalls { + verify(verifyCall), + } + #[automatically_derived] + impl MockCosignerLibContractCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[26u8, 134u8, 181u8, 80u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockCosignerLibContractCalls { + const NAME: &'static str = "MockCosignerLibContractCalls"; + const MIN_DATA_LENGTH: usize = 128usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::verify(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn verify( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockCosignerLibContractCalls::verify) + } + verify + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::verify(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::verify(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`MockCosignerLibContract`](self) custom errors. + pub enum MockCosignerLibContractErrors { + InvalidCosignature(InvalidCosignature), + } + #[automatically_derived] + impl MockCosignerLibContractErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[215u8, 129u8, 91u8, 225u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockCosignerLibContractErrors { + const NAME: &'static str = "MockCosignerLibContractErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InvalidCosignature(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn InvalidCosignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockCosignerLibContractErrors::InvalidCosignature) + } + InvalidCosignature + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InvalidCosignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::InvalidCosignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockCosignerLibContract`](self) contract instance. + +See the [wrapper's documentation](`MockCosignerLibContractInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockCosignerLibContractInstance { + MockCosignerLibContractInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockCosignerLibContractInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + MockCosignerLibContractInstance::::deploy_builder(provider) + } + /**A [`MockCosignerLibContract`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockCosignerLibContract`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockCosignerLibContractInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockCosignerLibContractInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockCosignerLibContractInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockCosignerLibContractInstance { + /**Creates a new wrapper around an on-chain [`MockCosignerLibContract`](self) contract instance. + +See the [wrapper's documentation](`MockCosignerLibContractInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockCosignerLibContractInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockCosignerLibContractInstance { + MockCosignerLibContractInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockCosignerLibContractInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`verify`] function. + pub fn verify( + &self, + cosigner: alloy::sol_types::private::Address, + data: alloy::sol_types::private::FixedBytes<32>, + cosignature: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &verifyCall { + cosigner, + data, + cosignature, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockCosignerLibContractInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/mockdutchorderreactor.rs b/crates/bindings-uniswapx/src/mockdutchorderreactor.rs new file mode 100644 index 0000000..69c77fb --- /dev/null +++ b/crates/bindings-uniswapx/src/mockdutchorderreactor.rs @@ -0,0 +1,5330 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockDutchOrderReactor { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + struct SignedOrder { + bytes order; + bytes sig; + } + + error DeadlineBeforeEndTime(); + error DuplicateFeeOutput(address duplicateToken); + error EndTimeBeforeStartTime(); + error FeeTooLarge(address token, uint256 amount, address recipient); + error IncorrectAmounts(); + error InputAndOutputDecay(); + error InputAndOutputFees(); + error InvalidFeeToken(address feeToken); + error InvalidReactor(); + error NativeTransferFailed(); + + event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); + event OwnershipTransferred(address indexed user, address indexed newOwner); + event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); + + constructor(address _permit2, address _protocolFeeOwner); + + receive() external payable; + + function execute(SignedOrder memory order) external payable; + function executeBatch(SignedOrder[] memory orders) external payable; + function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; + function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; + function feeController() external view returns (address); + function owner() external view returns (address); + function permit2() external view returns (address); + function resolveOrder(SignedOrder memory order) external view returns (ResolvedOrder memory resolvedOrder); + function setProtocolFeeController(address _newFeeController) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_permit2", + "type": "address", + "internalType": "contract IPermit2" + }, + { + "name": "_protocolFeeOwner", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatchWithCallback", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeWithCallback", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "feeController", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IProtocolFeeController" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit2", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPermit2" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "resolveOrder", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [ + { + "name": "resolvedOrder", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setProtocolFeeController", + "inputs": [ + { + "name": "_newFeeController", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Fill", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "filler", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "swapper", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProtocolFeeControllerSet", + "inputs": [ + { + "name": "oldFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "DeadlineBeforeEndTime", + "inputs": [] + }, + { + "type": "error", + "name": "DuplicateFeeOutput", + "inputs": [ + { + "name": "duplicateToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "EndTimeBeforeStartTime", + "inputs": [] + }, + { + "type": "error", + "name": "FeeTooLarge", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "IncorrectAmounts", + "inputs": [] + }, + { + "type": "error", + "name": "InputAndOutputDecay", + "inputs": [] + }, + { + "type": "error", + "name": "InputAndOutputFees", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidFeeToken", + "inputs": [ + { + "name": "feeToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InvalidReactor", + "inputs": [] + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockDutchOrderReactor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a06040523480156200001157600080fd5b50604051620031b6380380620031b68339810160408190526200003491620000c0565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849284928492839283929091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000ff92505050565b6001600160a01b0381168114620000bd57600080fd5b50565b60008060408385031215620000d457600080fd5b8251620000e181620000a7565b6020840151909250620000f481620000a7565b809150509250929050565b608051613095620001216000396000818160fb015261141a01526130956000f3fe6080604052600436106100b55760003560e01c80633f62192e116100695780638da5cb5b1161004e5780638da5cb5b146101ba5780639bb32265146101e7578063f2fde38b1461021457600080fd5b80633f62192e1461017a5780636999b3771461018d57600080fd5b806312261ee71161009a57806312261ee7146100e957806313fb72c7146101475780632d7713891461015a57600080fd5b80630d335884146100c15780630d7a16c3146100d657600080fd5b366100bc57005b600080fd5b6100d46100cf3660046122d8565b610234565b005b6100d46100e4366004612386565b6103ad565b3480156100f557600080fd5b5061011d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d46101553660046123c8565b61050e565b34801561016657600080fd5b506100d4610175366004612456565b6106cc565b6100d461018836600461247a565b6107d8565b34801561019957600080fd5b5060015461011d9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101c657600080fd5b5060005461011d9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101f357600080fd5b5061020761020236600461247a565b6108dd565b60405161013e9190612683565b34801561022057600080fd5b506100d461022f366004612456565b61095b565b61023c610a4c565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816102535790505090506102fb84610abd565b8160008151811061030e5761030e6126c5565b602002602001018190525061032281610b35565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610362908490879087906004016126f4565b600060405180830381600087803b15801561037c57600080fd5b505af1158015610390573d6000803e3d6000fd5b5050505061039d81610b86565b506103a86001600255565b505050565b6103b5610a4c565b8060008167ffffffffffffffff8111156103d1576103d1612696565b60405190808252806020026020018201604052801561048c57816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103ef5790505b50905060005b828110156104eb576104c68585838181106104af576104af6126c5565b90506020028101906104c191906127ba565b610abd565b8282815181106104d8576104d86126c5565b6020908102919091010152600101610492565b506104f581610b35565b6104fe81610b86565b505061050a6001600255565b5050565b610516610a4c565b8260008167ffffffffffffffff81111561053257610532612696565b6040519080825280602002602001820160405280156105ed57816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105505790505b50905060005b82811015610635576106108787838181106104af576104af6126c5565b828281518110610622576106226126c5565b60209081029190910101526001016105f3565b5061063f81610b35565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061067f908490889088906004016126f4565b600060405180830381600087803b15801561069957600080fd5b505af11580156106ad573d6000803e3d6000fd5b505050506106ba81610b86565b50506106c66001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b6107e0610a4c565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107f757905050905061089f82610abd565b816000815181106108b2576108b26126c5565b60200260200101819052506108c681610b35565b6108cf81610b86565b506108da6001600255565b50565b6040805161016081018252600060a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261095582610abd565b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610749565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6002805403610ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610749565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261095582610cd9565b805160005b818110156103a8576000838281518110610b5657610b566126c5565b60200260200101519050610b6981610e27565b610b738133611317565b610b7d8133611418565b50600101610b3a565b805160005b81811015610cc8576000838281518110610ba757610ba76126c5565b602002602001015190506000816040015151905060005b81811015610c2857600083604001518281518110610bde57610bde6126c5565b60200260200101519050610c1f81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff166117be9092919063ffffffff16565b50600101610bbe565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c7157610c716126c5565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cb691815260200190565b60405180910390a45050600101610b8b565b50471561050a5761050a3347611805565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610d5283806127f8565b810190610d5f9190612aea565b9050610d6a8161189f565b6040518060a0016040528082600001518152602001610da083602001518460400151856060015161198a9092919063ffffffff16565b8152602001610dc6836020015184604001518560800151611a5c9092919063ffffffff16565b8152602001848060200190610ddb91906127f8565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610e1e83611b43565b90529392505050565b60015473ffffffffffffffffffffffffffffffffffffffff16610e475750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390610e9e908590600401612683565b600060405180830381865afa158015610ebb573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f019190810190612c1e565b6040830151518151919250906000610f198284612d1d565b67ffffffffffffffff811115610f3157610f31612696565b604051908082528060200260200182016040528015610f9a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610f4f5790505b50905060005b83811015610feb5785604001518181518110610fbe57610fbe6126c5565b6020026020010151828281518110610fd857610fd86126c5565b6020908102919091010152600101610fa0565b5060008060005b8481101561130657600087828151811061100e5761100e6126c5565b6020026020010151905060005b828110156110cc57888181518110611035576110356126c5565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036110c45781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610749565b60010161101b565b506000805b8881101561118d5760008b6040015182815181106110f1576110f16126c5565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361118457851561116e576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161117d9084612d1d565b9250600196505b506001016110d1565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036112065784156111ed576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516111ff9082612d1d565b9050600193505b8060000361125b5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610749565b611269816005612710611dad565b826020015111156112dc578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610749565b8186848a01815181106112f1576112f16126c5565b60209081029190910101525050600101610ff2565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611368576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff161561050a578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906113e49084908690600401612d30565b60006040518083038186803b1580156113fc57600080fd5b505afa158015611410573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6114d8846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051602001611663907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612f5360208301396040518060c00160405280608d8152602001612fd3608d91396040516020016116d093929190612d5f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612fa56020830139604051602001611723929190612da2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1683526117909695949392600401612dfd565b600060405180830381600087803b1580156117aa57600080fd5b505af1158015611410573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff83166117e3576103a88282611805565b6103a873ffffffffffffffffffffffffffffffffffffffff8416338484611de9565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461185f576040519150601f19603f3d011682016040523d82523d6000602084013e611864565b606091505b50509050806103a8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604081015181516060015110156118e2576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108da5760005b81608001515181101561050a578160800151818151811061191d5761191d6126c5565b6020026020010151604001518260800151828151811061193f5761193f6126c5565b60200260200101516020015114611982576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001016118fa565b6119c46040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115611a06576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611a1c856020015186604001518686611edb565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611a7a57611a7a612696565b604051908082528060200260200182016040528015611ae357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611a985790505b50915060005b81811015611b3a57611b15868281518110611b0657611b066126c5565b60200260200101518686611f58565b838281518110611b2757611b276126c5565b6020908102919091010152600101611ae9565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a982015260009060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612f5360208301396040518060c00160405280608d8152602001612fd3608d9139604051602001611ce993929190612d5f565b60405160208183030381529060405280519060200120611d0c8360000151612028565b83602001518460400151856060015160000151866060015160200151876060015160400151611d3e89608001516120c2565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611de257600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611ed4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610749565b5050505050565b6000838503611eeb575083611f50565b828211611f24576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611f32575082611f50565b428310611f40575083611f50565b611f4d8383428888612160565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611fb7576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fcd856020015186604001518686611edb565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d8152602001612fd3608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351611d9098939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff8111156120e2576120e2612696565b6040519080825280601f01601f19166020018201604052801561210c576020820181803683370190505b50905060005b835181101561215157600061213f858381518110612132576121326126c5565b602002602001015161217b565b60208381028501015250600101612112565b50805160209091012092915050565b600061216f86868686866121f2565b90505b95945050505050565b6000604051806080016040528060528152602001612f5360529139805160209182012083518483015160408087015160608801519151611d90969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000848410612202575080612172565b600061220e8786612eb8565b9050600061221c8888612eb8565b905060008585121561224e5761223e8383612237888a612ecb565b9190611dad565b61224790612ef2565b9050612260565b61225d83836122378989612ecb565b90505b61226a8187612f2a565b9998505050505050505050565b60006040828403121561228957600080fd5b50919050565b60008083601f8401126122a157600080fd5b50813567ffffffffffffffff8111156122b957600080fd5b6020830191508360208285010111156122d157600080fd5b9250929050565b6000806000604084860312156122ed57600080fd5b833567ffffffffffffffff8082111561230557600080fd5b61231187838801612277565b9450602086013591508082111561232757600080fd5b506123348682870161228f565b9497909650939450505050565b60008083601f84011261235357600080fd5b50813567ffffffffffffffff81111561236b57600080fd5b6020830191508360208260051b85010111156122d157600080fd5b6000806020838503121561239957600080fd5b823567ffffffffffffffff8111156123b057600080fd5b6123bc85828601612341565b90969095509350505050565b600080600080604085870312156123de57600080fd5b843567ffffffffffffffff808211156123f657600080fd5b61240288838901612341565b9096509450602087013591508082111561241b57600080fd5b506124288782880161228f565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108da57600080fd5b60006020828403121561246857600080fd5b813561247381612434565b9392505050565b60006020828403121561248c57600080fd5b813567ffffffffffffffff8111156124a357600080fd5b611f5084828501612277565b60005b838110156124ca5781810151838201526020016124b2565b50506000910152565b600081518084526124eb8160208601602086016124af565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b8381101561257d578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612532565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526125fc6101a08501826124d3565b9050602083015161263a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612652828261251d565b915050606083015184820360a086015261266c82826124d3565b915050608083015160c08501528091505092915050565b6020815260006124736020830184612588565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612769577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612757868351612588565b9550938201939082019060010161271d565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126127ee57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261282d57600080fd5b83018035915067ffffffffffffffff82111561284857600080fd5b6020019150368190038213156122d157600080fd5b6040516060810167ffffffffffffffff8111828210171561288057612880612696565b60405290565b6040516080810167ffffffffffffffff8111828210171561288057612880612696565b60405160a0810167ffffffffffffffff8111828210171561288057612880612696565b60405160c0810167ffffffffffffffff8111828210171561288057612880612696565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561293657612936612696565b604052919050565b600082601f83011261294f57600080fd5b813567ffffffffffffffff81111561296957612969612696565b61299a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128ef565b8181528460208386010111156129af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156129de57600080fd5b6129e661285d565b905081356129f381612434565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612a2b57612a2b612696565b5060051b60200190565b600082601f830112612a4657600080fd5b81356020612a5b612a5683612a11565b6128ef565b82815260079290921b84018101918181019086841115612a7a57600080fd5b8286015b84811015612adf5760808189031215612a975760008081fd5b612a9f612886565b8135612aaa81612434565b8152818501358582015260408083013590820152606080830135612acd81612434565b90820152835291830191608001612a7e565b509695505050505050565b600060208284031215612afc57600080fd5b813567ffffffffffffffff80821115612b1457600080fd5b9083019060e08286031215612b2857600080fd5b612b306128a9565b823582811115612b3f57600080fd5b830160c08188031215612b5157600080fd5b612b596128cc565b8135612b6481612434565b81526020820135612b7481612434565b8060208301525060408201356040820152606082013560608201526080820135612b9d81612434565b608082015260a082013584811115612bb457600080fd5b612bc08982850161293e565b60a08301525080835250506020830135602082015260408301356040820152612bec86606085016129cc565b606082015260c083013582811115612c0357600080fd5b612c0f87828601612a35565b60808301525095945050505050565b60006020808385031215612c3157600080fd5b825167ffffffffffffffff811115612c4857600080fd5b8301601f81018513612c5957600080fd5b8051612c67612a5682612a11565b81815260609182028301840191848201919088841115612c8657600080fd5b938501935b83851015612ce25780858a031215612ca35760008081fd5b612cab61285d565b8551612cb681612434565b81528587015187820152604080870151612ccf81612434565b9082015283529384019391850191612c8b565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561095557610955612cee565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611f506040830184612588565b60008451612d718184602089016124af565b845190830190612d858183602089016124af565b8451910190612d988183602088016124af565b0195945050505050565b7f44757463684f72646572207769746e6573732900000000000000000000000000815260008351612dda8160138501602088016124af565b835190830190612df18160138401602088016124af565b01601301949350505050565b6000610140612e2d838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612e6e6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612ea3818401866124d3565b905082810361012084015261226a81856124d3565b8181038181111561095557610955612cee565b8181036000831280158383131683831282161715612eeb57612eeb612cee565b5092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203612f2357612f23612cee565b5060000390565b8082018281126000831280158216821582161715612f4a57612f4a612cee565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220430ad8ee4f437c7cb92a9d49ef5b10b2917e10d4dee5b45d97aa1049173516e464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x001\xB68\x03\x80b\x001\xB6\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xC0V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x84\x92\x84\x92\x83\x92\x83\x92\x90\x91\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xFF\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xBDW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xD4W`\0\x80\xFD[\x82Qb\0\0\xE1\x81b\0\0\xA7V[` \x84\x01Q\x90\x92Pb\0\0\xF4\x81b\0\0\xA7V[\x80\x91PP\x92P\x92\x90PV[`\x80Qa0\x95b\0\x01!`\09`\0\x81\x81`\xFB\x01Ra\x14\x1A\x01Ra0\x95`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xB5W`\x005`\xE0\x1C\x80c?b\x19.\x11a\0iW\x80c\x8D\xA5\xCB[\x11a\0NW\x80c\x8D\xA5\xCB[\x14a\x01\xBAW\x80c\x9B\xB3\"e\x14a\x01\xE7W\x80c\xF2\xFD\xE3\x8B\x14a\x02\x14W`\0\x80\xFD[\x80c?b\x19.\x14a\x01zW\x80ci\x99\xB3w\x14a\x01\x8DW`\0\x80\xFD[\x80c\x12&\x1E\xE7\x11a\0\x9AW\x80c\x12&\x1E\xE7\x14a\0\xE9W\x80c\x13\xFBr\xC7\x14a\x01GW\x80c-w\x13\x89\x14a\x01ZW`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xC1W\x80c\rz\x16\xC3\x14a\0\xD6W`\0\x80\xFD[6a\0\xBCW\0[`\0\x80\xFD[a\0\xD4a\0\xCF6`\x04a\"\xD8V[a\x024V[\0[a\0\xD4a\0\xE46`\x04a#\x86V[a\x03\xADV[4\x80\x15a\0\xF5W`\0\x80\xFD[Pa\x01\x1D\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD4a\x01U6`\x04a#\xC8V[a\x05\x0EV[4\x80\x15a\x01fW`\0\x80\xFD[Pa\0\xD4a\x01u6`\x04a$VV[a\x06\xCCV[a\0\xD4a\x01\x886`\x04a$zV[a\x07\xD8V[4\x80\x15a\x01\x99W`\0\x80\xFD[P`\x01Ta\x01\x1D\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xC6W`\0\x80\xFD[P`\0Ta\x01\x1D\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xF3W`\0\x80\xFD[Pa\x02\x07a\x02\x026`\x04a$zV[a\x08\xDDV[`@Qa\x01>\x91\x90a&\x83V[4\x80\x15a\x02 W`\0\x80\xFD[Pa\0\xD4a\x02/6`\x04a$VV[a\t[V[a\x02=`\0\xFD[PPPPa\x03\x9D\x81a\x0B\x86V[Pa\x03\xA8`\x01`\x02UV[PPPV[a\x03\xB5a\nLV[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\xD1Wa\x03\xD1a&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xEFW\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xEBWa\x04\xC6\x85\x85\x83\x81\x81\x10a\x04\xAFWa\x04\xAFa&\xC5V[\x90P` \x02\x81\x01\x90a\x04\xC1\x91\x90a'\xBAV[a\n\xBDV[\x82\x82\x81Q\x81\x10a\x04\xD8Wa\x04\xD8a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04\x92V[Pa\x04\xF5\x81a\x0B5V[a\x04\xFE\x81a\x0B\x86V[PPa\x05\n`\x01`\x02UV[PPV[a\x05\x16a\nLV[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x052Wa\x052a&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xEDW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05PW\x90P[P\x90P`\0[\x82\x81\x10\x15a\x065Wa\x06\x10\x87\x87\x83\x81\x81\x10a\x04\xAFWa\x04\xAFa&\xC5V[\x82\x82\x81Q\x81\x10a\x06\"Wa\x06\"a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xF3V[Pa\x06?\x81a\x0B5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x7F\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&\xF4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06\x99W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06\xADW=`\0\x80>=`\0\xFD[PPPPa\x06\xBA\x81a\x0B\x86V[PPa\x06\xC6`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07RW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\xE0a\nLV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xF7W\x90PP\x90Pa\x08\x9F\x82a\n\xBDV[\x81`\0\x81Q\x81\x10a\x08\xB2Wa\x08\xB2a&\xC5V[` \x02` \x01\x01\x81\x90RPa\x08\xC6\x81a\x0B5V[a\x08\xCF\x81a\x0B\x86V[Pa\x08\xDA`\x01`\x02UV[PV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\tU\x82a\n\xBDV[\x92\x91PPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\xDCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07IV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\n\xB7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07IV[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\tU\x82a\x0C\xD9V[\x80Q`\0[\x81\x81\x10\x15a\x03\xA8W`\0\x83\x82\x81Q\x81\x10a\x0BVWa\x0BVa&\xC5V[` \x02` \x01\x01Q\x90Pa\x0Bi\x81a\x0E'V[a\x0Bs\x813a\x13\x17V[a\x0B}\x813a\x14\x18V[P`\x01\x01a\x0B:V[\x80Q`\0[\x81\x81\x10\x15a\x0C\xC8W`\0\x83\x82\x81Q\x81\x10a\x0B\xA7Wa\x0B\xA7a&\xC5V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C(W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xDEWa\x0B\xDEa&\xC5V[` \x02` \x01\x01Q\x90Pa\x0C\x1F\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x17\xBE\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBEV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CqWa\x0Cqa&\xC5V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xB6\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8BV[PG\x15a\x05\nWa\x05\n3Ga\x18\x05V[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\rR\x83\x80a'\xF8V[\x81\x01\x90a\r_\x91\x90a*\xEAV[\x90Pa\rj\x81a\x18\x9FV[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\r\xA0\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x19\x8A\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\r\xC6\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x1A\\\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\r\xDB\x91\x90a'\xF8V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0E\x1E\x83a\x1BCV[\x90R\x93\x92PPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0EGWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x0E\x9E\x90\x85\x90`\x04\x01a&\x83V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xBBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0F\x01\x91\x90\x81\x01\x90a,\x1EV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x0F\x19\x82\x84a-\x1DV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0F1Wa\x0F1a&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\x9AW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0FOW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x0F\xEBW\x85`@\x01Q\x81\x81Q\x81\x10a\x0F\xBEWa\x0F\xBEa&\xC5V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0F\xD8Wa\x0F\xD8a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F\xA0V[P`\0\x80`\0[\x84\x81\x10\x15a\x13\x06W`\0\x87\x82\x81Q\x81\x10a\x10\x0EWa\x10\x0Ea&\xC5V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x10\xCCW\x88\x81\x81Q\x81\x10a\x105Wa\x105a&\xC5V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\xC4W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07IV[`\x01\x01a\x10\x1BV[P`\0\x80[\x88\x81\x10\x15a\x11\x8DW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x10\xF1Wa\x10\xF1a&\xC5V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x11\x84W\x85\x15a\x11nW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x11}\x90\x84a-\x1DV[\x92P`\x01\x96P[P`\x01\x01a\x10\xD1V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x12\x06W\x84\x15a\x11\xEDW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11\xFF\x90\x82a-\x1DV[\x90P`\x01\x93P[\x80`\0\x03a\x12[W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07IV[a\x12i\x81`\x05a'\x10a\x1D\xADV[\x82` \x01Q\x11\x15a\x12\xDCW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07IV[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x12\xF1Wa\x12\xF1a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x0F\xF2V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x13hW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x05\nW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x13\xE4\x90\x84\x90\x86\x90`\x04\x01a-0V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x13\xFCW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x14\x10W=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x14\xD8\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x16c\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/S` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xD3`\x8D\x919`@Q` \x01a\x16\xD0\x93\x92\x91\x90a-_V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a/\xA5` \x83\x019`@Q` \x01a\x17#\x92\x91\x90a-\xA2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x17\x90\x96\x95\x94\x93\x92`\x04\x01a-\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x17\xAAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x14\x10W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x17\xE3Wa\x03\xA8\x82\x82a\x18\x05V[a\x03\xA8s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1D\xE9V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x18_W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x18dV[``\x91P[PP\x90P\x80a\x03\xA8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\x18\xE2W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\xDAW`\0[\x81`\x80\x01QQ\x81\x10\x15a\x05\nW\x81`\x80\x01Q\x81\x81Q\x81\x10a\x19\x1DWa\x19\x1Da&\xC5V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\x19?Wa\x19?a&\xC5V[` \x02` \x01\x01Q` \x01Q\x14a\x19\x82W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x18\xFAV[a\x19\xC4`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x1A\x06W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1A\x1C\x85` \x01Q\x86`@\x01Q\x86\x86a\x1E\xDBV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1AzWa\x1Aza&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1A\xE3W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x1A\x98W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x1B:Wa\x1B\x15\x86\x82\x81Q\x81\x10a\x1B\x06Wa\x1B\x06a&\xC5V[` \x02` \x01\x01Q\x86\x86a\x1FXV[\x83\x82\x81Q\x81\x10a\x1B'Wa\x1B'a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1A\xE9V[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R`\0\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/S` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xD3`\x8D\x919`@Q` \x01a\x1C\xE9\x93\x92\x91\x90a-_V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1D\x0C\x83`\0\x01Qa (V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q`\0\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x1D>\x89`\x80\x01Qa \xC2V[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1D\xE2W`\0\x80\xFD[P\x91\x02\x04\x90V[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x1E\xD4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07IV[PPPPPV[`\0\x83\x85\x03a\x1E\xEBWP\x83a\x1FPV[\x82\x82\x11a\x1F$W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1F2WP\x82a\x1FPV[B\x83\x10a\x1F@WP\x83a\x1FPV[a\x1FM\x83\x83B\x88\x88a!`V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1F\xB7W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1F\xCD\x85` \x01Q\x86`@\x01Q\x86\x86a\x1E\xDBV[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xD3`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x1D\x90\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \xE2Wa \xE2a&\x96V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a!\x0CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a!QW`\0a!?\x85\x83\x81Q\x81\x10a!2Wa!2a&\xC5V[` \x02` \x01\x01Qa!{V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a!\x12V[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0a!o\x86\x86\x86\x86\x86a!\xF2V[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/S`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x1D\x90\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x84\x84\x10a\"\x02WP\x80a!rV[`\0a\"\x0E\x87\x86a.\xB8V[\x90P`\0a\"\x1C\x88\x88a.\xB8V[\x90P`\0\x85\x85\x12\x15a\"NWa\">\x83\x83a\"7\x88\x8Aa.\xCBV[\x91\x90a\x1D\xADV[a\"G\x90a.\xF2V[\x90Pa\"`V[a\"]\x83\x83a\"7\x89\x89a.\xCBV[\x90P[a\"j\x81\x87a/*V[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a\"\x89W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\"\xA1W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xB9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\xD1W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\"\xEDW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x05W`\0\x80\xFD[a#\x11\x87\x83\x88\x01a\"wV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#'W`\0\x80\xFD[Pa#4\x86\x82\x87\x01a\"\x8FV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a#SW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#kW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"\xD1W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a#\x99W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xB0W`\0\x80\xFD[a#\xBC\x85\x82\x86\x01a#AV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a#\xDEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xF6W`\0\x80\xFD[a$\x02\x88\x83\x89\x01a#AV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\x1BW`\0\x80\xFD[Pa$(\x87\x82\x88\x01a\"\x8FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xDAW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a$hW`\0\x80\xFD[\x815a$s\x81a$4V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a$\x8CW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xA3W`\0\x80\xFD[a\x1FP\x84\x82\x85\x01a\"wV[`\0[\x83\x81\x10\x15a$\xCAW\x81\x81\x01Q\x83\x82\x01R` \x01a$\xB2V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra$\xEB\x81` \x86\x01` \x86\x01a$\xAFV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a%}W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a%2V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%\xFCa\x01\xA0\x85\x01\x82a$\xD3V[\x90P` \x83\x01Qa&:` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra&R\x82\x82a%\x1DV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra&l\x82\x82a$\xD3V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[` \x81R`\0a$s` \x83\x01\x84a%\x88V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a'iW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'W\x86\x83Qa%\x88V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\x1DV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'\xEEW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(-W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(HW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"\xD1W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)6Wa)6a&\x96V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a)OW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)iWa)ia&\x96V[a)\x9A` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(\xEFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)\xAFW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a)\xDEW`\0\x80\xFD[a)\xE6a(]V[\x90P\x815a)\xF3\x81a$4V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*+Wa*+a&\x96V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a*FW`\0\x80\xFD[\x815` a*[a*V\x83a*\x11V[a(\xEFV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a*zW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a*\xDFW`\x80\x81\x89\x03\x12\x15a*\x97W`\0\x80\x81\xFD[a*\x9Fa(\x86V[\x815a*\xAA\x81a$4V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a*\xCD\x81a$4V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a*~V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a*\xFCW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a+\x14W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a+(W`\0\x80\xFD[a+0a(\xA9V[\x825\x82\x81\x11\x15a+?W`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a+QW`\0\x80\xFD[a+Ya(\xCCV[\x815a+d\x81a$4V[\x81R` \x82\x015a+t\x81a$4V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a+\x9D\x81a$4V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a+\xB4W`\0\x80\xFD[a+\xC0\x89\x82\x85\x01a)>V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+\xEC\x86``\x85\x01a)\xCCV[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a,\x03W`\0\x80\xFD[a,\x0F\x87\x82\x86\x01a*5V[`\x80\x83\x01RP\x95\x94PPPPPV[`\0` \x80\x83\x85\x03\x12\x15a,1W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,HW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,YW`\0\x80\xFD[\x80Qa,ga*V\x82a*\x11V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a,\x86W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a,\xE2W\x80\x85\x8A\x03\x12\x15a,\xA3W`\0\x80\x81\xFD[a,\xABa(]V[\x85Qa,\xB6\x81a$4V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa,\xCF\x81a$4V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a,\x8BV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\tUWa\tUa,\xEEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1FP`@\x83\x01\x84a%\x88V[`\0\x84Qa-q\x81\x84` \x89\x01a$\xAFV[\x84Q\x90\x83\x01\x90a-\x85\x81\x83` \x89\x01a$\xAFV[\x84Q\x91\x01\x90a-\x98\x81\x83` \x88\x01a$\xAFV[\x01\x95\x94PPPPPV[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa-\xDA\x81`\x13\x85\x01` \x88\x01a$\xAFV[\x83Q\x90\x83\x01\x90a-\xF1\x81`\x13\x84\x01` \x88\x01a$\xAFV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a.-\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra.n`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra.\xA3\x81\x84\x01\x86a$\xD3V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"j\x81\x85a$\xD3V[\x81\x81\x03\x81\x81\x11\x15a\tUWa\tUa,\xEEV[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a.\xEBWa.\xEBa,\xEEV[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a/#Wa/#a,\xEEV[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a/JWa/Ja,\xEEV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 C\n\xD8\xEEOC||\xB9*\x9DI\xEF[\x10\xB2\x91~\x10\xD4\xDE\xE5\xB4]\x97\xAA\x10I\x175\x16\xE4dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052600436106100b55760003560e01c80633f62192e116100695780638da5cb5b1161004e5780638da5cb5b146101ba5780639bb32265146101e7578063f2fde38b1461021457600080fd5b80633f62192e1461017a5780636999b3771461018d57600080fd5b806312261ee71161009a57806312261ee7146100e957806313fb72c7146101475780632d7713891461015a57600080fd5b80630d335884146100c15780630d7a16c3146100d657600080fd5b366100bc57005b600080fd5b6100d46100cf3660046122d8565b610234565b005b6100d46100e4366004612386565b6103ad565b3480156100f557600080fd5b5061011d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d46101553660046123c8565b61050e565b34801561016657600080fd5b506100d4610175366004612456565b6106cc565b6100d461018836600461247a565b6107d8565b34801561019957600080fd5b5060015461011d9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101c657600080fd5b5060005461011d9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101f357600080fd5b5061020761020236600461247a565b6108dd565b60405161013e9190612683565b34801561022057600080fd5b506100d461022f366004612456565b61095b565b61023c610a4c565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816102535790505090506102fb84610abd565b8160008151811061030e5761030e6126c5565b602002602001018190525061032281610b35565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610362908490879087906004016126f4565b600060405180830381600087803b15801561037c57600080fd5b505af1158015610390573d6000803e3d6000fd5b5050505061039d81610b86565b506103a86001600255565b505050565b6103b5610a4c565b8060008167ffffffffffffffff8111156103d1576103d1612696565b60405190808252806020026020018201604052801561048c57816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103ef5790505b50905060005b828110156104eb576104c68585838181106104af576104af6126c5565b90506020028101906104c191906127ba565b610abd565b8282815181106104d8576104d86126c5565b6020908102919091010152600101610492565b506104f581610b35565b6104fe81610b86565b505061050a6001600255565b5050565b610516610a4c565b8260008167ffffffffffffffff81111561053257610532612696565b6040519080825280602002602001820160405280156105ed57816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105505790505b50905060005b82811015610635576106108787838181106104af576104af6126c5565b828281518110610622576106226126c5565b60209081029190910101526001016105f3565b5061063f81610b35565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061067f908490889088906004016126f4565b600060405180830381600087803b15801561069957600080fd5b505af11580156106ad573d6000803e3d6000fd5b505050506106ba81610b86565b50506106c66001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b6107e0610a4c565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107f757905050905061089f82610abd565b816000815181106108b2576108b26126c5565b60200260200101819052506108c681610b35565b6108cf81610b86565b506108da6001600255565b50565b6040805161016081018252600060a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261095582610abd565b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610749565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6002805403610ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610749565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261095582610cd9565b805160005b818110156103a8576000838281518110610b5657610b566126c5565b60200260200101519050610b6981610e27565b610b738133611317565b610b7d8133611418565b50600101610b3a565b805160005b81811015610cc8576000838281518110610ba757610ba76126c5565b602002602001015190506000816040015151905060005b81811015610c2857600083604001518281518110610bde57610bde6126c5565b60200260200101519050610c1f81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff166117be9092919063ffffffff16565b50600101610bbe565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c7157610c716126c5565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cb691815260200190565b60405180910390a45050600101610b8b565b50471561050a5761050a3347611805565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610d5283806127f8565b810190610d5f9190612aea565b9050610d6a8161189f565b6040518060a0016040528082600001518152602001610da083602001518460400151856060015161198a9092919063ffffffff16565b8152602001610dc6836020015184604001518560800151611a5c9092919063ffffffff16565b8152602001848060200190610ddb91906127f8565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610e1e83611b43565b90529392505050565b60015473ffffffffffffffffffffffffffffffffffffffff16610e475750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390610e9e908590600401612683565b600060405180830381865afa158015610ebb573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f019190810190612c1e565b6040830151518151919250906000610f198284612d1d565b67ffffffffffffffff811115610f3157610f31612696565b604051908082528060200260200182016040528015610f9a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610f4f5790505b50905060005b83811015610feb5785604001518181518110610fbe57610fbe6126c5565b6020026020010151828281518110610fd857610fd86126c5565b6020908102919091010152600101610fa0565b5060008060005b8481101561130657600087828151811061100e5761100e6126c5565b6020026020010151905060005b828110156110cc57888181518110611035576110356126c5565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036110c45781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610749565b60010161101b565b506000805b8881101561118d5760008b6040015182815181106110f1576110f16126c5565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361118457851561116e576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161117d9084612d1d565b9250600196505b506001016110d1565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036112065784156111ed576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516111ff9082612d1d565b9050600193505b8060000361125b5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610749565b611269816005612710611dad565b826020015111156112dc578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610749565b8186848a01815181106112f1576112f16126c5565b60209081029190910101525050600101610ff2565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611368576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff161561050a578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906113e49084908690600401612d30565b60006040518083038186803b1580156113fc57600080fd5b505afa158015611410573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6114d8846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051602001611663907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612f5360208301396040518060c00160405280608d8152602001612fd3608d91396040516020016116d093929190612d5f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612fa56020830139604051602001611723929190612da2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1683526117909695949392600401612dfd565b600060405180830381600087803b1580156117aa57600080fd5b505af1158015611410573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff83166117e3576103a88282611805565b6103a873ffffffffffffffffffffffffffffffffffffffff8416338484611de9565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461185f576040519150601f19603f3d011682016040523d82523d6000602084013e611864565b606091505b50509050806103a8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604081015181516060015110156118e2576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108da5760005b81608001515181101561050a578160800151818151811061191d5761191d6126c5565b6020026020010151604001518260800151828151811061193f5761193f6126c5565b60200260200101516020015114611982576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001016118fa565b6119c46040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115611a06576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611a1c856020015186604001518686611edb565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611a7a57611a7a612696565b604051908082528060200260200182016040528015611ae357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611a985790505b50915060005b81811015611b3a57611b15868281518110611b0657611b066126c5565b60200260200101518686611f58565b838281518110611b2757611b276126c5565b6020908102919091010152600101611ae9565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a982015260009060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612f5360208301396040518060c00160405280608d8152602001612fd3608d9139604051602001611ce993929190612d5f565b60405160208183030381529060405280519060200120611d0c8360000151612028565b83602001518460400151856060015160000151866060015160200151876060015160400151611d3e89608001516120c2565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611de257600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611ed4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610749565b5050505050565b6000838503611eeb575083611f50565b828211611f24576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611f32575082611f50565b428310611f40575083611f50565b611f4d8383428888612160565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611fb7576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fcd856020015186604001518686611edb565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d8152602001612fd3608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351611d9098939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff8111156120e2576120e2612696565b6040519080825280601f01601f19166020018201604052801561210c576020820181803683370190505b50905060005b835181101561215157600061213f858381518110612132576121326126c5565b602002602001015161217b565b60208381028501015250600101612112565b50805160209091012092915050565b600061216f86868686866121f2565b90505b95945050505050565b6000604051806080016040528060528152602001612f5360529139805160209182012083518483015160408087015160608801519151611d90969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000848410612202575080612172565b600061220e8786612eb8565b9050600061221c8888612eb8565b905060008585121561224e5761223e8383612237888a612ecb565b9190611dad565b61224790612ef2565b9050612260565b61225d83836122378989612ecb565b90505b61226a8187612f2a565b9998505050505050505050565b60006040828403121561228957600080fd5b50919050565b60008083601f8401126122a157600080fd5b50813567ffffffffffffffff8111156122b957600080fd5b6020830191508360208285010111156122d157600080fd5b9250929050565b6000806000604084860312156122ed57600080fd5b833567ffffffffffffffff8082111561230557600080fd5b61231187838801612277565b9450602086013591508082111561232757600080fd5b506123348682870161228f565b9497909650939450505050565b60008083601f84011261235357600080fd5b50813567ffffffffffffffff81111561236b57600080fd5b6020830191508360208260051b85010111156122d157600080fd5b6000806020838503121561239957600080fd5b823567ffffffffffffffff8111156123b057600080fd5b6123bc85828601612341565b90969095509350505050565b600080600080604085870312156123de57600080fd5b843567ffffffffffffffff808211156123f657600080fd5b61240288838901612341565b9096509450602087013591508082111561241b57600080fd5b506124288782880161228f565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108da57600080fd5b60006020828403121561246857600080fd5b813561247381612434565b9392505050565b60006020828403121561248c57600080fd5b813567ffffffffffffffff8111156124a357600080fd5b611f5084828501612277565b60005b838110156124ca5781810151838201526020016124b2565b50506000910152565b600081518084526124eb8160208601602086016124af565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b8381101561257d578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612532565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526125fc6101a08501826124d3565b9050602083015161263a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612652828261251d565b915050606083015184820360a086015261266c82826124d3565b915050608083015160c08501528091505092915050565b6020815260006124736020830184612588565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612769577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612757868351612588565b9550938201939082019060010161271d565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126127ee57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261282d57600080fd5b83018035915067ffffffffffffffff82111561284857600080fd5b6020019150368190038213156122d157600080fd5b6040516060810167ffffffffffffffff8111828210171561288057612880612696565b60405290565b6040516080810167ffffffffffffffff8111828210171561288057612880612696565b60405160a0810167ffffffffffffffff8111828210171561288057612880612696565b60405160c0810167ffffffffffffffff8111828210171561288057612880612696565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561293657612936612696565b604052919050565b600082601f83011261294f57600080fd5b813567ffffffffffffffff81111561296957612969612696565b61299a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128ef565b8181528460208386010111156129af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156129de57600080fd5b6129e661285d565b905081356129f381612434565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612a2b57612a2b612696565b5060051b60200190565b600082601f830112612a4657600080fd5b81356020612a5b612a5683612a11565b6128ef565b82815260079290921b84018101918181019086841115612a7a57600080fd5b8286015b84811015612adf5760808189031215612a975760008081fd5b612a9f612886565b8135612aaa81612434565b8152818501358582015260408083013590820152606080830135612acd81612434565b90820152835291830191608001612a7e565b509695505050505050565b600060208284031215612afc57600080fd5b813567ffffffffffffffff80821115612b1457600080fd5b9083019060e08286031215612b2857600080fd5b612b306128a9565b823582811115612b3f57600080fd5b830160c08188031215612b5157600080fd5b612b596128cc565b8135612b6481612434565b81526020820135612b7481612434565b8060208301525060408201356040820152606082013560608201526080820135612b9d81612434565b608082015260a082013584811115612bb457600080fd5b612bc08982850161293e565b60a08301525080835250506020830135602082015260408301356040820152612bec86606085016129cc565b606082015260c083013582811115612c0357600080fd5b612c0f87828601612a35565b60808301525095945050505050565b60006020808385031215612c3157600080fd5b825167ffffffffffffffff811115612c4857600080fd5b8301601f81018513612c5957600080fd5b8051612c67612a5682612a11565b81815260609182028301840191848201919088841115612c8657600080fd5b938501935b83851015612ce25780858a031215612ca35760008081fd5b612cab61285d565b8551612cb681612434565b81528587015187820152604080870151612ccf81612434565b9082015283529384019391850191612c8b565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561095557610955612cee565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611f506040830184612588565b60008451612d718184602089016124af565b845190830190612d858183602089016124af565b8451910190612d988183602088016124af565b0195945050505050565b7f44757463684f72646572207769746e6573732900000000000000000000000000815260008351612dda8160138501602088016124af565b835190830190612df18160138401602088016124af565b01601301949350505050565b6000610140612e2d838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612e6e6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612ea3818401866124d3565b905082810361012084015261226a81856124d3565b8181038181111561095557610955612cee565b8181036000831280158383131683831282161715612eeb57612eeb612cee565b5092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203612f2357612f23612cee565b5060000390565b8082018281126000831280158216821582161715612f4a57612f4a612cee565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220430ad8ee4f437c7cb92a9d49ef5b10b2917e10d4dee5b45d97aa1049173516e464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\xB5W`\x005`\xE0\x1C\x80c?b\x19.\x11a\0iW\x80c\x8D\xA5\xCB[\x11a\0NW\x80c\x8D\xA5\xCB[\x14a\x01\xBAW\x80c\x9B\xB3\"e\x14a\x01\xE7W\x80c\xF2\xFD\xE3\x8B\x14a\x02\x14W`\0\x80\xFD[\x80c?b\x19.\x14a\x01zW\x80ci\x99\xB3w\x14a\x01\x8DW`\0\x80\xFD[\x80c\x12&\x1E\xE7\x11a\0\x9AW\x80c\x12&\x1E\xE7\x14a\0\xE9W\x80c\x13\xFBr\xC7\x14a\x01GW\x80c-w\x13\x89\x14a\x01ZW`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xC1W\x80c\rz\x16\xC3\x14a\0\xD6W`\0\x80\xFD[6a\0\xBCW\0[`\0\x80\xFD[a\0\xD4a\0\xCF6`\x04a\"\xD8V[a\x024V[\0[a\0\xD4a\0\xE46`\x04a#\x86V[a\x03\xADV[4\x80\x15a\0\xF5W`\0\x80\xFD[Pa\x01\x1D\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD4a\x01U6`\x04a#\xC8V[a\x05\x0EV[4\x80\x15a\x01fW`\0\x80\xFD[Pa\0\xD4a\x01u6`\x04a$VV[a\x06\xCCV[a\0\xD4a\x01\x886`\x04a$zV[a\x07\xD8V[4\x80\x15a\x01\x99W`\0\x80\xFD[P`\x01Ta\x01\x1D\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xC6W`\0\x80\xFD[P`\0Ta\x01\x1D\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xF3W`\0\x80\xFD[Pa\x02\x07a\x02\x026`\x04a$zV[a\x08\xDDV[`@Qa\x01>\x91\x90a&\x83V[4\x80\x15a\x02 W`\0\x80\xFD[Pa\0\xD4a\x02/6`\x04a$VV[a\t[V[a\x02=`\0\xFD[PPPPa\x03\x9D\x81a\x0B\x86V[Pa\x03\xA8`\x01`\x02UV[PPPV[a\x03\xB5a\nLV[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\xD1Wa\x03\xD1a&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xEFW\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xEBWa\x04\xC6\x85\x85\x83\x81\x81\x10a\x04\xAFWa\x04\xAFa&\xC5V[\x90P` \x02\x81\x01\x90a\x04\xC1\x91\x90a'\xBAV[a\n\xBDV[\x82\x82\x81Q\x81\x10a\x04\xD8Wa\x04\xD8a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04\x92V[Pa\x04\xF5\x81a\x0B5V[a\x04\xFE\x81a\x0B\x86V[PPa\x05\n`\x01`\x02UV[PPV[a\x05\x16a\nLV[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x052Wa\x052a&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xEDW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05PW\x90P[P\x90P`\0[\x82\x81\x10\x15a\x065Wa\x06\x10\x87\x87\x83\x81\x81\x10a\x04\xAFWa\x04\xAFa&\xC5V[\x82\x82\x81Q\x81\x10a\x06\"Wa\x06\"a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xF3V[Pa\x06?\x81a\x0B5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x7F\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&\xF4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06\x99W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06\xADW=`\0\x80>=`\0\xFD[PPPPa\x06\xBA\x81a\x0B\x86V[PPa\x06\xC6`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07RW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\xE0a\nLV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xF7W\x90PP\x90Pa\x08\x9F\x82a\n\xBDV[\x81`\0\x81Q\x81\x10a\x08\xB2Wa\x08\xB2a&\xC5V[` \x02` \x01\x01\x81\x90RPa\x08\xC6\x81a\x0B5V[a\x08\xCF\x81a\x0B\x86V[Pa\x08\xDA`\x01`\x02UV[PV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\tU\x82a\n\xBDV[\x92\x91PPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\xDCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07IV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\n\xB7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07IV[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\tU\x82a\x0C\xD9V[\x80Q`\0[\x81\x81\x10\x15a\x03\xA8W`\0\x83\x82\x81Q\x81\x10a\x0BVWa\x0BVa&\xC5V[` \x02` \x01\x01Q\x90Pa\x0Bi\x81a\x0E'V[a\x0Bs\x813a\x13\x17V[a\x0B}\x813a\x14\x18V[P`\x01\x01a\x0B:V[\x80Q`\0[\x81\x81\x10\x15a\x0C\xC8W`\0\x83\x82\x81Q\x81\x10a\x0B\xA7Wa\x0B\xA7a&\xC5V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C(W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xDEWa\x0B\xDEa&\xC5V[` \x02` \x01\x01Q\x90Pa\x0C\x1F\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x17\xBE\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBEV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CqWa\x0Cqa&\xC5V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xB6\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8BV[PG\x15a\x05\nWa\x05\n3Ga\x18\x05V[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\rR\x83\x80a'\xF8V[\x81\x01\x90a\r_\x91\x90a*\xEAV[\x90Pa\rj\x81a\x18\x9FV[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\r\xA0\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x19\x8A\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\r\xC6\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x1A\\\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\r\xDB\x91\x90a'\xF8V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0E\x1E\x83a\x1BCV[\x90R\x93\x92PPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0EGWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x0E\x9E\x90\x85\x90`\x04\x01a&\x83V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xBBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0F\x01\x91\x90\x81\x01\x90a,\x1EV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x0F\x19\x82\x84a-\x1DV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0F1Wa\x0F1a&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\x9AW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0FOW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x0F\xEBW\x85`@\x01Q\x81\x81Q\x81\x10a\x0F\xBEWa\x0F\xBEa&\xC5V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0F\xD8Wa\x0F\xD8a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F\xA0V[P`\0\x80`\0[\x84\x81\x10\x15a\x13\x06W`\0\x87\x82\x81Q\x81\x10a\x10\x0EWa\x10\x0Ea&\xC5V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x10\xCCW\x88\x81\x81Q\x81\x10a\x105Wa\x105a&\xC5V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\xC4W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07IV[`\x01\x01a\x10\x1BV[P`\0\x80[\x88\x81\x10\x15a\x11\x8DW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x10\xF1Wa\x10\xF1a&\xC5V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x11\x84W\x85\x15a\x11nW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x11}\x90\x84a-\x1DV[\x92P`\x01\x96P[P`\x01\x01a\x10\xD1V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x12\x06W\x84\x15a\x11\xEDW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11\xFF\x90\x82a-\x1DV[\x90P`\x01\x93P[\x80`\0\x03a\x12[W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07IV[a\x12i\x81`\x05a'\x10a\x1D\xADV[\x82` \x01Q\x11\x15a\x12\xDCW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07IV[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x12\xF1Wa\x12\xF1a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x0F\xF2V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x13hW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x05\nW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x13\xE4\x90\x84\x90\x86\x90`\x04\x01a-0V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x13\xFCW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x14\x10W=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x14\xD8\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x16c\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/S` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xD3`\x8D\x919`@Q` \x01a\x16\xD0\x93\x92\x91\x90a-_V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a/\xA5` \x83\x019`@Q` \x01a\x17#\x92\x91\x90a-\xA2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x17\x90\x96\x95\x94\x93\x92`\x04\x01a-\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x17\xAAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x14\x10W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x17\xE3Wa\x03\xA8\x82\x82a\x18\x05V[a\x03\xA8s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1D\xE9V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x18_W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x18dV[``\x91P[PP\x90P\x80a\x03\xA8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\x18\xE2W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\xDAW`\0[\x81`\x80\x01QQ\x81\x10\x15a\x05\nW\x81`\x80\x01Q\x81\x81Q\x81\x10a\x19\x1DWa\x19\x1Da&\xC5V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\x19?Wa\x19?a&\xC5V[` \x02` \x01\x01Q` \x01Q\x14a\x19\x82W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x18\xFAV[a\x19\xC4`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x1A\x06W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1A\x1C\x85` \x01Q\x86`@\x01Q\x86\x86a\x1E\xDBV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1AzWa\x1Aza&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1A\xE3W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x1A\x98W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x1B:Wa\x1B\x15\x86\x82\x81Q\x81\x10a\x1B\x06Wa\x1B\x06a&\xC5V[` \x02` \x01\x01Q\x86\x86a\x1FXV[\x83\x82\x81Q\x81\x10a\x1B'Wa\x1B'a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1A\xE9V[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R`\0\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/S` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xD3`\x8D\x919`@Q` \x01a\x1C\xE9\x93\x92\x91\x90a-_V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1D\x0C\x83`\0\x01Qa (V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q`\0\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x1D>\x89`\x80\x01Qa \xC2V[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1D\xE2W`\0\x80\xFD[P\x91\x02\x04\x90V[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x1E\xD4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07IV[PPPPPV[`\0\x83\x85\x03a\x1E\xEBWP\x83a\x1FPV[\x82\x82\x11a\x1F$W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1F2WP\x82a\x1FPV[B\x83\x10a\x1F@WP\x83a\x1FPV[a\x1FM\x83\x83B\x88\x88a!`V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1F\xB7W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1F\xCD\x85` \x01Q\x86`@\x01Q\x86\x86a\x1E\xDBV[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xD3`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x1D\x90\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \xE2Wa \xE2a&\x96V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a!\x0CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a!QW`\0a!?\x85\x83\x81Q\x81\x10a!2Wa!2a&\xC5V[` \x02` \x01\x01Qa!{V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a!\x12V[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0a!o\x86\x86\x86\x86\x86a!\xF2V[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/S`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x1D\x90\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x84\x84\x10a\"\x02WP\x80a!rV[`\0a\"\x0E\x87\x86a.\xB8V[\x90P`\0a\"\x1C\x88\x88a.\xB8V[\x90P`\0\x85\x85\x12\x15a\"NWa\">\x83\x83a\"7\x88\x8Aa.\xCBV[\x91\x90a\x1D\xADV[a\"G\x90a.\xF2V[\x90Pa\"`V[a\"]\x83\x83a\"7\x89\x89a.\xCBV[\x90P[a\"j\x81\x87a/*V[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a\"\x89W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\"\xA1W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xB9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\xD1W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\"\xEDW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x05W`\0\x80\xFD[a#\x11\x87\x83\x88\x01a\"wV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#'W`\0\x80\xFD[Pa#4\x86\x82\x87\x01a\"\x8FV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a#SW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#kW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"\xD1W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a#\x99W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xB0W`\0\x80\xFD[a#\xBC\x85\x82\x86\x01a#AV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a#\xDEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xF6W`\0\x80\xFD[a$\x02\x88\x83\x89\x01a#AV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\x1BW`\0\x80\xFD[Pa$(\x87\x82\x88\x01a\"\x8FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xDAW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a$hW`\0\x80\xFD[\x815a$s\x81a$4V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a$\x8CW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xA3W`\0\x80\xFD[a\x1FP\x84\x82\x85\x01a\"wV[`\0[\x83\x81\x10\x15a$\xCAW\x81\x81\x01Q\x83\x82\x01R` \x01a$\xB2V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra$\xEB\x81` \x86\x01` \x86\x01a$\xAFV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a%}W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a%2V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%\xFCa\x01\xA0\x85\x01\x82a$\xD3V[\x90P` \x83\x01Qa&:` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra&R\x82\x82a%\x1DV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra&l\x82\x82a$\xD3V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[` \x81R`\0a$s` \x83\x01\x84a%\x88V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a'iW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'W\x86\x83Qa%\x88V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\x1DV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'\xEEW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(-W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(HW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"\xD1W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)6Wa)6a&\x96V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a)OW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)iWa)ia&\x96V[a)\x9A` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(\xEFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)\xAFW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a)\xDEW`\0\x80\xFD[a)\xE6a(]V[\x90P\x815a)\xF3\x81a$4V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*+Wa*+a&\x96V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a*FW`\0\x80\xFD[\x815` a*[a*V\x83a*\x11V[a(\xEFV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a*zW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a*\xDFW`\x80\x81\x89\x03\x12\x15a*\x97W`\0\x80\x81\xFD[a*\x9Fa(\x86V[\x815a*\xAA\x81a$4V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a*\xCD\x81a$4V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a*~V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a*\xFCW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a+\x14W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a+(W`\0\x80\xFD[a+0a(\xA9V[\x825\x82\x81\x11\x15a+?W`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a+QW`\0\x80\xFD[a+Ya(\xCCV[\x815a+d\x81a$4V[\x81R` \x82\x015a+t\x81a$4V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a+\x9D\x81a$4V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a+\xB4W`\0\x80\xFD[a+\xC0\x89\x82\x85\x01a)>V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+\xEC\x86``\x85\x01a)\xCCV[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a,\x03W`\0\x80\xFD[a,\x0F\x87\x82\x86\x01a*5V[`\x80\x83\x01RP\x95\x94PPPPPV[`\0` \x80\x83\x85\x03\x12\x15a,1W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,HW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,YW`\0\x80\xFD[\x80Qa,ga*V\x82a*\x11V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a,\x86W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a,\xE2W\x80\x85\x8A\x03\x12\x15a,\xA3W`\0\x80\x81\xFD[a,\xABa(]V[\x85Qa,\xB6\x81a$4V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa,\xCF\x81a$4V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a,\x8BV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\tUWa\tUa,\xEEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1FP`@\x83\x01\x84a%\x88V[`\0\x84Qa-q\x81\x84` \x89\x01a$\xAFV[\x84Q\x90\x83\x01\x90a-\x85\x81\x83` \x89\x01a$\xAFV[\x84Q\x91\x01\x90a-\x98\x81\x83` \x88\x01a$\xAFV[\x01\x95\x94PPPPPV[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa-\xDA\x81`\x13\x85\x01` \x88\x01a$\xAFV[\x83Q\x90\x83\x01\x90a-\xF1\x81`\x13\x84\x01` \x88\x01a$\xAFV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a.-\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra.n`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra.\xA3\x81\x84\x01\x86a$\xD3V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"j\x81\x85a$\xD3V[\x81\x81\x03\x81\x81\x11\x15a\tUWa\tUa,\xEEV[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a.\xEBWa.\xEBa,\xEEV[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a/#Wa/#a,\xEEV[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a/JWa/Ja,\xEEV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 C\n\xD8\xEEOC||\xB9*\x9DI\xEF[\x10\xB2\x91~\x10\xD4\xDE\xE5\xB4]\x97\xAA\x10I\x175\x16\xE4dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `DeadlineBeforeEndTime()` and selector `0x773a6187`. +```solidity +error DeadlineBeforeEndTime(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DeadlineBeforeEndTime {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DeadlineBeforeEndTime) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DeadlineBeforeEndTime { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DeadlineBeforeEndTime { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DeadlineBeforeEndTime()"; + const SELECTOR: [u8; 4] = [119u8, 58u8, 97u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `DuplicateFeeOutput(address)` and selector `0xfff08303`. +```solidity +error DuplicateFeeOutput(address duplicateToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DuplicateFeeOutput { + pub duplicateToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DuplicateFeeOutput) -> Self { + (value.duplicateToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DuplicateFeeOutput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { duplicateToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DuplicateFeeOutput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DuplicateFeeOutput(address)"; + const SELECTOR: [u8; 4] = [255u8, 240u8, 131u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.duplicateToken, + ), + ) + } + } + }; + /**Custom error with signature `EndTimeBeforeStartTime()` and selector `0x43133453`. +```solidity +error EndTimeBeforeStartTime(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct EndTimeBeforeStartTime {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: EndTimeBeforeStartTime) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for EndTimeBeforeStartTime { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for EndTimeBeforeStartTime { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "EndTimeBeforeStartTime()"; + const SELECTOR: [u8; 4] = [67u8, 19u8, 52u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656`. +```solidity +error FeeTooLarge(address token, uint256 amount, address recipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FeeTooLarge { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FeeTooLarge) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FeeTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for FeeTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "FeeTooLarge(address,uint256,address)"; + const SELECTOR: [u8; 4] = [130u8, 231u8, 86u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + } + }; + /**Custom error with signature `IncorrectAmounts()` and selector `0x7c1f8113`. +```solidity +error IncorrectAmounts(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IncorrectAmounts {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IncorrectAmounts) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IncorrectAmounts { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for IncorrectAmounts { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IncorrectAmounts()"; + const SELECTOR: [u8; 4] = [124u8, 31u8, 129u8, 19u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputAndOutputDecay()` and selector `0xd303758b`. +```solidity +error InputAndOutputDecay(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputDecay {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputDecay) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputDecay { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputDecay { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputDecay()"; + const SELECTOR: [u8; 4] = [211u8, 3u8, 117u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputAndOutputFees()` and selector `0xedc7e2e4`. +```solidity +error InputAndOutputFees(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputFees {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputFees) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputFees { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputFees { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputFees()"; + const SELECTOR: [u8; 4] = [237u8, 199u8, 226u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidFeeToken(address)` and selector `0xeddf07f5`. +```solidity +error InvalidFeeToken(address feeToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidFeeToken { + pub feeToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidFeeToken) -> Self { + (value.feeToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidFeeToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { feeToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidFeeToken { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidFeeToken(address)"; + const SELECTOR: [u8; 4] = [237u8, 223u8, 7u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.feeToken, + ), + ) + } + } + }; + /**Custom error with signature `InvalidReactor()` and selector `0x4ddf4a64`. +```solidity +error InvalidReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReactor {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReactor()"; + const SELECTOR: [u8; 4] = [77u8, 223u8, 74u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Fill(bytes32,address,address,uint256)` and selector `0x78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66`. +```solidity +event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Fill { + #[allow(missing_docs)] + pub orderHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub filler: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub swapper: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Fill { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Fill(bytes32,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + orderHash: topics.1, + filler: topics.2, + swapper: topics.3, + nonce: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.orderHash.clone(), + self.filler.clone(), + self.swapper.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.orderHash); + out[2usize] = ::encode_topic( + &self.filler, + ); + out[3usize] = ::encode_topic( + &self.swapper, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Fill { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Fill> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Fill) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ProtocolFeeControllerSet(address,address)` and selector `0xb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0`. +```solidity +event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ProtocolFeeControllerSet { + #[allow(missing_docs)] + pub oldFeeController: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newFeeController: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProtocolFeeControllerSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ProtocolFeeControllerSet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldFeeController: data.0, + newFeeController: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldFeeController, + ), + ::tokenize( + &self.newFeeController, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ProtocolFeeControllerSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProtocolFeeControllerSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &ProtocolFeeControllerSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _permit2, address _protocolFeeOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _permit2: alloy::sol_types::private::Address, + pub _protocolFeeOwner: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._permit2, value._protocolFeeOwner) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _permit2: tuple.0, + _protocolFeeOwner: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._permit2, + ), + ::tokenize( + &self._protocolFeeOwner, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes))` and selector `0x3f62192e`. +```solidity +function execute(SignedOrder memory order) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes))"; + const SELECTOR: [u8; 4] = [63u8, 98u8, 25u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3`. +```solidity +function executeBatch(SignedOrder[] memory orders) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { orders: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[])"; + const SELECTOR: [u8; 4] = [13u8, 122u8, 22u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7`. +```solidity +function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackCall) -> Self { + (value.orders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchWithCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatchWithCallback((bytes,bytes)[],bytes)"; + const SELECTOR: [u8; 4] = [19u8, 251u8, 114u8, 199u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884`. +```solidity +function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackCall { + pub order: ::RustType, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + SignedOrder, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackCall) -> Self { + (value.order, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeWithCallbackCall { + type Parameters<'a> = (SignedOrder, alloy::sol_types::sol_data::Bytes); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeWithCallback((bytes,bytes),bytes)"; + const SELECTOR: [u8; 4] = [13u8, 51u8, 88u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `feeController()` and selector `0x6999b377`. +```solidity +function feeController() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerCall {} + ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeControllerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeControllerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeController()"; + const SELECTOR: [u8; 4] = [105u8, 153u8, 179u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit2()` and selector `0x12261ee7`. +```solidity +function permit2() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Call {} + ///Container type for the return parameters of the [`permit2()`](permit2Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Return { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit2Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit2Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit2()"; + const SELECTOR: [u8; 4] = [18u8, 38u8, 30u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `resolveOrder((bytes,bytes))` and selector `0x9bb32265`. +```solidity +function resolveOrder(SignedOrder memory order) external view returns (ResolvedOrder memory resolvedOrder); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct resolveOrderCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`resolveOrder((bytes,bytes))`](resolveOrderCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct resolveOrderReturn { + pub resolvedOrder: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: resolveOrderCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for resolveOrderCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ResolvedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: resolveOrderReturn) -> Self { + (value.resolvedOrder,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for resolveOrderReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { resolvedOrder: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for resolveOrderCall { + type Parameters<'a> = (SignedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = resolveOrderReturn; + type ReturnTuple<'a> = (ResolvedOrder,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "resolveOrder((bytes,bytes))"; + const SELECTOR: [u8; 4] = [155u8, 179u8, 34u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setProtocolFeeController(address)` and selector `0x2d771389`. +```solidity +function setProtocolFeeController(address _newFeeController) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerCall { + pub _newFeeController: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerCall) -> Self { + (value._newFeeController,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _newFeeController: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProtocolFeeControllerCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProtocolFeeControllerReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProtocolFeeController(address)"; + const SELECTOR: [u8; 4] = [45u8, 119u8, 19u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newFeeController, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockDutchOrderReactor`](self) function calls. + pub enum MockDutchOrderReactorCalls { + execute(executeCall), + executeBatch(executeBatchCall), + executeBatchWithCallback(executeBatchWithCallbackCall), + executeWithCallback(executeWithCallbackCall), + feeController(feeControllerCall), + owner(ownerCall), + permit2(permit2Call), + resolveOrder(resolveOrderCall), + setProtocolFeeController(setProtocolFeeControllerCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl MockDutchOrderReactorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 51u8, 88u8, 132u8], + [13u8, 122u8, 22u8, 195u8], + [18u8, 38u8, 30u8, 231u8], + [19u8, 251u8, 114u8, 199u8], + [45u8, 119u8, 19u8, 137u8], + [63u8, 98u8, 25u8, 46u8], + [105u8, 153u8, 179u8, 119u8], + [141u8, 165u8, 203u8, 91u8], + [155u8, 179u8, 34u8, 101u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockDutchOrderReactorCalls { + const NAME: &'static str = "MockDutchOrderReactorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 10usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::executeBatchWithCallback(_) => { + ::SELECTOR + } + Self::executeWithCallback(_) => { + ::SELECTOR + } + Self::feeController(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::permit2(_) => ::SELECTOR, + Self::resolveOrder(_) => { + ::SELECTOR + } + Self::setProtocolFeeController(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn executeWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorCalls::executeWithCallback) + } + executeWithCallback + }, + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorCalls::executeBatch) + } + executeBatch + }, + { + fn permit2( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorCalls::permit2) + } + permit2 + }, + { + fn executeBatchWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorCalls::executeBatchWithCallback) + } + executeBatchWithCallback + }, + { + fn setProtocolFeeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorCalls::setProtocolFeeController) + } + setProtocolFeeController + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorCalls::execute) + } + execute + }, + { + fn feeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorCalls::feeController) + } + feeController + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorCalls::owner) + } + owner + }, + { + fn resolveOrder( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorCalls::resolveOrder) + } + resolveOrder + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::feeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::permit2(inner) => { + ::abi_encoded_size(inner) + } + Self::resolveOrder(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setProtocolFeeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::feeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit2(inner) => { + ::abi_encode_raw(inner, out) + } + Self::resolveOrder(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setProtocolFeeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockDutchOrderReactor`](self) custom errors. + pub enum MockDutchOrderReactorErrors { + DeadlineBeforeEndTime(DeadlineBeforeEndTime), + DuplicateFeeOutput(DuplicateFeeOutput), + EndTimeBeforeStartTime(EndTimeBeforeStartTime), + FeeTooLarge(FeeTooLarge), + IncorrectAmounts(IncorrectAmounts), + InputAndOutputDecay(InputAndOutputDecay), + InputAndOutputFees(InputAndOutputFees), + InvalidFeeToken(InvalidFeeToken), + InvalidReactor(InvalidReactor), + NativeTransferFailed(NativeTransferFailed), + } + #[automatically_derived] + impl MockDutchOrderReactorErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [67u8, 19u8, 52u8, 83u8], + [77u8, 223u8, 74u8, 100u8], + [119u8, 58u8, 97u8, 135u8], + [124u8, 31u8, 129u8, 19u8], + [130u8, 231u8, 86u8, 86u8], + [211u8, 3u8, 117u8, 139u8], + [237u8, 199u8, 226u8, 228u8], + [237u8, 223u8, 7u8, 245u8], + [244u8, 179u8, 177u8, 188u8], + [255u8, 240u8, 131u8, 3u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockDutchOrderReactorErrors { + const NAME: &'static str = "MockDutchOrderReactorErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 10usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DeadlineBeforeEndTime(_) => { + ::SELECTOR + } + Self::DuplicateFeeOutput(_) => { + ::SELECTOR + } + Self::EndTimeBeforeStartTime(_) => { + ::SELECTOR + } + Self::FeeTooLarge(_) => { + ::SELECTOR + } + Self::IncorrectAmounts(_) => { + ::SELECTOR + } + Self::InputAndOutputDecay(_) => { + ::SELECTOR + } + Self::InputAndOutputFees(_) => { + ::SELECTOR + } + Self::InvalidFeeToken(_) => { + ::SELECTOR + } + Self::InvalidReactor(_) => { + ::SELECTOR + } + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn EndTimeBeforeStartTime( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorErrors::EndTimeBeforeStartTime) + } + EndTimeBeforeStartTime + }, + { + fn InvalidReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorErrors::InvalidReactor) + } + InvalidReactor + }, + { + fn DeadlineBeforeEndTime( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorErrors::DeadlineBeforeEndTime) + } + DeadlineBeforeEndTime + }, + { + fn IncorrectAmounts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorErrors::IncorrectAmounts) + } + IncorrectAmounts + }, + { + fn FeeTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorErrors::FeeTooLarge) + } + FeeTooLarge + }, + { + fn InputAndOutputDecay( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorErrors::InputAndOutputDecay) + } + InputAndOutputDecay + }, + { + fn InputAndOutputFees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorErrors::InputAndOutputFees) + } + InputAndOutputFees + }, + { + fn InvalidFeeToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorErrors::InvalidFeeToken) + } + InvalidFeeToken + }, + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorErrors::NativeTransferFailed) + } + NativeTransferFailed + }, + { + fn DuplicateFeeOutput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockDutchOrderReactorErrors::DuplicateFeeOutput) + } + DuplicateFeeOutput + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DeadlineBeforeEndTime(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::DuplicateFeeOutput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::EndTimeBeforeStartTime(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encoded_size(inner) + } + Self::IncorrectAmounts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InputAndOutputDecay(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DeadlineBeforeEndTime(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::DuplicateFeeOutput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::EndTimeBeforeStartTime(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::IncorrectAmounts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputDecay(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockDutchOrderReactor`](self) events. + pub enum MockDutchOrderReactorEvents { + Fill(Fill), + OwnershipTransferred(OwnershipTransferred), + ProtocolFeeControllerSet(ProtocolFeeControllerSet), + } + #[automatically_derived] + impl MockDutchOrderReactorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ], + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + [ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MockDutchOrderReactorEvents { + const NAME: &'static str = "MockDutchOrderReactorEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Fill) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ProtocolFeeControllerSet) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MockDutchOrderReactorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockDutchOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`MockDutchOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockDutchOrderReactorInstance { + MockDutchOrderReactorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockDutchOrderReactorInstance::< + T, + P, + N, + >::deploy(provider, _permit2, _protocolFeeOwner) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MockDutchOrderReactorInstance::< + T, + P, + N, + >::deploy_builder(provider, _permit2, _protocolFeeOwner) + } + /**A [`MockDutchOrderReactor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockDutchOrderReactor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockDutchOrderReactorInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockDutchOrderReactorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockDutchOrderReactorInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockDutchOrderReactorInstance { + /**Creates a new wrapper around an on-chain [`MockDutchOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`MockDutchOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _permit2, + _protocolFeeOwner, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _permit2, + _protocolFeeOwner, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockDutchOrderReactorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockDutchOrderReactorInstance { + MockDutchOrderReactorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockDutchOrderReactorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeBatchCall { orders }) + } + ///Creates a new call builder for the [`executeBatchWithCallback`] function. + pub fn executeBatchWithCallback( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeBatchWithCallbackCall { + orders, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`executeWithCallback`] function. + pub fn executeWithCallback( + &self, + order: ::RustType, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeWithCallbackCall { + order, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`feeController`] function. + pub fn feeController( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeControllerCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`permit2`] function. + pub fn permit2(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&permit2Call {}) + } + ///Creates a new call builder for the [`resolveOrder`] function. + pub fn resolveOrder( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&resolveOrderCall { order }) + } + ///Creates a new call builder for the [`setProtocolFeeController`] function. + pub fn setProtocolFeeController( + &self, + _newFeeController: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setProtocolFeeControllerCall { + _newFeeController, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockDutchOrderReactorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Fill`] event. + pub fn Fill_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ProtocolFeeControllerSet`] event. + pub fn ProtocolFeeControllerSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/mockerc20.rs b/crates/bindings-uniswapx/src/mockerc20.rs new file mode 100644 index 0000000..e934267 --- /dev/null +++ b/crates/bindings-uniswapx/src/mockerc20.rs @@ -0,0 +1,3475 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockERC20 { + event Approval(address indexed owner, address indexed spender, uint256 amount); + event Transfer(address indexed from, address indexed to, uint256 amount); + + constructor(string name, string symbol, uint8 decimals); + + function DOMAIN_SEPARATOR() external view returns (bytes32); + function allowance(address, address) external view returns (uint256); + function approve(address spender, uint256 amount) external returns (bool); + function balanceOf(address) external view returns (uint256); + function decimals() external view returns (uint8); + function forceApprove(address _from, address _to, uint256 _amount) external returns (bool); + function mint(address _to, uint256 _amount) external; + function name() external view returns (string memory); + function nonces(address) external view returns (uint256); + function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; + function symbol() external view returns (string memory); + function totalSupply() external view returns (uint256); + function transfer(address to, uint256 amount) external returns (bool); + function transferFrom(address from, address to, uint256 amount) external returns (bool); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "symbol", + "type": "string", + "internalType": "string" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "forceApprove", + "inputs": [ + { + "name": "_from", + "type": "address", + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "mint", + "inputs": [ + { + "name": "_to", + "type": "address", + "internalType": "address" + }, + { + "name": "_amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nonces", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "v", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "r", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "s", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockERC20 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60e06040523480156200001157600080fd5b5060405162001236380380620012368339810160408190526200003491620001de565b8282826000620000458482620002f4565b506001620000548382620002f4565b5060ff81166080524660a0526200006a6200007a565b60c052506200043e945050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000ae9190620003c0565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013e57600080fd5b81516001600160401b03808211156200015b576200015b62000116565b604051601f8301601f19908116603f0116810190828211818310171562000186576200018662000116565b8160405283815260209250866020858801011115620001a457600080fd5b600091505b83821015620001c85785820183015181830184015290820190620001a9565b6000602085830101528094505050505092915050565b600080600060608486031215620001f457600080fd5b83516001600160401b03808211156200020c57600080fd5b6200021a878388016200012c565b945060208601519150808211156200023157600080fd5b5062000240868287016200012c565b925050604084015160ff811681146200025857600080fd5b809150509250925092565b600181811c908216806200027857607f821691505b6020821081036200029957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002ef576000816000526020600020601f850160051c81016020861015620002ca5750805b601f850160051c820191505b81811015620002eb57828155600101620002d6565b5050505b505050565b81516001600160401b0381111562000310576200031062000116565b620003288162000321845462000263565b846200029f565b602080601f831160018114620003605760008415620003475750858301515b600019600386901b1c1916600185901b178555620002eb565b600085815260208120601f198616915b82811015620003915788860151825594840194600190910190840162000370565b5085821015620003b05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620003d08162000263565b60018281168015620003eb5760018114620004015762000432565b60ff198416875282151583028701945062000432565b8760005260208060002060005b85811015620004295781548a8201529084019082016200040e565b50505082870194505b50929695505050505050565b60805160a05160c051610dc86200046e60003960006104e1015260006104ac0152600061015f0152610dc86000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806361f49ed61161008c57806395d89b411161006657806395d89b4114610203578063a9059cbb1461020b578063d505accf1461021e578063dd62ed3e1461023157600080fd5b806361f49ed6146101b057806370a08231146101c35780637ecebe00146101e357600080fd5b806323b872dd116100c857806323b872dd14610147578063313ce5671461015a5780633644e5151461019357806340c10f191461019b57600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761025c565b6040516101049190610a4e565b60405180910390f35b61012061011b366004610ae4565b6102ea565b6040519015158152602001610104565b61013960025481565b604051908152602001610104565b610120610155366004610b0e565b610364565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610104565b6101396104a8565b6101ae6101a9366004610ae4565b610503565b005b6101206101be366004610b0e565b610511565b6101396101d1366004610b4a565b60036020526000908152604090205481565b6101396101f1366004610b4a565b60056020526000908152604090205481565b6100f7610586565b610120610219366004610ae4565b610593565b6101ae61022c366004610b6c565b610618565b61013961023f366004610bdf565b600460209081526000928352604080842090915290825290205481565b6000805461026990610c12565b80601f016020809104026020016040519081016040528092919081815260200182805461029590610c12565b80156102e25780601f106102b7576101008083540402835291602001916102e2565b820191906000526020600020905b8154815290600101906020018083116102c557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103529086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103f8576103c68382610c94565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260408120805485929061042d908490610c94565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104959087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104de576104d961093c565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b61050d82826109d6565b5050565b73ffffffffffffffffffffffffffffffffffffffff838116600081815260046020908152604080832094871680845294825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6001805461026990610c12565b336000908152600360205260408120805483919083906105b4908490610c94565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103529086815260200190565b42841015610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b600060016106936104a8565b73ffffffffffffffffffffffffffffffffffffffff8a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156107e5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061086057508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e4552000000000000000000000000000000000000604482015260640161067e565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161096e9190610ca7565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546109e89190610d7f565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006020808352835180602085015260005b81811015610a7c57858101830151858201604001528201610a60565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610adf57600080fd5b919050565b60008060408385031215610af757600080fd5b610b0083610abb565b946020939093013593505050565b600080600060608486031215610b2357600080fd5b610b2c84610abb565b9250610b3a60208501610abb565b9150604084013590509250925092565b600060208284031215610b5c57600080fd5b610b6582610abb565b9392505050565b600080600080600080600060e0888a031215610b8757600080fd5b610b9088610abb565b9650610b9e60208901610abb565b95506040880135945060608801359350608088013560ff81168114610bc257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610bf257600080fd5b610bfb83610abb565b9150610c0960208401610abb565b90509250929050565b600181811c90821680610c2657607f821691505b602082108103610c5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561035e5761035e610c65565b60008083548160018260011c91506001831680610cc557607f831692505b60208084108203610cfd577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015610d115760018114610d4457610d71565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610d71565b60008a81526020902060005b86811015610d695781548b820152908501908301610d50565b505084890196505b509498975050505050505050565b8082018082111561035e5761035e610c6556fea2646970667358221220ec21b1b1a52f607978c931fa67a27c863050b1f3891df7934f090dc04515ec5464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x1268\x03\x80b\0\x126\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\xDEV[\x82\x82\x82`\0b\0\0E\x84\x82b\0\x02\xF4V[P`\x01b\0\0T\x83\x82b\0\x02\xF4V[P`\xFF\x81\x16`\x80RF`\xA0Rb\0\0jb\0\0zV[`\xC0RPb\0\x04>\x94PPPPPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qb\0\0\xAE\x91\x90b\0\x03\xC0V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x01>W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01[Wb\0\x01[b\0\x01\x16V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x01\x86Wb\0\x01\x86b\0\x01\x16V[\x81`@R\x83\x81R` \x92P\x86` \x85\x88\x01\x01\x11\x15b\0\x01\xA4W`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x01\xC8W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x01\xA9V[`\0` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01\xF4W`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02\x0CW`\0\x80\xFD[b\0\x02\x1A\x87\x83\x88\x01b\0\x01,V[\x94P` \x86\x01Q\x91P\x80\x82\x11\x15b\0\x021W`\0\x80\xFD[Pb\0\x02@\x86\x82\x87\x01b\0\x01,V[\x92PP`@\x84\x01Q`\xFF\x81\x16\x81\x14b\0\x02XW`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02xW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x02\x99WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x02\xEFW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x02\xCAWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x02\xEBW\x82\x81U`\x01\x01b\0\x02\xD6V[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03\x10Wb\0\x03\x10b\0\x01\x16V[b\0\x03(\x81b\0\x03!\x84Tb\0\x02cV[\x84b\0\x02\x9FV[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03`W`\0\x84\x15b\0\x03GWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x02\xEBV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x03\x91W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03pV[P\x85\x82\x10\x15b\0\x03\xB0W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\0\x80\x83Tb\0\x03\xD0\x81b\0\x02cV[`\x01\x82\x81\x16\x80\x15b\0\x03\xEBW`\x01\x81\x14b\0\x04\x01Wb\0\x042V[`\xFF\x19\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pb\0\x042V[\x87`\0R` \x80`\0 `\0[\x85\x81\x10\x15b\0\x04)W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01b\0\x04\x0EV[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[`\x80Q`\xA0Q`\xC0Qa\r\xC8b\0\x04n`\09`\0a\x04\xE1\x01R`\0a\x04\xAC\x01R`\0a\x01_\x01Ra\r\xC8`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80ca\xF4\x9E\xD6\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x02\x03W\x80c\xA9\x05\x9C\xBB\x14a\x02\x0BW\x80c\xD5\x05\xAC\xCF\x14a\x02\x1EW\x80c\xDDb\xED>\x14a\x021W`\0\x80\xFD[\x80ca\xF4\x9E\xD6\x14a\x01\xB0W\x80cp\xA0\x821\x14a\x01\xC3W\x80c~\xCE\xBE\0\x14a\x01\xE3W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC8W\x80c#\xB8r\xDD\x14a\x01GW\x80c1<\xE5g\x14a\x01ZW\x80c6D\xE5\x15\x14a\x01\x93W\x80c@\xC1\x0F\x19\x14a\x01\x9BW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\rW\x80c\x18\x16\r\xDD\x14a\x010W[`\0\x80\xFD[a\0\xF7a\x02\\V[`@Qa\x01\x04\x91\x90a\nNV[`@Q\x80\x91\x03\x90\xF3[a\x01 a\x01\x1B6`\x04a\n\xE4V[a\x02\xEAV[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x019`\x02T\x81V[`@Q\x90\x81R` \x01a\x01\x04V[a\x01 a\x01U6`\x04a\x0B\x0EV[a\x03dV[a\x01\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x01\x04V[a\x019a\x04\xA8V[a\x01\xAEa\x01\xA96`\x04a\n\xE4V[a\x05\x03V[\0[a\x01 a\x01\xBE6`\x04a\x0B\x0EV[a\x05\x11V[a\x019a\x01\xD16`\x04a\x0BJV[`\x03` R`\0\x90\x81R`@\x90 T\x81V[a\x019a\x01\xF16`\x04a\x0BJV[`\x05` R`\0\x90\x81R`@\x90 T\x81V[a\0\xF7a\x05\x86V[a\x01 a\x02\x196`\x04a\n\xE4V[a\x05\x93V[a\x01\xAEa\x02,6`\x04a\x0BlV[a\x06\x18V[a\x019a\x02?6`\x04a\x0B\xDFV[`\x04` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`\0\x80Ta\x02i\x90a\x0C\x12V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\x95\x90a\x0C\x12V[\x80\x15a\x02\xE2W\x80`\x1F\x10a\x02\xB7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xE2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xC5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x81\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x03R\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x03\xF8Wa\x03\xC6\x83\x82a\x0C\x94V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x04-\x90\x84\x90a\x0C\x94V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16`\0\x81\x81R`\x03` R`@\x90\x81\x90 \x80T\x87\x01\x90UQ\x90\x91\x87\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x04\x95\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14a\x04\xDEWa\x04\xD9a\t=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\x08`WP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\x08\xC6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06~V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\tn\x91\x90a\x0C\xA7V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[\x80`\x02`\0\x82\x82Ta\t\xE8\x91\x90a\r\x7FV[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\n|W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\n`V[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\n\xDFW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\n\xF7W`\0\x80\xFD[a\x0B\0\x83a\n\xBBV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B#W`\0\x80\xFD[a\x0B,\x84a\n\xBBV[\x92Pa\x0B:` \x85\x01a\n\xBBV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x0B\\W`\0\x80\xFD[a\x0Be\x82a\n\xBBV[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\x0B\x87W`\0\x80\xFD[a\x0B\x90\x88a\n\xBBV[\x96Pa\x0B\x9E` \x89\x01a\n\xBBV[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\x0B\xC2W`\0\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xF2W`\0\x80\xFD[a\x0B\xFB\x83a\n\xBBV[\x91Pa\x0C\t` \x84\x01a\n\xBBV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C&W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0C_W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x03^Wa\x03^a\x0CeV[`\0\x80\x83T\x81`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0C\xC5W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0C\xFDW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\"`\x04R`$\x86\xFD[\x81\x80\x15a\r\x11W`\x01\x81\x14a\rDWa\rqV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\rqV[`\0\x8A\x81R` \x90 `\0[\x86\x81\x10\x15a\riW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\rPV[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x03^Wa\x03^a\x0CeV\xFE\xA2dipfsX\"\x12 \xEC!\xB1\xB1\xA5/`yx\xC91\xFAg\xA2|\x860P\xB1\xF3\x89\x1D\xF7\x93O\t\r\xC0E\x15\xECTdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806361f49ed61161008c57806395d89b411161006657806395d89b4114610203578063a9059cbb1461020b578063d505accf1461021e578063dd62ed3e1461023157600080fd5b806361f49ed6146101b057806370a08231146101c35780637ecebe00146101e357600080fd5b806323b872dd116100c857806323b872dd14610147578063313ce5671461015a5780633644e5151461019357806340c10f191461019b57600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761025c565b6040516101049190610a4e565b60405180910390f35b61012061011b366004610ae4565b6102ea565b6040519015158152602001610104565b61013960025481565b604051908152602001610104565b610120610155366004610b0e565b610364565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610104565b6101396104a8565b6101ae6101a9366004610ae4565b610503565b005b6101206101be366004610b0e565b610511565b6101396101d1366004610b4a565b60036020526000908152604090205481565b6101396101f1366004610b4a565b60056020526000908152604090205481565b6100f7610586565b610120610219366004610ae4565b610593565b6101ae61022c366004610b6c565b610618565b61013961023f366004610bdf565b600460209081526000928352604080842090915290825290205481565b6000805461026990610c12565b80601f016020809104026020016040519081016040528092919081815260200182805461029590610c12565b80156102e25780601f106102b7576101008083540402835291602001916102e2565b820191906000526020600020905b8154815290600101906020018083116102c557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103529086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103f8576103c68382610c94565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260408120805485929061042d908490610c94565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104959087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104de576104d961093c565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b61050d82826109d6565b5050565b73ffffffffffffffffffffffffffffffffffffffff838116600081815260046020908152604080832094871680845294825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6001805461026990610c12565b336000908152600360205260408120805483919083906105b4908490610c94565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103529086815260200190565b42841015610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b600060016106936104a8565b73ffffffffffffffffffffffffffffffffffffffff8a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156107e5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061086057508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e4552000000000000000000000000000000000000604482015260640161067e565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161096e9190610ca7565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546109e89190610d7f565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006020808352835180602085015260005b81811015610a7c57858101830151858201604001528201610a60565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610adf57600080fd5b919050565b60008060408385031215610af757600080fd5b610b0083610abb565b946020939093013593505050565b600080600060608486031215610b2357600080fd5b610b2c84610abb565b9250610b3a60208501610abb565b9150604084013590509250925092565b600060208284031215610b5c57600080fd5b610b6582610abb565b9392505050565b600080600080600080600060e0888a031215610b8757600080fd5b610b9088610abb565b9650610b9e60208901610abb565b95506040880135945060608801359350608088013560ff81168114610bc257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610bf257600080fd5b610bfb83610abb565b9150610c0960208401610abb565b90509250929050565b600181811c90821680610c2657607f821691505b602082108103610c5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561035e5761035e610c65565b60008083548160018260011c91506001831680610cc557607f831692505b60208084108203610cfd577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015610d115760018114610d4457610d71565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610d71565b60008a81526020902060005b86811015610d695781548b820152908501908301610d50565b505084890196505b509498975050505050505050565b8082018082111561035e5761035e610c6556fea2646970667358221220ec21b1b1a52f607978c931fa67a27c863050b1f3891df7934f090dc04515ec5464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80ca\xF4\x9E\xD6\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x02\x03W\x80c\xA9\x05\x9C\xBB\x14a\x02\x0BW\x80c\xD5\x05\xAC\xCF\x14a\x02\x1EW\x80c\xDDb\xED>\x14a\x021W`\0\x80\xFD[\x80ca\xF4\x9E\xD6\x14a\x01\xB0W\x80cp\xA0\x821\x14a\x01\xC3W\x80c~\xCE\xBE\0\x14a\x01\xE3W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC8W\x80c#\xB8r\xDD\x14a\x01GW\x80c1<\xE5g\x14a\x01ZW\x80c6D\xE5\x15\x14a\x01\x93W\x80c@\xC1\x0F\x19\x14a\x01\x9BW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\rW\x80c\x18\x16\r\xDD\x14a\x010W[`\0\x80\xFD[a\0\xF7a\x02\\V[`@Qa\x01\x04\x91\x90a\nNV[`@Q\x80\x91\x03\x90\xF3[a\x01 a\x01\x1B6`\x04a\n\xE4V[a\x02\xEAV[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x019`\x02T\x81V[`@Q\x90\x81R` \x01a\x01\x04V[a\x01 a\x01U6`\x04a\x0B\x0EV[a\x03dV[a\x01\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x01\x04V[a\x019a\x04\xA8V[a\x01\xAEa\x01\xA96`\x04a\n\xE4V[a\x05\x03V[\0[a\x01 a\x01\xBE6`\x04a\x0B\x0EV[a\x05\x11V[a\x019a\x01\xD16`\x04a\x0BJV[`\x03` R`\0\x90\x81R`@\x90 T\x81V[a\x019a\x01\xF16`\x04a\x0BJV[`\x05` R`\0\x90\x81R`@\x90 T\x81V[a\0\xF7a\x05\x86V[a\x01 a\x02\x196`\x04a\n\xE4V[a\x05\x93V[a\x01\xAEa\x02,6`\x04a\x0BlV[a\x06\x18V[a\x019a\x02?6`\x04a\x0B\xDFV[`\x04` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`\0\x80Ta\x02i\x90a\x0C\x12V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\x95\x90a\x0C\x12V[\x80\x15a\x02\xE2W\x80`\x1F\x10a\x02\xB7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xE2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xC5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x81\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x03R\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x03\xF8Wa\x03\xC6\x83\x82a\x0C\x94V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x04-\x90\x84\x90a\x0C\x94V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16`\0\x81\x81R`\x03` R`@\x90\x81\x90 \x80T\x87\x01\x90UQ\x90\x91\x87\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x04\x95\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14a\x04\xDEWa\x04\xD9a\t=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\x08`WP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\x08\xC6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06~V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\tn\x91\x90a\x0C\xA7V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[\x80`\x02`\0\x82\x82Ta\t\xE8\x91\x90a\r\x7FV[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\n|W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\n`V[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\n\xDFW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\n\xF7W`\0\x80\xFD[a\x0B\0\x83a\n\xBBV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B#W`\0\x80\xFD[a\x0B,\x84a\n\xBBV[\x92Pa\x0B:` \x85\x01a\n\xBBV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x0B\\W`\0\x80\xFD[a\x0Be\x82a\n\xBBV[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\x0B\x87W`\0\x80\xFD[a\x0B\x90\x88a\n\xBBV[\x96Pa\x0B\x9E` \x89\x01a\n\xBBV[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\x0B\xC2W`\0\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xF2W`\0\x80\xFD[a\x0B\xFB\x83a\n\xBBV[\x91Pa\x0C\t` \x84\x01a\n\xBBV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C&W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0C_W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x03^Wa\x03^a\x0CeV[`\0\x80\x83T\x81`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0C\xC5W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0C\xFDW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\"`\x04R`$\x86\xFD[\x81\x80\x15a\r\x11W`\x01\x81\x14a\rDWa\rqV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\rqV[`\0\x8A\x81R` \x90 `\0[\x86\x81\x10\x15a\riW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\rPV[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x03^Wa\x03^a\x0CeV\xFE\xA2dipfsX\"\x12 \xEC!\xB1\xB1\xA5/`yx\xC91\xFAg\xA2|\x860P\xB1\xF3\x89\x1D\xF7\x93O\t\r\xC0E\x15\xECTdsolcC\0\x08\x18\x003", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. +```solidity +event Approval(address indexed owner, address indexed spender, uint256 amount); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + spender: topics.2, + amount: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.owner.clone(), self.spender.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. +```solidity +event Transfer(address indexed from, address indexed to, uint256 amount); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + from: topics.1, + to: topics.2, + amount: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.from.clone(), self.to.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.from, + ); + out[2usize] = ::encode_topic( + &self.to, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(string name, string symbol, uint8 decimals); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub name: alloy::sol_types::private::String, + pub symbol: alloy::sol_types::private::String, + pub decimals: u8, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<8>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + alloy::sol_types::private::String, + u8, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value.name, value.symbol, value.decimals) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + name: tuple.0, + symbol: tuple.1, + decimals: tuple.2, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<8>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.name, + ), + ::tokenize( + &self.symbol, + ), + as alloy_sol_types::SolType>::tokenize(&self.decimals), + ) + } + } + }; + /**Function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`. +```solidity +function DOMAIN_SEPARATOR() external view returns (bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORCall {} + ///Container type for the return parameters of the [`DOMAIN_SEPARATOR()`](DOMAIN_SEPARATORCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DOMAIN_SEPARATORCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DOMAIN_SEPARATORReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DOMAIN_SEPARATOR()"; + const SELECTOR: [u8; 4] = [54u8, 68u8, 229u8, 21u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `allowance(address,address)` and selector `0xdd62ed3e`. +```solidity +function allowance(address, address) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`allowance(address,address)`](allowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0, _1: tuple.1 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = allowanceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allowance(address,address)"; + const SELECTOR: [u8; 4] = [221u8, 98u8, 237u8, 62u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. +```solidity +function approve(address spender, uint256 amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub spender: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.spender, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. +```solidity +function balanceOf(address) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `decimals()` and selector `0x313ce567`. +```solidity +function decimals() external view returns (uint8); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsCall {} + ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsReturn { + pub _0: u8, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for decimalsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = decimalsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "decimals()"; + const SELECTOR: [u8; 4] = [49u8, 60u8, 229u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `forceApprove(address,address,uint256)` and selector `0x61f49ed6`. +```solidity +function forceApprove(address _from, address _to, uint256 _amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct forceApproveCall { + pub _from: alloy::sol_types::private::Address, + pub _to: alloy::sol_types::private::Address, + pub _amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`forceApprove(address,address,uint256)`](forceApproveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct forceApproveReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: forceApproveCall) -> Self { + (value._from, value._to, value._amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for forceApproveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _from: tuple.0, + _to: tuple.1, + _amount: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: forceApproveReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for forceApproveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for forceApproveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = forceApproveReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "forceApprove(address,address,uint256)"; + const SELECTOR: [u8; 4] = [97u8, 244u8, 158u8, 214u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._from, + ), + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize(&self._amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `mint(address,uint256)` and selector `0x40c10f19`. +```solidity +function mint(address _to, uint256 _amount) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mintCall { + pub _to: alloy::sol_types::private::Address, + pub _amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`mint(address,uint256)`](mintCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct mintReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mintCall) -> Self { + (value._to, value._amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mintCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _to: tuple.0, + _amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: mintReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for mintReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for mintCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = mintReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "mint(address,uint256)"; + const SELECTOR: [u8; 4] = [64u8, 193u8, 15u8, 25u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._to, + ), + as alloy_sol_types::SolType>::tokenize(&self._amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `name()` and selector `0x06fdde03`. +```solidity +function name() external view returns (string memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nameCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nameReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "name()"; + const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `nonces(address)` and selector `0x7ecebe00`. +```solidity +function nonces(address) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct noncesCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`nonces(address)`](noncesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct noncesReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: noncesCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for noncesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: noncesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for noncesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for noncesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = noncesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "nonces(address)"; + const SELECTOR: [u8; 4] = [126u8, 206u8, 190u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)` and selector `0xd505accf`. +```solidity +function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitCall { + pub owner: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + pub value: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub v: u8, + pub r: alloy::sol_types::private::FixedBytes<32>, + pub s: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`permit(address,address,uint256,uint256,uint8,bytes32,bytes32)`](permitCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + u8, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitCall) -> Self { + ( + value.owner, + value.spender, + value.value, + value.deadline, + value.v, + value.r, + value.s, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + spender: tuple.1, + value: tuple.2, + deadline: tuple.3, + v: tuple.4, + r: tuple.5, + s: tuple.6, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permitCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [213u8, 5u8, 172u8, 207u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.value), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + as alloy_sol_types::SolType>::tokenize(&self.v), + as alloy_sol_types::SolType>::tokenize(&self.r), + as alloy_sol_types::SolType>::tokenize(&self.s), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `symbol()` and selector `0x95d89b41`. +```solidity +function symbol() external view returns (string memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for symbolCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = symbolReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "symbol()"; + const SELECTOR: [u8; 4] = [149u8, 216u8, 155u8, 65u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `totalSupply()` and selector `0x18160ddd`. +```solidity +function totalSupply() external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSupplyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSupplyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalSupply()"; + const SELECTOR: [u8; 4] = [24u8, 22u8, 13u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transfer(address,uint256)` and selector `0xa9059cbb`. +```solidity +function transfer(address to, uint256 amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferCall { + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`transfer(address,uint256)`](transferCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferCall) -> Self { + (value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + to: tuple.0, + amount: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transfer(address,uint256)"; + const SELECTOR: [u8; 4] = [169u8, 5u8, 156u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. +```solidity +function transferFrom(address from, address to, uint256 amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value.from, value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + amount: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockERC20`](self) function calls. + pub enum MockERC20Calls { + DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + allowance(allowanceCall), + approve(approveCall), + balanceOf(balanceOfCall), + decimals(decimalsCall), + forceApprove(forceApproveCall), + mint(mintCall), + name(nameCall), + nonces(noncesCall), + permit(permitCall), + symbol(symbolCall), + totalSupply(totalSupplyCall), + transfer(transferCall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl MockERC20Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [6u8, 253u8, 222u8, 3u8], + [9u8, 94u8, 167u8, 179u8], + [24u8, 22u8, 13u8, 221u8], + [35u8, 184u8, 114u8, 221u8], + [49u8, 60u8, 229u8, 103u8], + [54u8, 68u8, 229u8, 21u8], + [64u8, 193u8, 15u8, 25u8], + [97u8, 244u8, 158u8, 214u8], + [112u8, 160u8, 130u8, 49u8], + [126u8, 206u8, 190u8, 0u8], + [149u8, 216u8, 155u8, 65u8], + [169u8, 5u8, 156u8, 187u8], + [213u8, 5u8, 172u8, 207u8], + [221u8, 98u8, 237u8, 62u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockERC20Calls { + const NAME: &'static str = "MockERC20Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 14usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DOMAIN_SEPARATOR(_) => { + ::SELECTOR + } + Self::allowance(_) => { + ::SELECTOR + } + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => { + ::SELECTOR + } + Self::decimals(_) => ::SELECTOR, + Self::forceApprove(_) => { + ::SELECTOR + } + Self::mint(_) => ::SELECTOR, + Self::name(_) => ::SELECTOR, + Self::nonces(_) => ::SELECTOR, + Self::permit(_) => ::SELECTOR, + Self::symbol(_) => ::SELECTOR, + Self::totalSupply(_) => { + ::SELECTOR + } + Self::transfer(_) => ::SELECTOR, + Self::transferFrom(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn name( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::name) + } + name + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::approve) + } + approve + }, + { + fn totalSupply( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::totalSupply) + } + totalSupply + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::transferFrom) + } + transferFrom + }, + { + fn decimals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::decimals) + } + decimals + }, + { + fn DOMAIN_SEPARATOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::DOMAIN_SEPARATOR) + } + DOMAIN_SEPARATOR + }, + { + fn mint( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::mint) + } + mint + }, + { + fn forceApprove( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::forceApprove) + } + forceApprove + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::balanceOf) + } + balanceOf + }, + { + fn nonces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::nonces) + } + nonces + }, + { + fn symbol( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::symbol) + } + symbol + }, + { + fn transfer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::transfer) + } + transfer + }, + { + fn permit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::permit) + } + permit + }, + { + fn allowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC20Calls::allowance) + } + allowance + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::allowance(inner) => { + ::abi_encoded_size(inner) + } + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::decimals(inner) => { + ::abi_encoded_size(inner) + } + Self::forceApprove(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::mint(inner) => { + ::abi_encoded_size(inner) + } + Self::name(inner) => { + ::abi_encoded_size(inner) + } + Self::nonces(inner) => { + ::abi_encoded_size(inner) + } + Self::permit(inner) => { + ::abi_encoded_size(inner) + } + Self::symbol(inner) => { + ::abi_encoded_size(inner) + } + Self::totalSupply(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transfer(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::allowance(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::decimals(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::forceApprove(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::mint(inner) => { + ::abi_encode_raw(inner, out) + } + Self::name(inner) => { + ::abi_encode_raw(inner, out) + } + Self::nonces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit(inner) => { + ::abi_encode_raw(inner, out) + } + Self::symbol(inner) => { + ::abi_encode_raw(inner, out) + } + Self::totalSupply(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transfer(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferFrom(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockERC20`](self) events. + pub enum MockERC20Events { + Approval(Approval), + Transfer(Transfer), + } + #[automatically_derived] + impl MockERC20Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ], + [ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MockERC20Events { + const NAME: &'static str = "MockERC20Events"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Transfer) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MockERC20Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockERC20`](self) contract instance. + +See the [wrapper's documentation](`MockERC20Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockERC20Instance { + MockERC20Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + name: alloy::sol_types::private::String, + symbol: alloy::sol_types::private::String, + decimals: u8, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockERC20Instance::::deploy(provider, name, symbol, decimals) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + name: alloy::sol_types::private::String, + symbol: alloy::sol_types::private::String, + decimals: u8, + ) -> alloy_contract::RawCallBuilder { + MockERC20Instance::::deploy_builder(provider, name, symbol, decimals) + } + /**A [`MockERC20`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockERC20`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockERC20Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockERC20Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockERC20Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockERC20Instance { + /**Creates a new wrapper around an on-chain [`MockERC20`](self) contract instance. + +See the [wrapper's documentation](`MockERC20Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + name: alloy::sol_types::private::String, + symbol: alloy::sol_types::private::String, + decimals: u8, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, name, symbol, decimals); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + name: alloy::sol_types::private::String, + symbol: alloy::sol_types::private::String, + decimals: u8, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + name, + symbol, + decimals, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockERC20Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockERC20Instance { + MockERC20Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockERC20Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`DOMAIN_SEPARATOR`] function. + pub fn DOMAIN_SEPARATOR( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DOMAIN_SEPARATORCall {}) + } + ///Creates a new call builder for the [`allowance`] function. + pub fn allowance( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&allowanceCall { _0, _1 }) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + spender: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { spender, amount }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { _0 }) + } + ///Creates a new call builder for the [`decimals`] function. + pub fn decimals( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&decimalsCall {}) + } + ///Creates a new call builder for the [`forceApprove`] function. + pub fn forceApprove( + &self, + _from: alloy::sol_types::private::Address, + _to: alloy::sol_types::private::Address, + _amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &forceApproveCall { + _from, + _to, + _amount, + }, + ) + } + ///Creates a new call builder for the [`mint`] function. + pub fn mint( + &self, + _to: alloy::sol_types::private::Address, + _amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&mintCall { _to, _amount }) + } + ///Creates a new call builder for the [`name`] function. + pub fn name(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&nameCall {}) + } + ///Creates a new call builder for the [`nonces`] function. + pub fn nonces( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&noncesCall { _0 }) + } + ///Creates a new call builder for the [`permit`] function. + pub fn permit( + &self, + owner: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + value: alloy::sol_types::private::U256, + deadline: alloy::sol_types::private::U256, + v: u8, + r: alloy::sol_types::private::FixedBytes<32>, + s: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permitCall { + owner, + spender, + value, + deadline, + v, + r, + s, + }, + ) + } + ///Creates a new call builder for the [`symbol`] function. + pub fn symbol(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&symbolCall {}) + } + ///Creates a new call builder for the [`totalSupply`] function. + pub fn totalSupply( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSupplyCall {}) + } + ///Creates a new call builder for the [`transfer`] function. + pub fn transfer( + &self, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferCall { to, amount }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &transferFromCall { + from, + to, + amount, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockERC20Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/mockerc721.rs b/crates/bindings-uniswapx/src/mockerc721.rs new file mode 100644 index 0000000..eae70a6 --- /dev/null +++ b/crates/bindings-uniswapx/src/mockerc721.rs @@ -0,0 +1,3553 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockERC721 { + event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); + event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); + event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); + + function approve(address spender, uint256 id) external payable; + function balanceOf(address owner) external view returns (uint256); + function getApproved(uint256 id) external view returns (address); + function initialize(string memory name_, string memory symbol_) external; + function isApprovedForAll(address owner, address operator) external view returns (bool); + function name() external view returns (string memory); + function ownerOf(uint256 id) external view returns (address owner); + function safeTransferFrom(address from, address to, uint256 id) external payable; + function safeTransferFrom(address from, address to, uint256 id, bytes memory data) external payable; + function setApprovalForAll(address operator, bool approved) external; + function supportsInterface(bytes4 interfaceId) external view returns (bool); + function symbol() external view returns (string memory); + function tokenURI(uint256 id) external view returns (string memory); + function transferFrom(address from, address to, uint256 id) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getApproved", + "inputs": [ + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "name_", + "type": "string", + "internalType": "string" + }, + { + "name": "symbol_", + "type": "string", + "internalType": "string" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isApprovedForAll", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "operator", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ownerOf", + "inputs": [ + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "safeTransferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "setApprovalForAll", + "inputs": [ + { + "name": "operator", + "type": "address", + "internalType": "address" + }, + { + "name": "approved", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "supportsInterface", + "inputs": [ + { + "name": "interfaceId", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "tokenURI", + "inputs": [ + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "id", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ApprovalForAll", + "inputs": [ + { + "name": "_owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_operator", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_approved", + "type": "bool", + "indexed": false, + "internalType": "bool" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "_from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "_tokenId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockERC721 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b5061149f806100206000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611040565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110a4565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110bf565b610c16565b6101b461028d3660046110fb565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611177565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111aa565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111aa565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f58361122c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b83611261565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190611299565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a918382611306565b506001610a9e8282611306565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111aa565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611420565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190611299565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115610fa757610fa7610f5d565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610fed57610fed610f5d565b8160405280935085815286868601111561100657600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261103157600080fd5b610e3c83833560208501610f8c565b6000806040838503121561105357600080fd5b823567ffffffffffffffff8082111561106b57600080fd5b61107786838701611020565b9350602085013591508082111561108d57600080fd5b5061109a85828601611020565b9150509250929050565b6000602082840312156110b657600080fd5b610e3c82610ed3565b600080604083850312156110d257600080fd5b6110db83610ed3565b9150602083013580151581146110f057600080fd5b809150509250929050565b6000806000806080858703121561111157600080fd5b61111a85610ed3565b935061112860208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561114b57600080fd5b8501601f8101871361115c57600080fd5b61116b87823560208401610f8c565b91505092959194509250565b6000806040838503121561118a57600080fd5b61119383610ed3565b91506111a160208401610ed3565b90509250929050565b600181811c908216806111be57607f821691505b6020821081036111f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161123b5761123b6111fd565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611292576112926111fd565b5060010190565b6000602082840312156112ab57600080fd5b8151610e3c81610dee565b601f821115610a13576000816000526020600020601f850160051c810160208610156112df5750805b601f850160051c820191505b818110156112fe578281556001016112eb565b505050505050565b815167ffffffffffffffff81111561132057611320610f5d565b6113348161132e84546111aa565b846112b6565b602080601f83116001811461138757600084156113515750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556112fe565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156113d4578886015182559484019460019091019084016113b5565b508582101561141057878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261145f6080830184610e43565b969550505050505056fea26469706673582212207b5268e63263aff1f3750d4f8e9f032fe153bd56f1fa0107dc1665d715b3b5bf64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x14\x9F\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xDDW`\x005`\xE0\x1C\x80ccR!\x1E\x11a\0\x7FW\x80c\xA2,\xB4e\x11a\0YW\x80c\xA2,\xB4e\x14a\x02_W\x80c\xB8\x8DO\xDE\x14a\x02\x7FW\x80c\xC8{V\xDD\x14a\x02\x92W\x80c\xE9\x85\xE9\xC5\x14a\x02\xB3W`\0\x80\xFD[\x80ccR!\x1E\x14a\x01\xFCW\x80cp\xA0\x821\x14a\x02\x1CW\x80c\x95\xD8\x9BA\x14a\x02JW`\0\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xBBW\x80c\t^\xA7\xB3\x14a\x01\xA1W\x80c#\xB8r\xDD\x14a\x01\xB6W\x80cB\x84.\x0E\x14a\x01\xC9W\x80cL\xD8\x8Bv\x14a\x01\xDCW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xE2W\x80c\x06\xFD\xDE\x03\x14a\x01\x17W\x80c\x08\x18\x12\xFC\x14a\x019W[`\0\x80\xFD[4\x80\x15a\0\xEEW`\0\x80\xFD[Pa\x01\x02a\0\xFD6`\x04a\x0E\x1FV[a\x03\tV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01#W`\0\x80\xFD[Pa\x01,a\x03\xEEV[`@Qa\x01\x0E\x91\x90a\x0E\xA7V[4\x80\x15a\x01EW`\0\x80\xFD[Pa\x01|a\x01T6`\x04a\x0E\xBAV[`\0\x90\x81R`\x04` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x0EV[a\x01\xB4a\x01\xAF6`\x04a\x0E\xF7V[a\x04\x80V[\0[a\x01\xB4a\x01\xC46`\x04a\x0F!V[a\x05\xCFV[a\x01\xB4a\x01\xD76`\x04a\x0F!V[a\x08\xC4V[4\x80\x15a\x01\xE8W`\0\x80\xFD[Pa\x01\xB4a\x01\xF76`\x04a\x10@V[a\n\x18V[4\x80\x15a\x02\x08W`\0\x80\xFD[Pa\x01|a\x02\x176`\x04a\x0E\xBAV[a\n\xCEV[4\x80\x15a\x02(W`\0\x80\xFD[Pa\x02=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\x89\x91\x90a\x12\x99V[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\n\x13W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[PPPV[`\x06T`\xFF\x16\x15a\n\x85W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FALREADY_INITIALIZED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[`\0a\n\x91\x83\x82a\x13\x06V[P`\x01a\n\x9E\x82\x82a\x13\x06V[PP`\x06\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UPV[`\0\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x80a\x0BZW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\n`$\x82\x01R\x7FNOT_MINTED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[\x91\x90PV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x0B\xDEW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FZERO_ADDRESS\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[```\x01\x80Ta\x03\xFD\x90a\x11\xAAV[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\x0C\xB8\x84\x84\x84a\x05\xCFV[\x82;\x15\x80a\r\x82WP`@Q\x7F\x15\x0Bz\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x82R\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x15\x0Bz\x02\x90a\r\x1B\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x14 V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\r:W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r^\x91\x90a\x12\x99V[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\r\xE8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[PPPPV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\x0E\x1CW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\x0E1W`\0\x80\xFD[\x815a\x0E<\x81a\r\xEEV[\x93\x92PPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x0EiW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0EMV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R`\0a\x0E<` \x83\x01\x84a\x0ECV[`\0` \x82\x84\x03\x12\x15a\x0E\xCCW`\0\x80\xFD[P5\x91\x90PV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0BZW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0F\nW`\0\x80\xFD[a\x0F\x13\x83a\x0E\xD3V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0F6W`\0\x80\xFD[a\x0F?\x84a\x0E\xD3V[\x92Pa\x0FM` \x85\x01a\x0E\xD3V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x0F\xA7Wa\x0F\xA7a\x0F]V[`@Q`\x1F\x85\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0F\xEDWa\x0F\xEDa\x0F]V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\x06W`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x101W`\0\x80\xFD[a\x0E<\x83\x835` \x85\x01a\x0F\x8CV[`\0\x80`@\x83\x85\x03\x12\x15a\x10SW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x10kW`\0\x80\xFD[a\x10w\x86\x83\x87\x01a\x10 V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x10\x8DW`\0\x80\xFD[Pa\x10\x9A\x85\x82\x86\x01a\x10 V[\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\xB6W`\0\x80\xFD[a\x0E<\x82a\x0E\xD3V[`\0\x80`@\x83\x85\x03\x12\x15a\x10\xD2W`\0\x80\xFD[a\x10\xDB\x83a\x0E\xD3V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x10\xF0W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x11\x11W`\0\x80\xFD[a\x11\x1A\x85a\x0E\xD3V[\x93Pa\x11(` \x86\x01a\x0E\xD3V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11KW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x11\\W`\0\x80\xFD[a\x11k\x87\x825` \x84\x01a\x0F\x8CV[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x8AW`\0\x80\xFD[a\x11\x93\x83a\x0E\xD3V[\x91Pa\x11\xA1` \x84\x01a\x0E\xD3V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x11\xBEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x11\xF7W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[`\0\x81a\x12;Wa\x12;a\x11\xFDV[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x12\x92Wa\x12\x92a\x11\xFDV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x12\xABW`\0\x80\xFD[\x81Qa\x0E<\x81a\r\xEEV[`\x1F\x82\x11\x15a\n\x13W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x12\xDFWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x12\xFEW\x82\x81U`\x01\x01a\x12\xEBV[PPPPPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13 Wa\x13 a\x0F]V[a\x134\x81a\x13.\x84Ta\x11\xAAV[\x84a\x12\xB6V[` \x80`\x1F\x83\x11`\x01\x81\x14a\x13\x87W`\0\x84\x15a\x13QWP\x85\x83\x01Q[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x12\xFEV[`\0\x85\x81R` \x81 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x86\x16\x91[\x82\x81\x10\x15a\x13\xD4W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x13\xB5V[P\x85\x82\x10\x15a\x14\x10W\x87\x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16\x83R\x80\x86\x16` \x84\x01RP\x83`@\x83\x01R`\x80``\x83\x01Ra\x14_`\x80\x83\x01\x84a\x0ECV[\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 {Rh\xE62c\xAF\xF1\xF3u\rO\x8E\x9F\x03/\xE1S\xBDV\xF1\xFA\x01\x07\xDC\x16e\xD7\x15\xB3\xB5\xBFdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611040565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110a4565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110bf565b610c16565b6101b461028d3660046110fb565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611177565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111aa565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111aa565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f58361122c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b83611261565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190611299565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a918382611306565b506001610a9e8282611306565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111aa565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611420565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190611299565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115610fa757610fa7610f5d565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610fed57610fed610f5d565b8160405280935085815286868601111561100657600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261103157600080fd5b610e3c83833560208501610f8c565b6000806040838503121561105357600080fd5b823567ffffffffffffffff8082111561106b57600080fd5b61107786838701611020565b9350602085013591508082111561108d57600080fd5b5061109a85828601611020565b9150509250929050565b6000602082840312156110b657600080fd5b610e3c82610ed3565b600080604083850312156110d257600080fd5b6110db83610ed3565b9150602083013580151581146110f057600080fd5b809150509250929050565b6000806000806080858703121561111157600080fd5b61111a85610ed3565b935061112860208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561114b57600080fd5b8501601f8101871361115c57600080fd5b61116b87823560208401610f8c565b91505092959194509250565b6000806040838503121561118a57600080fd5b61119383610ed3565b91506111a160208401610ed3565b90509250929050565b600181811c908216806111be57607f821691505b6020821081036111f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161123b5761123b6111fd565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611292576112926111fd565b5060010190565b6000602082840312156112ab57600080fd5b8151610e3c81610dee565b601f821115610a13576000816000526020600020601f850160051c810160208610156112df5750805b601f850160051c820191505b818110156112fe578281556001016112eb565b505050505050565b815167ffffffffffffffff81111561132057611320610f5d565b6113348161132e84546111aa565b846112b6565b602080601f83116001811461138757600084156113515750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556112fe565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156113d4578886015182559484019460019091019084016113b5565b508582101561141057878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261145f6080830184610e43565b969550505050505056fea26469706673582212207b5268e63263aff1f3750d4f8e9f032fe153bd56f1fa0107dc1665d715b3b5bf64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\xDDW`\x005`\xE0\x1C\x80ccR!\x1E\x11a\0\x7FW\x80c\xA2,\xB4e\x11a\0YW\x80c\xA2,\xB4e\x14a\x02_W\x80c\xB8\x8DO\xDE\x14a\x02\x7FW\x80c\xC8{V\xDD\x14a\x02\x92W\x80c\xE9\x85\xE9\xC5\x14a\x02\xB3W`\0\x80\xFD[\x80ccR!\x1E\x14a\x01\xFCW\x80cp\xA0\x821\x14a\x02\x1CW\x80c\x95\xD8\x9BA\x14a\x02JW`\0\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xBBW\x80c\t^\xA7\xB3\x14a\x01\xA1W\x80c#\xB8r\xDD\x14a\x01\xB6W\x80cB\x84.\x0E\x14a\x01\xC9W\x80cL\xD8\x8Bv\x14a\x01\xDCW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xE2W\x80c\x06\xFD\xDE\x03\x14a\x01\x17W\x80c\x08\x18\x12\xFC\x14a\x019W[`\0\x80\xFD[4\x80\x15a\0\xEEW`\0\x80\xFD[Pa\x01\x02a\0\xFD6`\x04a\x0E\x1FV[a\x03\tV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01#W`\0\x80\xFD[Pa\x01,a\x03\xEEV[`@Qa\x01\x0E\x91\x90a\x0E\xA7V[4\x80\x15a\x01EW`\0\x80\xFD[Pa\x01|a\x01T6`\x04a\x0E\xBAV[`\0\x90\x81R`\x04` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x0EV[a\x01\xB4a\x01\xAF6`\x04a\x0E\xF7V[a\x04\x80V[\0[a\x01\xB4a\x01\xC46`\x04a\x0F!V[a\x05\xCFV[a\x01\xB4a\x01\xD76`\x04a\x0F!V[a\x08\xC4V[4\x80\x15a\x01\xE8W`\0\x80\xFD[Pa\x01\xB4a\x01\xF76`\x04a\x10@V[a\n\x18V[4\x80\x15a\x02\x08W`\0\x80\xFD[Pa\x01|a\x02\x176`\x04a\x0E\xBAV[a\n\xCEV[4\x80\x15a\x02(W`\0\x80\xFD[Pa\x02=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\x89\x91\x90a\x12\x99V[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\n\x13W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[PPPV[`\x06T`\xFF\x16\x15a\n\x85W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FALREADY_INITIALIZED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[`\0a\n\x91\x83\x82a\x13\x06V[P`\x01a\n\x9E\x82\x82a\x13\x06V[PP`\x06\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UPV[`\0\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x80a\x0BZW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\n`$\x82\x01R\x7FNOT_MINTED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[\x91\x90PV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x0B\xDEW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FZERO_ADDRESS\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[```\x01\x80Ta\x03\xFD\x90a\x11\xAAV[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\x0C\xB8\x84\x84\x84a\x05\xCFV[\x82;\x15\x80a\r\x82WP`@Q\x7F\x15\x0Bz\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x82R\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x15\x0Bz\x02\x90a\r\x1B\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x14 V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\r:W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r^\x91\x90a\x12\x99V[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\r\xE8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[PPPPV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\x0E\x1CW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\x0E1W`\0\x80\xFD[\x815a\x0E<\x81a\r\xEEV[\x93\x92PPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x0EiW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0EMV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R`\0a\x0E<` \x83\x01\x84a\x0ECV[`\0` \x82\x84\x03\x12\x15a\x0E\xCCW`\0\x80\xFD[P5\x91\x90PV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0BZW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0F\nW`\0\x80\xFD[a\x0F\x13\x83a\x0E\xD3V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0F6W`\0\x80\xFD[a\x0F?\x84a\x0E\xD3V[\x92Pa\x0FM` \x85\x01a\x0E\xD3V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x0F\xA7Wa\x0F\xA7a\x0F]V[`@Q`\x1F\x85\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0F\xEDWa\x0F\xEDa\x0F]V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\x06W`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x101W`\0\x80\xFD[a\x0E<\x83\x835` \x85\x01a\x0F\x8CV[`\0\x80`@\x83\x85\x03\x12\x15a\x10SW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x10kW`\0\x80\xFD[a\x10w\x86\x83\x87\x01a\x10 V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x10\x8DW`\0\x80\xFD[Pa\x10\x9A\x85\x82\x86\x01a\x10 V[\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\xB6W`\0\x80\xFD[a\x0E<\x82a\x0E\xD3V[`\0\x80`@\x83\x85\x03\x12\x15a\x10\xD2W`\0\x80\xFD[a\x10\xDB\x83a\x0E\xD3V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x10\xF0W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x11\x11W`\0\x80\xFD[a\x11\x1A\x85a\x0E\xD3V[\x93Pa\x11(` \x86\x01a\x0E\xD3V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11KW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x11\\W`\0\x80\xFD[a\x11k\x87\x825` \x84\x01a\x0F\x8CV[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x8AW`\0\x80\xFD[a\x11\x93\x83a\x0E\xD3V[\x91Pa\x11\xA1` \x84\x01a\x0E\xD3V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x11\xBEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x11\xF7W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[`\0\x81a\x12;Wa\x12;a\x11\xFDV[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x12\x92Wa\x12\x92a\x11\xFDV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x12\xABW`\0\x80\xFD[\x81Qa\x0E<\x81a\r\xEEV[`\x1F\x82\x11\x15a\n\x13W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x12\xDFWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x12\xFEW\x82\x81U`\x01\x01a\x12\xEBV[PPPPPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13 Wa\x13 a\x0F]V[a\x134\x81a\x13.\x84Ta\x11\xAAV[\x84a\x12\xB6V[` \x80`\x1F\x83\x11`\x01\x81\x14a\x13\x87W`\0\x84\x15a\x13QWP\x85\x83\x01Q[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x12\xFEV[`\0\x85\x81R` \x81 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x86\x16\x91[\x82\x81\x10\x15a\x13\xD4W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x13\xB5V[P\x85\x82\x10\x15a\x14\x10W\x87\x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16\x83R\x80\x86\x16` \x84\x01RP\x83`@\x83\x01R`\x80``\x83\x01Ra\x14_`\x80\x83\x01\x84a\x0ECV[\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 {Rh\xE62c\xAF\xF1\xF3u\rO\x8E\x9F\x03/\xE1S\xBDV\xF1\xFA\x01\x07\xDC\x16e\xD7\x15\xB3\xB5\xBFdsolcC\0\x08\x18\x003", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. +```solidity +event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _approved: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._approved.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._approved, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ApprovalForAll(address,address,bool)` and selector `0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31`. +```solidity +event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ApprovalForAll { + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _approved: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ApprovalForAll { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "ApprovalForAll(address,address,bool)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 23u8, + 48u8, + 126u8, + 171u8, + 57u8, + 171u8, + 97u8, + 7u8, + 232u8, + 137u8, + 152u8, + 69u8, + 173u8, + 61u8, + 89u8, + 189u8, + 150u8, + 83u8, + 242u8, + 0u8, + 242u8, + 32u8, + 146u8, + 4u8, + 137u8, + 202u8, + 43u8, + 89u8, + 55u8, + 105u8, + 108u8, + 49u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _owner: topics.1, + _operator: topics.2, + _approved: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._approved, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._owner.clone(), + self._operator.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._owner, + ); + out[2usize] = ::encode_topic( + &self._operator, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ApprovalForAll { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ApprovalForAll> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ApprovalForAll) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. +```solidity +event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + _from: topics.1, + _to: topics.2, + _tokenId: topics.3, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self._from.clone(), + self._to.clone(), + self._tokenId.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self._from, + ); + out[2usize] = ::encode_topic( + &self._to, + ); + out[3usize] = as alloy_sol_types::EventTopic>::encode_topic(&self._tokenId); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. +```solidity +function approve(address spender, uint256 id) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub spender: alloy::sol_types::private::Address, + pub id: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.spender, value.id) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + id: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.id), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. +```solidity +function balanceOf(address owner) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub owner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value.owner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { owner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getApproved(uint256)` and selector `0x081812fc`. +```solidity +function getApproved(uint256 id) external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedCall { + pub id: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`getApproved(uint256)`](getApprovedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getApprovedReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedCall) -> Self { + (value.id,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { id: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getApprovedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getApprovedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getApprovedCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getApprovedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getApproved(uint256)"; + const SELECTOR: [u8; 4] = [8u8, 24u8, 18u8, 252u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.id), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `initialize(string,string)` and selector `0x4cd88b76`. +```solidity +function initialize(string memory name_, string memory symbol_) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeCall { + pub name_: alloy::sol_types::private::String, + pub symbol_: alloy::sol_types::private::String, + } + ///Container type for the return parameters of the [`initialize(string,string)`](initializeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct initializeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + alloy::sol_types::private::String, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeCall) -> Self { + (value.name_, value.symbol_) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + name_: tuple.0, + symbol_: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: initializeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for initializeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for initializeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = initializeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "initialize(string,string)"; + const SELECTOR: [u8; 4] = [76u8, 216u8, 139u8, 118u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.name_, + ), + ::tokenize( + &self.symbol_, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5`. +```solidity +function isApprovedForAll(address owner, address operator) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllCall { + pub owner: alloy::sol_types::private::Address, + pub operator: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`isApprovedForAll(address,address)`](isApprovedForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct isApprovedForAllReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllCall) -> Self { + (value.owner, value.operator) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for isApprovedForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + operator: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: isApprovedForAllReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for isApprovedForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for isApprovedForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = isApprovedForAllReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "isApprovedForAll(address,address)"; + const SELECTOR: [u8; 4] = [233u8, 133u8, 233u8, 197u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.operator, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `name()` and selector `0x06fdde03`. +```solidity +function name() external view returns (string memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nameCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nameReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "name()"; + const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `ownerOf(uint256)` and selector `0x6352211e`. +```solidity +function ownerOf(uint256 id) external view returns (address owner); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfCall { + pub id: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`ownerOf(uint256)`](ownerOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerOfReturn { + pub owner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfCall) -> Self { + (value.id,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { id: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerOfReturn) -> Self { + (value.owner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { owner: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ownerOf(uint256)"; + const SELECTOR: [u8; 4] = [99u8, 82u8, 33u8, 30u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.id), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e`. +```solidity +function safeTransferFrom(address from, address to, uint256 id) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Call { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub id: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256)`](safeTransferFrom_0Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_0Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Call) -> Self { + (value.from, value.to, value.id) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_0Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + id: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_0Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_0Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_0Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_0Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [66u8, 132u8, 46u8, 14u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.id), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde`. +```solidity +function safeTransferFrom(address from, address to, uint256 id, bytes memory data) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Call { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub id: alloy::sol_types::private::U256, + pub data: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256,bytes)`](safeTransferFrom_1Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct safeTransferFrom_1Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Call) -> Self { + (value.from, value.to, value.id, value.data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_1Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + id: tuple.2, + data: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: safeTransferFrom_1Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for safeTransferFrom_1Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for safeTransferFrom_1Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = safeTransferFrom_1Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "safeTransferFrom(address,address,uint256,bytes)"; + const SELECTOR: [u8; 4] = [184u8, 141u8, 79u8, 222u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.id), + ::tokenize( + &self.data, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465`. +```solidity +function setApprovalForAll(address operator, bool approved) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllCall { + pub operator: alloy::sol_types::private::Address, + pub approved: bool, + } + ///Container type for the return parameters of the [`setApprovalForAll(address,bool)`](setApprovalForAllCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setApprovalForAllReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address, bool); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllCall) -> Self { + (value.operator, value.approved) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setApprovalForAllCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + operator: tuple.0, + approved: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setApprovalForAllReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setApprovalForAllReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setApprovalForAllCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bool, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setApprovalForAllReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setApprovalForAll(address,bool)"; + const SELECTOR: [u8; 4] = [162u8, 44u8, 180u8, 101u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.operator, + ), + ::tokenize( + &self.approved, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`. +```solidity +function supportsInterface(bytes4 interfaceId) external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceCall { + pub interfaceId: alloy::sol_types::private::FixedBytes<4>, + } + ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct supportsInterfaceReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceCall) -> Self { + (value.interfaceId,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for supportsInterfaceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { interfaceId: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: supportsInterfaceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for supportsInterfaceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for supportsInterfaceCall { + type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = supportsInterfaceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "supportsInterface(bytes4)"; + const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.interfaceId), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `symbol()` and selector `0x95d89b41`. +```solidity +function symbol() external view returns (string memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for symbolCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = symbolReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "symbol()"; + const SELECTOR: [u8; 4] = [149u8, 216u8, 155u8, 65u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `tokenURI(uint256)` and selector `0xc87b56dd`. +```solidity +function tokenURI(uint256 id) external view returns (string memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenURICall { + pub id: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`tokenURI(uint256)`](tokenURICall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct tokenURIReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenURICall) -> Self { + (value.id,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenURICall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { id: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: tokenURIReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for tokenURIReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for tokenURICall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = tokenURIReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "tokenURI(uint256)"; + const SELECTOR: [u8; 4] = [200u8, 123u8, 86u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.id), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. +```solidity +function transferFrom(address from, address to, uint256 id) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub id: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value.from, value.to, value.id) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + id: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.id), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockERC721`](self) function calls. + pub enum MockERC721Calls { + approve(approveCall), + balanceOf(balanceOfCall), + getApproved(getApprovedCall), + initialize(initializeCall), + isApprovedForAll(isApprovedForAllCall), + name(nameCall), + ownerOf(ownerOfCall), + safeTransferFrom_0(safeTransferFrom_0Call), + safeTransferFrom_1(safeTransferFrom_1Call), + setApprovalForAll(setApprovalForAllCall), + supportsInterface(supportsInterfaceCall), + symbol(symbolCall), + tokenURI(tokenURICall), + transferFrom(transferFromCall), + } + #[automatically_derived] + impl MockERC721Calls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [1u8, 255u8, 201u8, 167u8], + [6u8, 253u8, 222u8, 3u8], + [8u8, 24u8, 18u8, 252u8], + [9u8, 94u8, 167u8, 179u8], + [35u8, 184u8, 114u8, 221u8], + [66u8, 132u8, 46u8, 14u8], + [76u8, 216u8, 139u8, 118u8], + [99u8, 82u8, 33u8, 30u8], + [112u8, 160u8, 130u8, 49u8], + [149u8, 216u8, 155u8, 65u8], + [162u8, 44u8, 180u8, 101u8], + [184u8, 141u8, 79u8, 222u8], + [200u8, 123u8, 86u8, 221u8], + [233u8, 133u8, 233u8, 197u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockERC721Calls { + const NAME: &'static str = "MockERC721Calls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 14usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => { + ::SELECTOR + } + Self::getApproved(_) => { + ::SELECTOR + } + Self::initialize(_) => { + ::SELECTOR + } + Self::isApprovedForAll(_) => { + ::SELECTOR + } + Self::name(_) => ::SELECTOR, + Self::ownerOf(_) => ::SELECTOR, + Self::safeTransferFrom_0(_) => { + ::SELECTOR + } + Self::safeTransferFrom_1(_) => { + ::SELECTOR + } + Self::setApprovalForAll(_) => { + ::SELECTOR + } + Self::supportsInterface(_) => { + ::SELECTOR + } + Self::symbol(_) => ::SELECTOR, + Self::tokenURI(_) => ::SELECTOR, + Self::transferFrom(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn supportsInterface( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::supportsInterface) + } + supportsInterface + }, + { + fn name( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::name) + } + name + }, + { + fn getApproved( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::getApproved) + } + getApproved + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::approve) + } + approve + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::transferFrom) + } + transferFrom + }, + { + fn safeTransferFrom_0( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::safeTransferFrom_0) + } + safeTransferFrom_0 + }, + { + fn initialize( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::initialize) + } + initialize + }, + { + fn ownerOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::ownerOf) + } + ownerOf + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::balanceOf) + } + balanceOf + }, + { + fn symbol( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::symbol) + } + symbol + }, + { + fn setApprovalForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::setApprovalForAll) + } + setApprovalForAll + }, + { + fn safeTransferFrom_1( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::safeTransferFrom_1) + } + safeTransferFrom_1 + }, + { + fn tokenURI( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::tokenURI) + } + tokenURI + }, + { + fn isApprovedForAll( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockERC721Calls::isApprovedForAll) + } + isApprovedForAll + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) + } + Self::getApproved(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::initialize(inner) => { + ::abi_encoded_size(inner) + } + Self::isApprovedForAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::name(inner) => { + ::abi_encoded_size(inner) + } + Self::ownerOf(inner) => { + ::abi_encoded_size(inner) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setApprovalForAll(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::supportsInterface(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::symbol(inner) => { + ::abi_encoded_size(inner) + } + Self::tokenURI(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::getApproved(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::initialize(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::isApprovedForAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::name(inner) => { + ::abi_encode_raw(inner, out) + } + Self::ownerOf(inner) => { + ::abi_encode_raw(inner, out) + } + Self::safeTransferFrom_0(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::safeTransferFrom_1(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setApprovalForAll(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::supportsInterface(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::symbol(inner) => { + ::abi_encode_raw(inner, out) + } + Self::tokenURI(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferFrom(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockERC721`](self) events. + pub enum MockERC721Events { + Approval(Approval), + ApprovalForAll(ApprovalForAll), + Transfer(Transfer), + } + #[automatically_derived] + impl MockERC721Events { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 23u8, + 48u8, + 126u8, + 171u8, + 57u8, + 171u8, + 97u8, + 7u8, + 232u8, + 137u8, + 152u8, + 69u8, + 173u8, + 61u8, + 89u8, + 189u8, + 150u8, + 83u8, + 242u8, + 0u8, + 242u8, + 32u8, + 146u8, + 4u8, + 137u8, + 202u8, + 43u8, + 89u8, + 55u8, + 105u8, + 108u8, + 49u8, + ], + [ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ], + [ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MockERC721Events { + const NAME: &'static str = "MockERC721Events"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ApprovalForAll) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Transfer) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MockERC721Events { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ApprovalForAll(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockERC721`](self) contract instance. + +See the [wrapper's documentation](`MockERC721Instance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockERC721Instance { + MockERC721Instance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockERC721Instance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + MockERC721Instance::::deploy_builder(provider) + } + /**A [`MockERC721`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockERC721`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockERC721Instance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockERC721Instance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockERC721Instance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockERC721Instance { + /**Creates a new wrapper around an on-chain [`MockERC721`](self) contract instance. + +See the [wrapper's documentation](`MockERC721Instance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockERC721Instance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockERC721Instance { + MockERC721Instance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockERC721Instance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + spender: alloy::sol_types::private::Address, + id: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { spender, id }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + owner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { owner }) + } + ///Creates a new call builder for the [`getApproved`] function. + pub fn getApproved( + &self, + id: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getApprovedCall { id }) + } + ///Creates a new call builder for the [`initialize`] function. + pub fn initialize( + &self, + name_: alloy::sol_types::private::String, + symbol_: alloy::sol_types::private::String, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&initializeCall { name_, symbol_ }) + } + ///Creates a new call builder for the [`isApprovedForAll`] function. + pub fn isApprovedForAll( + &self, + owner: alloy::sol_types::private::Address, + operator: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &isApprovedForAllCall { + owner, + operator, + }, + ) + } + ///Creates a new call builder for the [`name`] function. + pub fn name(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&nameCall {}) + } + ///Creates a new call builder for the [`ownerOf`] function. + pub fn ownerOf( + &self, + id: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerOfCall { id }) + } + ///Creates a new call builder for the [`safeTransferFrom_0`] function. + pub fn safeTransferFrom_0( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + id: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &safeTransferFrom_0Call { + from, + to, + id, + }, + ) + } + ///Creates a new call builder for the [`safeTransferFrom_1`] function. + pub fn safeTransferFrom_1( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + id: alloy::sol_types::private::U256, + data: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &safeTransferFrom_1Call { + from, + to, + id, + data, + }, + ) + } + ///Creates a new call builder for the [`setApprovalForAll`] function. + pub fn setApprovalForAll( + &self, + operator: alloy::sol_types::private::Address, + approved: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setApprovalForAllCall { + operator, + approved, + }, + ) + } + ///Creates a new call builder for the [`supportsInterface`] function. + pub fn supportsInterface( + &self, + interfaceId: alloy::sol_types::private::FixedBytes<4>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &supportsInterfaceCall { + interfaceId, + }, + ) + } + ///Creates a new call builder for the [`symbol`] function. + pub fn symbol(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&symbolCall {}) + } + ///Creates a new call builder for the [`tokenURI`] function. + pub fn tokenURI( + &self, + id: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&tokenURICall { id }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + id: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferFromCall { from, to, id }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockERC721Instance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ApprovalForAll`] event. + pub fn ApprovalForAll_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/mockexclusivitylib.rs b/crates/bindings-uniswapx/src/mockexclusivitylib.rs new file mode 100644 index 0000000..a6b22da --- /dev/null +++ b/crates/bindings-uniswapx/src/mockexclusivitylib.rs @@ -0,0 +1,2625 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockExclusivityLib { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + error NoExclusiveOverride(); + + function handleExclusiveOverrideBlock(ResolvedOrder memory order, address exclusive, uint256 exclusivityEnd, uint256 exclusivityOverrideBps, uint256 blockNumberish) external view returns (ResolvedOrder memory); + function handleExclusiveOverrideTimestamp(ResolvedOrder memory order, address exclusive, uint256 exclusivityEnd, uint256 exclusivityOverrideBps) external view returns (ResolvedOrder memory); + function hasFillingRights(address exclusive, uint256 exclusivityEnd, uint256 currentPosition) external view returns (bool pass); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "handleExclusiveOverrideBlock", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "exclusive", + "type": "address", + "internalType": "address" + }, + { + "name": "exclusivityEnd", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "exclusivityOverrideBps", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "blockNumberish", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "handleExclusiveOverrideTimestamp", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "exclusive", + "type": "address", + "internalType": "address" + }, + { + "name": "exclusivityEnd", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "exclusivityOverrideBps", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "hasFillingRights", + "inputs": [ + { + "name": "exclusive", + "type": "address", + "internalType": "address" + }, + { + "name": "exclusivityEnd", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "currentPosition", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "pass", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "error", + "name": "NoExclusiveOverride", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockExclusivityLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50610aae806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063caff4ef614610046578063df2481181461006f578063f8813ee714610082575b600080fd5b610059610054366004610712565b6100a5565b6040516100669190610840565b60405180910390f35b61005961007d36600461096a565b610129565b6100956100903660046109d4565b6101af565b6040519015158152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152610120858585856101c4565b50929392505050565b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528401529282018390528282019290925260808101919091526101a586868686866101d7565b5093949350505050565b60006101bc8484846101eb565b949350505050565b6101d18484848442610237565b50505050565b6101e48585858585610237565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416158061020f57508282115b806101bc575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b6102428484836101eb565b6101e4578161027d576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b81518110156102d95760008282815181106102a2576102a2610a09565b602002602001015190506102cb856127106102bd9190610a38565b6020830151906127106102e2565b602090910152600101610285565b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261031757600080fd5b50910281810615159190040190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561037857610378610326565b60405290565b60405160a0810167ffffffffffffffff8111828210171561037857610378610326565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103e8576103e8610326565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461041257600080fd5b50565b600082601f83011261042657600080fd5b813567ffffffffffffffff81111561044057610440610326565b61047160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016103a1565b81815284602083860101111561048657600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156104b557600080fd5b60405160c0810167ffffffffffffffff82821081831117156104d9576104d9610326565b81604052829350843591506104ed826103f0565b9082526020840135906104ff826103f0565b816020840152604085013560408401526060850135606084015260808501359150610529826103f0565b81608084015260a085013591508082111561054357600080fd5b5061055085828601610415565b60a0830152505092915050565b60006060828403121561056f57600080fd5b610577610355565b90508135610584816103f0565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126105b357600080fd5b8135602067ffffffffffffffff8211156105cf576105cf610326565b6105dd818360051b016103a1565b828152606092830285018201928282019190878511156105fc57600080fd5b8387015b858110156106555781818a0312156106185760008081fd5b610620610355565b813561062b816103f0565b81528186013586820152604080830135610644816103f0565b908201528452928401928101610600565b5090979650505050505050565b600060e0828403121561067457600080fd5b61067c61037e565b9050813567ffffffffffffffff8082111561069657600080fd5b6106a2858386016104a3565b83526106b1856020860161055d565b602084015260808401359150808211156106ca57600080fd5b6106d6858386016105a2565b604084015260a08401359150808211156106ef57600080fd5b506106fc84828501610415565b60608301525060c0820135608082015292915050565b6000806000806080858703121561072857600080fd5b843567ffffffffffffffff81111561073f57600080fd5b61074b87828801610662565b945050602085013561075c816103f0565b93969395505050506040820135916060013590565b6000815180845260005b818110156107975760208185018101518683018201520161077b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60008151808452602080850194506020840160005b83811015610835578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016107ea565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526108bc6101c0840182610771565b905060208401516108fa6040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a086015261093583836107d5565b925060608601519150808584030160c0860152506109538282610771565b915050608084015160e08401528091505092915050565b600080600080600060a0868803121561098257600080fd5b853567ffffffffffffffff81111561099957600080fd5b6109a588828901610662565b95505060208601356109b6816103f0565b94979496505050506040830135926060810135926080909101359150565b6000806000606084860312156109e957600080fd5b83356109f4816103f0565b95602085013595506040909401359392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610a72577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea26469706673582212208c78eca708686c780702f3e87fd63d0989796ceece0253fb8e233bfc004c9cd664736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\n\xAE\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\xCA\xFFN\xF6\x14a\0FW\x80c\xDF$\x81\x18\x14a\0oW\x80c\xF8\x81>\xE7\x14a\0\x82W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x07\x12V[a\0\xA5V[`@Qa\0f\x91\x90a\x08@V[`@Q\x80\x91\x03\x90\xF3[a\0Ya\0}6`\x04a\tjV[a\x01)V[a\0\x95a\0\x906`\x04a\t\xD4V[a\x01\xAFV[`@Q\x90\x15\x15\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01 \x85\x85\x85\x85a\x01\xC4V[P\x92\x93\x92PPPV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01\xA5\x86\x86\x86\x86\x86a\x01\xD7V[P\x93\x94\x93PPPPV[`\0a\x01\xBC\x84\x84\x84a\x01\xEBV[\x94\x93PPPPV[a\x01\xD1\x84\x84\x84\x84Ba\x027V[PPPPV[a\x01\xE4\x85\x85\x85\x85\x85a\x027V[PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\x02\x0FWP\x82\x82\x11[\x80a\x01\xBCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[a\x02B\x84\x84\x83a\x01\xEBV[a\x01\xE4W\x81a\x02}W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a\x02\xD9W`\0\x82\x82\x81Q\x81\x10a\x02\xA2Wa\x02\xA2a\n\tV[` \x02` \x01\x01Q\x90Pa\x02\xCB\x85a'\x10a\x02\xBD\x91\x90a\n8V[` \x83\x01Q\x90a'\x10a\x02\xE2V[` \x90\x91\x01R`\x01\x01a\x02\x85V[PPPPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x03\x17W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03xWa\x03xa\x03&V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03xWa\x03xa\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\xE8Wa\x03\xE8a\x03&V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\x12W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x04&W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04@Wa\x04@a\x03&V[a\x04q` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x03\xA1V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x86W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x04\xB5W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x04\xD9Wa\x04\xD9a\x03&V[\x81`@R\x82\x93P\x845\x91Pa\x04\xED\x82a\x03\xF0V[\x90\x82R` \x84\x015\x90a\x04\xFF\x82a\x03\xF0V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x05)\x82a\x03\xF0V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x05CW`\0\x80\xFD[Pa\x05P\x85\x82\x86\x01a\x04\x15V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x05oW`\0\x80\xFD[a\x05wa\x03UV[\x90P\x815a\x05\x84\x81a\x03\xF0V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x05\xB3W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xCFWa\x05\xCFa\x03&V[a\x05\xDD\x81\x83`\x05\x1B\x01a\x03\xA1V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x05\xFCW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x06UW\x81\x81\x8A\x03\x12\x15a\x06\x18W`\0\x80\x81\xFD[a\x06 a\x03UV[\x815a\x06+\x81a\x03\xF0V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x06D\x81a\x03\xF0V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x06\0V[P\x90\x97\x96PPPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\x06tW`\0\x80\xFD[a\x06|a\x03~V[\x90P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06\x96W`\0\x80\xFD[a\x06\xA2\x85\x83\x86\x01a\x04\xA3V[\x83Ra\x06\xB1\x85` \x86\x01a\x05]V[` \x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x06\xCAW`\0\x80\xFD[a\x06\xD6\x85\x83\x86\x01a\x05\xA2V[`@\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x06\xEFW`\0\x80\xFD[Pa\x06\xFC\x84\x82\x85\x01a\x04\x15V[``\x83\x01RP`\xC0\x82\x015`\x80\x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x07(W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07?W`\0\x80\xFD[a\x07K\x87\x82\x88\x01a\x06bV[\x94PP` \x85\x015a\x07\\\x81a\x03\xF0V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x07\x97W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x07{V[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x085W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x07\xEAV[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x08\xBCa\x01\xC0\x84\x01\x82a\x07qV[\x90P` \x84\x01Qa\x08\xFA`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\t5\x83\x83a\x07\xD5V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\tS\x82\x82a\x07qV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\t\x82W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\x99W`\0\x80\xFD[a\t\xA5\x88\x82\x89\x01a\x06bV[\x95PP` \x86\x015a\t\xB6\x81a\x03\xF0V[\x94\x97\x94\x96PPPP`@\x83\x015\x92``\x81\x015\x92`\x80\x90\x91\x015\x91PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t\xE9W`\0\x80\xFD[\x835a\t\xF4\x81a\x03\xF0V[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\nrW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x8Cx\xEC\xA7\x08hlx\x07\x02\xF3\xE8\x7F\xD6=\t\x89yl\xEE\xCE\x02S\xFB\x8E#;\xFC\0L\x9C\xD6dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063caff4ef614610046578063df2481181461006f578063f8813ee714610082575b600080fd5b610059610054366004610712565b6100a5565b6040516100669190610840565b60405180910390f35b61005961007d36600461096a565b610129565b6100956100903660046109d4565b6101af565b6040519015158152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152610120858585856101c4565b50929392505050565b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528401529282018390528282019290925260808101919091526101a586868686866101d7565b5093949350505050565b60006101bc8484846101eb565b949350505050565b6101d18484848442610237565b50505050565b6101e48585858585610237565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416158061020f57508282115b806101bc575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b6102428484836101eb565b6101e4578161027d576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b81518110156102d95760008282815181106102a2576102a2610a09565b602002602001015190506102cb856127106102bd9190610a38565b6020830151906127106102e2565b602090910152600101610285565b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261031757600080fd5b50910281810615159190040190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561037857610378610326565b60405290565b60405160a0810167ffffffffffffffff8111828210171561037857610378610326565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103e8576103e8610326565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461041257600080fd5b50565b600082601f83011261042657600080fd5b813567ffffffffffffffff81111561044057610440610326565b61047160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016103a1565b81815284602083860101111561048657600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156104b557600080fd5b60405160c0810167ffffffffffffffff82821081831117156104d9576104d9610326565b81604052829350843591506104ed826103f0565b9082526020840135906104ff826103f0565b816020840152604085013560408401526060850135606084015260808501359150610529826103f0565b81608084015260a085013591508082111561054357600080fd5b5061055085828601610415565b60a0830152505092915050565b60006060828403121561056f57600080fd5b610577610355565b90508135610584816103f0565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126105b357600080fd5b8135602067ffffffffffffffff8211156105cf576105cf610326565b6105dd818360051b016103a1565b828152606092830285018201928282019190878511156105fc57600080fd5b8387015b858110156106555781818a0312156106185760008081fd5b610620610355565b813561062b816103f0565b81528186013586820152604080830135610644816103f0565b908201528452928401928101610600565b5090979650505050505050565b600060e0828403121561067457600080fd5b61067c61037e565b9050813567ffffffffffffffff8082111561069657600080fd5b6106a2858386016104a3565b83526106b1856020860161055d565b602084015260808401359150808211156106ca57600080fd5b6106d6858386016105a2565b604084015260a08401359150808211156106ef57600080fd5b506106fc84828501610415565b60608301525060c0820135608082015292915050565b6000806000806080858703121561072857600080fd5b843567ffffffffffffffff81111561073f57600080fd5b61074b87828801610662565b945050602085013561075c816103f0565b93969395505050506040820135916060013590565b6000815180845260005b818110156107975760208185018101518683018201520161077b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60008151808452602080850194506020840160005b83811015610835578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016107ea565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526108bc6101c0840182610771565b905060208401516108fa6040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a086015261093583836107d5565b925060608601519150808584030160c0860152506109538282610771565b915050608084015160e08401528091505092915050565b600080600080600060a0868803121561098257600080fd5b853567ffffffffffffffff81111561099957600080fd5b6109a588828901610662565b95505060208601356109b6816103f0565b94979496505050506040830135926060810135926080909101359150565b6000806000606084860312156109e957600080fd5b83356109f4816103f0565b95602085013595506040909401359392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610a72577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea26469706673582212208c78eca708686c780702f3e87fd63d0989796ceece0253fb8e233bfc004c9cd664736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\xCA\xFFN\xF6\x14a\0FW\x80c\xDF$\x81\x18\x14a\0oW\x80c\xF8\x81>\xE7\x14a\0\x82W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x07\x12V[a\0\xA5V[`@Qa\0f\x91\x90a\x08@V[`@Q\x80\x91\x03\x90\xF3[a\0Ya\0}6`\x04a\tjV[a\x01)V[a\0\x95a\0\x906`\x04a\t\xD4V[a\x01\xAFV[`@Q\x90\x15\x15\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01 \x85\x85\x85\x85a\x01\xC4V[P\x92\x93\x92PPPV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01\xA5\x86\x86\x86\x86\x86a\x01\xD7V[P\x93\x94\x93PPPPV[`\0a\x01\xBC\x84\x84\x84a\x01\xEBV[\x94\x93PPPPV[a\x01\xD1\x84\x84\x84\x84Ba\x027V[PPPPV[a\x01\xE4\x85\x85\x85\x85\x85a\x027V[PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\x02\x0FWP\x82\x82\x11[\x80a\x01\xBCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[a\x02B\x84\x84\x83a\x01\xEBV[a\x01\xE4W\x81a\x02}W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a\x02\xD9W`\0\x82\x82\x81Q\x81\x10a\x02\xA2Wa\x02\xA2a\n\tV[` \x02` \x01\x01Q\x90Pa\x02\xCB\x85a'\x10a\x02\xBD\x91\x90a\n8V[` \x83\x01Q\x90a'\x10a\x02\xE2V[` \x90\x91\x01R`\x01\x01a\x02\x85V[PPPPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x03\x17W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03xWa\x03xa\x03&V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03xWa\x03xa\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\xE8Wa\x03\xE8a\x03&V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\x12W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x04&W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04@Wa\x04@a\x03&V[a\x04q` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x03\xA1V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x86W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x04\xB5W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x04\xD9Wa\x04\xD9a\x03&V[\x81`@R\x82\x93P\x845\x91Pa\x04\xED\x82a\x03\xF0V[\x90\x82R` \x84\x015\x90a\x04\xFF\x82a\x03\xF0V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x05)\x82a\x03\xF0V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x05CW`\0\x80\xFD[Pa\x05P\x85\x82\x86\x01a\x04\x15V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x05oW`\0\x80\xFD[a\x05wa\x03UV[\x90P\x815a\x05\x84\x81a\x03\xF0V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x05\xB3W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xCFWa\x05\xCFa\x03&V[a\x05\xDD\x81\x83`\x05\x1B\x01a\x03\xA1V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x05\xFCW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x06UW\x81\x81\x8A\x03\x12\x15a\x06\x18W`\0\x80\x81\xFD[a\x06 a\x03UV[\x815a\x06+\x81a\x03\xF0V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x06D\x81a\x03\xF0V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x06\0V[P\x90\x97\x96PPPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\x06tW`\0\x80\xFD[a\x06|a\x03~V[\x90P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06\x96W`\0\x80\xFD[a\x06\xA2\x85\x83\x86\x01a\x04\xA3V[\x83Ra\x06\xB1\x85` \x86\x01a\x05]V[` \x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x06\xCAW`\0\x80\xFD[a\x06\xD6\x85\x83\x86\x01a\x05\xA2V[`@\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x06\xEFW`\0\x80\xFD[Pa\x06\xFC\x84\x82\x85\x01a\x04\x15V[``\x83\x01RP`\xC0\x82\x015`\x80\x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x07(W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07?W`\0\x80\xFD[a\x07K\x87\x82\x88\x01a\x06bV[\x94PP` \x85\x015a\x07\\\x81a\x03\xF0V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x07\x97W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x07{V[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x085W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x07\xEAV[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x08\xBCa\x01\xC0\x84\x01\x82a\x07qV[\x90P` \x84\x01Qa\x08\xFA`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\t5\x83\x83a\x07\xD5V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\tS\x82\x82a\x07qV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\t\x82W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\x99W`\0\x80\xFD[a\t\xA5\x88\x82\x89\x01a\x06bV[\x95PP` \x86\x015a\t\xB6\x81a\x03\xF0V[\x94\x97\x94\x96PPPP`@\x83\x015\x92``\x81\x015\x92`\x80\x90\x91\x015\x91PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t\xE9W`\0\x80\xFD[\x835a\t\xF4\x81a\x03\xF0V[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\nrW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x8Cx\xEC\xA7\x08hlx\x07\x02\xF3\xE8\x7F\xD6=\t\x89yl\xEE\xCE\x02S\xFB\x8E#;\xFC\0L\x9C\xD6dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `NoExclusiveOverride()` and selector `0xb9ec1e96`. +```solidity +error NoExclusiveOverride(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NoExclusiveOverride {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NoExclusiveOverride) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NoExclusiveOverride { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NoExclusiveOverride { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NoExclusiveOverride()"; + const SELECTOR: [u8; 4] = [185u8, 236u8, 30u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Function with signature `handleExclusiveOverrideBlock(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256,uint256)` and selector `0xdf248118`. +```solidity +function handleExclusiveOverrideBlock(ResolvedOrder memory order, address exclusive, uint256 exclusivityEnd, uint256 exclusivityOverrideBps, uint256 blockNumberish) external view returns (ResolvedOrder memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct handleExclusiveOverrideBlockCall { + pub order: ::RustType, + pub exclusive: alloy::sol_types::private::Address, + pub exclusivityEnd: alloy::sol_types::private::U256, + pub exclusivityOverrideBps: alloy::sol_types::private::U256, + pub blockNumberish: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`handleExclusiveOverrideBlock(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256,uint256)`](handleExclusiveOverrideBlockCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct handleExclusiveOverrideBlockReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + ResolvedOrder, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: handleExclusiveOverrideBlockCall) -> Self { + ( + value.order, + value.exclusive, + value.exclusivityEnd, + value.exclusivityOverrideBps, + value.blockNumberish, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for handleExclusiveOverrideBlockCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + exclusive: tuple.1, + exclusivityEnd: tuple.2, + exclusivityOverrideBps: tuple.3, + blockNumberish: tuple.4, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ResolvedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: handleExclusiveOverrideBlockReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for handleExclusiveOverrideBlockReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for handleExclusiveOverrideBlockCall { + type Parameters<'a> = ( + ResolvedOrder, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = handleExclusiveOverrideBlockReturn; + type ReturnTuple<'a> = (ResolvedOrder,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "handleExclusiveOverrideBlock(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256,uint256)"; + const SELECTOR: [u8; 4] = [223u8, 36u8, 129u8, 24u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.exclusive, + ), + as alloy_sol_types::SolType>::tokenize(&self.exclusivityEnd), + as alloy_sol_types::SolType>::tokenize( + &self.exclusivityOverrideBps, + ), + as alloy_sol_types::SolType>::tokenize(&self.blockNumberish), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `handleExclusiveOverrideTimestamp(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256)` and selector `0xcaff4ef6`. +```solidity +function handleExclusiveOverrideTimestamp(ResolvedOrder memory order, address exclusive, uint256 exclusivityEnd, uint256 exclusivityOverrideBps) external view returns (ResolvedOrder memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct handleExclusiveOverrideTimestampCall { + pub order: ::RustType, + pub exclusive: alloy::sol_types::private::Address, + pub exclusivityEnd: alloy::sol_types::private::U256, + pub exclusivityOverrideBps: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`handleExclusiveOverrideTimestamp(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256)`](handleExclusiveOverrideTimestampCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct handleExclusiveOverrideTimestampReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + ResolvedOrder, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: handleExclusiveOverrideTimestampCall) -> Self { + ( + value.order, + value.exclusive, + value.exclusivityEnd, + value.exclusivityOverrideBps, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for handleExclusiveOverrideTimestampCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + exclusive: tuple.1, + exclusivityEnd: tuple.2, + exclusivityOverrideBps: tuple.3, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ResolvedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: handleExclusiveOverrideTimestampReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for handleExclusiveOverrideTimestampReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for handleExclusiveOverrideTimestampCall { + type Parameters<'a> = ( + ResolvedOrder, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = handleExclusiveOverrideTimestampReturn; + type ReturnTuple<'a> = (ResolvedOrder,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "handleExclusiveOverrideTimestamp(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256)"; + const SELECTOR: [u8; 4] = [202u8, 255u8, 78u8, 246u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.exclusive, + ), + as alloy_sol_types::SolType>::tokenize(&self.exclusivityEnd), + as alloy_sol_types::SolType>::tokenize( + &self.exclusivityOverrideBps, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `hasFillingRights(address,uint256,uint256)` and selector `0xf8813ee7`. +```solidity +function hasFillingRights(address exclusive, uint256 exclusivityEnd, uint256 currentPosition) external view returns (bool pass); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct hasFillingRightsCall { + pub exclusive: alloy::sol_types::private::Address, + pub exclusivityEnd: alloy::sol_types::private::U256, + pub currentPosition: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`hasFillingRights(address,uint256,uint256)`](hasFillingRightsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct hasFillingRightsReturn { + pub pass: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: hasFillingRightsCall) -> Self { + (value.exclusive, value.exclusivityEnd, value.currentPosition) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for hasFillingRightsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + exclusive: tuple.0, + exclusivityEnd: tuple.1, + currentPosition: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: hasFillingRightsReturn) -> Self { + (value.pass,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for hasFillingRightsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { pass: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for hasFillingRightsCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = hasFillingRightsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "hasFillingRights(address,uint256,uint256)"; + const SELECTOR: [u8; 4] = [248u8, 129u8, 62u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.exclusive, + ), + as alloy_sol_types::SolType>::tokenize(&self.exclusivityEnd), + as alloy_sol_types::SolType>::tokenize(&self.currentPosition), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockExclusivityLib`](self) function calls. + pub enum MockExclusivityLibCalls { + handleExclusiveOverrideBlock(handleExclusiveOverrideBlockCall), + handleExclusiveOverrideTimestamp(handleExclusiveOverrideTimestampCall), + hasFillingRights(hasFillingRightsCall), + } + #[automatically_derived] + impl MockExclusivityLibCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [202u8, 255u8, 78u8, 246u8], + [223u8, 36u8, 129u8, 24u8], + [248u8, 129u8, 62u8, 231u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockExclusivityLibCalls { + const NAME: &'static str = "MockExclusivityLibCalls"; + const MIN_DATA_LENGTH: usize = 96usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::handleExclusiveOverrideBlock(_) => { + ::SELECTOR + } + Self::handleExclusiveOverrideTimestamp(_) => { + ::SELECTOR + } + Self::hasFillingRights(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn handleExclusiveOverrideTimestamp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + MockExclusivityLibCalls::handleExclusiveOverrideTimestamp, + ) + } + handleExclusiveOverrideTimestamp + }, + { + fn handleExclusiveOverrideBlock( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockExclusivityLibCalls::handleExclusiveOverrideBlock) + } + handleExclusiveOverrideBlock + }, + { + fn hasFillingRights( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockExclusivityLibCalls::hasFillingRights) + } + hasFillingRights + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::handleExclusiveOverrideBlock(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::handleExclusiveOverrideTimestamp(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::hasFillingRights(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::handleExclusiveOverrideBlock(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::handleExclusiveOverrideTimestamp(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::hasFillingRights(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockExclusivityLib`](self) custom errors. + pub enum MockExclusivityLibErrors { + NoExclusiveOverride(NoExclusiveOverride), + } + #[automatically_derived] + impl MockExclusivityLibErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[185u8, 236u8, 30u8, 150u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockExclusivityLibErrors { + const NAME: &'static str = "MockExclusivityLibErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::NoExclusiveOverride(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn NoExclusiveOverride( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockExclusivityLibErrors::NoExclusiveOverride) + } + NoExclusiveOverride + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::NoExclusiveOverride(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::NoExclusiveOverride(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockExclusivityLib`](self) contract instance. + +See the [wrapper's documentation](`MockExclusivityLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockExclusivityLibInstance { + MockExclusivityLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockExclusivityLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + MockExclusivityLibInstance::::deploy_builder(provider) + } + /**A [`MockExclusivityLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockExclusivityLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockExclusivityLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockExclusivityLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockExclusivityLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockExclusivityLibInstance { + /**Creates a new wrapper around an on-chain [`MockExclusivityLib`](self) contract instance. + +See the [wrapper's documentation](`MockExclusivityLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockExclusivityLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockExclusivityLibInstance { + MockExclusivityLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockExclusivityLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`handleExclusiveOverrideBlock`] function. + pub fn handleExclusiveOverrideBlock( + &self, + order: ::RustType, + exclusive: alloy::sol_types::private::Address, + exclusivityEnd: alloy::sol_types::private::U256, + exclusivityOverrideBps: alloy::sol_types::private::U256, + blockNumberish: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &handleExclusiveOverrideBlockCall { + order, + exclusive, + exclusivityEnd, + exclusivityOverrideBps, + blockNumberish, + }, + ) + } + ///Creates a new call builder for the [`handleExclusiveOverrideTimestamp`] function. + pub fn handleExclusiveOverrideTimestamp( + &self, + order: ::RustType, + exclusive: alloy::sol_types::private::Address, + exclusivityEnd: alloy::sol_types::private::U256, + exclusivityOverrideBps: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder< + T, + &P, + handleExclusiveOverrideTimestampCall, + N, + > { + self.call_builder( + &handleExclusiveOverrideTimestampCall { + order, + exclusive, + exclusivityEnd, + exclusivityOverrideBps, + }, + ) + } + ///Creates a new call builder for the [`hasFillingRights`] function. + pub fn hasFillingRights( + &self, + exclusive: alloy::sol_types::private::Address, + exclusivityEnd: alloy::sol_types::private::U256, + currentPosition: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &hasFillingRightsCall { + exclusive, + exclusivityEnd, + currentPosition, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockExclusivityLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/mockfeecontroller.rs b/crates/bindings-uniswapx/src/mockfeecontroller.rs new file mode 100644 index 0000000..834a06b --- /dev/null +++ b/crates/bindings-uniswapx/src/mockfeecontroller.rs @@ -0,0 +1,2871 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockFeeController { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + event OwnershipTransferred(address indexed user, address indexed newOwner); + + constructor(address _feeRecipient); + + function feeRecipient() external view returns (address); + function fees(address tokenIn, address tokenOut) external view returns (uint256); + function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory result); + function owner() external view returns (address); + function setFee(address tokenIn, address tokenOut, uint256 fee) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_feeRecipient", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "feeRecipient", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "fees", + "inputs": [ + { + "name": "tokenIn", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "tokenOut", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getFeeOutputs", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [ + { + "name": "result", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setFee", + "inputs": [ + { + "name": "tokenIn", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "tokenOut", + "type": "address", + "internalType": "address" + }, + { + "name": "fee", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockFeeController { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b50604051610cc5380380610cc583398101604081905261002f91610081565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b608051610bf36100d260003960008181607c01526103730152610bf36000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639b9ac2cb116100505780639b9ac2cb14610108578063dc7e98df14610141578063f2fde38b1461015657600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d63660046108d9565b610169565b6040516100bf91906109ab565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b610133610116366004610a1e565b600160209081526000928352604080842090915290825290205481565b6040519081526020016100bf565b61015461014f366004610a57565b6103ed565b005b610154610164366004610a98565b6104ac565b606081604001515167ffffffffffffffff8111156101895761018961059d565b6040519080825280602002602001820160405280156101f257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101a75790505b506020830151519091506000805b8460400151518110156103e45760008560400151828151811061022557610225610abc565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff80871660009081526001845260408082209284168252919093529091205490915080156103da576000612710828960400151868151811061028a5761028a610abc565b6020026020010151602001516102a09190610b1a565b6102aa9190610b37565b90506000805b868110156103305760008982815181106102cc576102cc610abc565b602002602001015190508573ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610327576001925083816020018181516103239190610b72565b9052505b506001016102b0565b508015801561033f5750600082115b156103d75760405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018381526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508887815181106103bd576103bd610abc565b602002602001018190525085806103d390610b85565b9650505b50505b5050600101610200565b50825250919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff92831660009081526001602090815260408083209490951682529290925291902055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161046a565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156105ef576105ef61059d565b60405290565b60405160a0810167ffffffffffffffff811182821017156105ef576105ef61059d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561065f5761065f61059d565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461068957600080fd5b50565b600082601f83011261069d57600080fd5b813567ffffffffffffffff8111156106b7576106b761059d565b6106e860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610618565b8181528460208386010111156106fd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561072c57600080fd5b60405160c0810167ffffffffffffffff82821081831117156107505761075061059d565b816040528293508435915061076482610667565b90825260208401359061077682610667565b8160208401526040850135604084015260608501356060840152608085013591506107a082610667565b81608084015260a08501359150808211156107ba57600080fd5b506107c78582860161068c565b60a0830152505092915050565b6000606082840312156107e657600080fd5b6107ee6105cc565b905081356107fb81610667565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261082a57600080fd5b8135602067ffffffffffffffff8211156108465761084661059d565b610854818360051b01610618565b8281526060928302850182019282820191908785111561087357600080fd5b8387015b858110156108cc5781818a03121561088f5760008081fd5b6108976105cc565b81356108a281610667565b815281860135868201526040808301356108bb81610667565b908201528452928401928101610877565b5090979650505050505050565b6000602082840312156108eb57600080fd5b813567ffffffffffffffff8082111561090357600080fd5b9083019060e0828603121561091757600080fd5b61091f6105f5565b82358281111561092e57600080fd5b61093a8782860161071a565b82525061094a86602085016107d4565b602082015260808301358281111561096157600080fd5b61096d87828601610819565b60408301525060a08301358281111561098557600080fd5b6109918782860161068c565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b82811015610a11578151805173ffffffffffffffffffffffffffffffffffffffff90811686528782015188870152908601511685850152606090930192908501906001016109c8565b5091979650505050505050565b60008060408385031215610a3157600080fd5b8235610a3c81610667565b91506020830135610a4c81610667565b809150509250929050565b600080600060608486031215610a6c57600080fd5b8335610a7781610667565b92506020840135610a8781610667565b929592945050506040919091013590565b600060208284031215610aaa57600080fd5b8135610ab581610667565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610b3157610b31610aeb565b92915050565b600082610b6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610b3157610b31610aeb565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610bb657610bb6610aeb565b506001019056fea2646970667358221220aad02864b22e7ba862f7bdb80eec803c0a21e4bfb0d2a59c025ce0d0cf380f3f64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0C\xC58\x03\x80a\x0C\xC5\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x81V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xB1V[`\0` \x82\x84\x03\x12\x15a\0\x93W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xAAW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x0B\xF3a\0\xD2`\09`\0\x81\x81`|\x01Ra\x03s\x01Ra\x0B\xF3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0PW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x08W\x80c\xDC~\x98\xDF\x14a\x01AW\x80c\xF2\xFD\xE3\x8B\x14a\x01VW`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x08\xD9V[a\x01iV[`@Qa\0\xBF\x91\x90a\t\xABV[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x013a\x01\x166`\x04a\n\x1EV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[a\x01Ta\x01O6`\x04a\nWV[a\x03\xEDV[\0[a\x01Ta\x01d6`\x04a\n\x98V[a\x04\xACV[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x89Wa\x01\x89a\x05\x9DV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xF2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA7W\x90P[P` \x83\x01QQ\x90\x91P`\0\x80[\x84`@\x01QQ\x81\x10\x15a\x03\xE4W`\0\x85`@\x01Q\x82\x81Q\x81\x10a\x02%Wa\x02%a\n\xBCV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16`\0\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x03\xDAW`\0a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x8AWa\x02\x8Aa\n\xBCV[` \x02` \x01\x01Q` \x01Qa\x02\xA0\x91\x90a\x0B\x1AV[a\x02\xAA\x91\x90a\x0B7V[\x90P`\0\x80[\x86\x81\x10\x15a\x030W`\0\x89\x82\x81Q\x81\x10a\x02\xCCWa\x02\xCCa\n\xBCV[` \x02` \x01\x01Q\x90P\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x03'W`\x01\x92P\x83\x81` \x01\x81\x81Qa\x03#\x91\x90a\x0BrV[\x90RP[P`\x01\x01a\x02\xB0V[P\x80\x15\x80\x15a\x03?WP`\0\x82\x11[\x15a\x03\xD7W`@Q\x80``\x01`@R\x80\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x88\x87\x81Q\x81\x10a\x03\xBDWa\x03\xBDa\n\xBCV[` \x02` \x01\x01\x81\x90RP\x85\x80a\x03\xD3\x90a\x0B\x85V[\x96PP[PP[PP`\x01\x01a\x02\0V[P\x82RP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04sW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05-W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04jV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xEFWa\x05\xEFa\x05\x9DV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xEFWa\x05\xEFa\x05\x9DV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x06_Wa\x06_a\x05\x9DV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x89W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06\x9DW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\xB7Wa\x06\xB7a\x05\x9DV[a\x06\xE8` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x06\x18V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xFDW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x07,W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x07PWa\x07Pa\x05\x9DV[\x81`@R\x82\x93P\x845\x91Pa\x07d\x82a\x06gV[\x90\x82R` \x84\x015\x90a\x07v\x82a\x06gV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\xA0\x82a\x06gV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\xBAW`\0\x80\xFD[Pa\x07\xC7\x85\x82\x86\x01a\x06\x8CV[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07\xE6W`\0\x80\xFD[a\x07\xEEa\x05\xCCV[\x90P\x815a\x07\xFB\x81a\x06gV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x08*W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08FWa\x08Fa\x05\x9DV[a\x08T\x81\x83`\x05\x1B\x01a\x06\x18V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08sW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xCCW\x81\x81\x8A\x03\x12\x15a\x08\x8FW`\0\x80\x81\xFD[a\x08\x97a\x05\xCCV[\x815a\x08\xA2\x81a\x06gV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xBB\x81a\x06gV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08wV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08\xEBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\t\x03W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\t\x17W`\0\x80\xFD[a\t\x1Fa\x05\xF5V[\x825\x82\x81\x11\x15a\t.W`\0\x80\xFD[a\t:\x87\x82\x86\x01a\x07\x1AV[\x82RPa\tJ\x86` \x85\x01a\x07\xD4V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\taW`\0\x80\xFD[a\tm\x87\x82\x86\x01a\x08\x19V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\t\x85W`\0\x80\xFD[a\t\x91\x87\x82\x86\x01a\x06\x8CV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\n\x11W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\xC8V[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\n1W`\0\x80\xFD[\x825a\n<\x81a\x06gV[\x91P` \x83\x015a\nL\x81a\x06gV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\nlW`\0\x80\xFD[\x835a\nw\x81a\x06gV[\x92P` \x84\x015a\n\x87\x81a\x06gV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\n\xAAW`\0\x80\xFD[\x815a\n\xB5\x81a\x06gV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0B1Wa\x0B1a\n\xEBV[\x92\x91PPV[`\0\x82a\x0BmW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\x0B1Wa\x0B1a\n\xEBV[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x0B\xB6Wa\x0B\xB6a\n\xEBV[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \xAA\xD0(d\xB2.{\xA8b\xF7\xBD\xB8\x0E\xEC\x80<\n!\xE4\xBF\xB0\xD2\xA5\x9C\x02\\\xE0\xD0\xCF8\x0F?dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100725760003560e01c80639b9ac2cb116100505780639b9ac2cb14610108578063dc7e98df14610141578063f2fde38b1461015657600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d63660046108d9565b610169565b6040516100bf91906109ab565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b610133610116366004610a1e565b600160209081526000928352604080842090915290825290205481565b6040519081526020016100bf565b61015461014f366004610a57565b6103ed565b005b610154610164366004610a98565b6104ac565b606081604001515167ffffffffffffffff8111156101895761018961059d565b6040519080825280602002602001820160405280156101f257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101a75790505b506020830151519091506000805b8460400151518110156103e45760008560400151828151811061022557610225610abc565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff80871660009081526001845260408082209284168252919093529091205490915080156103da576000612710828960400151868151811061028a5761028a610abc565b6020026020010151602001516102a09190610b1a565b6102aa9190610b37565b90506000805b868110156103305760008982815181106102cc576102cc610abc565b602002602001015190508573ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610327576001925083816020018181516103239190610b72565b9052505b506001016102b0565b508015801561033f5750600082115b156103d75760405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018381526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508887815181106103bd576103bd610abc565b602002602001018190525085806103d390610b85565b9650505b50505b5050600101610200565b50825250919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff92831660009081526001602090815260408083209490951682529290925291902055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161046a565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156105ef576105ef61059d565b60405290565b60405160a0810167ffffffffffffffff811182821017156105ef576105ef61059d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561065f5761065f61059d565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461068957600080fd5b50565b600082601f83011261069d57600080fd5b813567ffffffffffffffff8111156106b7576106b761059d565b6106e860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610618565b8181528460208386010111156106fd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561072c57600080fd5b60405160c0810167ffffffffffffffff82821081831117156107505761075061059d565b816040528293508435915061076482610667565b90825260208401359061077682610667565b8160208401526040850135604084015260608501356060840152608085013591506107a082610667565b81608084015260a08501359150808211156107ba57600080fd5b506107c78582860161068c565b60a0830152505092915050565b6000606082840312156107e657600080fd5b6107ee6105cc565b905081356107fb81610667565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261082a57600080fd5b8135602067ffffffffffffffff8211156108465761084661059d565b610854818360051b01610618565b8281526060928302850182019282820191908785111561087357600080fd5b8387015b858110156108cc5781818a03121561088f5760008081fd5b6108976105cc565b81356108a281610667565b815281860135868201526040808301356108bb81610667565b908201528452928401928101610877565b5090979650505050505050565b6000602082840312156108eb57600080fd5b813567ffffffffffffffff8082111561090357600080fd5b9083019060e0828603121561091757600080fd5b61091f6105f5565b82358281111561092e57600080fd5b61093a8782860161071a565b82525061094a86602085016107d4565b602082015260808301358281111561096157600080fd5b61096d87828601610819565b60408301525060a08301358281111561098557600080fd5b6109918782860161068c565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b82811015610a11578151805173ffffffffffffffffffffffffffffffffffffffff90811686528782015188870152908601511685850152606090930192908501906001016109c8565b5091979650505050505050565b60008060408385031215610a3157600080fd5b8235610a3c81610667565b91506020830135610a4c81610667565b809150509250929050565b600080600060608486031215610a6c57600080fd5b8335610a7781610667565b92506020840135610a8781610667565b929592945050506040919091013590565b600060208284031215610aaa57600080fd5b8135610ab581610667565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610b3157610b31610aeb565b92915050565b600082610b6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610b3157610b31610aeb565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610bb657610bb6610aeb565b506001019056fea2646970667358221220aad02864b22e7ba862f7bdb80eec803c0a21e4bfb0d2a59c025ce0d0cf380f3f64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0PW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x08W\x80c\xDC~\x98\xDF\x14a\x01AW\x80c\xF2\xFD\xE3\x8B\x14a\x01VW`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x08\xD9V[a\x01iV[`@Qa\0\xBF\x91\x90a\t\xABV[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x013a\x01\x166`\x04a\n\x1EV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[a\x01Ta\x01O6`\x04a\nWV[a\x03\xEDV[\0[a\x01Ta\x01d6`\x04a\n\x98V[a\x04\xACV[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x89Wa\x01\x89a\x05\x9DV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xF2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA7W\x90P[P` \x83\x01QQ\x90\x91P`\0\x80[\x84`@\x01QQ\x81\x10\x15a\x03\xE4W`\0\x85`@\x01Q\x82\x81Q\x81\x10a\x02%Wa\x02%a\n\xBCV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16`\0\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x03\xDAW`\0a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x8AWa\x02\x8Aa\n\xBCV[` \x02` \x01\x01Q` \x01Qa\x02\xA0\x91\x90a\x0B\x1AV[a\x02\xAA\x91\x90a\x0B7V[\x90P`\0\x80[\x86\x81\x10\x15a\x030W`\0\x89\x82\x81Q\x81\x10a\x02\xCCWa\x02\xCCa\n\xBCV[` \x02` \x01\x01Q\x90P\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x03'W`\x01\x92P\x83\x81` \x01\x81\x81Qa\x03#\x91\x90a\x0BrV[\x90RP[P`\x01\x01a\x02\xB0V[P\x80\x15\x80\x15a\x03?WP`\0\x82\x11[\x15a\x03\xD7W`@Q\x80``\x01`@R\x80\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x88\x87\x81Q\x81\x10a\x03\xBDWa\x03\xBDa\n\xBCV[` \x02` \x01\x01\x81\x90RP\x85\x80a\x03\xD3\x90a\x0B\x85V[\x96PP[PP[PP`\x01\x01a\x02\0V[P\x82RP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04sW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05-W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04jV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xEFWa\x05\xEFa\x05\x9DV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xEFWa\x05\xEFa\x05\x9DV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x06_Wa\x06_a\x05\x9DV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x89W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06\x9DW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\xB7Wa\x06\xB7a\x05\x9DV[a\x06\xE8` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x06\x18V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xFDW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x07,W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x07PWa\x07Pa\x05\x9DV[\x81`@R\x82\x93P\x845\x91Pa\x07d\x82a\x06gV[\x90\x82R` \x84\x015\x90a\x07v\x82a\x06gV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\xA0\x82a\x06gV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\xBAW`\0\x80\xFD[Pa\x07\xC7\x85\x82\x86\x01a\x06\x8CV[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07\xE6W`\0\x80\xFD[a\x07\xEEa\x05\xCCV[\x90P\x815a\x07\xFB\x81a\x06gV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x08*W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08FWa\x08Fa\x05\x9DV[a\x08T\x81\x83`\x05\x1B\x01a\x06\x18V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08sW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xCCW\x81\x81\x8A\x03\x12\x15a\x08\x8FW`\0\x80\x81\xFD[a\x08\x97a\x05\xCCV[\x815a\x08\xA2\x81a\x06gV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xBB\x81a\x06gV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08wV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08\xEBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\t\x03W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\t\x17W`\0\x80\xFD[a\t\x1Fa\x05\xF5V[\x825\x82\x81\x11\x15a\t.W`\0\x80\xFD[a\t:\x87\x82\x86\x01a\x07\x1AV[\x82RPa\tJ\x86` \x85\x01a\x07\xD4V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\taW`\0\x80\xFD[a\tm\x87\x82\x86\x01a\x08\x19V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\t\x85W`\0\x80\xFD[a\t\x91\x87\x82\x86\x01a\x06\x8CV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\n\x11W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\xC8V[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\n1W`\0\x80\xFD[\x825a\n<\x81a\x06gV[\x91P` \x83\x015a\nL\x81a\x06gV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\nlW`\0\x80\xFD[\x835a\nw\x81a\x06gV[\x92P` \x84\x015a\n\x87\x81a\x06gV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\n\xAAW`\0\x80\xFD[\x815a\n\xB5\x81a\x06gV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0B1Wa\x0B1a\n\xEBV[\x92\x91PPV[`\0\x82a\x0BmW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\x0B1Wa\x0B1a\n\xEBV[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x0B\xB6Wa\x0B\xB6a\n\xEBV[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \xAA\xD0(d\xB2.{\xA8b\xF7\xBD\xB8\x0E\xEC\x80<\n!\xE4\xBF\xB0\xD2\xA5\x9C\x02\\\xE0\xD0\xCF8\x0F?dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _feeRecipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _feeRecipient: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._feeRecipient,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _feeRecipient: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._feeRecipient, + ), + ) + } + } + }; + /**Function with signature `feeRecipient()` and selector `0x46904840`. +```solidity +function feeRecipient() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeRecipientCall {} + ///Container type for the return parameters of the [`feeRecipient()`](feeRecipientCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeRecipientReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeRecipientCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeRecipientCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeRecipientReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeRecipientReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeRecipientCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeRecipientReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeRecipient()"; + const SELECTOR: [u8; 4] = [70u8, 144u8, 72u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `fees(address,address)` and selector `0x9b9ac2cb`. +```solidity +function fees(address tokenIn, address tokenOut) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feesCall { + pub tokenIn: alloy::sol_types::private::Address, + pub tokenOut: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`fees(address,address)`](feesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feesReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feesCall) -> Self { + (value.tokenIn, value.tokenOut) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + tokenIn: tuple.0, + tokenOut: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "fees(address,address)"; + const SELECTOR: [u8; 4] = [155u8, 154u8, 194u8, 203u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.tokenIn, + ), + ::tokenize( + &self.tokenOut, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03`. +```solidity +function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory result); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getFeeOutputsCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](getFeeOutputsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getFeeOutputsReturn { + pub result: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ResolvedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getFeeOutputsCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFeeOutputsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getFeeOutputsReturn) -> Self { + (value.result,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFeeOutputsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { result: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getFeeOutputsCall { + type Parameters<'a> = (ResolvedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getFeeOutputsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))"; + const SELECTOR: [u8; 4] = [138u8, 166u8, 207u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setFee(address,address,uint256)` and selector `0xdc7e98df`. +```solidity +function setFee(address tokenIn, address tokenOut, uint256 fee) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setFeeCall { + pub tokenIn: alloy::sol_types::private::Address, + pub tokenOut: alloy::sol_types::private::Address, + pub fee: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`setFee(address,address,uint256)`](setFeeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setFeeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setFeeCall) -> Self { + (value.tokenIn, value.tokenOut, value.fee) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setFeeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + tokenIn: tuple.0, + tokenOut: tuple.1, + fee: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setFeeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setFeeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setFeeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setFeeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setFee(address,address,uint256)"; + const SELECTOR: [u8; 4] = [220u8, 126u8, 152u8, 223u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.tokenIn, + ), + ::tokenize( + &self.tokenOut, + ), + as alloy_sol_types::SolType>::tokenize(&self.fee), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockFeeController`](self) function calls. + pub enum MockFeeControllerCalls { + feeRecipient(feeRecipientCall), + fees(feesCall), + getFeeOutputs(getFeeOutputsCall), + owner(ownerCall), + setFee(setFeeCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl MockFeeControllerCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [70u8, 144u8, 72u8, 64u8], + [138u8, 166u8, 207u8, 3u8], + [141u8, 165u8, 203u8, 91u8], + [155u8, 154u8, 194u8, 203u8], + [220u8, 126u8, 152u8, 223u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockFeeControllerCalls { + const NAME: &'static str = "MockFeeControllerCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::feeRecipient(_) => { + ::SELECTOR + } + Self::fees(_) => ::SELECTOR, + Self::getFeeOutputs(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::setFee(_) => ::SELECTOR, + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn feeRecipient( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerCalls::feeRecipient) + } + feeRecipient + }, + { + fn getFeeOutputs( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerCalls::getFeeOutputs) + } + getFeeOutputs + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerCalls::owner) + } + owner + }, + { + fn fees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerCalls::fees) + } + fees + }, + { + fn setFee( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerCalls::setFee) + } + setFee + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::feeRecipient(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::fees(inner) => { + ::abi_encoded_size(inner) + } + Self::getFeeOutputs(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::setFee(inner) => { + ::abi_encoded_size(inner) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::feeRecipient(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::fees(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getFeeOutputs(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setFee(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockFeeController`](self) events. + pub enum MockFeeControllerEvents { + OwnershipTransferred(OwnershipTransferred), + } + #[automatically_derived] + impl MockFeeControllerEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MockFeeControllerEvents { + const NAME: &'static str = "MockFeeControllerEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MockFeeControllerEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockFeeController`](self) contract instance. + +See the [wrapper's documentation](`MockFeeControllerInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockFeeControllerInstance { + MockFeeControllerInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockFeeControllerInstance::::deploy(provider, _feeRecipient) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MockFeeControllerInstance::::deploy_builder(provider, _feeRecipient) + } + /**A [`MockFeeController`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockFeeController`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockFeeControllerInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockFeeControllerInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockFeeControllerInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerInstance { + /**Creates a new wrapper around an on-chain [`MockFeeController`](self) contract instance. + +See the [wrapper's documentation](`MockFeeControllerInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _feeRecipient); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { _feeRecipient }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockFeeControllerInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockFeeControllerInstance { + MockFeeControllerInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`feeRecipient`] function. + pub fn feeRecipient( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeRecipientCall {}) + } + ///Creates a new call builder for the [`fees`] function. + pub fn fees( + &self, + tokenIn: alloy::sol_types::private::Address, + tokenOut: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feesCall { tokenIn, tokenOut }) + } + ///Creates a new call builder for the [`getFeeOutputs`] function. + pub fn getFeeOutputs( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getFeeOutputsCall { order }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`setFee`] function. + pub fn setFee( + &self, + tokenIn: alloy::sol_types::private::Address, + tokenOut: alloy::sol_types::private::Address, + fee: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setFeeCall { + tokenIn, + tokenOut, + fee, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/mockfeecontrollerduplicates.rs b/crates/bindings-uniswapx/src/mockfeecontrollerduplicates.rs new file mode 100644 index 0000000..7fbcf7c --- /dev/null +++ b/crates/bindings-uniswapx/src/mockfeecontrollerduplicates.rs @@ -0,0 +1,2883 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockFeeControllerDuplicates { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + event OwnershipTransferred(address indexed user, address indexed newOwner); + + constructor(address _feeRecipient); + + function feeRecipient() external view returns (address); + function fees(address tokenIn, address tokenOut) external view returns (uint256); + function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory result); + function owner() external view returns (address); + function setFee(address tokenIn, address tokenOut, uint256 fee) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_feeRecipient", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "feeRecipient", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "fees", + "inputs": [ + { + "name": "tokenIn", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "tokenOut", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getFeeOutputs", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [ + { + "name": "result", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setFee", + "inputs": [ + { + "name": "tokenIn", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "tokenOut", + "type": "address", + "internalType": "address" + }, + { + "name": "fee", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockFeeControllerDuplicates { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b50604051610c18380380610c1883398101604081905261002f91610081565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b608051610b466100d260003960008181607c01526102db0152610b466000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639b9ac2cb116100505780639b9ac2cb14610108578063dc7e98df14610141578063f2fde38b1461015657600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d636600461083f565b610169565b6040516100bf9190610911565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b610133610116366004610984565b600160209081526000928352604080842090915290825290205481565b6040519081526020016100bf565b61015461014f3660046109bd565b610353565b005b6101546101643660046109fe565b610412565b606081604001515167ffffffffffffffff81111561018957610189610503565b6040519080825280602002602001820160405280156101f257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101a75790505b506020830151519091506000805b84604001515181101561034a5760008560400151828151811061022557610225610a22565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff8087166000908152600184526040808220928416825291909352909120549091508015610340576000612710828960400151868151811061028a5761028a610a22565b6020026020010151602001516102a09190610a80565b6102aa9190610a9d565b905060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681525087868151811061032557610325610a22565b6020026020010181905250848061033b90610ad8565b955050505b5050600101610200565b50825250919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff92831660009081526001602090815260408083209490951682529290925291902055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103d0565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561055557610555610503565b60405290565b60405160a0810167ffffffffffffffff8111828210171561055557610555610503565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105c5576105c5610503565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ef57600080fd5b50565b600082601f83011261060357600080fd5b813567ffffffffffffffff81111561061d5761061d610503565b61064e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161057e565b81815284602083860101111561066357600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561069257600080fd5b60405160c0810167ffffffffffffffff82821081831117156106b6576106b6610503565b81604052829350843591506106ca826105cd565b9082526020840135906106dc826105cd565b816020840152604085013560408401526060850135606084015260808501359150610706826105cd565b81608084015260a085013591508082111561072057600080fd5b5061072d858286016105f2565b60a0830152505092915050565b60006060828403121561074c57600080fd5b610754610532565b90508135610761816105cd565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261079057600080fd5b8135602067ffffffffffffffff8211156107ac576107ac610503565b6107ba818360051b0161057e565b828152606092830285018201928282019190878511156107d957600080fd5b8387015b858110156108325781818a0312156107f55760008081fd5b6107fd610532565b8135610808816105cd565b81528186013586820152604080830135610821816105cd565b9082015284529284019281016107dd565b5090979650505050505050565b60006020828403121561085157600080fd5b813567ffffffffffffffff8082111561086957600080fd5b9083019060e0828603121561087d57600080fd5b61088561055b565b82358281111561089457600080fd5b6108a087828601610680565b8252506108b0866020850161073a565b60208201526080830135828111156108c757600080fd5b6108d38782860161077f565b60408301525060a0830135828111156108eb57600080fd5b6108f7878286016105f2565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b82811015610977578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161092e565b5091979650505050505050565b6000806040838503121561099757600080fd5b82356109a2816105cd565b915060208301356109b2816105cd565b809150509250929050565b6000806000606084860312156109d257600080fd5b83356109dd816105cd565b925060208401356109ed816105cd565b929592945050506040919091013590565b600060208284031215610a1057600080fd5b8135610a1b816105cd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a9757610a97610a51565b92915050565b600082610ad3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b0957610b09610a51565b506001019056fea26469706673582212209439102997dbcc4989286a3f24f7ae99d34d4f44286e62d4dabac7b81ab7c15864736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0C\x188\x03\x80a\x0C\x18\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x81V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xB1V[`\0` \x82\x84\x03\x12\x15a\0\x93W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xAAW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x0BFa\0\xD2`\09`\0\x81\x81`|\x01Ra\x02\xDB\x01Ra\x0BF`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0PW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x08W\x80c\xDC~\x98\xDF\x14a\x01AW\x80c\xF2\xFD\xE3\x8B\x14a\x01VW`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x08?V[a\x01iV[`@Qa\0\xBF\x91\x90a\t\x11V[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x013a\x01\x166`\x04a\t\x84V[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[a\x01Ta\x01O6`\x04a\t\xBDV[a\x03SV[\0[a\x01Ta\x01d6`\x04a\t\xFEV[a\x04\x12V[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x89Wa\x01\x89a\x05\x03V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xF2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA7W\x90P[P` \x83\x01QQ\x90\x91P`\0\x80[\x84`@\x01QQ\x81\x10\x15a\x03JW`\0\x85`@\x01Q\x82\x81Q\x81\x10a\x02%Wa\x02%a\n\"V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16`\0\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x03@W`\0a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x8AWa\x02\x8Aa\n\"V[` \x02` \x01\x01Q` \x01Qa\x02\xA0\x91\x90a\n\x80V[a\x02\xAA\x91\x90a\n\x9DV[\x90P`@Q\x80``\x01`@R\x80\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x87\x86\x81Q\x81\x10a\x03%Wa\x03%a\n\"V[` \x02` \x01\x01\x81\x90RP\x84\x80a\x03;\x90a\n\xD8V[\x95PPP[PP`\x01\x01a\x02\0V[P\x82RP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xD9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\x93W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xD0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05UWa\x05Ua\x05\x03V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05UWa\x05Ua\x05\x03V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xC5Wa\x05\xC5a\x05\x03V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\xEFW`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06\x03W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x1DWa\x06\x1Da\x05\x03V[a\x06N` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05~V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06cW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\x92W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xB6Wa\x06\xB6a\x05\x03V[\x81`@R\x82\x93P\x845\x91Pa\x06\xCA\x82a\x05\xCDV[\x90\x82R` \x84\x015\x90a\x06\xDC\x82a\x05\xCDV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x06\x82a\x05\xCDV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07 W`\0\x80\xFD[Pa\x07-\x85\x82\x86\x01a\x05\xF2V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07LW`\0\x80\xFD[a\x07Ta\x052V[\x90P\x815a\x07a\x81a\x05\xCDV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\x90W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\xACWa\x07\xACa\x05\x03V[a\x07\xBA\x81\x83`\x05\x1B\x01a\x05~V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xD9W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x082W\x81\x81\x8A\x03\x12\x15a\x07\xF5W`\0\x80\x81\xFD[a\x07\xFDa\x052V[\x815a\x08\x08\x81a\x05\xCDV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08!\x81a\x05\xCDV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xDDV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08QW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08iW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08}W`\0\x80\xFD[a\x08\x85a\x05[V[\x825\x82\x81\x11\x15a\x08\x94W`\0\x80\xFD[a\x08\xA0\x87\x82\x86\x01a\x06\x80V[\x82RPa\x08\xB0\x86` \x85\x01a\x07:V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x08\xC7W`\0\x80\xFD[a\x08\xD3\x87\x82\x86\x01a\x07\x7FV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\xEBW`\0\x80\xFD[a\x08\xF7\x87\x82\x86\x01a\x05\xF2V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\twW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t.V[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x97W`\0\x80\xFD[\x825a\t\xA2\x81a\x05\xCDV[\x91P` \x83\x015a\t\xB2\x81a\x05\xCDV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t\xD2W`\0\x80\xFD[\x835a\t\xDD\x81a\x05\xCDV[\x92P` \x84\x015a\t\xED\x81a\x05\xCDV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\n\x10W`\0\x80\xFD[\x815a\n\x1B\x81a\x05\xCDV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n\x97Wa\n\x97a\nQV[\x92\x91PPV[`\0\x82a\n\xD3W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x0B\tWa\x0B\ta\nQV[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x949\x10)\x97\xDB\xCCI\x89(j?$\xF7\xAE\x99\xD3MOD(nb\xD4\xDA\xBA\xC7\xB8\x1A\xB7\xC1XdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100725760003560e01c80639b9ac2cb116100505780639b9ac2cb14610108578063dc7e98df14610141578063f2fde38b1461015657600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d636600461083f565b610169565b6040516100bf9190610911565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b610133610116366004610984565b600160209081526000928352604080842090915290825290205481565b6040519081526020016100bf565b61015461014f3660046109bd565b610353565b005b6101546101643660046109fe565b610412565b606081604001515167ffffffffffffffff81111561018957610189610503565b6040519080825280602002602001820160405280156101f257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101a75790505b506020830151519091506000805b84604001515181101561034a5760008560400151828151811061022557610225610a22565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff8087166000908152600184526040808220928416825291909352909120549091508015610340576000612710828960400151868151811061028a5761028a610a22565b6020026020010151602001516102a09190610a80565b6102aa9190610a9d565b905060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681525087868151811061032557610325610a22565b6020026020010181905250848061033b90610ad8565b955050505b5050600101610200565b50825250919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff92831660009081526001602090815260408083209490951682529290925291902055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103d0565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561055557610555610503565b60405290565b60405160a0810167ffffffffffffffff8111828210171561055557610555610503565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105c5576105c5610503565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ef57600080fd5b50565b600082601f83011261060357600080fd5b813567ffffffffffffffff81111561061d5761061d610503565b61064e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161057e565b81815284602083860101111561066357600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561069257600080fd5b60405160c0810167ffffffffffffffff82821081831117156106b6576106b6610503565b81604052829350843591506106ca826105cd565b9082526020840135906106dc826105cd565b816020840152604085013560408401526060850135606084015260808501359150610706826105cd565b81608084015260a085013591508082111561072057600080fd5b5061072d858286016105f2565b60a0830152505092915050565b60006060828403121561074c57600080fd5b610754610532565b90508135610761816105cd565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261079057600080fd5b8135602067ffffffffffffffff8211156107ac576107ac610503565b6107ba818360051b0161057e565b828152606092830285018201928282019190878511156107d957600080fd5b8387015b858110156108325781818a0312156107f55760008081fd5b6107fd610532565b8135610808816105cd565b81528186013586820152604080830135610821816105cd565b9082015284529284019281016107dd565b5090979650505050505050565b60006020828403121561085157600080fd5b813567ffffffffffffffff8082111561086957600080fd5b9083019060e0828603121561087d57600080fd5b61088561055b565b82358281111561089457600080fd5b6108a087828601610680565b8252506108b0866020850161073a565b60208201526080830135828111156108c757600080fd5b6108d38782860161077f565b60408301525060a0830135828111156108eb57600080fd5b6108f7878286016105f2565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b82811015610977578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161092e565b5091979650505050505050565b6000806040838503121561099757600080fd5b82356109a2816105cd565b915060208301356109b2816105cd565b809150509250929050565b6000806000606084860312156109d257600080fd5b83356109dd816105cd565b925060208401356109ed816105cd565b929592945050506040919091013590565b600060208284031215610a1057600080fd5b8135610a1b816105cd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a9757610a97610a51565b92915050565b600082610ad3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b0957610b09610a51565b506001019056fea26469706673582212209439102997dbcc4989286a3f24f7ae99d34d4f44286e62d4dabac7b81ab7c15864736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0PW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x08W\x80c\xDC~\x98\xDF\x14a\x01AW\x80c\xF2\xFD\xE3\x8B\x14a\x01VW`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x08?V[a\x01iV[`@Qa\0\xBF\x91\x90a\t\x11V[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x013a\x01\x166`\x04a\t\x84V[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[a\x01Ta\x01O6`\x04a\t\xBDV[a\x03SV[\0[a\x01Ta\x01d6`\x04a\t\xFEV[a\x04\x12V[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x89Wa\x01\x89a\x05\x03V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xF2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA7W\x90P[P` \x83\x01QQ\x90\x91P`\0\x80[\x84`@\x01QQ\x81\x10\x15a\x03JW`\0\x85`@\x01Q\x82\x81Q\x81\x10a\x02%Wa\x02%a\n\"V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16`\0\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x03@W`\0a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x8AWa\x02\x8Aa\n\"V[` \x02` \x01\x01Q` \x01Qa\x02\xA0\x91\x90a\n\x80V[a\x02\xAA\x91\x90a\n\x9DV[\x90P`@Q\x80``\x01`@R\x80\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x87\x86\x81Q\x81\x10a\x03%Wa\x03%a\n\"V[` \x02` \x01\x01\x81\x90RP\x84\x80a\x03;\x90a\n\xD8V[\x95PPP[PP`\x01\x01a\x02\0V[P\x82RP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xD9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\x93W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xD0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05UWa\x05Ua\x05\x03V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05UWa\x05Ua\x05\x03V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xC5Wa\x05\xC5a\x05\x03V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\xEFW`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06\x03W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x1DWa\x06\x1Da\x05\x03V[a\x06N` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05~V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06cW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\x92W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xB6Wa\x06\xB6a\x05\x03V[\x81`@R\x82\x93P\x845\x91Pa\x06\xCA\x82a\x05\xCDV[\x90\x82R` \x84\x015\x90a\x06\xDC\x82a\x05\xCDV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x06\x82a\x05\xCDV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07 W`\0\x80\xFD[Pa\x07-\x85\x82\x86\x01a\x05\xF2V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07LW`\0\x80\xFD[a\x07Ta\x052V[\x90P\x815a\x07a\x81a\x05\xCDV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\x90W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\xACWa\x07\xACa\x05\x03V[a\x07\xBA\x81\x83`\x05\x1B\x01a\x05~V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xD9W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x082W\x81\x81\x8A\x03\x12\x15a\x07\xF5W`\0\x80\x81\xFD[a\x07\xFDa\x052V[\x815a\x08\x08\x81a\x05\xCDV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08!\x81a\x05\xCDV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xDDV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08QW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08iW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08}W`\0\x80\xFD[a\x08\x85a\x05[V[\x825\x82\x81\x11\x15a\x08\x94W`\0\x80\xFD[a\x08\xA0\x87\x82\x86\x01a\x06\x80V[\x82RPa\x08\xB0\x86` \x85\x01a\x07:V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x08\xC7W`\0\x80\xFD[a\x08\xD3\x87\x82\x86\x01a\x07\x7FV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\xEBW`\0\x80\xFD[a\x08\xF7\x87\x82\x86\x01a\x05\xF2V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\twW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t.V[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x97W`\0\x80\xFD[\x825a\t\xA2\x81a\x05\xCDV[\x91P` \x83\x015a\t\xB2\x81a\x05\xCDV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t\xD2W`\0\x80\xFD[\x835a\t\xDD\x81a\x05\xCDV[\x92P` \x84\x015a\t\xED\x81a\x05\xCDV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\n\x10W`\0\x80\xFD[\x815a\n\x1B\x81a\x05\xCDV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n\x97Wa\n\x97a\nQV[\x92\x91PPV[`\0\x82a\n\xD3W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x0B\tWa\x0B\ta\nQV[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x949\x10)\x97\xDB\xCCI\x89(j?$\xF7\xAE\x99\xD3MOD(nb\xD4\xDA\xBA\xC7\xB8\x1A\xB7\xC1XdsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _feeRecipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _feeRecipient: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._feeRecipient,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _feeRecipient: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._feeRecipient, + ), + ) + } + } + }; + /**Function with signature `feeRecipient()` and selector `0x46904840`. +```solidity +function feeRecipient() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeRecipientCall {} + ///Container type for the return parameters of the [`feeRecipient()`](feeRecipientCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeRecipientReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeRecipientCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeRecipientCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeRecipientReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeRecipientReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeRecipientCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeRecipientReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeRecipient()"; + const SELECTOR: [u8; 4] = [70u8, 144u8, 72u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `fees(address,address)` and selector `0x9b9ac2cb`. +```solidity +function fees(address tokenIn, address tokenOut) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feesCall { + pub tokenIn: alloy::sol_types::private::Address, + pub tokenOut: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`fees(address,address)`](feesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feesReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feesCall) -> Self { + (value.tokenIn, value.tokenOut) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + tokenIn: tuple.0, + tokenOut: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "fees(address,address)"; + const SELECTOR: [u8; 4] = [155u8, 154u8, 194u8, 203u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.tokenIn, + ), + ::tokenize( + &self.tokenOut, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03`. +```solidity +function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory result); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getFeeOutputsCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](getFeeOutputsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getFeeOutputsReturn { + pub result: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ResolvedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getFeeOutputsCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFeeOutputsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getFeeOutputsReturn) -> Self { + (value.result,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFeeOutputsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { result: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getFeeOutputsCall { + type Parameters<'a> = (ResolvedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getFeeOutputsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))"; + const SELECTOR: [u8; 4] = [138u8, 166u8, 207u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setFee(address,address,uint256)` and selector `0xdc7e98df`. +```solidity +function setFee(address tokenIn, address tokenOut, uint256 fee) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setFeeCall { + pub tokenIn: alloy::sol_types::private::Address, + pub tokenOut: alloy::sol_types::private::Address, + pub fee: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`setFee(address,address,uint256)`](setFeeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setFeeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setFeeCall) -> Self { + (value.tokenIn, value.tokenOut, value.fee) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setFeeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + tokenIn: tuple.0, + tokenOut: tuple.1, + fee: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setFeeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setFeeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setFeeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setFeeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setFee(address,address,uint256)"; + const SELECTOR: [u8; 4] = [220u8, 126u8, 152u8, 223u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.tokenIn, + ), + ::tokenize( + &self.tokenOut, + ), + as alloy_sol_types::SolType>::tokenize(&self.fee), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockFeeControllerDuplicates`](self) function calls. + pub enum MockFeeControllerDuplicatesCalls { + feeRecipient(feeRecipientCall), + fees(feesCall), + getFeeOutputs(getFeeOutputsCall), + owner(ownerCall), + setFee(setFeeCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl MockFeeControllerDuplicatesCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [70u8, 144u8, 72u8, 64u8], + [138u8, 166u8, 207u8, 3u8], + [141u8, 165u8, 203u8, 91u8], + [155u8, 154u8, 194u8, 203u8], + [220u8, 126u8, 152u8, 223u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockFeeControllerDuplicatesCalls { + const NAME: &'static str = "MockFeeControllerDuplicatesCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::feeRecipient(_) => { + ::SELECTOR + } + Self::fees(_) => ::SELECTOR, + Self::getFeeOutputs(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::setFee(_) => ::SELECTOR, + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn feeRecipient( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerDuplicatesCalls::feeRecipient) + } + feeRecipient + }, + { + fn getFeeOutputs( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerDuplicatesCalls::getFeeOutputs) + } + getFeeOutputs + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerDuplicatesCalls::owner) + } + owner + }, + { + fn fees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerDuplicatesCalls::fees) + } + fees + }, + { + fn setFee( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerDuplicatesCalls::setFee) + } + setFee + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerDuplicatesCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::feeRecipient(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::fees(inner) => { + ::abi_encoded_size(inner) + } + Self::getFeeOutputs(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::setFee(inner) => { + ::abi_encoded_size(inner) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::feeRecipient(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::fees(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getFeeOutputs(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setFee(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockFeeControllerDuplicates`](self) events. + pub enum MockFeeControllerDuplicatesEvents { + OwnershipTransferred(OwnershipTransferred), + } + #[automatically_derived] + impl MockFeeControllerDuplicatesEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MockFeeControllerDuplicatesEvents { + const NAME: &'static str = "MockFeeControllerDuplicatesEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MockFeeControllerDuplicatesEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockFeeControllerDuplicates`](self) contract instance. + +See the [wrapper's documentation](`MockFeeControllerDuplicatesInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockFeeControllerDuplicatesInstance { + MockFeeControllerDuplicatesInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockFeeControllerDuplicatesInstance::::deploy(provider, _feeRecipient) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MockFeeControllerDuplicatesInstance::< + T, + P, + N, + >::deploy_builder(provider, _feeRecipient) + } + /**A [`MockFeeControllerDuplicates`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockFeeControllerDuplicates`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockFeeControllerDuplicatesInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockFeeControllerDuplicatesInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockFeeControllerDuplicatesInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerDuplicatesInstance { + /**Creates a new wrapper around an on-chain [`MockFeeControllerDuplicates`](self) contract instance. + +See the [wrapper's documentation](`MockFeeControllerDuplicatesInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _feeRecipient); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { _feeRecipient }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockFeeControllerDuplicatesInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> MockFeeControllerDuplicatesInstance { + MockFeeControllerDuplicatesInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerDuplicatesInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`feeRecipient`] function. + pub fn feeRecipient( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeRecipientCall {}) + } + ///Creates a new call builder for the [`fees`] function. + pub fn fees( + &self, + tokenIn: alloy::sol_types::private::Address, + tokenOut: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feesCall { tokenIn, tokenOut }) + } + ///Creates a new call builder for the [`getFeeOutputs`] function. + pub fn getFeeOutputs( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getFeeOutputsCall { order }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`setFee`] function. + pub fn setFee( + &self, + tokenIn: alloy::sol_types::private::Address, + tokenOut: alloy::sol_types::private::Address, + fee: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setFeeCall { + tokenIn, + tokenOut, + fee, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerDuplicatesInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/mockfeecontrollerinputandoutputfees.rs b/crates/bindings-uniswapx/src/mockfeecontrollerinputandoutputfees.rs new file mode 100644 index 0000000..01f7fba --- /dev/null +++ b/crates/bindings-uniswapx/src/mockfeecontrollerinputandoutputfees.rs @@ -0,0 +1,2870 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockFeeControllerInputAndOutputFees { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + event OwnershipTransferred(address indexed user, address indexed newOwner); + + constructor(address _feeRecipient); + + function feeRecipient() external view returns (address); + function fees(address tokenIn) external view returns (uint256); + function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory result); + function owner() external view returns (address); + function setFee(address tokenIn, uint256 fee) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_feeRecipient", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "feeRecipient", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "fees", + "inputs": [ + { + "name": "tokenIn", + "type": "address", + "internalType": "contract ERC20" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getFeeOutputs", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [ + { + "name": "result", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setFee", + "inputs": [ + { + "name": "tokenIn", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "fee", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockFeeControllerInputAndOutputFees { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b50604051610bfd380380610bfd83398101604081905261002f91610081565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b608051610b246100d960003960008181607c0152818161024601526103710152610b246000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063e55156b511610050578063e55156b514610108578063f2fde38b1461011d578063faaebd211461013057600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d63660046108ab565b61015e565b6040516100bf919061097d565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b61011b6101163660046109f0565b6103cf565b005b61011b61012b366004610a1c565b61047e565b61015061013e366004610a1c565b60016020526000908152604090205481565b6040519081526020016100bf565b6040805160028082526060828101909352816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610174575050602083810180515173ffffffffffffffffffffffffffffffffffffffff1660009081526001835260408120549151909201519293509161271090610203908490610a40565b61020d9190610a84565b9050604051806060016040528085602001516000015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508360008151811061029157610291610abf565b6020026020010181905250600084604001516000815181106102b5576102b5610abf565b6020026020010151600001519050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925061271083866040015160008151811061032057610320610abf565b6020026020010151602001516103369190610a40565b6103409190610a84565b915060405180606001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018381526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815250846001815181106103bc576103bc610abf565b6020026020010181905250505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161044c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156105c1576105c161056f565b60405290565b60405160a0810167ffffffffffffffff811182821017156105c1576105c161056f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156106315761063161056f565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461065b57600080fd5b50565b600082601f83011261066f57600080fd5b813567ffffffffffffffff8111156106895761068961056f565b6106ba60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016105ea565b8181528460208386010111156106cf57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156106fe57600080fd5b60405160c0810167ffffffffffffffff82821081831117156107225761072261056f565b816040528293508435915061073682610639565b90825260208401359061074882610639565b81602084015260408501356040840152606085013560608401526080850135915061077282610639565b81608084015260a085013591508082111561078c57600080fd5b506107998582860161065e565b60a0830152505092915050565b6000606082840312156107b857600080fd5b6107c061059e565b905081356107cd81610639565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126107fc57600080fd5b8135602067ffffffffffffffff8211156108185761081861056f565b610826818360051b016105ea565b8281526060928302850182019282820191908785111561084557600080fd5b8387015b8581101561089e5781818a0312156108615760008081fd5b61086961059e565b813561087481610639565b8152818601358682015260408083013561088d81610639565b908201528452928401928101610849565b5090979650505050505050565b6000602082840312156108bd57600080fd5b813567ffffffffffffffff808211156108d557600080fd5b9083019060e082860312156108e957600080fd5b6108f16105c7565b82358281111561090057600080fd5b61090c878286016106ec565b82525061091c86602085016107a6565b602082015260808301358281111561093357600080fd5b61093f878286016107eb565b60408301525060a08301358281111561095757600080fd5b6109638782860161065e565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b828110156109e3578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161099a565b5091979650505050505050565b60008060408385031215610a0357600080fd5b8235610a0e81610639565b946020939093013593505050565b600060208284031215610a2e57600080fd5b8135610a3981610639565b9392505050565b8082028115828204841417610a7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b600082610aba577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212201fbc8968b1cee430340d6c1e45f68b83b0c4682331f9ca5413dfa75e7d2f584464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0B\xFD8\x03\x80a\x0B\xFD\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x81V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xB1V[`\0` \x82\x84\x03\x12\x15a\0\x93W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xAAW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x0B$a\0\xD9`\09`\0\x81\x81`|\x01R\x81\x81a\x02F\x01Ra\x03q\x01Ra\x0B$`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\xE5QV\xB5\x11a\0PW\x80c\xE5QV\xB5\x14a\x01\x08W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x1DW\x80c\xFA\xAE\xBD!\x14a\x010W`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x08\xABV[a\x01^V[`@Qa\0\xBF\x91\x90a\t}V[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x1Ba\x01\x166`\x04a\t\xF0V[a\x03\xCFV[\0[a\x01\x1Ba\x01+6`\x04a\n\x1CV[a\x04~V[a\x01Pa\x01>6`\x04a\n\x1CV[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[`@\x80Q`\x02\x80\x82R``\x82\x81\x01\x90\x93R\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01tWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x02\x03\x90\x84\x90a\n@V[a\x02\r\x91\x90a\n\x84V[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83`\0\x81Q\x81\x10a\x02\x91Wa\x02\x91a\n\xBFV[` \x02` \x01\x01\x81\x90RP`\0\x84`@\x01Q`\0\x81Q\x81\x10a\x02\xB5Wa\x02\xB5a\n\xBFV[` \x02` \x01\x01Q`\0\x01Q\x90P`\x01`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01`\0 T\x92Pa'\x10\x83\x86`@\x01Q`\0\x81Q\x81\x10a\x03 Wa\x03 a\n\xBFV[` \x02` \x01\x01Q` \x01Qa\x036\x91\x90a\n@V[a\x03@\x91\x90a\n\x84V[\x91P`@Q\x80``\x01`@R\x80\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x84`\x01\x81Q\x81\x10a\x03\xBCWa\x03\xBCa\n\xBFV[` \x02` \x01\x01\x81\x90RPPPP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04UW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R`\x01` R`@\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\xFFW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04LV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xC1Wa\x05\xC1a\x05oV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xC1Wa\x05\xC1a\x05oV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x061Wa\x061a\x05oV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06[W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06oW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x89Wa\x06\x89a\x05oV[a\x06\xBA` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\xEAV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xCFW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\xFEW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x07\"Wa\x07\"a\x05oV[\x81`@R\x82\x93P\x845\x91Pa\x076\x82a\x069V[\x90\x82R` \x84\x015\x90a\x07H\x82a\x069V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07r\x82a\x069V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x8CW`\0\x80\xFD[Pa\x07\x99\x85\x82\x86\x01a\x06^V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07\xB8W`\0\x80\xFD[a\x07\xC0a\x05\x9EV[\x90P\x815a\x07\xCD\x81a\x069V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\xFCW`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08\x18Wa\x08\x18a\x05oV[a\x08&\x81\x83`\x05\x1B\x01a\x05\xEAV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08EW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\x9EW\x81\x81\x8A\x03\x12\x15a\x08aW`\0\x80\x81\xFD[a\x08ia\x05\x9EV[\x815a\x08t\x81a\x069V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x8D\x81a\x069V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08IV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08\xBDW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xD5W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08\xE9W`\0\x80\xFD[a\x08\xF1a\x05\xC7V[\x825\x82\x81\x11\x15a\t\0W`\0\x80\xFD[a\t\x0C\x87\x82\x86\x01a\x06\xECV[\x82RPa\t\x1C\x86` \x85\x01a\x07\xA6V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\t3W`\0\x80\xFD[a\t?\x87\x82\x86\x01a\x07\xEBV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\tWW`\0\x80\xFD[a\tc\x87\x82\x86\x01a\x06^V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\t\xE3W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\x9AV[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\n\x03W`\0\x80\xFD[\x825a\n\x0E\x81a\x069V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\n.W`\0\x80\xFD[\x815a\n9\x81a\x069V[\x93\x92PPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n~W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\0\x82a\n\xBAW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \x1F\xBC\x89h\xB1\xCE\xE404\rl\x1EE\xF6\x8B\x83\xB0\xC4h#1\xF9\xCAT\x13\xDF\xA7^}/XDdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063e55156b511610050578063e55156b514610108578063f2fde38b1461011d578063faaebd211461013057600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d63660046108ab565b61015e565b6040516100bf919061097d565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b61011b6101163660046109f0565b6103cf565b005b61011b61012b366004610a1c565b61047e565b61015061013e366004610a1c565b60016020526000908152604090205481565b6040519081526020016100bf565b6040805160028082526060828101909352816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610174575050602083810180515173ffffffffffffffffffffffffffffffffffffffff1660009081526001835260408120549151909201519293509161271090610203908490610a40565b61020d9190610a84565b9050604051806060016040528085602001516000015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508360008151811061029157610291610abf565b6020026020010181905250600084604001516000815181106102b5576102b5610abf565b6020026020010151600001519050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925061271083866040015160008151811061032057610320610abf565b6020026020010151602001516103369190610a40565b6103409190610a84565b915060405180606001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018381526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815250846001815181106103bc576103bc610abf565b6020026020010181905250505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161044c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156105c1576105c161056f565b60405290565b60405160a0810167ffffffffffffffff811182821017156105c1576105c161056f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156106315761063161056f565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461065b57600080fd5b50565b600082601f83011261066f57600080fd5b813567ffffffffffffffff8111156106895761068961056f565b6106ba60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016105ea565b8181528460208386010111156106cf57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156106fe57600080fd5b60405160c0810167ffffffffffffffff82821081831117156107225761072261056f565b816040528293508435915061073682610639565b90825260208401359061074882610639565b81602084015260408501356040840152606085013560608401526080850135915061077282610639565b81608084015260a085013591508082111561078c57600080fd5b506107998582860161065e565b60a0830152505092915050565b6000606082840312156107b857600080fd5b6107c061059e565b905081356107cd81610639565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126107fc57600080fd5b8135602067ffffffffffffffff8211156108185761081861056f565b610826818360051b016105ea565b8281526060928302850182019282820191908785111561084557600080fd5b8387015b8581101561089e5781818a0312156108615760008081fd5b61086961059e565b813561087481610639565b8152818601358682015260408083013561088d81610639565b908201528452928401928101610849565b5090979650505050505050565b6000602082840312156108bd57600080fd5b813567ffffffffffffffff808211156108d557600080fd5b9083019060e082860312156108e957600080fd5b6108f16105c7565b82358281111561090057600080fd5b61090c878286016106ec565b82525061091c86602085016107a6565b602082015260808301358281111561093357600080fd5b61093f878286016107eb565b60408301525060a08301358281111561095757600080fd5b6109638782860161065e565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b828110156109e3578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161099a565b5091979650505050505050565b60008060408385031215610a0357600080fd5b8235610a0e81610639565b946020939093013593505050565b600060208284031215610a2e57600080fd5b8135610a3981610639565b9392505050565b8082028115828204841417610a7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b600082610aba577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212201fbc8968b1cee430340d6c1e45f68b83b0c4682331f9ca5413dfa75e7d2f584464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\xE5QV\xB5\x11a\0PW\x80c\xE5QV\xB5\x14a\x01\x08W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x1DW\x80c\xFA\xAE\xBD!\x14a\x010W`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x08\xABV[a\x01^V[`@Qa\0\xBF\x91\x90a\t}V[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x1Ba\x01\x166`\x04a\t\xF0V[a\x03\xCFV[\0[a\x01\x1Ba\x01+6`\x04a\n\x1CV[a\x04~V[a\x01Pa\x01>6`\x04a\n\x1CV[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[`@\x80Q`\x02\x80\x82R``\x82\x81\x01\x90\x93R\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01tWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x02\x03\x90\x84\x90a\n@V[a\x02\r\x91\x90a\n\x84V[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83`\0\x81Q\x81\x10a\x02\x91Wa\x02\x91a\n\xBFV[` \x02` \x01\x01\x81\x90RP`\0\x84`@\x01Q`\0\x81Q\x81\x10a\x02\xB5Wa\x02\xB5a\n\xBFV[` \x02` \x01\x01Q`\0\x01Q\x90P`\x01`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01`\0 T\x92Pa'\x10\x83\x86`@\x01Q`\0\x81Q\x81\x10a\x03 Wa\x03 a\n\xBFV[` \x02` \x01\x01Q` \x01Qa\x036\x91\x90a\n@V[a\x03@\x91\x90a\n\x84V[\x91P`@Q\x80``\x01`@R\x80\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x84`\x01\x81Q\x81\x10a\x03\xBCWa\x03\xBCa\n\xBFV[` \x02` \x01\x01\x81\x90RPPPP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04UW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R`\x01` R`@\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\xFFW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04LV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xC1Wa\x05\xC1a\x05oV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xC1Wa\x05\xC1a\x05oV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x061Wa\x061a\x05oV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06[W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06oW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x89Wa\x06\x89a\x05oV[a\x06\xBA` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\xEAV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xCFW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\xFEW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x07\"Wa\x07\"a\x05oV[\x81`@R\x82\x93P\x845\x91Pa\x076\x82a\x069V[\x90\x82R` \x84\x015\x90a\x07H\x82a\x069V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07r\x82a\x069V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x8CW`\0\x80\xFD[Pa\x07\x99\x85\x82\x86\x01a\x06^V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07\xB8W`\0\x80\xFD[a\x07\xC0a\x05\x9EV[\x90P\x815a\x07\xCD\x81a\x069V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\xFCW`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08\x18Wa\x08\x18a\x05oV[a\x08&\x81\x83`\x05\x1B\x01a\x05\xEAV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08EW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\x9EW\x81\x81\x8A\x03\x12\x15a\x08aW`\0\x80\x81\xFD[a\x08ia\x05\x9EV[\x815a\x08t\x81a\x069V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x8D\x81a\x069V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08IV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08\xBDW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xD5W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08\xE9W`\0\x80\xFD[a\x08\xF1a\x05\xC7V[\x825\x82\x81\x11\x15a\t\0W`\0\x80\xFD[a\t\x0C\x87\x82\x86\x01a\x06\xECV[\x82RPa\t\x1C\x86` \x85\x01a\x07\xA6V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\t3W`\0\x80\xFD[a\t?\x87\x82\x86\x01a\x07\xEBV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\tWW`\0\x80\xFD[a\tc\x87\x82\x86\x01a\x06^V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\t\xE3W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\x9AV[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\n\x03W`\0\x80\xFD[\x825a\n\x0E\x81a\x069V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\n.W`\0\x80\xFD[\x815a\n9\x81a\x069V[\x93\x92PPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n~W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\0\x82a\n\xBAW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \x1F\xBC\x89h\xB1\xCE\xE404\rl\x1EE\xF6\x8B\x83\xB0\xC4h#1\xF9\xCAT\x13\xDF\xA7^}/XDdsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _feeRecipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _feeRecipient: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._feeRecipient,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _feeRecipient: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._feeRecipient, + ), + ) + } + } + }; + /**Function with signature `feeRecipient()` and selector `0x46904840`. +```solidity +function feeRecipient() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeRecipientCall {} + ///Container type for the return parameters of the [`feeRecipient()`](feeRecipientCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeRecipientReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeRecipientCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeRecipientCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeRecipientReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeRecipientReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeRecipientCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeRecipientReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeRecipient()"; + const SELECTOR: [u8; 4] = [70u8, 144u8, 72u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `fees(address)` and selector `0xfaaebd21`. +```solidity +function fees(address tokenIn) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feesCall { + pub tokenIn: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`fees(address)`](feesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feesReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feesCall) -> Self { + (value.tokenIn,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { tokenIn: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "fees(address)"; + const SELECTOR: [u8; 4] = [250u8, 174u8, 189u8, 33u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.tokenIn, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03`. +```solidity +function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory result); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getFeeOutputsCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](getFeeOutputsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getFeeOutputsReturn { + pub result: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ResolvedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getFeeOutputsCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFeeOutputsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getFeeOutputsReturn) -> Self { + (value.result,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFeeOutputsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { result: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getFeeOutputsCall { + type Parameters<'a> = (ResolvedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getFeeOutputsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))"; + const SELECTOR: [u8; 4] = [138u8, 166u8, 207u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setFee(address,uint256)` and selector `0xe55156b5`. +```solidity +function setFee(address tokenIn, uint256 fee) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setFeeCall { + pub tokenIn: alloy::sol_types::private::Address, + pub fee: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`setFee(address,uint256)`](setFeeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setFeeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setFeeCall) -> Self { + (value.tokenIn, value.fee) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setFeeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + tokenIn: tuple.0, + fee: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setFeeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setFeeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setFeeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setFeeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setFee(address,uint256)"; + const SELECTOR: [u8; 4] = [229u8, 81u8, 86u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.tokenIn, + ), + as alloy_sol_types::SolType>::tokenize(&self.fee), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockFeeControllerInputAndOutputFees`](self) function calls. + pub enum MockFeeControllerInputAndOutputFeesCalls { + feeRecipient(feeRecipientCall), + fees(feesCall), + getFeeOutputs(getFeeOutputsCall), + owner(ownerCall), + setFee(setFeeCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl MockFeeControllerInputAndOutputFeesCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [70u8, 144u8, 72u8, 64u8], + [138u8, 166u8, 207u8, 3u8], + [141u8, 165u8, 203u8, 91u8], + [229u8, 81u8, 86u8, 181u8], + [242u8, 253u8, 227u8, 139u8], + [250u8, 174u8, 189u8, 33u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockFeeControllerInputAndOutputFeesCalls { + const NAME: &'static str = "MockFeeControllerInputAndOutputFeesCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::feeRecipient(_) => { + ::SELECTOR + } + Self::fees(_) => ::SELECTOR, + Self::getFeeOutputs(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::setFee(_) => ::SELECTOR, + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn feeRecipient( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + MockFeeControllerInputAndOutputFeesCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerInputAndOutputFeesCalls::feeRecipient) + } + feeRecipient + }, + { + fn getFeeOutputs( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + MockFeeControllerInputAndOutputFeesCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerInputAndOutputFeesCalls::getFeeOutputs) + } + getFeeOutputs + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + MockFeeControllerInputAndOutputFeesCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerInputAndOutputFeesCalls::owner) + } + owner + }, + { + fn setFee( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + MockFeeControllerInputAndOutputFeesCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerInputAndOutputFeesCalls::setFee) + } + setFee + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + MockFeeControllerInputAndOutputFeesCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + MockFeeControllerInputAndOutputFeesCalls::transferOwnership, + ) + } + transferOwnership + }, + { + fn fees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + MockFeeControllerInputAndOutputFeesCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerInputAndOutputFeesCalls::fees) + } + fees + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::feeRecipient(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::fees(inner) => { + ::abi_encoded_size(inner) + } + Self::getFeeOutputs(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::setFee(inner) => { + ::abi_encoded_size(inner) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::feeRecipient(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::fees(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getFeeOutputs(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setFee(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockFeeControllerInputAndOutputFees`](self) events. + pub enum MockFeeControllerInputAndOutputFeesEvents { + OwnershipTransferred(OwnershipTransferred), + } + #[automatically_derived] + impl MockFeeControllerInputAndOutputFeesEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface + for MockFeeControllerInputAndOutputFeesEvents { + const NAME: &'static str = "MockFeeControllerInputAndOutputFeesEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData + for MockFeeControllerInputAndOutputFeesEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockFeeControllerInputAndOutputFees`](self) contract instance. + +See the [wrapper's documentation](`MockFeeControllerInputAndOutputFeesInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockFeeControllerInputAndOutputFeesInstance { + MockFeeControllerInputAndOutputFeesInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result< + MockFeeControllerInputAndOutputFeesInstance, + >, + > { + MockFeeControllerInputAndOutputFeesInstance::< + T, + P, + N, + >::deploy(provider, _feeRecipient) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MockFeeControllerInputAndOutputFeesInstance::< + T, + P, + N, + >::deploy_builder(provider, _feeRecipient) + } + /**A [`MockFeeControllerInputAndOutputFees`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockFeeControllerInputAndOutputFees`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockFeeControllerInputAndOutputFeesInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug + for MockFeeControllerInputAndOutputFeesInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockFeeControllerInputAndOutputFeesInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerInputAndOutputFeesInstance { + /**Creates a new wrapper around an on-chain [`MockFeeControllerInputAndOutputFees`](self) contract instance. + +See the [wrapper's documentation](`MockFeeControllerInputAndOutputFeesInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::Result< + MockFeeControllerInputAndOutputFeesInstance, + > { + let call_builder = Self::deploy_builder(provider, _feeRecipient); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { _feeRecipient }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl< + T, + P: ::core::clone::Clone, + N, + > MockFeeControllerInputAndOutputFeesInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> MockFeeControllerInputAndOutputFeesInstance { + MockFeeControllerInputAndOutputFeesInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerInputAndOutputFeesInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`feeRecipient`] function. + pub fn feeRecipient( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeRecipientCall {}) + } + ///Creates a new call builder for the [`fees`] function. + pub fn fees( + &self, + tokenIn: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feesCall { tokenIn }) + } + ///Creates a new call builder for the [`getFeeOutputs`] function. + pub fn getFeeOutputs( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getFeeOutputsCall { order }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`setFee`] function. + pub fn setFee( + &self, + tokenIn: alloy::sol_types::private::Address, + fee: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setFeeCall { tokenIn, fee }) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerInputAndOutputFeesInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/mockfeecontrollerinputfees.rs b/crates/bindings-uniswapx/src/mockfeecontrollerinputfees.rs new file mode 100644 index 0000000..7fa6018 --- /dev/null +++ b/crates/bindings-uniswapx/src/mockfeecontrollerinputfees.rs @@ -0,0 +1,2841 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockFeeControllerInputFees { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + event OwnershipTransferred(address indexed user, address indexed newOwner); + + constructor(address _feeRecipient); + + function feeRecipient() external view returns (address); + function fees(address tokenIn) external view returns (uint256); + function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory result); + function owner() external view returns (address); + function setFee(address tokenIn, uint256 fee) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_feeRecipient", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "feeRecipient", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "fees", + "inputs": [ + { + "name": "tokenIn", + "type": "address", + "internalType": "contract ERC20" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getFeeOutputs", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [ + { + "name": "result", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setFee", + "inputs": [ + { + "name": "tokenIn", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "fee", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockFeeControllerInputFees { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b50604051610acb380380610acb83398101604081905261002f91610081565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b6080516109f96100d260003960008181607c015261024701526109f96000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063e55156b511610050578063e55156b514610108578063f2fde38b1461011d578063faaebd211461013057600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d6366004610780565b61015e565b6040516100bf9190610852565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b61011b6101163660046108c5565b6102a4565b005b61011b61012b3660046108f1565b610353565b61015061013e3660046108f1565b60016020526000908152604090205481565b6040519081526020016100bf565b604080516001808252818301909252606091816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610175575050602083810180515173ffffffffffffffffffffffffffffffffffffffff1660009081526001835260408120549151909201519293509161271090610204908490610915565b61020e9190610959565b9050604051806060016040528085602001516000015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508360008151811061029257610292610994565b60200260200101819052505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461032a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610321565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561049657610496610444565b60405290565b60405160a0810167ffffffffffffffff8111828210171561049657610496610444565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561050657610506610444565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461053057600080fd5b50565b600082601f83011261054457600080fd5b813567ffffffffffffffff81111561055e5761055e610444565b61058f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016104bf565b8181528460208386010111156105a457600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156105d357600080fd5b60405160c0810167ffffffffffffffff82821081831117156105f7576105f7610444565b816040528293508435915061060b8261050e565b90825260208401359061061d8261050e565b8160208401526040850135604084015260608501356060840152608085013591506106478261050e565b81608084015260a085013591508082111561066157600080fd5b5061066e85828601610533565b60a0830152505092915050565b60006060828403121561068d57600080fd5b610695610473565b905081356106a28161050e565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126106d157600080fd5b8135602067ffffffffffffffff8211156106ed576106ed610444565b6106fb818360051b016104bf565b8281526060928302850182019282820191908785111561071a57600080fd5b8387015b858110156107735781818a0312156107365760008081fd5b61073e610473565b81356107498161050e565b815281860135868201526040808301356107628161050e565b90820152845292840192810161071e565b5090979650505050505050565b60006020828403121561079257600080fd5b813567ffffffffffffffff808211156107aa57600080fd5b9083019060e082860312156107be57600080fd5b6107c661049c565b8235828111156107d557600080fd5b6107e1878286016105c1565b8252506107f1866020850161067b565b602082015260808301358281111561080857600080fd5b610814878286016106c0565b60408301525060a08301358281111561082c57600080fd5b61083887828601610533565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b828110156108b8578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161086f565b5091979650505050505050565b600080604083850312156108d857600080fd5b82356108e38161050e565b946020939093013593505050565b60006020828403121561090357600080fd5b813561090e8161050e565b9392505050565b8082028115828204841417610953577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60008261098f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220ed02c07d79104bfab82363b53a8ac441a3e59da00d43fd13a7d57e1e8c2abb2364736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\n\xCB8\x03\x80a\n\xCB\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x81V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xB1V[`\0` \x82\x84\x03\x12\x15a\0\x93W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xAAW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\t\xF9a\0\xD2`\09`\0\x81\x81`|\x01Ra\x02G\x01Ra\t\xF9`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\xE5QV\xB5\x11a\0PW\x80c\xE5QV\xB5\x14a\x01\x08W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x1DW\x80c\xFA\xAE\xBD!\x14a\x010W`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x07\x80V[a\x01^V[`@Qa\0\xBF\x91\x90a\x08RV[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x1Ba\x01\x166`\x04a\x08\xC5V[a\x02\xA4V[\0[a\x01\x1Ba\x01+6`\x04a\x08\xF1V[a\x03SV[a\x01Pa\x01>6`\x04a\x08\xF1V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R``\x91\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01uWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x02\x04\x90\x84\x90a\t\x15V[a\x02\x0E\x91\x90a\tYV[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83`\0\x81Q\x81\x10a\x02\x92Wa\x02\x92a\t\x94V[` \x02` \x01\x01\x81\x90RPPP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03*W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R`\x01` R`@\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xD4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03!V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x96Wa\x04\x96a\x04DV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x96Wa\x04\x96a\x04DV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x06Wa\x05\x06a\x04DV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x050W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x05DW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05^Wa\x05^a\x04DV[a\x05\x8F` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x04\xBFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xA4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x05\xD3W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x05\xF7Wa\x05\xF7a\x04DV[\x81`@R\x82\x93P\x845\x91Pa\x06\x0B\x82a\x05\x0EV[\x90\x82R` \x84\x015\x90a\x06\x1D\x82a\x05\x0EV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06G\x82a\x05\x0EV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06aW`\0\x80\xFD[Pa\x06n\x85\x82\x86\x01a\x053V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x06\x8DW`\0\x80\xFD[a\x06\x95a\x04sV[\x90P\x815a\x06\xA2\x81a\x05\x0EV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x06\xD1W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\xEDWa\x06\xEDa\x04DV[a\x06\xFB\x81\x83`\x05\x1B\x01a\x04\xBFV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\x1AW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07sW\x81\x81\x8A\x03\x12\x15a\x076W`\0\x80\x81\xFD[a\x07>a\x04sV[\x815a\x07I\x81a\x05\x0EV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07b\x81a\x05\x0EV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\x1EV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x07\x92W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xAAW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x07\xBEW`\0\x80\xFD[a\x07\xC6a\x04\x9CV[\x825\x82\x81\x11\x15a\x07\xD5W`\0\x80\xFD[a\x07\xE1\x87\x82\x86\x01a\x05\xC1V[\x82RPa\x07\xF1\x86` \x85\x01a\x06{V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x08\x08W`\0\x80\xFD[a\x08\x14\x87\x82\x86\x01a\x06\xC0V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08,W`\0\x80\xFD[a\x088\x87\x82\x86\x01a\x053V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\x08\xB8W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\x08oV[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\xD8W`\0\x80\xFD[\x825a\x08\xE3\x81a\x05\x0EV[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\t\x03W`\0\x80\xFD[\x815a\t\x0E\x81a\x05\x0EV[\x93\x92PPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\tSW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\0\x82a\t\x8FW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xED\x02\xC0}y\x10K\xFA\xB8#c\xB5:\x8A\xC4A\xA3\xE5\x9D\xA0\rC\xFD\x13\xA7\xD5~\x1E\x8C*\xBB#dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063e55156b511610050578063e55156b514610108578063f2fde38b1461011d578063faaebd211461013057600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d6366004610780565b61015e565b6040516100bf9190610852565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b61011b6101163660046108c5565b6102a4565b005b61011b61012b3660046108f1565b610353565b61015061013e3660046108f1565b60016020526000908152604090205481565b6040519081526020016100bf565b604080516001808252818301909252606091816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610175575050602083810180515173ffffffffffffffffffffffffffffffffffffffff1660009081526001835260408120549151909201519293509161271090610204908490610915565b61020e9190610959565b9050604051806060016040528085602001516000015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508360008151811061029257610292610994565b60200260200101819052505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461032a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610321565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561049657610496610444565b60405290565b60405160a0810167ffffffffffffffff8111828210171561049657610496610444565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561050657610506610444565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461053057600080fd5b50565b600082601f83011261054457600080fd5b813567ffffffffffffffff81111561055e5761055e610444565b61058f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016104bf565b8181528460208386010111156105a457600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156105d357600080fd5b60405160c0810167ffffffffffffffff82821081831117156105f7576105f7610444565b816040528293508435915061060b8261050e565b90825260208401359061061d8261050e565b8160208401526040850135604084015260608501356060840152608085013591506106478261050e565b81608084015260a085013591508082111561066157600080fd5b5061066e85828601610533565b60a0830152505092915050565b60006060828403121561068d57600080fd5b610695610473565b905081356106a28161050e565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126106d157600080fd5b8135602067ffffffffffffffff8211156106ed576106ed610444565b6106fb818360051b016104bf565b8281526060928302850182019282820191908785111561071a57600080fd5b8387015b858110156107735781818a0312156107365760008081fd5b61073e610473565b81356107498161050e565b815281860135868201526040808301356107628161050e565b90820152845292840192810161071e565b5090979650505050505050565b60006020828403121561079257600080fd5b813567ffffffffffffffff808211156107aa57600080fd5b9083019060e082860312156107be57600080fd5b6107c661049c565b8235828111156107d557600080fd5b6107e1878286016105c1565b8252506107f1866020850161067b565b602082015260808301358281111561080857600080fd5b610814878286016106c0565b60408301525060a08301358281111561082c57600080fd5b61083887828601610533565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b828110156108b8578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161086f565b5091979650505050505050565b600080604083850312156108d857600080fd5b82356108e38161050e565b946020939093013593505050565b60006020828403121561090357600080fd5b813561090e8161050e565b9392505050565b8082028115828204841417610953577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60008261098f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220ed02c07d79104bfab82363b53a8ac441a3e59da00d43fd13a7d57e1e8c2abb2364736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\xE5QV\xB5\x11a\0PW\x80c\xE5QV\xB5\x14a\x01\x08W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x1DW\x80c\xFA\xAE\xBD!\x14a\x010W`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x07\x80V[a\x01^V[`@Qa\0\xBF\x91\x90a\x08RV[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x1Ba\x01\x166`\x04a\x08\xC5V[a\x02\xA4V[\0[a\x01\x1Ba\x01+6`\x04a\x08\xF1V[a\x03SV[a\x01Pa\x01>6`\x04a\x08\xF1V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R``\x91\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01uWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x02\x04\x90\x84\x90a\t\x15V[a\x02\x0E\x91\x90a\tYV[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83`\0\x81Q\x81\x10a\x02\x92Wa\x02\x92a\t\x94V[` \x02` \x01\x01\x81\x90RPPP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03*W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R`\x01` R`@\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xD4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03!V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x96Wa\x04\x96a\x04DV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x96Wa\x04\x96a\x04DV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x06Wa\x05\x06a\x04DV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x050W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x05DW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05^Wa\x05^a\x04DV[a\x05\x8F` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x04\xBFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xA4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x05\xD3W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x05\xF7Wa\x05\xF7a\x04DV[\x81`@R\x82\x93P\x845\x91Pa\x06\x0B\x82a\x05\x0EV[\x90\x82R` \x84\x015\x90a\x06\x1D\x82a\x05\x0EV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06G\x82a\x05\x0EV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06aW`\0\x80\xFD[Pa\x06n\x85\x82\x86\x01a\x053V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x06\x8DW`\0\x80\xFD[a\x06\x95a\x04sV[\x90P\x815a\x06\xA2\x81a\x05\x0EV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x06\xD1W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\xEDWa\x06\xEDa\x04DV[a\x06\xFB\x81\x83`\x05\x1B\x01a\x04\xBFV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\x1AW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07sW\x81\x81\x8A\x03\x12\x15a\x076W`\0\x80\x81\xFD[a\x07>a\x04sV[\x815a\x07I\x81a\x05\x0EV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07b\x81a\x05\x0EV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\x1EV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x07\x92W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xAAW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x07\xBEW`\0\x80\xFD[a\x07\xC6a\x04\x9CV[\x825\x82\x81\x11\x15a\x07\xD5W`\0\x80\xFD[a\x07\xE1\x87\x82\x86\x01a\x05\xC1V[\x82RPa\x07\xF1\x86` \x85\x01a\x06{V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x08\x08W`\0\x80\xFD[a\x08\x14\x87\x82\x86\x01a\x06\xC0V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08,W`\0\x80\xFD[a\x088\x87\x82\x86\x01a\x053V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\x08\xB8W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\x08oV[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\xD8W`\0\x80\xFD[\x825a\x08\xE3\x81a\x05\x0EV[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\t\x03W`\0\x80\xFD[\x815a\t\x0E\x81a\x05\x0EV[\x93\x92PPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\tSW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\0\x82a\t\x8FW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xED\x02\xC0}y\x10K\xFA\xB8#c\xB5:\x8A\xC4A\xA3\xE5\x9D\xA0\rC\xFD\x13\xA7\xD5~\x1E\x8C*\xBB#dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _feeRecipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _feeRecipient: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._feeRecipient,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _feeRecipient: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._feeRecipient, + ), + ) + } + } + }; + /**Function with signature `feeRecipient()` and selector `0x46904840`. +```solidity +function feeRecipient() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeRecipientCall {} + ///Container type for the return parameters of the [`feeRecipient()`](feeRecipientCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeRecipientReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeRecipientCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeRecipientCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeRecipientReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeRecipientReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeRecipientCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeRecipientReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeRecipient()"; + const SELECTOR: [u8; 4] = [70u8, 144u8, 72u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `fees(address)` and selector `0xfaaebd21`. +```solidity +function fees(address tokenIn) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feesCall { + pub tokenIn: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`fees(address)`](feesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feesReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feesCall) -> Self { + (value.tokenIn,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { tokenIn: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "fees(address)"; + const SELECTOR: [u8; 4] = [250u8, 174u8, 189u8, 33u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.tokenIn, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03`. +```solidity +function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory result); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getFeeOutputsCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](getFeeOutputsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getFeeOutputsReturn { + pub result: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ResolvedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getFeeOutputsCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFeeOutputsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getFeeOutputsReturn) -> Self { + (value.result,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFeeOutputsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { result: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getFeeOutputsCall { + type Parameters<'a> = (ResolvedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getFeeOutputsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))"; + const SELECTOR: [u8; 4] = [138u8, 166u8, 207u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setFee(address,uint256)` and selector `0xe55156b5`. +```solidity +function setFee(address tokenIn, uint256 fee) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setFeeCall { + pub tokenIn: alloy::sol_types::private::Address, + pub fee: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`setFee(address,uint256)`](setFeeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setFeeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setFeeCall) -> Self { + (value.tokenIn, value.fee) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setFeeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + tokenIn: tuple.0, + fee: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setFeeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setFeeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setFeeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setFeeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setFee(address,uint256)"; + const SELECTOR: [u8; 4] = [229u8, 81u8, 86u8, 181u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.tokenIn, + ), + as alloy_sol_types::SolType>::tokenize(&self.fee), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockFeeControllerInputFees`](self) function calls. + pub enum MockFeeControllerInputFeesCalls { + feeRecipient(feeRecipientCall), + fees(feesCall), + getFeeOutputs(getFeeOutputsCall), + owner(ownerCall), + setFee(setFeeCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl MockFeeControllerInputFeesCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [70u8, 144u8, 72u8, 64u8], + [138u8, 166u8, 207u8, 3u8], + [141u8, 165u8, 203u8, 91u8], + [229u8, 81u8, 86u8, 181u8], + [242u8, 253u8, 227u8, 139u8], + [250u8, 174u8, 189u8, 33u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockFeeControllerInputFeesCalls { + const NAME: &'static str = "MockFeeControllerInputFeesCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::feeRecipient(_) => { + ::SELECTOR + } + Self::fees(_) => ::SELECTOR, + Self::getFeeOutputs(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::setFee(_) => ::SELECTOR, + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn feeRecipient( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerInputFeesCalls::feeRecipient) + } + feeRecipient + }, + { + fn getFeeOutputs( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerInputFeesCalls::getFeeOutputs) + } + getFeeOutputs + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerInputFeesCalls::owner) + } + owner + }, + { + fn setFee( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerInputFeesCalls::setFee) + } + setFee + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerInputFeesCalls::transferOwnership) + } + transferOwnership + }, + { + fn fees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerInputFeesCalls::fees) + } + fees + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::feeRecipient(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::fees(inner) => { + ::abi_encoded_size(inner) + } + Self::getFeeOutputs(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::setFee(inner) => { + ::abi_encoded_size(inner) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::feeRecipient(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::fees(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getFeeOutputs(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setFee(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockFeeControllerInputFees`](self) events. + pub enum MockFeeControllerInputFeesEvents { + OwnershipTransferred(OwnershipTransferred), + } + #[automatically_derived] + impl MockFeeControllerInputFeesEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MockFeeControllerInputFeesEvents { + const NAME: &'static str = "MockFeeControllerInputFeesEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MockFeeControllerInputFeesEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockFeeControllerInputFees`](self) contract instance. + +See the [wrapper's documentation](`MockFeeControllerInputFeesInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockFeeControllerInputFeesInstance { + MockFeeControllerInputFeesInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockFeeControllerInputFeesInstance::::deploy(provider, _feeRecipient) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MockFeeControllerInputFeesInstance::< + T, + P, + N, + >::deploy_builder(provider, _feeRecipient) + } + /**A [`MockFeeControllerInputFees`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockFeeControllerInputFees`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockFeeControllerInputFeesInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockFeeControllerInputFeesInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockFeeControllerInputFeesInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerInputFeesInstance { + /**Creates a new wrapper around an on-chain [`MockFeeControllerInputFees`](self) contract instance. + +See the [wrapper's documentation](`MockFeeControllerInputFeesInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _feeRecipient); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { _feeRecipient }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockFeeControllerInputFeesInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> MockFeeControllerInputFeesInstance { + MockFeeControllerInputFeesInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerInputFeesInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`feeRecipient`] function. + pub fn feeRecipient( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeRecipientCall {}) + } + ///Creates a new call builder for the [`fees`] function. + pub fn fees( + &self, + tokenIn: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feesCall { tokenIn }) + } + ///Creates a new call builder for the [`getFeeOutputs`] function. + pub fn getFeeOutputs( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getFeeOutputsCall { order }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`setFee`] function. + pub fn setFee( + &self, + tokenIn: alloy::sol_types::private::Address, + fee: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setFeeCall { tokenIn, fee }) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerInputFeesInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/mockfeecontrollerzerofee.rs b/crates/bindings-uniswapx/src/mockfeecontrollerzerofee.rs new file mode 100644 index 0000000..8e6af2d --- /dev/null +++ b/crates/bindings-uniswapx/src/mockfeecontrollerzerofee.rs @@ -0,0 +1,2881 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockFeeControllerZeroFee { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + event OwnershipTransferred(address indexed user, address indexed newOwner); + + constructor(address _feeRecipient); + + function feeRecipient() external view returns (address); + function fees(address tokenIn, address tokenOut) external view returns (uint256); + function getFeeOutputs(ResolvedOrder memory) external pure returns (OutputToken[] memory result); + function owner() external view returns (address); + function setFee(address tokenIn, address tokenOut, uint256 fee) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_feeRecipient", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "feeRecipient", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "fees", + "inputs": [ + { + "name": "tokenIn", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "tokenOut", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getFeeOutputs", + "inputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [ + { + "name": "result", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setFee", + "inputs": [ + { + "name": "tokenIn", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "tokenOut", + "type": "address", + "internalType": "address" + }, + { + "name": "fee", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockFeeControllerZeroFee { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b50604051610a9c380380610a9c83398101604081905261002f91610081565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b6080516109d16100cb6000396000607c01526109d16000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639b9ac2cb116100505780639b9ac2cb14610108578063dc7e98df14610141578063f2fde38b1461015657600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d6366004610789565b610169565b6040516100bf919061085b565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b6101336101163660046108ce565b600160209081526000928352604080842090915290825290205481565b6040519081526020016100bf565b61015461014f366004610907565b61029d565b005b610154610164366004610948565b61035c565b604080516001808252818301909252606091816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101805790505090506000816000815181106101e2576101e261096c565b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000816000815181106102355761023561096c565b60200260200101516040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000816000815181106102885761028861096c565b60200260200101516020018181525050919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff92831660009081526001602090815260408083209490951682529290925291902055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161031a565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561049f5761049f61044d565b60405290565b60405160a0810167ffffffffffffffff8111828210171561049f5761049f61044d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561050f5761050f61044d565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461053957600080fd5b50565b600082601f83011261054d57600080fd5b813567ffffffffffffffff8111156105675761056761044d565b61059860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016104c8565b8181528460208386010111156105ad57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156105dc57600080fd5b60405160c0810167ffffffffffffffff82821081831117156106005761060061044d565b816040528293508435915061061482610517565b90825260208401359061062682610517565b81602084015260408501356040840152606085013560608401526080850135915061065082610517565b81608084015260a085013591508082111561066a57600080fd5b506106778582860161053c565b60a0830152505092915050565b60006060828403121561069657600080fd5b61069e61047c565b905081356106ab81610517565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126106da57600080fd5b8135602067ffffffffffffffff8211156106f6576106f661044d565b610704818360051b016104c8565b8281526060928302850182019282820191908785111561072357600080fd5b8387015b8581101561077c5781818a03121561073f5760008081fd5b61074761047c565b813561075281610517565b8152818601358682015260408083013561076b81610517565b908201528452928401928101610727565b5090979650505050505050565b60006020828403121561079b57600080fd5b813567ffffffffffffffff808211156107b357600080fd5b9083019060e082860312156107c757600080fd5b6107cf6104a5565b8235828111156107de57600080fd5b6107ea878286016105ca565b8252506107fa8660208501610684565b602082015260808301358281111561081157600080fd5b61081d878286016106c9565b60408301525060a08301358281111561083557600080fd5b6108418782860161053c565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b828110156108c1578151805173ffffffffffffffffffffffffffffffffffffffff9081168652878201518887015290860151168585015260609093019290850190600101610878565b5091979650505050505050565b600080604083850312156108e157600080fd5b82356108ec81610517565b915060208301356108fc81610517565b809150509250929050565b60008060006060848603121561091c57600080fd5b833561092781610517565b9250602084013561093781610517565b929592945050506040919091013590565b60006020828403121561095a57600080fd5b813561096581610517565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212208b68af630d6c8d18e3436e61650a2c6a8ed1b12463971085c2990c31ac0e720a64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\n\x9C8\x03\x80a\n\x9C\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x81V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xB1V[`\0` \x82\x84\x03\x12\x15a\0\x93W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xAAW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\t\xD1a\0\xCB`\09`\0`|\x01Ra\t\xD1`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0PW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x08W\x80c\xDC~\x98\xDF\x14a\x01AW\x80c\xF2\xFD\xE3\x8B\x14a\x01VW`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x07\x89V[a\x01iV[`@Qa\0\xBF\x91\x90a\x08[V[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x013a\x01\x166`\x04a\x08\xCEV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[a\x01Ta\x01O6`\x04a\t\x07V[a\x02\x9DV[\0[a\x01Ta\x01d6`\x04a\tHV[a\x03\\V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R``\x91\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\x80W\x90PP\x90P`\0\x81`\0\x81Q\x81\x10a\x01\xE2Wa\x01\xE2a\tlV[` \x02` \x01\x01Q`\0\x01\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RPP`\0\x81`\0\x81Q\x81\x10a\x025Wa\x025a\tlV[` \x02` \x01\x01Q`@\x01\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RPP`\0\x81`\0\x81Q\x81\x10a\x02\x88Wa\x02\x88a\tlV[` \x02` \x01\x01Q` \x01\x81\x81RPP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03#W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xDDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\x1AV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x9FWa\x04\x9Fa\x04MV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x9FWa\x04\x9Fa\x04MV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x0FWa\x05\x0Fa\x04MV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x059W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x05MW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05gWa\x05ga\x04MV[a\x05\x98` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x04\xC8V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xADW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x05\xDCW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\0Wa\x06\0a\x04MV[\x81`@R\x82\x93P\x845\x91Pa\x06\x14\x82a\x05\x17V[\x90\x82R` \x84\x015\x90a\x06&\x82a\x05\x17V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06P\x82a\x05\x17V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06jW`\0\x80\xFD[Pa\x06w\x85\x82\x86\x01a\x05 = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _feeRecipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _feeRecipient: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._feeRecipient,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _feeRecipient: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._feeRecipient, + ), + ) + } + } + }; + /**Function with signature `feeRecipient()` and selector `0x46904840`. +```solidity +function feeRecipient() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeRecipientCall {} + ///Container type for the return parameters of the [`feeRecipient()`](feeRecipientCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeRecipientReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeRecipientCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeRecipientCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeRecipientReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeRecipientReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeRecipientCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeRecipientReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeRecipient()"; + const SELECTOR: [u8; 4] = [70u8, 144u8, 72u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `fees(address,address)` and selector `0x9b9ac2cb`. +```solidity +function fees(address tokenIn, address tokenOut) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feesCall { + pub tokenIn: alloy::sol_types::private::Address, + pub tokenOut: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`fees(address,address)`](feesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feesReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feesCall) -> Self { + (value.tokenIn, value.tokenOut) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + tokenIn: tuple.0, + tokenOut: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feesCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "fees(address,address)"; + const SELECTOR: [u8; 4] = [155u8, 154u8, 194u8, 203u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.tokenIn, + ), + ::tokenize( + &self.tokenOut, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x8aa6cf03`. +```solidity +function getFeeOutputs(ResolvedOrder memory) external pure returns (OutputToken[] memory result); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getFeeOutputsCall { + pub _0: ::RustType, + } + ///Container type for the return parameters of the [`getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](getFeeOutputsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getFeeOutputsReturn { + pub result: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ResolvedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getFeeOutputsCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFeeOutputsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getFeeOutputsReturn) -> Self { + (value.result,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getFeeOutputsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { result: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getFeeOutputsCall { + type Parameters<'a> = (ResolvedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getFeeOutputsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))"; + const SELECTOR: [u8; 4] = [138u8, 166u8, 207u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self._0),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setFee(address,address,uint256)` and selector `0xdc7e98df`. +```solidity +function setFee(address tokenIn, address tokenOut, uint256 fee) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setFeeCall { + pub tokenIn: alloy::sol_types::private::Address, + pub tokenOut: alloy::sol_types::private::Address, + pub fee: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`setFee(address,address,uint256)`](setFeeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setFeeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setFeeCall) -> Self { + (value.tokenIn, value.tokenOut, value.fee) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setFeeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + tokenIn: tuple.0, + tokenOut: tuple.1, + fee: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setFeeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setFeeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setFeeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setFeeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setFee(address,address,uint256)"; + const SELECTOR: [u8; 4] = [220u8, 126u8, 152u8, 223u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.tokenIn, + ), + ::tokenize( + &self.tokenOut, + ), + as alloy_sol_types::SolType>::tokenize(&self.fee), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockFeeControllerZeroFee`](self) function calls. + pub enum MockFeeControllerZeroFeeCalls { + feeRecipient(feeRecipientCall), + fees(feesCall), + getFeeOutputs(getFeeOutputsCall), + owner(ownerCall), + setFee(setFeeCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl MockFeeControllerZeroFeeCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [70u8, 144u8, 72u8, 64u8], + [138u8, 166u8, 207u8, 3u8], + [141u8, 165u8, 203u8, 91u8], + [155u8, 154u8, 194u8, 203u8], + [220u8, 126u8, 152u8, 223u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockFeeControllerZeroFeeCalls { + const NAME: &'static str = "MockFeeControllerZeroFeeCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::feeRecipient(_) => { + ::SELECTOR + } + Self::fees(_) => ::SELECTOR, + Self::getFeeOutputs(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::setFee(_) => ::SELECTOR, + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn feeRecipient( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerZeroFeeCalls::feeRecipient) + } + feeRecipient + }, + { + fn getFeeOutputs( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerZeroFeeCalls::getFeeOutputs) + } + getFeeOutputs + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerZeroFeeCalls::owner) + } + owner + }, + { + fn fees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerZeroFeeCalls::fees) + } + fees + }, + { + fn setFee( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerZeroFeeCalls::setFee) + } + setFee + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFeeControllerZeroFeeCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::feeRecipient(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::fees(inner) => { + ::abi_encoded_size(inner) + } + Self::getFeeOutputs(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::setFee(inner) => { + ::abi_encoded_size(inner) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::feeRecipient(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::fees(inner) => { + ::abi_encode_raw(inner, out) + } + Self::getFeeOutputs(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setFee(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockFeeControllerZeroFee`](self) events. + pub enum MockFeeControllerZeroFeeEvents { + OwnershipTransferred(OwnershipTransferred), + } + #[automatically_derived] + impl MockFeeControllerZeroFeeEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MockFeeControllerZeroFeeEvents { + const NAME: &'static str = "MockFeeControllerZeroFeeEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MockFeeControllerZeroFeeEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockFeeControllerZeroFee`](self) contract instance. + +See the [wrapper's documentation](`MockFeeControllerZeroFeeInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockFeeControllerZeroFeeInstance { + MockFeeControllerZeroFeeInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockFeeControllerZeroFeeInstance::::deploy(provider, _feeRecipient) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MockFeeControllerZeroFeeInstance::< + T, + P, + N, + >::deploy_builder(provider, _feeRecipient) + } + /**A [`MockFeeControllerZeroFee`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockFeeControllerZeroFee`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockFeeControllerZeroFeeInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockFeeControllerZeroFeeInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockFeeControllerZeroFeeInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerZeroFeeInstance { + /**Creates a new wrapper around an on-chain [`MockFeeControllerZeroFee`](self) contract instance. + +See the [wrapper's documentation](`MockFeeControllerZeroFeeInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _feeRecipient); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _feeRecipient: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { _feeRecipient }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockFeeControllerZeroFeeInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockFeeControllerZeroFeeInstance { + MockFeeControllerZeroFeeInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerZeroFeeInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`feeRecipient`] function. + pub fn feeRecipient( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeRecipientCall {}) + } + ///Creates a new call builder for the [`fees`] function. + pub fn fees( + &self, + tokenIn: alloy::sol_types::private::Address, + tokenOut: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feesCall { tokenIn, tokenOut }) + } + ///Creates a new call builder for the [`getFeeOutputs`] function. + pub fn getFeeOutputs( + &self, + _0: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getFeeOutputsCall { _0 }) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`setFee`] function. + pub fn setFee( + &self, + tokenIn: alloy::sol_types::private::Address, + tokenOut: alloy::sol_types::private::Address, + fee: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setFeeCall { + tokenIn, + tokenOut, + fee, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFeeControllerZeroFeeInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/mockfillcontract.rs b/crates/bindings-uniswapx/src/mockfillcontract.rs new file mode 100644 index 0000000..e49331b --- /dev/null +++ b/crates/bindings-uniswapx/src/mockfillcontract.rs @@ -0,0 +1,2484 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockFillContract { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + struct SignedOrder { + bytes order; + bytes sig; + } + + error NativeTransferFailed(); + + constructor(address _reactor); + + function execute(SignedOrder memory order) external; + function executeBatch(SignedOrder[] memory orders) external; + function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_reactor", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "reactorCallback", + "inputs": [ + { + "name": "resolvedOrders", + "type": "tuple[]", + "internalType": "struct ResolvedOrder[]", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockFillContract { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b50604051610ce1380380610ce183398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610c4261009f6000396000818160be015281816101680152818161028401526102f10152610c426000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630d7a16c3146100465780633f62192e1461005b578063585da6281461006e575b600080fd5b610059610054366004610440565b610081565b005b6100596100693660046104b5565b61012b565b61005961007c366004610842565b6101d2565b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c7906100f59085908590600401610ace565b600060405180830381600087803b15801561010f57600080fd5b505af1158015610123573d6000803e3d6000fd5b505050505050565b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d3358849061019d908490600401610b91565b600060405180830381600087803b1580156101b757600080fd5b505af11580156101cb573d6000803e3d6000fd5b5050505050565b60005b82518110156103a15760005b8382815181106101f3576101f3610bbb565b6020026020010151604001515181101561039857600084838151811061021b5761021b610bbb565b602002602001015160400151828151811061023857610238610bbb565b6020026020010151905061027a816000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161590565b156102b2576102ad7f000000000000000000000000000000000000000000000000000000000000000082602001516103a6565b61038f565b80516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303816000875af1158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190610bea565b505b506001016101e1565b506001016101d5565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610400576040519150601f19603f3d011682016040523d82523d6000602084013e610405565b606091505b50509050806103a1576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806020838503121561045357600080fd5b823567ffffffffffffffff8082111561046b57600080fd5b818501915085601f83011261047f57600080fd5b81358181111561048e57600080fd5b8660208260051b85010111156104a357600080fd5b60209290920196919550909350505050565b6000602082840312156104c757600080fd5b813567ffffffffffffffff8111156104de57600080fd5b8201604081850312156104f057600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610549576105496104f7565b60405290565b60405160a0810167ffffffffffffffff81118282101715610549576105496104f7565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105b9576105b96104f7565b604052919050565b600067ffffffffffffffff8211156105db576105db6104f7565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461060757600080fd5b50565b600082601f83011261061b57600080fd5b813567ffffffffffffffff811115610635576106356104f7565b61066660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610572565b81815284602083860101111561067b57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156106aa57600080fd5b60405160c0810167ffffffffffffffff82821081831117156106ce576106ce6104f7565b81604052829350843591506106e2826105e5565b9082526020840135906106f4826105e5565b81602084015260408501356040840152606085013560608401526080850135915061071e826105e5565b81608084015260a085013591508082111561073857600080fd5b506107458582860161060a565b60a0830152505092915050565b60006060828403121561076457600080fd5b61076c610526565b90508135610779816105e5565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126107a857600080fd5b813560206107bd6107b8836105c1565b610572565b828152606092830285018201928282019190878511156107dc57600080fd5b8387015b858110156108355781818a0312156107f85760008081fd5b610800610526565b813561080b816105e5565b81528186013586820152604080830135610824816105e5565b9082015284529284019281016107e0565b5090979650505050505050565b6000806040838503121561085557600080fd5b823567ffffffffffffffff8082111561086d57600080fd5b818501915085601f83011261088157600080fd5b813560206108916107b8836105c1565b82815260059290921b840181019181810190898411156108b057600080fd5b8286015b848110156109a1578035868111156108cc5760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109025760008081fd5b61090a61054f565b868301358981111561091c5760008081fd5b61092a8f8983870101610698565b82525061093a8e60408501610752565b8782015260a0830135898111156109515760008081fd5b61095f8f8983870101610797565b60408301525060c0830135898111156109785760008081fd5b6109868f898387010161060a565b606083015250910135608082015283529183019183016108b4565b50965050860135925050808211156109b857600080fd5b506109c58582860161060a565b9150509250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610a0457600080fd5b830160208101925035905067ffffffffffffffff811115610a2457600080fd5b803603821315610a3357600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610a8f82836109cf565b60408552610aa1604086018284610a3a565b915050610ab160208401846109cf565b8583036020870152610ac4838284610a3a565b9695505050505050565b6040808252810182905260006060600584901b830181019083018583805b87811015610b6e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18a3603018112610b4c578283fd5b610b58868b8301610a83565b9550506020938401939290920191600101610aec565b505050508281036020840152610b88816000815260200190565b95945050505050565b604081526000610ba46040830184610a83565b828103602093840152600081529190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610bfc57600080fd5b815180151581146104f057600080fdfea2646970667358221220fbaf082c290a109a4d866d328b6538d7df3260bda97beab3144755ca5e5c094064736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0C\xE18\x03\x80a\x0C\xE1\x839\x81\x01`@\x81\x90Ra\0/\x91a\0@V[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0pV[`\0` \x82\x84\x03\x12\x15a\0RW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0iW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x0CBa\0\x9F`\09`\0\x81\x81`\xBE\x01R\x81\x81a\x01h\x01R\x81\x81a\x02\x84\x01Ra\x02\xF1\x01Ra\x0CB`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\rz\x16\xC3\x14a\0FW\x80c?b\x19.\x14a\0[W\x80cX]\xA6(\x14a\0nW[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04@V[a\0\x81V[\0[a\0Ya\0i6`\x04a\x04\xB5V[a\x01+V[a\0Ya\0|6`\x04a\x08BV[a\x01\xD2V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\0\xF5\x90\x85\x90\x85\x90`\x04\x01a\n\xCEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\x0FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01#W=`\0\x80>=`\0\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\x9D\x90\x84\x90`\x04\x01a\x0B\x91V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xB7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xCBW=`\0\x80>=`\0\xFD[PPPPPV[`\0[\x82Q\x81\x10\x15a\x03\xA1W`\0[\x83\x82\x81Q\x81\x10a\x01\xF3Wa\x01\xF3a\x0B\xBBV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\x98W`\0\x84\x83\x81Q\x81\x10a\x02\x1BWa\x02\x1Ba\x0B\xBBV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x028Wa\x028a\x0B\xBBV[` \x02` \x01\x01Q\x90Pa\x02z\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x02\xB2Wa\x02\xAD\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82` \x01Qa\x03\xA6V[a\x03\x8FV[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03iW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x8D\x91\x90a\x0B\xEAV[P[P`\x01\x01a\x01\xE1V[P`\x01\x01a\x01\xD5V[PPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x04\0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\x05V[``\x91P[PP\x90P\x80a\x03\xA1W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x04SW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04kW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\x7FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\x8EW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\xA3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x04\xC7W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xDEW`\0\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x04\xF0W`\0\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05IWa\x05Ia\x04\xF7V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05IWa\x05Ia\x04\xF7V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xB9Wa\x05\xB9a\x04\xF7V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xDBWa\x05\xDBa\x04\xF7V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x07W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06\x1BW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x065Wa\x065a\x04\xF7V[a\x06f` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05rV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06{W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\xAAW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xCEWa\x06\xCEa\x04\xF7V[\x81`@R\x82\x93P\x845\x91Pa\x06\xE2\x82a\x05\xE5V[\x90\x82R` \x84\x015\x90a\x06\xF4\x82a\x05\xE5V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x1E\x82a\x05\xE5V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x078W`\0\x80\xFD[Pa\x07E\x85\x82\x86\x01a\x06\nV[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07dW`\0\x80\xFD[a\x07la\x05&V[\x90P\x815a\x07y\x81a\x05\xE5V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\xA8W`\0\x80\xFD[\x815` a\x07\xBDa\x07\xB8\x83a\x05\xC1V[a\x05rV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xDCW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x085W\x81\x81\x8A\x03\x12\x15a\x07\xF8W`\0\x80\x81\xFD[a\x08\0a\x05&V[\x815a\x08\x0B\x81a\x05\xE5V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08$\x81a\x05\xE5V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xE0V[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08UW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08mW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\x81W`\0\x80\xFD[\x815` a\x08\x91a\x07\xB8\x83a\x05\xC1V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08\xB0W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\xA1W\x805\x86\x81\x11\x15a\x08\xCCW`\0\x80\x81\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t\x02W`\0\x80\x81\xFD[a\t\na\x05OV[\x86\x83\x015\x89\x81\x11\x15a\t\x1CW`\0\x80\x81\xFD[a\t*\x8F\x89\x83\x87\x01\x01a\x06\x98V[\x82RPa\t:\x8E`@\x85\x01a\x07RV[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\tQW`\0\x80\x81\xFD[a\t_\x8F\x89\x83\x87\x01\x01a\x07\x97V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\txW`\0\x80\x81\xFD[a\t\x86\x8F\x89\x83\x87\x01\x01a\x06\nV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08\xB4V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t\xB8W`\0\x80\xFD[Pa\t\xC5\x85\x82\x86\x01a\x06\nV[\x91PP\x92P\x92\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\n\x04W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n$W`\0\x80\xFD[\x806\x03\x82\x13\x15a\n3W`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0a\n\x8F\x82\x83a\t\xCFV[`@\x85Ra\n\xA1`@\x86\x01\x82\x84a\n:V[\x91PPa\n\xB1` \x84\x01\x84a\t\xCFV[\x85\x83\x03` \x87\x01Ra\n\xC4\x83\x82\x84a\n:V[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R`\0```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83\x80[\x87\x81\x10\x15a\x0BnW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8A6\x03\x01\x81\x12a\x0BLW\x82\x83\xFD[a\x0BX\x86\x8B\x83\x01a\n\x83V[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\n\xECV[PPPP\x82\x81\x03` \x84\x01Ra\x0B\x88\x81`\0\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R`\0a\x0B\xA4`@\x83\x01\x84a\n\x83V[\x82\x81\x03` \x93\x84\x01R`\0\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x0B\xFCW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x04\xF0W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xFB\xAF\x08,)\n\x10\x9AM\x86m2\x8Be8\xD7\xDF2`\xBD\xA9{\xEA\xB3\x14GU\xCA^\\\t@dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630d7a16c3146100465780633f62192e1461005b578063585da6281461006e575b600080fd5b610059610054366004610440565b610081565b005b6100596100693660046104b5565b61012b565b61005961007c366004610842565b6101d2565b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c7906100f59085908590600401610ace565b600060405180830381600087803b15801561010f57600080fd5b505af1158015610123573d6000803e3d6000fd5b505050505050565b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d3358849061019d908490600401610b91565b600060405180830381600087803b1580156101b757600080fd5b505af11580156101cb573d6000803e3d6000fd5b5050505050565b60005b82518110156103a15760005b8382815181106101f3576101f3610bbb565b6020026020010151604001515181101561039857600084838151811061021b5761021b610bbb565b602002602001015160400151828151811061023857610238610bbb565b6020026020010151905061027a816000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161590565b156102b2576102ad7f000000000000000000000000000000000000000000000000000000000000000082602001516103a6565b61038f565b80516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303816000875af1158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190610bea565b505b506001016101e1565b506001016101d5565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610400576040519150601f19603f3d011682016040523d82523d6000602084013e610405565b606091505b50509050806103a1576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806020838503121561045357600080fd5b823567ffffffffffffffff8082111561046b57600080fd5b818501915085601f83011261047f57600080fd5b81358181111561048e57600080fd5b8660208260051b85010111156104a357600080fd5b60209290920196919550909350505050565b6000602082840312156104c757600080fd5b813567ffffffffffffffff8111156104de57600080fd5b8201604081850312156104f057600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610549576105496104f7565b60405290565b60405160a0810167ffffffffffffffff81118282101715610549576105496104f7565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105b9576105b96104f7565b604052919050565b600067ffffffffffffffff8211156105db576105db6104f7565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461060757600080fd5b50565b600082601f83011261061b57600080fd5b813567ffffffffffffffff811115610635576106356104f7565b61066660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610572565b81815284602083860101111561067b57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156106aa57600080fd5b60405160c0810167ffffffffffffffff82821081831117156106ce576106ce6104f7565b81604052829350843591506106e2826105e5565b9082526020840135906106f4826105e5565b81602084015260408501356040840152606085013560608401526080850135915061071e826105e5565b81608084015260a085013591508082111561073857600080fd5b506107458582860161060a565b60a0830152505092915050565b60006060828403121561076457600080fd5b61076c610526565b90508135610779816105e5565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126107a857600080fd5b813560206107bd6107b8836105c1565b610572565b828152606092830285018201928282019190878511156107dc57600080fd5b8387015b858110156108355781818a0312156107f85760008081fd5b610800610526565b813561080b816105e5565b81528186013586820152604080830135610824816105e5565b9082015284529284019281016107e0565b5090979650505050505050565b6000806040838503121561085557600080fd5b823567ffffffffffffffff8082111561086d57600080fd5b818501915085601f83011261088157600080fd5b813560206108916107b8836105c1565b82815260059290921b840181019181810190898411156108b057600080fd5b8286015b848110156109a1578035868111156108cc5760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109025760008081fd5b61090a61054f565b868301358981111561091c5760008081fd5b61092a8f8983870101610698565b82525061093a8e60408501610752565b8782015260a0830135898111156109515760008081fd5b61095f8f8983870101610797565b60408301525060c0830135898111156109785760008081fd5b6109868f898387010161060a565b606083015250910135608082015283529183019183016108b4565b50965050860135925050808211156109b857600080fd5b506109c58582860161060a565b9150509250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610a0457600080fd5b830160208101925035905067ffffffffffffffff811115610a2457600080fd5b803603821315610a3357600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610a8f82836109cf565b60408552610aa1604086018284610a3a565b915050610ab160208401846109cf565b8583036020870152610ac4838284610a3a565b9695505050505050565b6040808252810182905260006060600584901b830181019083018583805b87811015610b6e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18a3603018112610b4c578283fd5b610b58868b8301610a83565b9550506020938401939290920191600101610aec565b505050508281036020840152610b88816000815260200190565b95945050505050565b604081526000610ba46040830184610a83565b828103602093840152600081529190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610bfc57600080fd5b815180151581146104f057600080fdfea2646970667358221220fbaf082c290a109a4d866d328b6538d7df3260bda97beab3144755ca5e5c094064736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\rz\x16\xC3\x14a\0FW\x80c?b\x19.\x14a\0[W\x80cX]\xA6(\x14a\0nW[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04@V[a\0\x81V[\0[a\0Ya\0i6`\x04a\x04\xB5V[a\x01+V[a\0Ya\0|6`\x04a\x08BV[a\x01\xD2V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\0\xF5\x90\x85\x90\x85\x90`\x04\x01a\n\xCEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\x0FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01#W=`\0\x80>=`\0\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\x9D\x90\x84\x90`\x04\x01a\x0B\x91V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xB7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xCBW=`\0\x80>=`\0\xFD[PPPPPV[`\0[\x82Q\x81\x10\x15a\x03\xA1W`\0[\x83\x82\x81Q\x81\x10a\x01\xF3Wa\x01\xF3a\x0B\xBBV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\x98W`\0\x84\x83\x81Q\x81\x10a\x02\x1BWa\x02\x1Ba\x0B\xBBV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x028Wa\x028a\x0B\xBBV[` \x02` \x01\x01Q\x90Pa\x02z\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x02\xB2Wa\x02\xAD\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82` \x01Qa\x03\xA6V[a\x03\x8FV[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03iW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x8D\x91\x90a\x0B\xEAV[P[P`\x01\x01a\x01\xE1V[P`\x01\x01a\x01\xD5V[PPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x04\0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\x05V[``\x91P[PP\x90P\x80a\x03\xA1W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x04SW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04kW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\x7FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\x8EW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\xA3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x04\xC7W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xDEW`\0\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x04\xF0W`\0\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05IWa\x05Ia\x04\xF7V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05IWa\x05Ia\x04\xF7V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xB9Wa\x05\xB9a\x04\xF7V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xDBWa\x05\xDBa\x04\xF7V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x07W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06\x1BW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x065Wa\x065a\x04\xF7V[a\x06f` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05rV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06{W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\xAAW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xCEWa\x06\xCEa\x04\xF7V[\x81`@R\x82\x93P\x845\x91Pa\x06\xE2\x82a\x05\xE5V[\x90\x82R` \x84\x015\x90a\x06\xF4\x82a\x05\xE5V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x1E\x82a\x05\xE5V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x078W`\0\x80\xFD[Pa\x07E\x85\x82\x86\x01a\x06\nV[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07dW`\0\x80\xFD[a\x07la\x05&V[\x90P\x815a\x07y\x81a\x05\xE5V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\xA8W`\0\x80\xFD[\x815` a\x07\xBDa\x07\xB8\x83a\x05\xC1V[a\x05rV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xDCW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x085W\x81\x81\x8A\x03\x12\x15a\x07\xF8W`\0\x80\x81\xFD[a\x08\0a\x05&V[\x815a\x08\x0B\x81a\x05\xE5V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08$\x81a\x05\xE5V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xE0V[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08UW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08mW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\x81W`\0\x80\xFD[\x815` a\x08\x91a\x07\xB8\x83a\x05\xC1V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08\xB0W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\xA1W\x805\x86\x81\x11\x15a\x08\xCCW`\0\x80\x81\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t\x02W`\0\x80\x81\xFD[a\t\na\x05OV[\x86\x83\x015\x89\x81\x11\x15a\t\x1CW`\0\x80\x81\xFD[a\t*\x8F\x89\x83\x87\x01\x01a\x06\x98V[\x82RPa\t:\x8E`@\x85\x01a\x07RV[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\tQW`\0\x80\x81\xFD[a\t_\x8F\x89\x83\x87\x01\x01a\x07\x97V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\txW`\0\x80\x81\xFD[a\t\x86\x8F\x89\x83\x87\x01\x01a\x06\nV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08\xB4V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t\xB8W`\0\x80\xFD[Pa\t\xC5\x85\x82\x86\x01a\x06\nV[\x91PP\x92P\x92\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\n\x04W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n$W`\0\x80\xFD[\x806\x03\x82\x13\x15a\n3W`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0a\n\x8F\x82\x83a\t\xCFV[`@\x85Ra\n\xA1`@\x86\x01\x82\x84a\n:V[\x91PPa\n\xB1` \x84\x01\x84a\t\xCFV[\x85\x83\x03` \x87\x01Ra\n\xC4\x83\x82\x84a\n:V[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R`\0```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83\x80[\x87\x81\x10\x15a\x0BnW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8A6\x03\x01\x81\x12a\x0BLW\x82\x83\xFD[a\x0BX\x86\x8B\x83\x01a\n\x83V[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\n\xECV[PPPP\x82\x81\x03` \x84\x01Ra\x0B\x88\x81`\0\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R`\0a\x0B\xA4`@\x83\x01\x84a\n\x83V[\x82\x81\x03` \x93\x84\x01R`\0\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x0B\xFCW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x04\xF0W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xFB\xAF\x08,)\n\x10\x9AM\x86m2\x8Be8\xD7\xDF2`\xBD\xA9{\xEA\xB3\x14GU\xCA^\\\t@dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Constructor`. +```solidity +constructor(address _reactor); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _reactor: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._reactor,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _reactor: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._reactor, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes))` and selector `0x3f62192e`. +```solidity +function execute(SignedOrder memory order) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes))"; + const SELECTOR: [u8; 4] = [63u8, 98u8, 25u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3`. +```solidity +function executeBatch(SignedOrder[] memory orders) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { orders: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[])"; + const SELECTOR: [u8; 4] = [13u8, 122u8, 22u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628`. +```solidity +function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackCall { + pub resolvedOrders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub _1: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackCall) -> Self { + (value.resolvedOrders, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for reactorCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + resolvedOrders: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for reactorCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for reactorCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = reactorCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)"; + const SELECTOR: [u8; 4] = [88u8, 93u8, 166u8, 40u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.resolvedOrders), + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockFillContract`](self) function calls. + pub enum MockFillContractCalls { + execute(executeCall), + executeBatch(executeBatchCall), + reactorCallback(reactorCallbackCall), + } + #[automatically_derived] + impl MockFillContractCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 122u8, 22u8, 195u8], + [63u8, 98u8, 25u8, 46u8], + [88u8, 93u8, 166u8, 40u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockFillContractCalls { + const NAME: &'static str = "MockFillContractCalls"; + const MIN_DATA_LENGTH: usize = 64usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::reactorCallback(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFillContractCalls::executeBatch) + } + executeBatch + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFillContractCalls::execute) + } + execute + }, + { + fn reactorCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFillContractCalls::reactorCallback) + } + reactorCallback + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::reactorCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::reactorCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockFillContract`](self) custom errors. + pub enum MockFillContractErrors { + NativeTransferFailed(NativeTransferFailed), + } + #[automatically_derived] + impl MockFillContractErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[244u8, 179u8, 177u8, 188u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockFillContractErrors { + const NAME: &'static str = "MockFillContractErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFillContractErrors::NativeTransferFailed) + } + NativeTransferFailed + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockFillContract`](self) contract instance. + +See the [wrapper's documentation](`MockFillContractInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockFillContractInstance { + MockFillContractInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _reactor: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockFillContractInstance::::deploy(provider, _reactor) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _reactor: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MockFillContractInstance::::deploy_builder(provider, _reactor) + } + /**A [`MockFillContract`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockFillContract`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockFillContractInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockFillContractInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockFillContractInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFillContractInstance { + /**Creates a new wrapper around an on-chain [`MockFillContract`](self) contract instance. + +See the [wrapper's documentation](`MockFillContractInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _reactor: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _reactor); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _reactor: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { _reactor }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockFillContractInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockFillContractInstance { + MockFillContractInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFillContractInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeBatchCall { orders }) + } + ///Creates a new call builder for the [`reactorCallback`] function. + pub fn reactorCallback( + &self, + resolvedOrders: alloy::sol_types::private::Vec< + ::RustType, + >, + _1: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &reactorCallbackCall { + resolvedOrders, + _1, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFillContractInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/mockfillcontractdoubleexecution.rs b/crates/bindings-uniswapx/src/mockfillcontractdoubleexecution.rs new file mode 100644 index 0000000..6a57f76 --- /dev/null +++ b/crates/bindings-uniswapx/src/mockfillcontractdoubleexecution.rs @@ -0,0 +1,2372 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockFillContractDoubleExecution { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + struct SignedOrder { + bytes order; + bytes sig; + } + + error NativeTransferFailed(); + + constructor(address _reactor1, address _reactor2); + + function execute(SignedOrder memory order, SignedOrder memory other) external; + function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory otherSignedOrder) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_reactor1", + "type": "address", + "internalType": "address" + }, + { + "name": "_reactor2", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "other", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "reactorCallback", + "inputs": [ + { + "name": "resolvedOrders", + "type": "tuple[]", + "internalType": "struct ResolvedOrder[]", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "otherSignedOrder", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockFillContractDoubleExecution { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60c060405234801561001057600080fd5b50604051610d9f380380610d9f83398101604081905261002f91610062565b6001600160a01b039182166080521660a052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a051610cdf6100c060003960006102e0015260008181606501526102b80152610cdf6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806350df2d401461003b578063585da62814610050575b600080fd5b61004e610049366004610405565b610063565b005b61004e61005e3660046107bd565b610113565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d33588483836040516020016100b19190610a3f565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016100dd929190610ac7565b600060405180830381600087803b1580156100f757600080fd5b505af115801561010b573d6000803e3d6000fd5b505050505050565b60005b82518110156102a05760005b83828151811061013457610134610af5565b6020026020010151604001515181101561029757600084838151811061015c5761015c610af5565b602002602001015160400151828151811061017957610179610af5565b602002602001015190506101bb816000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161590565b156101d3576101ce33826020015161034e565b61028e565b80516040517f095ea7b30000000000000000000000000000000000000000000000000000000081523360048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015273ffffffffffffffffffffffffffffffffffffffff9091169063095ea7b3906044016020604051808303816000875af1158015610268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190610b24565b505b50600101610122565b50600101610116565b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361034a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d3358848280602001905181019061032e9190610b93565b6040518263ffffffff1660e01b81526004016100dd9190610c3a565b5050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146103a8576040519150601f19603f3d011682016040523d82523d6000602084013e6103ad565b606091505b50509050806103e8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000604082840312156103ff57600080fd5b50919050565b6000806040838503121561041857600080fd5b823567ffffffffffffffff8082111561043057600080fd5b61043c868387016103ed565b9350602085013591508082111561045257600080fd5b5061045f858286016103ed565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156104bb576104bb610469565b60405290565b60405160a0810167ffffffffffffffff811182821017156104bb576104bb610469565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561052b5761052b610469565b604052919050565b600067ffffffffffffffff82111561054d5761054d610469565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461057957600080fd5b50565b600067ffffffffffffffff82111561059657610596610469565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126105d357600080fd5b81356105e66105e18261057c565b6104e4565b8181528460208386010111156105fb57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561062a57600080fd5b60405160c0810167ffffffffffffffff828210818311171561064e5761064e610469565b816040528293508435915061066282610557565b90825260208401359061067482610557565b81602084015260408501356040840152606085013560608401526080850135915061069e82610557565b81608084015260a08501359150808211156106b857600080fd5b506106c5858286016105c2565b60a0830152505092915050565b6000606082840312156106e457600080fd5b6106ec610498565b905081356106f981610557565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261072857600080fd5b813560206107386105e183610533565b8281526060928302850182019282820191908785111561075757600080fd5b8387015b858110156107b05781818a0312156107735760008081fd5b61077b610498565b813561078681610557565b8152818601358682015260408083013561079f81610557565b90820152845292840192810161075b565b5090979650505050505050565b600080604083850312156107d057600080fd5b823567ffffffffffffffff808211156107e857600080fd5b818501915085601f8301126107fc57600080fd5b8135602061080c6105e183610533565b82815260059290921b8401810191818101908984111561082b57600080fd5b8286015b8481101561091c578035868111156108475760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181131561087d5760008081fd5b6108856104c1565b86830135898111156108975760008081fd5b6108a58f8983870101610618565b8252506108b58e604085016106d2565b8782015260a0830135898111156108cc5760008081fd5b6108da8f8983870101610717565b60408301525060c0830135898111156108f35760008081fd5b6109018f89838701016105c2565b6060830152509101356080820152835291830191830161082f565b509650508601359250508082111561093357600080fd5b5061045f858286016105c2565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261097557600080fd5b830160208101925035905067ffffffffffffffff81111561099557600080fd5b8036038213156109a457600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610a008283610940565b60408552610a126040860182846109ab565b915050610a226020840184610940565b8583036020870152610a358382846109ab565b9695505050505050565b602081526000610a5260208301846109f4565b9392505050565b60005b83811015610a74578181015183820152602001610a5c565b50506000910152565b60008151808452610a95816020860160208601610a59565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081526000610ada60408301856109f4565b8281036020840152610aec8185610a7d565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610b3657600080fd5b81518015158114610a5257600080fd5b600082601f830112610b5757600080fd5b8151610b656105e18261057c565b818152846020838601011115610b7a57600080fd5b610b8b826020830160208701610a59565b949350505050565b600060208284031215610ba557600080fd5b815167ffffffffffffffff80821115610bbd57600080fd5b9083019060408286031215610bd157600080fd5b604051604081018181108382111715610bec57610bec610469565b604052825182811115610bfe57600080fd5b610c0a87828601610b46565b825250602083015182811115610c1f57600080fd5b610c2b87828601610b46565b60208301525095945050505050565b6040815260008251604080840152610c556080840182610a7d565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610c908282610a7d565b848103602095860152600081529390930194935050505056fea2646970667358221220a57453011885b98bfab9586cdb142692e7d9548a539b09e888da05539aab49a564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xC0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\r\x9F8\x03\x80a\r\x9F\x839\x81\x01`@\x81\x90Ra\0/\x91a\0bV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x80R\x16`\xA0Ra\0\x95V[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0]W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\0uW`\0\x80\xFD[a\0~\x83a\0FV[\x91Pa\0\x8C` \x84\x01a\0FV[\x90P\x92P\x92\x90PV[`\x80Q`\xA0Qa\x0C\xDFa\0\xC0`\09`\0a\x02\xE0\x01R`\0\x81\x81`e\x01Ra\x02\xB8\x01Ra\x0C\xDF`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cP\xDF-@\x14a\0;W\x80cX]\xA6(\x14a\0PW[`\0\x80\xFD[a\0Na\0I6`\x04a\x04\x05V[a\0cV[\0[a\0Na\0^6`\x04a\x07\xBDV[a\x01\x13V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x83\x83`@Q` \x01a\0\xB1\x91\x90a\n?V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDD\x92\x91\x90a\n\xC7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\0\xF7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x0BW=`\0\x80>=`\0\xFD[PPPPPPV[`\0[\x82Q\x81\x10\x15a\x02\xA0W`\0[\x83\x82\x81Q\x81\x10a\x014Wa\x014a\n\xF5V[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x02\x97W`\0\x84\x83\x81Q\x81\x10a\x01\\Wa\x01\\a\n\xF5V[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x01yWa\x01ya\n\xF5V[` \x02` \x01\x01Q\x90Pa\x01\xBB\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x01\xD3Wa\x01\xCE3\x82` \x01Qa\x03NV[a\x02\x8EV[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02hW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x8C\x91\x90a\x0B$V[P[P`\x01\x01a\x01\"V[P`\x01\x01a\x01\x16V[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x163\x03a\x03JW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x82\x80` \x01\x90Q\x81\x01\x90a\x03.\x91\x90a\x0B\x93V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDD\x91\x90a\x0C:V[PPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x03\xA8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03\xADV[``\x91P[PP\x90P\x80a\x03\xE8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0`@\x82\x84\x03\x12\x15a\x03\xFFW`\0\x80\xFD[P\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\x18W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x040W`\0\x80\xFD[a\x04<\x86\x83\x87\x01a\x03\xEDV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04RW`\0\x80\xFD[Pa\x04_\x85\x82\x86\x01a\x03\xEDV[\x91PP\x92P\x92\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xBBWa\x04\xBBa\x04iV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xBBWa\x04\xBBa\x04iV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05+Wa\x05+a\x04iV[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05MWa\x05Ma\x04iV[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05yW`\0\x80\xFD[PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\x96Wa\x05\x96a\x04iV[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x05\xD3W`\0\x80\xFD[\x815a\x05\xE6a\x05\xE1\x82a\x05|V[a\x04\xE4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xFBW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06*W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06NWa\x06Na\x04iV[\x81`@R\x82\x93P\x845\x91Pa\x06b\x82a\x05WV[\x90\x82R` \x84\x015\x90a\x06t\x82a\x05WV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06\x9E\x82a\x05WV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06\xB8W`\0\x80\xFD[Pa\x06\xC5\x85\x82\x86\x01a\x05\xC2V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x06\xE4W`\0\x80\xFD[a\x06\xECa\x04\x98V[\x90P\x815a\x06\xF9\x81a\x05WV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07(W`\0\x80\xFD[\x815` a\x078a\x05\xE1\x83a\x053V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07WW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07\xB0W\x81\x81\x8A\x03\x12\x15a\x07sW`\0\x80\x81\xFD[a\x07{a\x04\x98V[\x815a\x07\x86\x81a\x05WV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07\x9F\x81a\x05WV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07[V[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xD0W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x07\xFCW`\0\x80\xFD[\x815` a\x08\x0Ca\x05\xE1\x83a\x053V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08+W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\x1CW\x805\x86\x81\x11\x15a\x08GW`\0\x80\x81\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08}W`\0\x80\x81\xFD[a\x08\x85a\x04\xC1V[\x86\x83\x015\x89\x81\x11\x15a\x08\x97W`\0\x80\x81\xFD[a\x08\xA5\x8F\x89\x83\x87\x01\x01a\x06\x18V[\x82RPa\x08\xB5\x8E`@\x85\x01a\x06\xD2V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\x08\xCCW`\0\x80\x81\xFD[a\x08\xDA\x8F\x89\x83\x87\x01\x01a\x07\x17V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\x08\xF3W`\0\x80\x81\xFD[a\t\x01\x8F\x89\x83\x87\x01\x01a\x05\xC2V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08/V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t3W`\0\x80\xFD[Pa\x04_\x85\x82\x86\x01a\x05\xC2V[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\tuW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\x95W`\0\x80\xFD[\x806\x03\x82\x13\x15a\t\xA4W`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0a\n\0\x82\x83a\t@V[`@\x85Ra\n\x12`@\x86\x01\x82\x84a\t\xABV[\x91PPa\n\"` \x84\x01\x84a\t@V[\x85\x83\x03` \x87\x01Ra\n5\x83\x82\x84a\t\xABV[\x96\x95PPPPPPV[` \x81R`\0a\nR` \x83\x01\x84a\t\xF4V[\x93\x92PPPV[`\0[\x83\x81\x10\x15a\ntW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\\V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\n\x95\x81` \x86\x01` \x86\x01a\nYV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`@\x81R`\0a\n\xDA`@\x83\x01\x85a\t\xF4V[\x82\x81\x03` \x84\x01Ra\n\xEC\x81\x85a\n}V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x0B6W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\nRW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x0BWW`\0\x80\xFD[\x81Qa\x0Bea\x05\xE1\x82a\x05|V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0BzW`\0\x80\xFD[a\x0B\x8B\x82` \x83\x01` \x87\x01a\nYV[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x0B\xA5W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0B\xBDW`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0B\xD1W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x0B\xECWa\x0B\xECa\x04iV[`@R\x82Q\x82\x81\x11\x15a\x0B\xFEW`\0\x80\xFD[a\x0C\n\x87\x82\x86\x01a\x0BFV[\x82RP` \x83\x01Q\x82\x81\x11\x15a\x0C\x1FW`\0\x80\xFD[a\x0C+\x87\x82\x86\x01a\x0BFV[` \x83\x01RP\x95\x94PPPPPV[`@\x81R`\0\x82Q`@\x80\x84\x01Ra\x0CU`\x80\x84\x01\x82a\n}V[\x90P` \x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\x0C\x90\x82\x82a\n}V[\x84\x81\x03` \x95\x86\x01R`\0\x81R\x93\x90\x93\x01\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \xA5tS\x01\x18\x85\xB9\x8B\xFA\xB9Xl\xDB\x14&\x92\xE7\xD9T\x8AS\x9B\t\xE8\x88\xDA\x05S\x9A\xABI\xA5dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100365760003560e01c806350df2d401461003b578063585da62814610050575b600080fd5b61004e610049366004610405565b610063565b005b61004e61005e3660046107bd565b610113565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d33588483836040516020016100b19190610a3f565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016100dd929190610ac7565b600060405180830381600087803b1580156100f757600080fd5b505af115801561010b573d6000803e3d6000fd5b505050505050565b60005b82518110156102a05760005b83828151811061013457610134610af5565b6020026020010151604001515181101561029757600084838151811061015c5761015c610af5565b602002602001015160400151828151811061017957610179610af5565b602002602001015190506101bb816000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161590565b156101d3576101ce33826020015161034e565b61028e565b80516040517f095ea7b30000000000000000000000000000000000000000000000000000000081523360048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015273ffffffffffffffffffffffffffffffffffffffff9091169063095ea7b3906044016020604051808303816000875af1158015610268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190610b24565b505b50600101610122565b50600101610116565b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361034a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d3358848280602001905181019061032e9190610b93565b6040518263ffffffff1660e01b81526004016100dd9190610c3a565b5050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146103a8576040519150601f19603f3d011682016040523d82523d6000602084013e6103ad565b606091505b50509050806103e8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000604082840312156103ff57600080fd5b50919050565b6000806040838503121561041857600080fd5b823567ffffffffffffffff8082111561043057600080fd5b61043c868387016103ed565b9350602085013591508082111561045257600080fd5b5061045f858286016103ed565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156104bb576104bb610469565b60405290565b60405160a0810167ffffffffffffffff811182821017156104bb576104bb610469565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561052b5761052b610469565b604052919050565b600067ffffffffffffffff82111561054d5761054d610469565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461057957600080fd5b50565b600067ffffffffffffffff82111561059657610596610469565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126105d357600080fd5b81356105e66105e18261057c565b6104e4565b8181528460208386010111156105fb57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561062a57600080fd5b60405160c0810167ffffffffffffffff828210818311171561064e5761064e610469565b816040528293508435915061066282610557565b90825260208401359061067482610557565b81602084015260408501356040840152606085013560608401526080850135915061069e82610557565b81608084015260a08501359150808211156106b857600080fd5b506106c5858286016105c2565b60a0830152505092915050565b6000606082840312156106e457600080fd5b6106ec610498565b905081356106f981610557565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261072857600080fd5b813560206107386105e183610533565b8281526060928302850182019282820191908785111561075757600080fd5b8387015b858110156107b05781818a0312156107735760008081fd5b61077b610498565b813561078681610557565b8152818601358682015260408083013561079f81610557565b90820152845292840192810161075b565b5090979650505050505050565b600080604083850312156107d057600080fd5b823567ffffffffffffffff808211156107e857600080fd5b818501915085601f8301126107fc57600080fd5b8135602061080c6105e183610533565b82815260059290921b8401810191818101908984111561082b57600080fd5b8286015b8481101561091c578035868111156108475760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181131561087d5760008081fd5b6108856104c1565b86830135898111156108975760008081fd5b6108a58f8983870101610618565b8252506108b58e604085016106d2565b8782015260a0830135898111156108cc5760008081fd5b6108da8f8983870101610717565b60408301525060c0830135898111156108f35760008081fd5b6109018f89838701016105c2565b6060830152509101356080820152835291830191830161082f565b509650508601359250508082111561093357600080fd5b5061045f858286016105c2565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261097557600080fd5b830160208101925035905067ffffffffffffffff81111561099557600080fd5b8036038213156109a457600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610a008283610940565b60408552610a126040860182846109ab565b915050610a226020840184610940565b8583036020870152610a358382846109ab565b9695505050505050565b602081526000610a5260208301846109f4565b9392505050565b60005b83811015610a74578181015183820152602001610a5c565b50506000910152565b60008151808452610a95816020860160208601610a59565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081526000610ada60408301856109f4565b8281036020840152610aec8185610a7d565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610b3657600080fd5b81518015158114610a5257600080fd5b600082601f830112610b5757600080fd5b8151610b656105e18261057c565b818152846020838601011115610b7a57600080fd5b610b8b826020830160208701610a59565b949350505050565b600060208284031215610ba557600080fd5b815167ffffffffffffffff80821115610bbd57600080fd5b9083019060408286031215610bd157600080fd5b604051604081018181108382111715610bec57610bec610469565b604052825182811115610bfe57600080fd5b610c0a87828601610b46565b825250602083015182811115610c1f57600080fd5b610c2b87828601610b46565b60208301525095945050505050565b6040815260008251604080840152610c556080840182610a7d565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610c908282610a7d565b848103602095860152600081529390930194935050505056fea2646970667358221220a57453011885b98bfab9586cdb142692e7d9548a539b09e888da05539aab49a564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cP\xDF-@\x14a\0;W\x80cX]\xA6(\x14a\0PW[`\0\x80\xFD[a\0Na\0I6`\x04a\x04\x05V[a\0cV[\0[a\0Na\0^6`\x04a\x07\xBDV[a\x01\x13V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x83\x83`@Q` \x01a\0\xB1\x91\x90a\n?V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDD\x92\x91\x90a\n\xC7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\0\xF7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x0BW=`\0\x80>=`\0\xFD[PPPPPPV[`\0[\x82Q\x81\x10\x15a\x02\xA0W`\0[\x83\x82\x81Q\x81\x10a\x014Wa\x014a\n\xF5V[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x02\x97W`\0\x84\x83\x81Q\x81\x10a\x01\\Wa\x01\\a\n\xF5V[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x01yWa\x01ya\n\xF5V[` \x02` \x01\x01Q\x90Pa\x01\xBB\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x01\xD3Wa\x01\xCE3\x82` \x01Qa\x03NV[a\x02\x8EV[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02hW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x8C\x91\x90a\x0B$V[P[P`\x01\x01a\x01\"V[P`\x01\x01a\x01\x16V[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x163\x03a\x03JW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x82\x80` \x01\x90Q\x81\x01\x90a\x03.\x91\x90a\x0B\x93V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDD\x91\x90a\x0C:V[PPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x03\xA8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03\xADV[``\x91P[PP\x90P\x80a\x03\xE8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0`@\x82\x84\x03\x12\x15a\x03\xFFW`\0\x80\xFD[P\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\x18W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x040W`\0\x80\xFD[a\x04<\x86\x83\x87\x01a\x03\xEDV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04RW`\0\x80\xFD[Pa\x04_\x85\x82\x86\x01a\x03\xEDV[\x91PP\x92P\x92\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xBBWa\x04\xBBa\x04iV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xBBWa\x04\xBBa\x04iV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05+Wa\x05+a\x04iV[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05MWa\x05Ma\x04iV[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05yW`\0\x80\xFD[PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\x96Wa\x05\x96a\x04iV[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x05\xD3W`\0\x80\xFD[\x815a\x05\xE6a\x05\xE1\x82a\x05|V[a\x04\xE4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xFBW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06*W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06NWa\x06Na\x04iV[\x81`@R\x82\x93P\x845\x91Pa\x06b\x82a\x05WV[\x90\x82R` \x84\x015\x90a\x06t\x82a\x05WV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06\x9E\x82a\x05WV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06\xB8W`\0\x80\xFD[Pa\x06\xC5\x85\x82\x86\x01a\x05\xC2V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x06\xE4W`\0\x80\xFD[a\x06\xECa\x04\x98V[\x90P\x815a\x06\xF9\x81a\x05WV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07(W`\0\x80\xFD[\x815` a\x078a\x05\xE1\x83a\x053V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07WW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07\xB0W\x81\x81\x8A\x03\x12\x15a\x07sW`\0\x80\x81\xFD[a\x07{a\x04\x98V[\x815a\x07\x86\x81a\x05WV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07\x9F\x81a\x05WV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07[V[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xD0W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x07\xFCW`\0\x80\xFD[\x815` a\x08\x0Ca\x05\xE1\x83a\x053V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08+W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\x1CW\x805\x86\x81\x11\x15a\x08GW`\0\x80\x81\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08}W`\0\x80\x81\xFD[a\x08\x85a\x04\xC1V[\x86\x83\x015\x89\x81\x11\x15a\x08\x97W`\0\x80\x81\xFD[a\x08\xA5\x8F\x89\x83\x87\x01\x01a\x06\x18V[\x82RPa\x08\xB5\x8E`@\x85\x01a\x06\xD2V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\x08\xCCW`\0\x80\x81\xFD[a\x08\xDA\x8F\x89\x83\x87\x01\x01a\x07\x17V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\x08\xF3W`\0\x80\x81\xFD[a\t\x01\x8F\x89\x83\x87\x01\x01a\x05\xC2V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08/V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t3W`\0\x80\xFD[Pa\x04_\x85\x82\x86\x01a\x05\xC2V[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\tuW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\x95W`\0\x80\xFD[\x806\x03\x82\x13\x15a\t\xA4W`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0a\n\0\x82\x83a\t@V[`@\x85Ra\n\x12`@\x86\x01\x82\x84a\t\xABV[\x91PPa\n\"` \x84\x01\x84a\t@V[\x85\x83\x03` \x87\x01Ra\n5\x83\x82\x84a\t\xABV[\x96\x95PPPPPPV[` \x81R`\0a\nR` \x83\x01\x84a\t\xF4V[\x93\x92PPPV[`\0[\x83\x81\x10\x15a\ntW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\\V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\n\x95\x81` \x86\x01` \x86\x01a\nYV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`@\x81R`\0a\n\xDA`@\x83\x01\x85a\t\xF4V[\x82\x81\x03` \x84\x01Ra\n\xEC\x81\x85a\n}V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x0B6W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\nRW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x0BWW`\0\x80\xFD[\x81Qa\x0Bea\x05\xE1\x82a\x05|V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0BzW`\0\x80\xFD[a\x0B\x8B\x82` \x83\x01` \x87\x01a\nYV[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x0B\xA5W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0B\xBDW`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0B\xD1W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x0B\xECWa\x0B\xECa\x04iV[`@R\x82Q\x82\x81\x11\x15a\x0B\xFEW`\0\x80\xFD[a\x0C\n\x87\x82\x86\x01a\x0BFV[\x82RP` \x83\x01Q\x82\x81\x11\x15a\x0C\x1FW`\0\x80\xFD[a\x0C+\x87\x82\x86\x01a\x0BFV[` \x83\x01RP\x95\x94PPPPPV[`@\x81R`\0\x82Q`@\x80\x84\x01Ra\x0CU`\x80\x84\x01\x82a\n}V[\x90P` \x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\x0C\x90\x82\x82a\n}V[\x84\x81\x03` \x95\x86\x01R`\0\x81R\x93\x90\x93\x01\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \xA5tS\x01\x18\x85\xB9\x8B\xFA\xB9Xl\xDB\x14&\x92\xE7\xD9T\x8AS\x9B\t\xE8\x88\xDA\x05S\x9A\xABI\xA5dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Constructor`. +```solidity +constructor(address _reactor1, address _reactor2); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _reactor1: alloy::sol_types::private::Address, + pub _reactor2: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._reactor1, value._reactor2) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _reactor1: tuple.0, + _reactor2: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._reactor1, + ), + ::tokenize( + &self._reactor2, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes),(bytes,bytes))` and selector `0x50df2d40`. +```solidity +function execute(SignedOrder memory order, SignedOrder memory other) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + pub other: ::RustType, + } + ///Container type for the return parameters of the [`execute((bytes,bytes),(bytes,bytes))`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder, SignedOrder); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order, value.other) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + other: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder, SignedOrder); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes),(bytes,bytes))"; + const SELECTOR: [u8; 4] = [80u8, 223u8, 45u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize(&self.other), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628`. +```solidity +function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory otherSignedOrder) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackCall { + pub resolvedOrders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub otherSignedOrder: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackCall) -> Self { + (value.resolvedOrders, value.otherSignedOrder) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for reactorCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + resolvedOrders: tuple.0, + otherSignedOrder: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for reactorCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for reactorCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = reactorCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)"; + const SELECTOR: [u8; 4] = [88u8, 93u8, 166u8, 40u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.resolvedOrders), + ::tokenize( + &self.otherSignedOrder, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockFillContractDoubleExecution`](self) function calls. + pub enum MockFillContractDoubleExecutionCalls { + execute(executeCall), + reactorCallback(reactorCallbackCall), + } + #[automatically_derived] + impl MockFillContractDoubleExecutionCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [80u8, 223u8, 45u8, 64u8], + [88u8, 93u8, 166u8, 40u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockFillContractDoubleExecutionCalls { + const NAME: &'static str = "MockFillContractDoubleExecutionCalls"; + const MIN_DATA_LENGTH: usize = 128usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::reactorCallback(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFillContractDoubleExecutionCalls::execute) + } + execute + }, + { + fn reactorCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFillContractDoubleExecutionCalls::reactorCallback) + } + reactorCallback + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::reactorCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::reactorCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockFillContractDoubleExecution`](self) custom errors. + pub enum MockFillContractDoubleExecutionErrors { + NativeTransferFailed(NativeTransferFailed), + } + #[automatically_derived] + impl MockFillContractDoubleExecutionErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[244u8, 179u8, 177u8, 188u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockFillContractDoubleExecutionErrors { + const NAME: &'static str = "MockFillContractDoubleExecutionErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + MockFillContractDoubleExecutionErrors::NativeTransferFailed, + ) + } + NativeTransferFailed + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockFillContractDoubleExecution`](self) contract instance. + +See the [wrapper's documentation](`MockFillContractDoubleExecutionInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockFillContractDoubleExecutionInstance { + MockFillContractDoubleExecutionInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _reactor1: alloy::sol_types::private::Address, + _reactor2: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockFillContractDoubleExecutionInstance::< + T, + P, + N, + >::deploy(provider, _reactor1, _reactor2) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _reactor1: alloy::sol_types::private::Address, + _reactor2: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MockFillContractDoubleExecutionInstance::< + T, + P, + N, + >::deploy_builder(provider, _reactor1, _reactor2) + } + /**A [`MockFillContractDoubleExecution`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockFillContractDoubleExecution`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockFillContractDoubleExecutionInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug + for MockFillContractDoubleExecutionInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockFillContractDoubleExecutionInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFillContractDoubleExecutionInstance { + /**Creates a new wrapper around an on-chain [`MockFillContractDoubleExecution`](self) contract instance. + +See the [wrapper's documentation](`MockFillContractDoubleExecutionInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _reactor1: alloy::sol_types::private::Address, + _reactor2: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _reactor1, _reactor2); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _reactor1: alloy::sol_types::private::Address, + _reactor2: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _reactor1, + _reactor2, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl< + T, + P: ::core::clone::Clone, + N, + > MockFillContractDoubleExecutionInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> MockFillContractDoubleExecutionInstance { + MockFillContractDoubleExecutionInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFillContractDoubleExecutionInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + other: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order, other }) + } + ///Creates a new call builder for the [`reactorCallback`] function. + pub fn reactorCallback( + &self, + resolvedOrders: alloy::sol_types::private::Vec< + ::RustType, + >, + otherSignedOrder: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &reactorCallbackCall { + resolvedOrders, + otherSignedOrder, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFillContractDoubleExecutionInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/mockfillcontractwithoutputoverride.rs b/crates/bindings-uniswapx/src/mockfillcontractwithoutputoverride.rs new file mode 100644 index 0000000..44a4eef --- /dev/null +++ b/crates/bindings-uniswapx/src/mockfillcontractwithoutputoverride.rs @@ -0,0 +1,2690 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockFillContractWithOutputOverride { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + struct SignedOrder { + bytes order; + bytes sig; + } + + error NativeTransferFailed(); + + constructor(address _reactor); + + function execute(SignedOrder memory order) external; + function executeBatch(SignedOrder[] memory orders) external; + function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) external; + function setOutputAmount(uint256 amount) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_reactor", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "reactorCallback", + "inputs": [ + { + "name": "resolvedOrders", + "type": "tuple[]", + "internalType": "struct ResolvedOrder[]", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setOutputAmount", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockFillContractWithOutputOverride { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405234801561001057600080fd5b50604051610d10380380610d1083398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610c7161009f6000396000818160dc015281816101860152818161029d01526103060152610c716000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d7a16c31461005157806324f9c434146100665780633f62192e14610079578063585da6281461008c575b600080fd5b61006461005f366004610456565b61009f565b005b6100646100743660046104cb565b600055565b6100646100873660046104e4565b610149565b61006461009a366004610871565b6101f0565b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c7906101139085908590600401610afd565b600060405180830381600087803b15801561012d57600080fd5b505af1158015610141573d6000803e3d6000fd5b505050505050565b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906101bb908490600401610bc0565b600060405180830381600087803b1580156101d557600080fd5b505af11580156101e9573d6000803e3d6000fd5b5050505050565b60005b82518110156103b75760005b83828151811061021157610211610bea565b602002602001015160400151518110156103ae57600084838151811061023957610239610bea565b602002602001015160400151828151811061025657610256610bea565b602002602001015190506000805460001461027357600054610279565b81602001515b825190915073ffffffffffffffffffffffffffffffffffffffff166102c7576102c27f0000000000000000000000000000000000000000000000000000000000000000826103bc565b6103a4565b81516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303816000875af115801561037e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a29190610c19565b505b50506001016101ff565b506001016101f3565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610416576040519150601f19603f3d011682016040523d82523d6000602084013e61041b565b606091505b50509050806103b7576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806020838503121561046957600080fd5b823567ffffffffffffffff8082111561048157600080fd5b818501915085601f83011261049557600080fd5b8135818111156104a457600080fd5b8660208260051b85010111156104b957600080fd5b60209290920196919550909350505050565b6000602082840312156104dd57600080fd5b5035919050565b6000602082840312156104f657600080fd5b813567ffffffffffffffff81111561050d57600080fd5b82016040818503121561051f57600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561057857610578610526565b60405290565b60405160a0810167ffffffffffffffff8111828210171561057857610578610526565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105e8576105e8610526565b604052919050565b600067ffffffffffffffff82111561060a5761060a610526565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461063657600080fd5b50565b600082601f83011261064a57600080fd5b813567ffffffffffffffff81111561066457610664610526565b61069560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016105a1565b8181528460208386010111156106aa57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156106d957600080fd5b60405160c0810167ffffffffffffffff82821081831117156106fd576106fd610526565b816040528293508435915061071182610614565b90825260208401359061072382610614565b81602084015260408501356040840152606085013560608401526080850135915061074d82610614565b81608084015260a085013591508082111561076757600080fd5b5061077485828601610639565b60a0830152505092915050565b60006060828403121561079357600080fd5b61079b610555565b905081356107a881610614565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126107d757600080fd5b813560206107ec6107e7836105f0565b6105a1565b8281526060928302850182019282820191908785111561080b57600080fd5b8387015b858110156108645781818a0312156108275760008081fd5b61082f610555565b813561083a81610614565b8152818601358682015260408083013561085381610614565b90820152845292840192810161080f565b5090979650505050505050565b6000806040838503121561088457600080fd5b823567ffffffffffffffff8082111561089c57600080fd5b818501915085601f8301126108b057600080fd5b813560206108c06107e7836105f0565b82815260059290921b840181019181810190898411156108df57600080fd5b8286015b848110156109d0578035868111156108fb5760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109315760008081fd5b61093961057e565b868301358981111561094b5760008081fd5b6109598f89838701016106c7565b8252506109698e60408501610781565b8782015260a0830135898111156109805760008081fd5b61098e8f89838701016107c6565b60408301525060c0830135898111156109a75760008081fd5b6109b58f8983870101610639565b606083015250910135608082015283529183019183016108e3565b50965050860135925050808211156109e757600080fd5b506109f485828601610639565b9150509250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610a3357600080fd5b830160208101925035905067ffffffffffffffff811115610a5357600080fd5b803603821315610a6257600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610abe82836109fe565b60408552610ad0604086018284610a69565b915050610ae060208401846109fe565b8583036020870152610af3838284610a69565b9695505050505050565b6040808252810182905260006060600584901b830181019083018583805b87811015610b9d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18a3603018112610b7b578283fd5b610b87868b8301610ab2565b9550506020938401939290920191600101610b1b565b505050508281036020840152610bb7816000815260200190565b95945050505050565b604081526000610bd36040830184610ab2565b828103602093840152600081529190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610c2b57600080fd5b8151801515811461051f57600080fdfea2646970667358221220d634c67f66a81eac0cb04c75a178d5688b79b18e6a81ca4f401eda3867416a8564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\r\x108\x03\x80a\r\x10\x839\x81\x01`@\x81\x90Ra\0/\x91a\0@V[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0pV[`\0` \x82\x84\x03\x12\x15a\0RW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0iW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x0Cqa\0\x9F`\09`\0\x81\x81`\xDC\x01R\x81\x81a\x01\x86\x01R\x81\x81a\x02\x9D\x01Ra\x03\x06\x01Ra\x0Cq`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c\rz\x16\xC3\x14a\0QW\x80c$\xF9\xC44\x14a\0fW\x80c?b\x19.\x14a\0yW\x80cX]\xA6(\x14a\0\x8CW[`\0\x80\xFD[a\0da\0_6`\x04a\x04VV[a\0\x9FV[\0[a\0da\0t6`\x04a\x04\xCBV[`\0UV[a\0da\0\x876`\x04a\x04\xE4V[a\x01IV[a\0da\0\x9A6`\x04a\x08qV[a\x01\xF0V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x01\x13\x90\x85\x90\x85\x90`\x04\x01a\n\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01-W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01AW=`\0\x80>=`\0\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\xBB\x90\x84\x90`\x04\x01a\x0B\xC0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xE9W=`\0\x80>=`\0\xFD[PPPPPV[`\0[\x82Q\x81\x10\x15a\x03\xB7W`\0[\x83\x82\x81Q\x81\x10a\x02\x11Wa\x02\x11a\x0B\xEAV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\xAEW`\0\x84\x83\x81Q\x81\x10a\x029Wa\x029a\x0B\xEAV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x02VWa\x02Va\x0B\xEAV[` \x02` \x01\x01Q\x90P`\0\x80T`\0\x14a\x02sW`\0Ta\x02yV[\x81` \x01Q[\x82Q\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x02\xC7Wa\x02\xC2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82a\x03\xBCV[a\x03\xA4V[\x81Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xA2\x91\x90a\x0C\x19V[P[PP`\x01\x01a\x01\xFFV[P`\x01\x01a\x01\xF3V[PPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x04\x16W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\x1BV[``\x91P[PP\x90P\x80a\x03\xB7W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x04iW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\x81W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\x95W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\xA4W`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\xB9W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x04\xDDW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x04\xF6W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\rW`\0\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x05\x1FW`\0\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05xWa\x05xa\x05&V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05xWa\x05xa\x05&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xE8Wa\x05\xE8a\x05&V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\nWa\x06\na\x05&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x066W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06JW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06dWa\x06da\x05&V[a\x06\x95` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\xA1V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xAAW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\xD9W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xFDWa\x06\xFDa\x05&V[\x81`@R\x82\x93P\x845\x91Pa\x07\x11\x82a\x06\x14V[\x90\x82R` \x84\x015\x90a\x07#\x82a\x06\x14V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07M\x82a\x06\x14V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07gW`\0\x80\xFD[Pa\x07t\x85\x82\x86\x01a\x069V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07\x93W`\0\x80\xFD[a\x07\x9Ba\x05UV[\x90P\x815a\x07\xA8\x81a\x06\x14V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\xD7W`\0\x80\xFD[\x815` a\x07\xECa\x07\xE7\x83a\x05\xF0V[a\x05\xA1V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08\x0BW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08dW\x81\x81\x8A\x03\x12\x15a\x08'W`\0\x80\x81\xFD[a\x08/a\x05UV[\x815a\x08:\x81a\x06\x14V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08S\x81a\x06\x14V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08\x0FV[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\x84W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\x9CW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xB0W`\0\x80\xFD[\x815` a\x08\xC0a\x07\xE7\x83a\x05\xF0V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08\xDFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\xD0W\x805\x86\x81\x11\x15a\x08\xFBW`\0\x80\x81\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t1W`\0\x80\x81\xFD[a\t9a\x05~V[\x86\x83\x015\x89\x81\x11\x15a\tKW`\0\x80\x81\xFD[a\tY\x8F\x89\x83\x87\x01\x01a\x06\xC7V[\x82RPa\ti\x8E`@\x85\x01a\x07\x81V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\x80W`\0\x80\x81\xFD[a\t\x8E\x8F\x89\x83\x87\x01\x01a\x07\xC6V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xA7W`\0\x80\x81\xFD[a\t\xB5\x8F\x89\x83\x87\x01\x01a\x069V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08\xE3V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t\xE7W`\0\x80\xFD[Pa\t\xF4\x85\x82\x86\x01a\x069V[\x91PP\x92P\x92\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\n3W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nSW`\0\x80\xFD[\x806\x03\x82\x13\x15a\nbW`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0a\n\xBE\x82\x83a\t\xFEV[`@\x85Ra\n\xD0`@\x86\x01\x82\x84a\niV[\x91PPa\n\xE0` \x84\x01\x84a\t\xFEV[\x85\x83\x03` \x87\x01Ra\n\xF3\x83\x82\x84a\niV[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R`\0```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83\x80[\x87\x81\x10\x15a\x0B\x9DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8A6\x03\x01\x81\x12a\x0B{W\x82\x83\xFD[a\x0B\x87\x86\x8B\x83\x01a\n\xB2V[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x0B\x1BV[PPPP\x82\x81\x03` \x84\x01Ra\x0B\xB7\x81`\0\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R`\0a\x0B\xD3`@\x83\x01\x84a\n\xB2V[\x82\x81\x03` \x93\x84\x01R`\0\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x0C+W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x05\x1FW`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD64\xC6\x7Ff\xA8\x1E\xAC\x0C\xB0Lu\xA1x\xD5h\x8By\xB1\x8Ej\x81\xCAO@\x1E\xDA8gAj\x85dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d7a16c31461005157806324f9c434146100665780633f62192e14610079578063585da6281461008c575b600080fd5b61006461005f366004610456565b61009f565b005b6100646100743660046104cb565b600055565b6100646100873660046104e4565b610149565b61006461009a366004610871565b6101f0565b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c7906101139085908590600401610afd565b600060405180830381600087803b15801561012d57600080fd5b505af1158015610141573d6000803e3d6000fd5b505050505050565b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906101bb908490600401610bc0565b600060405180830381600087803b1580156101d557600080fd5b505af11580156101e9573d6000803e3d6000fd5b5050505050565b60005b82518110156103b75760005b83828151811061021157610211610bea565b602002602001015160400151518110156103ae57600084838151811061023957610239610bea565b602002602001015160400151828151811061025657610256610bea565b602002602001015190506000805460001461027357600054610279565b81602001515b825190915073ffffffffffffffffffffffffffffffffffffffff166102c7576102c27f0000000000000000000000000000000000000000000000000000000000000000826103bc565b6103a4565b81516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303816000875af115801561037e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a29190610c19565b505b50506001016101ff565b506001016101f3565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610416576040519150601f19603f3d011682016040523d82523d6000602084013e61041b565b606091505b50509050806103b7576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806020838503121561046957600080fd5b823567ffffffffffffffff8082111561048157600080fd5b818501915085601f83011261049557600080fd5b8135818111156104a457600080fd5b8660208260051b85010111156104b957600080fd5b60209290920196919550909350505050565b6000602082840312156104dd57600080fd5b5035919050565b6000602082840312156104f657600080fd5b813567ffffffffffffffff81111561050d57600080fd5b82016040818503121561051f57600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561057857610578610526565b60405290565b60405160a0810167ffffffffffffffff8111828210171561057857610578610526565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105e8576105e8610526565b604052919050565b600067ffffffffffffffff82111561060a5761060a610526565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461063657600080fd5b50565b600082601f83011261064a57600080fd5b813567ffffffffffffffff81111561066457610664610526565b61069560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016105a1565b8181528460208386010111156106aa57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156106d957600080fd5b60405160c0810167ffffffffffffffff82821081831117156106fd576106fd610526565b816040528293508435915061071182610614565b90825260208401359061072382610614565b81602084015260408501356040840152606085013560608401526080850135915061074d82610614565b81608084015260a085013591508082111561076757600080fd5b5061077485828601610639565b60a0830152505092915050565b60006060828403121561079357600080fd5b61079b610555565b905081356107a881610614565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126107d757600080fd5b813560206107ec6107e7836105f0565b6105a1565b8281526060928302850182019282820191908785111561080b57600080fd5b8387015b858110156108645781818a0312156108275760008081fd5b61082f610555565b813561083a81610614565b8152818601358682015260408083013561085381610614565b90820152845292840192810161080f565b5090979650505050505050565b6000806040838503121561088457600080fd5b823567ffffffffffffffff8082111561089c57600080fd5b818501915085601f8301126108b057600080fd5b813560206108c06107e7836105f0565b82815260059290921b840181019181810190898411156108df57600080fd5b8286015b848110156109d0578035868111156108fb5760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109315760008081fd5b61093961057e565b868301358981111561094b5760008081fd5b6109598f89838701016106c7565b8252506109698e60408501610781565b8782015260a0830135898111156109805760008081fd5b61098e8f89838701016107c6565b60408301525060c0830135898111156109a75760008081fd5b6109b58f8983870101610639565b606083015250910135608082015283529183019183016108e3565b50965050860135925050808211156109e757600080fd5b506109f485828601610639565b9150509250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610a3357600080fd5b830160208101925035905067ffffffffffffffff811115610a5357600080fd5b803603821315610a6257600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610abe82836109fe565b60408552610ad0604086018284610a69565b915050610ae060208401846109fe565b8583036020870152610af3838284610a69565b9695505050505050565b6040808252810182905260006060600584901b830181019083018583805b87811015610b9d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18a3603018112610b7b578283fd5b610b87868b8301610ab2565b9550506020938401939290920191600101610b1b565b505050508281036020840152610bb7816000815260200190565b95945050505050565b604081526000610bd36040830184610ab2565b828103602093840152600081529190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610c2b57600080fd5b8151801515811461051f57600080fdfea2646970667358221220d634c67f66a81eac0cb04c75a178d5688b79b18e6a81ca4f401eda3867416a8564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c\rz\x16\xC3\x14a\0QW\x80c$\xF9\xC44\x14a\0fW\x80c?b\x19.\x14a\0yW\x80cX]\xA6(\x14a\0\x8CW[`\0\x80\xFD[a\0da\0_6`\x04a\x04VV[a\0\x9FV[\0[a\0da\0t6`\x04a\x04\xCBV[`\0UV[a\0da\0\x876`\x04a\x04\xE4V[a\x01IV[a\0da\0\x9A6`\x04a\x08qV[a\x01\xF0V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x01\x13\x90\x85\x90\x85\x90`\x04\x01a\n\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01-W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01AW=`\0\x80>=`\0\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\xBB\x90\x84\x90`\x04\x01a\x0B\xC0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xE9W=`\0\x80>=`\0\xFD[PPPPPV[`\0[\x82Q\x81\x10\x15a\x03\xB7W`\0[\x83\x82\x81Q\x81\x10a\x02\x11Wa\x02\x11a\x0B\xEAV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\xAEW`\0\x84\x83\x81Q\x81\x10a\x029Wa\x029a\x0B\xEAV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x02VWa\x02Va\x0B\xEAV[` \x02` \x01\x01Q\x90P`\0\x80T`\0\x14a\x02sW`\0Ta\x02yV[\x81` \x01Q[\x82Q\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x02\xC7Wa\x02\xC2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82a\x03\xBCV[a\x03\xA4V[\x81Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xA2\x91\x90a\x0C\x19V[P[PP`\x01\x01a\x01\xFFV[P`\x01\x01a\x01\xF3V[PPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x04\x16W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\x1BV[``\x91P[PP\x90P\x80a\x03\xB7W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x04iW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\x81W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\x95W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\xA4W`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\xB9W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x04\xDDW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x04\xF6W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\rW`\0\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x05\x1FW`\0\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05xWa\x05xa\x05&V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05xWa\x05xa\x05&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xE8Wa\x05\xE8a\x05&V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\nWa\x06\na\x05&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x066W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06JW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06dWa\x06da\x05&V[a\x06\x95` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\xA1V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xAAW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\xD9W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xFDWa\x06\xFDa\x05&V[\x81`@R\x82\x93P\x845\x91Pa\x07\x11\x82a\x06\x14V[\x90\x82R` \x84\x015\x90a\x07#\x82a\x06\x14V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07M\x82a\x06\x14V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07gW`\0\x80\xFD[Pa\x07t\x85\x82\x86\x01a\x069V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07\x93W`\0\x80\xFD[a\x07\x9Ba\x05UV[\x90P\x815a\x07\xA8\x81a\x06\x14V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\xD7W`\0\x80\xFD[\x815` a\x07\xECa\x07\xE7\x83a\x05\xF0V[a\x05\xA1V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08\x0BW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08dW\x81\x81\x8A\x03\x12\x15a\x08'W`\0\x80\x81\xFD[a\x08/a\x05UV[\x815a\x08:\x81a\x06\x14V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08S\x81a\x06\x14V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08\x0FV[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\x84W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\x9CW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xB0W`\0\x80\xFD[\x815` a\x08\xC0a\x07\xE7\x83a\x05\xF0V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08\xDFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\xD0W\x805\x86\x81\x11\x15a\x08\xFBW`\0\x80\x81\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t1W`\0\x80\x81\xFD[a\t9a\x05~V[\x86\x83\x015\x89\x81\x11\x15a\tKW`\0\x80\x81\xFD[a\tY\x8F\x89\x83\x87\x01\x01a\x06\xC7V[\x82RPa\ti\x8E`@\x85\x01a\x07\x81V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\x80W`\0\x80\x81\xFD[a\t\x8E\x8F\x89\x83\x87\x01\x01a\x07\xC6V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xA7W`\0\x80\x81\xFD[a\t\xB5\x8F\x89\x83\x87\x01\x01a\x069V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08\xE3V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t\xE7W`\0\x80\xFD[Pa\t\xF4\x85\x82\x86\x01a\x069V[\x91PP\x92P\x92\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\n3W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nSW`\0\x80\xFD[\x806\x03\x82\x13\x15a\nbW`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0a\n\xBE\x82\x83a\t\xFEV[`@\x85Ra\n\xD0`@\x86\x01\x82\x84a\niV[\x91PPa\n\xE0` \x84\x01\x84a\t\xFEV[\x85\x83\x03` \x87\x01Ra\n\xF3\x83\x82\x84a\niV[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R`\0```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83\x80[\x87\x81\x10\x15a\x0B\x9DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8A6\x03\x01\x81\x12a\x0B{W\x82\x83\xFD[a\x0B\x87\x86\x8B\x83\x01a\n\xB2V[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x0B\x1BV[PPPP\x82\x81\x03` \x84\x01Ra\x0B\xB7\x81`\0\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R`\0a\x0B\xD3`@\x83\x01\x84a\n\xB2V[\x82\x81\x03` \x93\x84\x01R`\0\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x0C+W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x05\x1FW`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD64\xC6\x7Ff\xA8\x1E\xAC\x0C\xB0Lu\xA1x\xD5h\x8By\xB1\x8Ej\x81\xCAO@\x1E\xDA8gAj\x85dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Constructor`. +```solidity +constructor(address _reactor); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _reactor: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._reactor,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _reactor: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._reactor, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes))` and selector `0x3f62192e`. +```solidity +function execute(SignedOrder memory order) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes))"; + const SELECTOR: [u8; 4] = [63u8, 98u8, 25u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3`. +```solidity +function executeBatch(SignedOrder[] memory orders) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { orders: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[])"; + const SELECTOR: [u8; 4] = [13u8, 122u8, 22u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628`. +```solidity +function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackCall { + pub resolvedOrders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub _1: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackCall) -> Self { + (value.resolvedOrders, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for reactorCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + resolvedOrders: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for reactorCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for reactorCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = reactorCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)"; + const SELECTOR: [u8; 4] = [88u8, 93u8, 166u8, 40u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.resolvedOrders), + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setOutputAmount(uint256)` and selector `0x24f9c434`. +```solidity +function setOutputAmount(uint256 amount) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setOutputAmountCall { + pub amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`setOutputAmount(uint256)`](setOutputAmountCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setOutputAmountReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setOutputAmountCall) -> Self { + (value.amount,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setOutputAmountCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { amount: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setOutputAmountReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setOutputAmountReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setOutputAmountCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setOutputAmountReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setOutputAmount(uint256)"; + const SELECTOR: [u8; 4] = [36u8, 249u8, 196u8, 52u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockFillContractWithOutputOverride`](self) function calls. + pub enum MockFillContractWithOutputOverrideCalls { + execute(executeCall), + executeBatch(executeBatchCall), + reactorCallback(reactorCallbackCall), + setOutputAmount(setOutputAmountCall), + } + #[automatically_derived] + impl MockFillContractWithOutputOverrideCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 122u8, 22u8, 195u8], + [36u8, 249u8, 196u8, 52u8], + [63u8, 98u8, 25u8, 46u8], + [88u8, 93u8, 166u8, 40u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockFillContractWithOutputOverrideCalls { + const NAME: &'static str = "MockFillContractWithOutputOverrideCalls"; + const MIN_DATA_LENGTH: usize = 32usize; + const COUNT: usize = 4usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::reactorCallback(_) => { + ::SELECTOR + } + Self::setOutputAmount(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + MockFillContractWithOutputOverrideCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFillContractWithOutputOverrideCalls::executeBatch) + } + executeBatch + }, + { + fn setOutputAmount( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + MockFillContractWithOutputOverrideCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + MockFillContractWithOutputOverrideCalls::setOutputAmount, + ) + } + setOutputAmount + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + MockFillContractWithOutputOverrideCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map(MockFillContractWithOutputOverrideCalls::execute) + } + execute + }, + { + fn reactorCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + MockFillContractWithOutputOverrideCalls, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + MockFillContractWithOutputOverrideCalls::reactorCallback, + ) + } + reactorCallback + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::reactorCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::setOutputAmount(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::reactorCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setOutputAmount(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockFillContractWithOutputOverride`](self) custom errors. + pub enum MockFillContractWithOutputOverrideErrors { + NativeTransferFailed(NativeTransferFailed), + } + #[automatically_derived] + impl MockFillContractWithOutputOverrideErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[244u8, 179u8, 177u8, 188u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockFillContractWithOutputOverrideErrors { + const NAME: &'static str = "MockFillContractWithOutputOverrideErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result< + MockFillContractWithOutputOverrideErrors, + > { + ::abi_decode_raw( + data, + validate, + ) + .map( + MockFillContractWithOutputOverrideErrors::NativeTransferFailed, + ) + } + NativeTransferFailed + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockFillContractWithOutputOverride`](self) contract instance. + +See the [wrapper's documentation](`MockFillContractWithOutputOverrideInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockFillContractWithOutputOverrideInstance { + MockFillContractWithOutputOverrideInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _reactor: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result< + MockFillContractWithOutputOverrideInstance, + >, + > { + MockFillContractWithOutputOverrideInstance::::deploy(provider, _reactor) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _reactor: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MockFillContractWithOutputOverrideInstance::< + T, + P, + N, + >::deploy_builder(provider, _reactor) + } + /**A [`MockFillContractWithOutputOverride`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockFillContractWithOutputOverride`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockFillContractWithOutputOverrideInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug + for MockFillContractWithOutputOverrideInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockFillContractWithOutputOverrideInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFillContractWithOutputOverrideInstance { + /**Creates a new wrapper around an on-chain [`MockFillContractWithOutputOverride`](self) contract instance. + +See the [wrapper's documentation](`MockFillContractWithOutputOverrideInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _reactor: alloy::sol_types::private::Address, + ) -> alloy_contract::Result< + MockFillContractWithOutputOverrideInstance, + > { + let call_builder = Self::deploy_builder(provider, _reactor); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _reactor: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { _reactor }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl< + T, + P: ::core::clone::Clone, + N, + > MockFillContractWithOutputOverrideInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> MockFillContractWithOutputOverrideInstance { + MockFillContractWithOutputOverrideInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFillContractWithOutputOverrideInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeBatchCall { orders }) + } + ///Creates a new call builder for the [`reactorCallback`] function. + pub fn reactorCallback( + &self, + resolvedOrders: alloy::sol_types::private::Vec< + ::RustType, + >, + _1: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &reactorCallbackCall { + resolvedOrders, + _1, + }, + ) + } + ///Creates a new call builder for the [`setOutputAmount`] function. + pub fn setOutputAmount( + &self, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setOutputAmountCall { amount }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockFillContractWithOutputOverrideInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/mockprotocolfees.rs b/crates/bindings-uniswapx/src/mockprotocolfees.rs new file mode 100644 index 0000000..47765ef --- /dev/null +++ b/crates/bindings-uniswapx/src/mockprotocolfees.rs @@ -0,0 +1,3425 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockProtocolFees { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + error DuplicateFeeOutput(address duplicateToken); + error FeeTooLarge(address token, uint256 amount, address recipient); + error InputAndOutputFees(); + error InvalidFeeToken(address feeToken); + + event OwnershipTransferred(address indexed user, address indexed newOwner); + event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); + + constructor(address _protocolFeeOwner); + + function feeController() external view returns (address); + function owner() external view returns (address); + function setProtocolFeeController(address _newFeeController) external; + function takeFees(ResolvedOrder memory order) external view returns (ResolvedOrder memory); + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_protocolFeeOwner", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "feeController", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IProtocolFeeController" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setProtocolFeeController", + "inputs": [ + { + "name": "_newFeeController", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "takeFees", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProtocolFeeControllerSet", + "inputs": [ + { + "name": "oldFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "DuplicateFeeOutput", + "inputs": [ + { + "name": "duplicateToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "FeeTooLarge", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InputAndOutputFees", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidFeeToken", + "inputs": [ + { + "name": "feeToken", + "type": "address", + "internalType": "address" + } + ] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockProtocolFees { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b5060405161113238038061113283398101604081905261002f91610081565b600080546001600160a01b0319166001600160a01b038316908117825560405183928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050506100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b611072806100c06000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636f12f442116100505780636f12f442146100cb5780638da5cb5b146100eb578063f2fde38b1461010b57600080fd5b80632d7713891461006c5780636999b37714610081575b600080fd5b61007f61007a3660046108e8565b61011e565b005b6001546100a19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100de6100d9366004610c32565b61022a565b6040516100c29190610dd3565b6000546100a19073ffffffffffffffffffffffffffffffffffffffff1681565b61007f6101193660046108e8565b6102a6565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528401529282018390528282019290925260808101919091526102a282610397565b5090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161019b565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60015473ffffffffffffffffffffffffffffffffffffffff166103b75750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061040e908590600401610dd3565b600060405180830381865afa15801561042b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104719190810190610efd565b60408301515181519192509060006104898284610fcd565b67ffffffffffffffff8111156104a1576104a161090c565b60405190808252806020026020018201604052801561050a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104bf5790505b50905060005b8381101561055b578560400151818151811061052e5761052e61100d565b60200260200101518282815181106105485761054861100d565b6020908102919091010152600101610510565b5060008060005b8481101561087657600087828151811061057e5761057e61100d565b6020026020010151905060005b8281101561063c578881815181106105a5576105a561100d565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036106345781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240161019b565b60010161058b565b506000805b888110156106fd5760008b6040015182815181106106615761066161100d565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106f45785156106de576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516106ed9084610fcd565b9250600196505b50600101610641565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361077657841561075d576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b0151015161076f9082610fcd565b9050600193505b806000036107cb5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240161019b565b6107d9816005612710610887565b8260200151111561084c578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481019290925291909116604482015260640161019b565b8186848a01815181106108615761086161100d565b60209081029190910101525050600101610562565b505050604090940193909352505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026108bc57600080fd5b5091020490565b73ffffffffffffffffffffffffffffffffffffffff811681146108e557600080fd5b50565b6000602082840312156108fa57600080fd5b8135610905816108c3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561095e5761095e61090c565b60405290565b60405160a0810167ffffffffffffffff8111828210171561095e5761095e61090c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109ce576109ce61090c565b604052919050565b600082601f8301126109e757600080fd5b813567ffffffffffffffff811115610a0157610a0161090c565b610a3260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610987565b818152846020838601011115610a4757600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215610a7657600080fd5b60405160c0810167ffffffffffffffff8282108183111715610a9a57610a9a61090c565b8160405282935084359150610aae826108c3565b908252602084013590610ac0826108c3565b816020840152604085013560408401526060850135606084015260808501359150610aea826108c3565b81608084015260a0850135915080821115610b0457600080fd5b50610b11858286016109d6565b60a0830152505092915050565b600060608284031215610b3057600080fd5b610b3861093b565b90508135610b45816108c3565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115610b7d57610b7d61090c565b5060051b60200190565b600082601f830112610b9857600080fd5b81356020610bad610ba883610b63565b610987565b82815260609283028501820192828201919087851115610bcc57600080fd5b8387015b85811015610c255781818a031215610be85760008081fd5b610bf061093b565b8135610bfb816108c3565b81528186013586820152604080830135610c14816108c3565b908201528452928401928101610bd0565b5090979650505050505050565b600060208284031215610c4457600080fd5b813567ffffffffffffffff80821115610c5c57600080fd5b9083019060e08286031215610c7057600080fd5b610c78610964565b823582811115610c8757600080fd5b610c9387828601610a64565b825250610ca38660208501610b1e565b6020820152608083013582811115610cba57600080fd5b610cc687828601610b87565b60408301525060a083013582811115610cde57600080fd5b610cea878286016109d6565b60608301525060c092909201356080830152509392505050565b6000815180845260005b81811015610d2a57602081850181015186830182015201610d0e565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60008151808452602080850194506020840160005b83811015610dc8578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101610d7d565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a0840152610e4f6101c0840182610d04565b90506020840151610e8d6040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a0860152610ec88383610d68565b925060608601519150808584030160c086015250610ee68282610d04565b915050608084015160e08401528091505092915050565b60006020808385031215610f1057600080fd5b825167ffffffffffffffff811115610f2757600080fd5b8301601f81018513610f3857600080fd5b8051610f46610ba882610b63565b81815260609182028301840191848201919088841115610f6557600080fd5b938501935b83851015610fc15780858a031215610f825760008081fd5b610f8a61093b565b8551610f95816108c3565b81528587015187820152604080870151610fae816108c3565b9082015283529384019391850191610f6a565b50979650505050505050565b80820180821115611007577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212206277c22e948972c5337bf38228cf6bcf250e665ee61f23bace86a7a11c7ea98f64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x1128\x03\x80a\x112\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x81V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x83\x92\x83\x92\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PPPa\0\xB1V[`\0` \x82\x84\x03\x12\x15a\0\x93W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xAAW`\0\x80\xFD[\x93\x92PPPV[a\x10r\x80a\0\xC0`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0gW`\x005`\xE0\x1C\x80co\x12\xF4B\x11a\0PW\x80co\x12\xF4B\x14a\0\xCBW\x80c\x8D\xA5\xCB[\x14a\0\xEBW\x80c\xF2\xFD\xE3\x8B\x14a\x01\x0BW`\0\x80\xFD[\x80c-w\x13\x89\x14a\0lW\x80ci\x99\xB3w\x14a\0\x81W[`\0\x80\xFD[a\0\x7Fa\0z6`\x04a\x08\xE8V[a\x01\x1EV[\0[`\x01Ta\0\xA1\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDEa\0\xD96`\x04a\x0C2V[a\x02*V[`@Qa\0\xC2\x91\x90a\r\xD3V[`\0Ta\0\xA1\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\0\x7Fa\x01\x196`\x04a\x08\xE8V[a\x02\xA6V[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x01\xA4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x02\xA2\x82a\x03\x97V[P\x90V[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03'W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x01\x9BV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x03\xB7WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x04\x0E\x90\x85\x90`\x04\x01a\r\xD3V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04+W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04q\x91\x90\x81\x01\x90a\x0E\xFDV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x04\x89\x82\x84a\x0F\xCDV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xA1Wa\x04\xA1a\t\x0CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\nW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xBFW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x05[W\x85`@\x01Q\x81\x81Q\x81\x10a\x05.Wa\x05.a\x10\rV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x05HWa\x05Ha\x10\rV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x10V[P`\0\x80`\0[\x84\x81\x10\x15a\x08vW`\0\x87\x82\x81Q\x81\x10a\x05~Wa\x05~a\x10\rV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x06=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04q\x91\x90\x81\x01\x90a\x0E\xFDV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x04\x89\x82\x84a\x0F\xCDV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xA1Wa\x04\xA1a\t\x0CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\nW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xBFW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x05[W\x85`@\x01Q\x81\x81Q\x81\x10a\x05.Wa\x05.a\x10\rV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x05HWa\x05Ha\x10\rV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x10V[P`\0\x80`\0[\x84\x81\x10\x15a\x08vW`\0\x87\x82\x81Q\x81\x10a\x05~Wa\x05~a\x10\rV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x06 = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `DuplicateFeeOutput(address)` and selector `0xfff08303`. +```solidity +error DuplicateFeeOutput(address duplicateToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DuplicateFeeOutput { + pub duplicateToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DuplicateFeeOutput) -> Self { + (value.duplicateToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DuplicateFeeOutput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { duplicateToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DuplicateFeeOutput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DuplicateFeeOutput(address)"; + const SELECTOR: [u8; 4] = [255u8, 240u8, 131u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.duplicateToken, + ), + ) + } + } + }; + /**Custom error with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656`. +```solidity +error FeeTooLarge(address token, uint256 amount, address recipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FeeTooLarge { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FeeTooLarge) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FeeTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for FeeTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "FeeTooLarge(address,uint256,address)"; + const SELECTOR: [u8; 4] = [130u8, 231u8, 86u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + } + }; + /**Custom error with signature `InputAndOutputFees()` and selector `0xedc7e2e4`. +```solidity +error InputAndOutputFees(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputFees {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputFees) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputFees { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputFees { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputFees()"; + const SELECTOR: [u8; 4] = [237u8, 199u8, 226u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidFeeToken(address)` and selector `0xeddf07f5`. +```solidity +error InvalidFeeToken(address feeToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidFeeToken { + pub feeToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidFeeToken) -> Self { + (value.feeToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidFeeToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { feeToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidFeeToken { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidFeeToken(address)"; + const SELECTOR: [u8; 4] = [237u8, 223u8, 7u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.feeToken, + ), + ) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ProtocolFeeControllerSet(address,address)` and selector `0xb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0`. +```solidity +event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ProtocolFeeControllerSet { + #[allow(missing_docs)] + pub oldFeeController: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newFeeController: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProtocolFeeControllerSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ProtocolFeeControllerSet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldFeeController: data.0, + newFeeController: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldFeeController, + ), + ::tokenize( + &self.newFeeController, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ProtocolFeeControllerSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProtocolFeeControllerSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &ProtocolFeeControllerSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _protocolFeeOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _protocolFeeOwner: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._protocolFeeOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _protocolFeeOwner: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._protocolFeeOwner, + ), + ) + } + } + }; + /**Function with signature `feeController()` and selector `0x6999b377`. +```solidity +function feeController() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerCall {} + ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeControllerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeControllerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeController()"; + const SELECTOR: [u8; 4] = [105u8, 153u8, 179u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setProtocolFeeController(address)` and selector `0x2d771389`. +```solidity +function setProtocolFeeController(address _newFeeController) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerCall { + pub _newFeeController: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerCall) -> Self { + (value._newFeeController,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _newFeeController: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProtocolFeeControllerCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProtocolFeeControllerReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProtocolFeeController(address)"; + const SELECTOR: [u8; 4] = [45u8, 119u8, 19u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newFeeController, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `takeFees(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x6f12f442`. +```solidity +function takeFees(ResolvedOrder memory order) external view returns (ResolvedOrder memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct takeFeesCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`takeFees(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](takeFeesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct takeFeesReturn { + pub _0: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ResolvedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: takeFeesCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for takeFeesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ResolvedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: takeFeesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for takeFeesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for takeFeesCall { + type Parameters<'a> = (ResolvedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = takeFeesReturn; + type ReturnTuple<'a> = (ResolvedOrder,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "takeFees(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))"; + const SELECTOR: [u8; 4] = [111u8, 18u8, 244u8, 66u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockProtocolFees`](self) function calls. + pub enum MockProtocolFeesCalls { + feeController(feeControllerCall), + owner(ownerCall), + setProtocolFeeController(setProtocolFeeControllerCall), + takeFees(takeFeesCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl MockProtocolFeesCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [45u8, 119u8, 19u8, 137u8], + [105u8, 153u8, 179u8, 119u8], + [111u8, 18u8, 244u8, 66u8], + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockProtocolFeesCalls { + const NAME: &'static str = "MockProtocolFeesCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 5usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::feeController(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::setProtocolFeeController(_) => { + ::SELECTOR + } + Self::takeFees(_) => ::SELECTOR, + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn setProtocolFeeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockProtocolFeesCalls::setProtocolFeeController) + } + setProtocolFeeController + }, + { + fn feeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockProtocolFeesCalls::feeController) + } + feeController + }, + { + fn takeFees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockProtocolFeesCalls::takeFees) + } + takeFees + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockProtocolFeesCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockProtocolFeesCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::feeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::setProtocolFeeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::takeFees(inner) => { + ::abi_encoded_size(inner) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::feeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setProtocolFeeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::takeFees(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockProtocolFees`](self) custom errors. + pub enum MockProtocolFeesErrors { + DuplicateFeeOutput(DuplicateFeeOutput), + FeeTooLarge(FeeTooLarge), + InputAndOutputFees(InputAndOutputFees), + InvalidFeeToken(InvalidFeeToken), + } + #[automatically_derived] + impl MockProtocolFeesErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [130u8, 231u8, 86u8, 86u8], + [237u8, 199u8, 226u8, 228u8], + [237u8, 223u8, 7u8, 245u8], + [255u8, 240u8, 131u8, 3u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockProtocolFeesErrors { + const NAME: &'static str = "MockProtocolFeesErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 4usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DuplicateFeeOutput(_) => { + ::SELECTOR + } + Self::FeeTooLarge(_) => { + ::SELECTOR + } + Self::InputAndOutputFees(_) => { + ::SELECTOR + } + Self::InvalidFeeToken(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn FeeTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockProtocolFeesErrors::FeeTooLarge) + } + FeeTooLarge + }, + { + fn InputAndOutputFees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockProtocolFeesErrors::InputAndOutputFees) + } + InputAndOutputFees + }, + { + fn InvalidFeeToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockProtocolFeesErrors::InvalidFeeToken) + } + InvalidFeeToken + }, + { + fn DuplicateFeeOutput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockProtocolFeesErrors::DuplicateFeeOutput) + } + DuplicateFeeOutput + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DuplicateFeeOutput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encoded_size(inner) + } + Self::InputAndOutputFees(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DuplicateFeeOutput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockProtocolFees`](self) events. + pub enum MockProtocolFeesEvents { + OwnershipTransferred(OwnershipTransferred), + ProtocolFeeControllerSet(ProtocolFeeControllerSet), + } + #[automatically_derived] + impl MockProtocolFeesEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + [ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MockProtocolFeesEvents { + const NAME: &'static str = "MockProtocolFeesEvents"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ProtocolFeeControllerSet) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for MockProtocolFeesEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockProtocolFees`](self) contract instance. + +See the [wrapper's documentation](`MockProtocolFeesInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockProtocolFeesInstance { + MockProtocolFeesInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockProtocolFeesInstance::::deploy(provider, _protocolFeeOwner) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MockProtocolFeesInstance::::deploy_builder(provider, _protocolFeeOwner) + } + /**A [`MockProtocolFees`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockProtocolFees`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockProtocolFeesInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockProtocolFeesInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockProtocolFeesInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockProtocolFeesInstance { + /**Creates a new wrapper around an on-chain [`MockProtocolFees`](self) contract instance. + +See the [wrapper's documentation](`MockProtocolFeesInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, _protocolFeeOwner); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _protocolFeeOwner, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockProtocolFeesInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockProtocolFeesInstance { + MockProtocolFeesInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockProtocolFeesInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`feeController`] function. + pub fn feeController( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeControllerCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`setProtocolFeeController`] function. + pub fn setProtocolFeeController( + &self, + _newFeeController: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setProtocolFeeControllerCall { + _newFeeController, + }, + ) + } + ///Creates a new call builder for the [`takeFees`] function. + pub fn takeFees( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&takeFeesCall { order }) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockProtocolFeesInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ProtocolFeeControllerSet`] event. + pub fn ProtocolFeeControllerSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/mockresolvedorderlib.rs b/crates/bindings-uniswapx/src/mockresolvedorderlib.rs new file mode 100644 index 0000000..f0ce57b --- /dev/null +++ b/crates/bindings-uniswapx/src/mockresolvedorderlib.rs @@ -0,0 +1,1805 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockResolvedOrderLib { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + error InvalidReactor(); + + function validate(ResolvedOrder memory resolvedOrder, address filler) external view; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "validate", + "inputs": [ + { + "name": "resolvedOrder", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "filler", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "view" + }, + { + "type": "error", + "name": "InvalidReactor", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockResolvedOrderLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506107b7806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806358c9edbf14610030575b600080fd5b61004361003e3660046104a0565b610045565b005b61004f8282610053565b5050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146100a4576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff161561004f578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906101209084908690600401610652565b60006040518083038186803b15801561013857600080fd5b505afa15801561014c573d6000803e3d6000fd5b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156101a6576101a6610154565b60405290565b60405160a0810167ffffffffffffffff811182821017156101a6576101a6610154565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561021657610216610154565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024057600080fd5b50565b803561024e8161021e565b919050565b600082601f83011261026457600080fd5b813567ffffffffffffffff81111561027e5761027e610154565b6102af60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016101cf565b8181528460208386010111156102c457600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156102f357600080fd5b60405160c0810167ffffffffffffffff828210818311171561031757610317610154565b816040528293508435915061032b8261021e565b90825260208401359061033d8261021e565b8160208401526040850135604084015260608501356060840152608085013591506103678261021e565b81608084015260a085013591508082111561038157600080fd5b5061038e85828601610253565b60a0830152505092915050565b6000606082840312156103ad57600080fd5b6103b5610183565b905081356103c28161021e565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126103f157600080fd5b8135602067ffffffffffffffff82111561040d5761040d610154565b61041b818360051b016101cf565b8281526060928302850182019282820191908785111561043a57600080fd5b8387015b858110156104935781818a0312156104565760008081fd5b61045e610183565b81356104698161021e565b815281860135868201526040808301356104828161021e565b90820152845292840192810161043e565b5090979650505050505050565b600080604083850312156104b357600080fd5b823567ffffffffffffffff808211156104cb57600080fd5b9084019060e082870312156104df57600080fd5b6104e76101ac565b8235828111156104f657600080fd5b610502888286016102e1565b825250610512876020850161039b565b602082015260808301358281111561052957600080fd5b610535888286016103e0565b60408301525060a08301358281111561054d57600080fd5b61055988828601610253565b60608301525060c09290920135608083015250915061057a60208401610243565b90509250929050565b6000815180845260005b818110156105a95760208185018101518683018201520161058d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60008151808452602080850194506020840160005b83811015610647578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105fc565b509495945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152835160e06040850152818151166101208501528160208201511661014085015260408101516101608501526060810151610180850152816080820151166101a085015260a081015191505060c06101c08401526106d66101e0840182610583565b602085810151805173ffffffffffffffffffffffffffffffffffffffff166060870152908101516080860152604081015160a08601529091505060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808584030160c086015261074a83836105e7565b925060608601519150808584030160e0860152506107688282610583565b915050608084015161010084015280915050939250505056fea264697066735822122036bb01e84460349eb6c259a43b66b62927ee5a5a5c850137de4dd9dd66ca425264736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x07\xB7\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cX\xC9\xED\xBF\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x04\xA0V[a\0EV[\0[a\0O\x82\x82a\0SV[PPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\0\xA4W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\0OW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x01 \x90\x84\x90\x86\x90`\x04\x01a\x06RV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x018W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x01LW=`\0\x80>=`\0\xFD[PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\xA6Wa\x01\xA6a\x01TV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\xA6Wa\x01\xA6a\x01TV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\x16Wa\x02\x16a\x01TV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02@W`\0\x80\xFD[PV[\x805a\x02N\x81a\x02\x1EV[\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x02dW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02~Wa\x02~a\x01TV[a\x02\xAF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x01\xCFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x02\xC4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x02\xF3W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x03\x17Wa\x03\x17a\x01TV[\x81`@R\x82\x93P\x845\x91Pa\x03+\x82a\x02\x1EV[\x90\x82R` \x84\x015\x90a\x03=\x82a\x02\x1EV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x03g\x82a\x02\x1EV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x03\x81W`\0\x80\xFD[Pa\x03\x8E\x85\x82\x86\x01a\x02SV[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x03\xADW`\0\x80\xFD[a\x03\xB5a\x01\x83V[\x90P\x815a\x03\xC2\x81a\x02\x1EV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x03\xF1W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04\rWa\x04\ra\x01TV[a\x04\x1B\x81\x83`\x05\x1B\x01a\x01\xCFV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x04:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x04\x93W\x81\x81\x8A\x03\x12\x15a\x04VW`\0\x80\x81\xFD[a\x04^a\x01\x83V[\x815a\x04i\x81a\x02\x1EV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x04\x82\x81a\x02\x1EV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x04>V[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xB3W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xCBW`\0\x80\xFD[\x90\x84\x01\x90`\xE0\x82\x87\x03\x12\x15a\x04\xDFW`\0\x80\xFD[a\x04\xE7a\x01\xACV[\x825\x82\x81\x11\x15a\x04\xF6W`\0\x80\xFD[a\x05\x02\x88\x82\x86\x01a\x02\xE1V[\x82RPa\x05\x12\x87` \x85\x01a\x03\x9BV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x05)W`\0\x80\xFD[a\x055\x88\x82\x86\x01a\x03\xE0V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x05MW`\0\x80\xFD[a\x05Y\x88\x82\x86\x01a\x02SV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x91Pa\x05z` \x84\x01a\x02CV[\x90P\x92P\x92\x90PV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x05\xA9W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05\x8DV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x06GW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xFCV[P\x94\x95\x94PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x83R`@` \x84\x01R\x83Q`\xE0`@\x85\x01R\x81\x81Q\x16a\x01 \x85\x01R\x81` \x82\x01Q\x16a\x01@\x85\x01R`@\x81\x01Qa\x01`\x85\x01R``\x81\x01Qa\x01\x80\x85\x01R\x81`\x80\x82\x01Q\x16a\x01\xA0\x85\x01R`\xA0\x81\x01Q\x91PP`\xC0a\x01\xC0\x84\x01Ra\x06\xD6a\x01\xE0\x84\x01\x82a\x05\x83V[` \x85\x81\x01Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x87\x01R\x90\x81\x01Q`\x80\x86\x01R`@\x81\x01Q`\xA0\x86\x01R\x90\x91PP`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x80\x85\x84\x03\x01`\xC0\x86\x01Ra\x07J\x83\x83a\x05\xE7V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xE0\x86\x01RPa\x07h\x82\x82a\x05\x83V[\x91PP`\x80\x84\x01Qa\x01\0\x84\x01R\x80\x91PP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 6\xBB\x01\xE8D`4\x9E\xB6\xC2Y\xA4;f\xB6)'\xEEZZ\\\x85\x017\xDEM\xD9\xDDf\xCABRdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806358c9edbf14610030575b600080fd5b61004361003e3660046104a0565b610045565b005b61004f8282610053565b5050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146100a4576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff161561004f578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906101209084908690600401610652565b60006040518083038186803b15801561013857600080fd5b505afa15801561014c573d6000803e3d6000fd5b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156101a6576101a6610154565b60405290565b60405160a0810167ffffffffffffffff811182821017156101a6576101a6610154565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561021657610216610154565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024057600080fd5b50565b803561024e8161021e565b919050565b600082601f83011261026457600080fd5b813567ffffffffffffffff81111561027e5761027e610154565b6102af60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016101cf565b8181528460208386010111156102c457600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156102f357600080fd5b60405160c0810167ffffffffffffffff828210818311171561031757610317610154565b816040528293508435915061032b8261021e565b90825260208401359061033d8261021e565b8160208401526040850135604084015260608501356060840152608085013591506103678261021e565b81608084015260a085013591508082111561038157600080fd5b5061038e85828601610253565b60a0830152505092915050565b6000606082840312156103ad57600080fd5b6103b5610183565b905081356103c28161021e565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126103f157600080fd5b8135602067ffffffffffffffff82111561040d5761040d610154565b61041b818360051b016101cf565b8281526060928302850182019282820191908785111561043a57600080fd5b8387015b858110156104935781818a0312156104565760008081fd5b61045e610183565b81356104698161021e565b815281860135868201526040808301356104828161021e565b90820152845292840192810161043e565b5090979650505050505050565b600080604083850312156104b357600080fd5b823567ffffffffffffffff808211156104cb57600080fd5b9084019060e082870312156104df57600080fd5b6104e76101ac565b8235828111156104f657600080fd5b610502888286016102e1565b825250610512876020850161039b565b602082015260808301358281111561052957600080fd5b610535888286016103e0565b60408301525060a08301358281111561054d57600080fd5b61055988828601610253565b60608301525060c09290920135608083015250915061057a60208401610243565b90509250929050565b6000815180845260005b818110156105a95760208185018101518683018201520161058d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60008151808452602080850194506020840160005b83811015610647578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105fc565b509495945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152835160e06040850152818151166101208501528160208201511661014085015260408101516101608501526060810151610180850152816080820151166101a085015260a081015191505060c06101c08401526106d66101e0840182610583565b602085810151805173ffffffffffffffffffffffffffffffffffffffff166060870152908101516080860152604081015160a08601529091505060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808584030160c086015261074a83836105e7565b925060608601519150808584030160e0860152506107688282610583565b915050608084015161010084015280915050939250505056fea264697066735822122036bb01e84460349eb6c259a43b66b62927ee5a5a5c850137de4dd9dd66ca425264736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cX\xC9\xED\xBF\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x04\xA0V[a\0EV[\0[a\0O\x82\x82a\0SV[PPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\0\xA4W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\0OW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x01 \x90\x84\x90\x86\x90`\x04\x01a\x06RV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x018W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x01LW=`\0\x80>=`\0\xFD[PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\xA6Wa\x01\xA6a\x01TV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\xA6Wa\x01\xA6a\x01TV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\x16Wa\x02\x16a\x01TV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02@W`\0\x80\xFD[PV[\x805a\x02N\x81a\x02\x1EV[\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x02dW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02~Wa\x02~a\x01TV[a\x02\xAF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x01\xCFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x02\xC4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x02\xF3W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x03\x17Wa\x03\x17a\x01TV[\x81`@R\x82\x93P\x845\x91Pa\x03+\x82a\x02\x1EV[\x90\x82R` \x84\x015\x90a\x03=\x82a\x02\x1EV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x03g\x82a\x02\x1EV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x03\x81W`\0\x80\xFD[Pa\x03\x8E\x85\x82\x86\x01a\x02SV[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x03\xADW`\0\x80\xFD[a\x03\xB5a\x01\x83V[\x90P\x815a\x03\xC2\x81a\x02\x1EV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x03\xF1W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04\rWa\x04\ra\x01TV[a\x04\x1B\x81\x83`\x05\x1B\x01a\x01\xCFV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x04:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x04\x93W\x81\x81\x8A\x03\x12\x15a\x04VW`\0\x80\x81\xFD[a\x04^a\x01\x83V[\x815a\x04i\x81a\x02\x1EV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x04\x82\x81a\x02\x1EV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x04>V[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xB3W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xCBW`\0\x80\xFD[\x90\x84\x01\x90`\xE0\x82\x87\x03\x12\x15a\x04\xDFW`\0\x80\xFD[a\x04\xE7a\x01\xACV[\x825\x82\x81\x11\x15a\x04\xF6W`\0\x80\xFD[a\x05\x02\x88\x82\x86\x01a\x02\xE1V[\x82RPa\x05\x12\x87` \x85\x01a\x03\x9BV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x05)W`\0\x80\xFD[a\x055\x88\x82\x86\x01a\x03\xE0V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x05MW`\0\x80\xFD[a\x05Y\x88\x82\x86\x01a\x02SV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x91Pa\x05z` \x84\x01a\x02CV[\x90P\x92P\x92\x90PV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x05\xA9W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05\x8DV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x06GW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xFCV[P\x94\x95\x94PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x83R`@` \x84\x01R\x83Q`\xE0`@\x85\x01R\x81\x81Q\x16a\x01 \x85\x01R\x81` \x82\x01Q\x16a\x01@\x85\x01R`@\x81\x01Qa\x01`\x85\x01R``\x81\x01Qa\x01\x80\x85\x01R\x81`\x80\x82\x01Q\x16a\x01\xA0\x85\x01R`\xA0\x81\x01Q\x91PP`\xC0a\x01\xC0\x84\x01Ra\x06\xD6a\x01\xE0\x84\x01\x82a\x05\x83V[` \x85\x81\x01Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x87\x01R\x90\x81\x01Q`\x80\x86\x01R`@\x81\x01Q`\xA0\x86\x01R\x90\x91PP`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x80\x85\x84\x03\x01`\xC0\x86\x01Ra\x07J\x83\x83a\x05\xE7V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xE0\x86\x01RPa\x07h\x82\x82a\x05\x83V[\x91PP`\x80\x84\x01Qa\x01\0\x84\x01R\x80\x91PP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 6\xBB\x01\xE8D`4\x9E\xB6\xC2Y\xA4;f\xB6)'\xEEZZ\\\x85\x017\xDEM\xD9\xDDf\xCABRdsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `InvalidReactor()` and selector `0x4ddf4a64`. +```solidity +error InvalidReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReactor {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReactor()"; + const SELECTOR: [u8; 4] = [77u8, 223u8, 74u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Function with signature `validate(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address)` and selector `0x58c9edbf`. +```solidity +function validate(ResolvedOrder memory resolvedOrder, address filler) external view; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validateCall { + pub resolvedOrder: ::RustType, + pub filler: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`validate(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address)`](validateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validateReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + ResolvedOrder, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validateCall) -> Self { + (value.resolvedOrder, value.filler) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + resolvedOrder: tuple.0, + filler: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validateReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for validateCall { + type Parameters<'a> = (ResolvedOrder, alloy::sol_types::sol_data::Address); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = validateReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "validate(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address)"; + const SELECTOR: [u8; 4] = [88u8, 201u8, 237u8, 191u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.resolvedOrder, + ), + ::tokenize( + &self.filler, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockResolvedOrderLib`](self) function calls. + pub enum MockResolvedOrderLibCalls { + validate(validateCall), + } + #[automatically_derived] + impl MockResolvedOrderLibCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[88u8, 201u8, 237u8, 191u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockResolvedOrderLibCalls { + const NAME: &'static str = "MockResolvedOrderLibCalls"; + const MIN_DATA_LENGTH: usize = 512usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::validate(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn validate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockResolvedOrderLibCalls::validate) + } + validate + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::validate(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::validate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockResolvedOrderLib`](self) custom errors. + pub enum MockResolvedOrderLibErrors { + InvalidReactor(InvalidReactor), + } + #[automatically_derived] + impl MockResolvedOrderLibErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[77u8, 223u8, 74u8, 100u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockResolvedOrderLibErrors { + const NAME: &'static str = "MockResolvedOrderLibErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InvalidReactor(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn InvalidReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockResolvedOrderLibErrors::InvalidReactor) + } + InvalidReactor + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InvalidReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::InvalidReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockResolvedOrderLib`](self) contract instance. + +See the [wrapper's documentation](`MockResolvedOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockResolvedOrderLibInstance { + MockResolvedOrderLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockResolvedOrderLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + MockResolvedOrderLibInstance::::deploy_builder(provider) + } + /**A [`MockResolvedOrderLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockResolvedOrderLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockResolvedOrderLibInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockResolvedOrderLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockResolvedOrderLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockResolvedOrderLibInstance { + /**Creates a new wrapper around an on-chain [`MockResolvedOrderLib`](self) contract instance. + +See the [wrapper's documentation](`MockResolvedOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockResolvedOrderLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockResolvedOrderLibInstance { + MockResolvedOrderLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockResolvedOrderLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`validate`] function. + pub fn validate( + &self, + resolvedOrder: ::RustType, + filler: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &validateCall { + resolvedOrder, + filler, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockResolvedOrderLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/mockswapper.rs b/crates/bindings-uniswapx/src/mockswapper.rs new file mode 100644 index 0000000..fbc3364 --- /dev/null +++ b/crates/bindings-uniswapx/src/mockswapper.rs @@ -0,0 +1,479 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockSwapper { + function approve(address token, address to, uint256 amount) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockSwapper { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506101a8806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e1f21c6714610030575b600080fd5b61004361003e36600461010d565b610045565b005b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b3906044016020604051808303816000875af11580156100ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100de9190610149565b50505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461010857600080fd5b919050565b60008060006060848603121561012257600080fd5b61012b846100e4565b9250610139602085016100e4565b9150604084013590509250925092565b60006020828403121561015b57600080fd5b8151801515811461016b57600080fd5b939250505056fea264697066735822122047980d601297fff2b607d4e7b450dca85a4f313cef786b9bf453061ff8d8d7f164736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x01\xA8\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80c\xE1\xF2\x1Cg\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01\rV[a\0EV[\0[`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`$\x82\x01\x83\x90R\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\0\xBAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xDE\x91\x90a\x01IV[PPPPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\x08W`\0\x80\xFD[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x01\"W`\0\x80\xFD[a\x01+\x84a\0\xE4V[\x92Pa\x019` \x85\x01a\0\xE4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x01[W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x01kW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 G\x98\r`\x12\x97\xFF\xF2\xB6\x07\xD4\xE7\xB4P\xDC\xA8ZO1<\xEFxk\x9B\xF4S\x06\x1F\xF8\xD8\xD7\xF1dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e1f21c6714610030575b600080fd5b61004361003e36600461010d565b610045565b005b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b3906044016020604051808303816000875af11580156100ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100de9190610149565b50505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461010857600080fd5b919050565b60008060006060848603121561012257600080fd5b61012b846100e4565b9250610139602085016100e4565b9150604084013590509250925092565b60006020828403121561015b57600080fd5b8151801515811461016b57600080fd5b939250505056fea264697066735822122047980d601297fff2b607d4e7b450dca85a4f313cef786b9bf453061ff8d8d7f164736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80c\xE1\xF2\x1Cg\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01\rV[a\0EV[\0[`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`$\x82\x01\x83\x90R\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\0\xBAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xDE\x91\x90a\x01IV[PPPPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\x08W`\0\x80\xFD[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x01\"W`\0\x80\xFD[a\x01+\x84a\0\xE4V[\x92Pa\x019` \x85\x01a\0\xE4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x01[W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x01kW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 G\x98\r`\x12\x97\xFF\xF2\xB6\x07\xD4\xE7\xB4P\xDC\xA8ZO1<\xEFxk\x9B\xF4S\x06\x1F\xF8\xD8\xD7\xF1dsolcC\0\x08\x18\x003", + ); + /**Function with signature `approve(address,address,uint256)` and selector `0xe1f21c67`. +```solidity +function approve(address token, address to, uint256 amount) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub token: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`approve(address,address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.token, value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + to: tuple.1, + amount: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,address,uint256)"; + const SELECTOR: [u8; 4] = [225u8, 242u8, 28u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockSwapper`](self) function calls. + pub enum MockSwapperCalls { + approve(approveCall), + } + #[automatically_derived] + impl MockSwapperCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[225u8, 242u8, 28u8, 103u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockSwapperCalls { + const NAME: &'static str = "MockSwapperCalls"; + const MIN_DATA_LENGTH: usize = 96usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::approve(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockSwapperCalls::approve) + } + approve + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockSwapper`](self) contract instance. + +See the [wrapper's documentation](`MockSwapperInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockSwapperInstance { + MockSwapperInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockSwapperInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + MockSwapperInstance::::deploy_builder(provider) + } + /**A [`MockSwapper`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockSwapper`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockSwapperInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockSwapperInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockSwapperInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockSwapperInstance { + /**Creates a new wrapper around an on-chain [`MockSwapper`](self) contract instance. + +See the [wrapper's documentation](`MockSwapperInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockSwapperInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockSwapperInstance { + MockSwapperInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockSwapperInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + token: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { token, to, amount }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockSwapperInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/mockswaprouter.rs b/crates/bindings-uniswapx/src/mockswaprouter.rs new file mode 100644 index 0000000..11b06d5 --- /dev/null +++ b/crates/bindings-uniswapx/src/mockswaprouter.rs @@ -0,0 +1,1676 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockSwapRouter { + struct ExactInputParams { + bytes path; + address recipient; + uint256 amountIn; + uint256 amountOutMinimum; + } + + constructor(address wethAddress); + + function SWAP_RATE_GRANULARITY() external view returns (uint256); + function WETH9() external view returns (address); + function exactInput(ExactInputParams memory params) external returns (uint256 amountOut); + function multicall(uint256, bytes[] memory data) external payable returns (bytes[] memory results); + function setSwapRate(uint256 newRate) external; + function swapRate() external view returns (uint256); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "wethAddress", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "SWAP_RATE_GRANULARITY", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "WETH9", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "exactInput", + "inputs": [ + { + "name": "params", + "type": "tuple", + "internalType": "struct ExactInputParams", + "components": [ + { + "name": "path", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + }, + { + "name": "amountIn", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "amountOutMinimum", + "type": "uint256", + "internalType": "uint256" + } + ] + } + ], + "outputs": [ + { + "name": "amountOut", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "multicall", + "inputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "outputs": [ + { + "name": "results", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "setSwapRate", + "inputs": [ + { + "name": "newRate", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "swapRate", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockSwapRouter { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a060405261271060005534801561001657600080fd5b50604051610fc2380380610fc283398101604081905261003591610046565b6001600160a01b0316608052610076565b60006020828403121561005857600080fd5b81516001600160a01b038116811461006f57600080fd5b9392505050565b608051610f326100906000396000607c0152610f326000f3fe6080604052600436106100655760003560e01c80637772e904116100435780637772e9041461010c578063b858183f14610122578063f4cde4691461014257600080fd5b80634aa4a4fc1461006a5780635ae401dc146100c8578063698518e5146100e8575b600080fd5b34801561007657600080fd5b5061009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d6366004610a9d565b610164565b6040516100bf9190610b8a565b3480156100f457600080fd5b506100fe60005481565b6040519081526020016100bf565b34801561011857600080fd5b506100fe61271081565b34801561012e57600080fd5b506100fe61013d366004610c0c565b6102d5565b34801561014e57600080fd5b5061016261015d366004610c4e565b600055565b005b60608167ffffffffffffffff81111561017f5761017f610c67565b6040519080825280602002602001820160405280156101b257816020015b606081526020019060019003908161019d5790505b50905060005b828110156102cd57600080308686858181106101d6576101d6610c96565b90506020028101906101e89190610cc5565b6040516101f6929190610d31565b600060405180830381855af49150503d8060008114610231576040519150601f19603f3d011682016040523d82523d6000602084013e610236565b606091505b5091509150816102a55760448151101561024f57600080fd5b600481019050808060200190518101906102699190610d41565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029c9190610e0c565b60405180910390fd5b808484815181106102b8576102b8610c96565b602090810291909101015250506001016101b8565b509392505050565b6000806102e28380610cc5565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945061032492508491506104449050565b505090505b61033282610480565b1561034757610340826104ba565b9150610329565b600061035283610444565b50915050612710600054866040013561036b9190610e4e565b6103759190610e65565b935084606001358410156103e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604482015260640161029c565b61040b73ffffffffffffffffffffffffffffffffffffffff8316333060408901356104f1565b61043c61041e6040870160208801610ea0565b73ffffffffffffffffffffffffffffffffffffffff831690866105e3565b505050919050565b6000808061045284826106b8565b925061045f8460146107bc565b905061047761047060036014610ed6565b85906106b8565b91509193909250565b600061048e60036014610ed6565b601461049b600382610ed6565b6104a59190610ed6565b6104af9190610ed6565b825110159050919050565b60606104eb6104cb60036014610ed6565b6104d760036014610ed6565b84516104e39190610ee9565b8491906108b0565b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806105dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c4544000000000000000000000000604482015260640161029c565b5050505050565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806106b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161029c565b50505050565b6000816106c6816014610ed6565b101561072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015260640161029c565b610739826014610ed6565b835110156107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015260640161029c565b5001602001516c01000000000000000000000000900490565b6000816107ca816003610ed6565b1015610832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015260640161029c565b61083d826003610ed6565b835110156108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015260640161029c565b50016003015190565b6060816108be81601f610ed6565b1015610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161029c565b826109318382610ed6565b1015610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161029c565b6109a38284610ed6565b84511015610a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161029c565b606082158015610a2c5760405191506000825260208201604052610a94565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610a65578051835260209283019201610a4d565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b600080600060408486031215610ab257600080fd5b83359250602084013567ffffffffffffffff80821115610ad157600080fd5b818601915086601f830112610ae557600080fd5b813581811115610af457600080fd5b8760208260051b8501011115610b0957600080fd5b6020830194508093505050509250925092565b60005b83811015610b37578181015183820152602001610b1f565b50506000910152565b60008151808452610b58816020860160208601610b1c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015610bff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610bed858351610b40565b94509285019290850190600101610bb3565b5092979650505050505050565b600060208284031215610c1e57600080fd5b813567ffffffffffffffff811115610c3557600080fd5b820160808185031215610c4757600080fd5b9392505050565b600060208284031215610c6057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610cfa57600080fd5b83018035915067ffffffffffffffff821115610d1557600080fd5b602001915036819003821315610d2a57600080fd5b9250929050565b8183823760009101908152919050565b600060208284031215610d5357600080fd5b815167ffffffffffffffff80821115610d6b57600080fd5b818401915084601f830112610d7f57600080fd5b815181811115610d9157610d91610c67565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610dd757610dd7610c67565b81604052828152876020848701011115610df057600080fd5b610e01836020830160208801610b1c565b979650505050505050565b602081526000610c476020830184610b40565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176104eb576104eb610e1f565b600082610e9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215610eb257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610c4757600080fd5b808201808211156104eb576104eb610e1f565b818103818111156104eb576104eb610e1f56fea2646970667358221220ea945e37fed8df0c53dee136e598aae9e60345429e8a0afd3b31608cb3875a0164736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@Ra'\x10`\0U4\x80\x15a\0\x16W`\0\x80\xFD[P`@Qa\x0F\xC28\x03\x80a\x0F\xC2\x839\x81\x01`@\x81\x90Ra\x005\x91a\0FV[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0vV[`\0` \x82\x84\x03\x12\x15a\0XW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0oW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x0F2a\0\x90`\09`\0`|\x01Ra\x0F2`\0\xF3\xFE`\x80`@R`\x046\x10a\0eW`\x005`\xE0\x1C\x80cwr\xE9\x04\x11a\0CW\x80cwr\xE9\x04\x14a\x01\x0CW\x80c\xB8X\x18?\x14a\x01\"W\x80c\xF4\xCD\xE4i\x14a\x01BW`\0\x80\xFD[\x80cJ\xA4\xA4\xFC\x14a\0jW\x80cZ\xE4\x01\xDC\x14a\0\xC8W\x80ci\x85\x18\xE5\x14a\0\xE8W[`\0\x80\xFD[4\x80\x15a\0vW`\0\x80\xFD[Pa\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\n\x9DV[a\x01dV[`@Qa\0\xBF\x91\x90a\x0B\x8AV[4\x80\x15a\0\xF4W`\0\x80\xFD[Pa\0\xFE`\0T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[4\x80\x15a\x01\x18W`\0\x80\xFD[Pa\0\xFEa'\x10\x81V[4\x80\x15a\x01.W`\0\x80\xFD[Pa\0\xFEa\x01=6`\x04a\x0C\x0CV[a\x02\xD5V[4\x80\x15a\x01NW`\0\x80\xFD[Pa\x01ba\x01]6`\x04a\x0CNV[`\0UV[\0[``\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x7FWa\x01\x7Fa\x0CgV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xB2W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x01\x9DW\x90P[P\x90P`\0[\x82\x81\x10\x15a\x02\xCDW`\0\x800\x86\x86\x85\x81\x81\x10a\x01\xD6Wa\x01\xD6a\x0C\x96V[\x90P` \x02\x81\x01\x90a\x01\xE8\x91\x90a\x0C\xC5V[`@Qa\x01\xF6\x92\x91\x90a\r1V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x021W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x026V[``\x91P[P\x91P\x91P\x81a\x02\xA5W`D\x81Q\x10\x15a\x02OW`\0\x80\xFD[`\x04\x81\x01\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x02i\x91\x90a\rAV[`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01a\x02\x9C\x91\x90a\x0E\x0CV[`@Q\x80\x91\x03\x90\xFD[\x80\x84\x84\x81Q\x81\x10a\x02\xB8Wa\x02\xB8a\x0C\x96V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x01\xB8V[P\x93\x92PPPV[`\0\x80a\x02\xE2\x83\x80a\x0C\xC5V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x82\x90RP\x93\x94Pa\x03$\x92P\x84\x91Pa\x04D\x90PV[PP\x90P[a\x032\x82a\x04\x80V[\x15a\x03GWa\x03@\x82a\x04\xBAV[\x91Pa\x03)V[`\0a\x03R\x83a\x04DV[P\x91PPa'\x10`\0T\x86`@\x015a\x03k\x91\x90a\x0ENV[a\x03u\x91\x90a\x0EeV[\x93P\x84``\x015\x84\x10\x15a\x03\xE5W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FToo little received\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x9CV[a\x04\x0Bs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x1630`@\x89\x015a\x04\xF1V[a\x04a\x026V[``\x91P[P\x91P\x91P\x81a\x02\xA5W`D\x81Q\x10\x15a\x02OW`\0\x80\xFD[`\x04\x81\x01\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x02i\x91\x90a\rAV[`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01a\x02\x9C\x91\x90a\x0E\x0CV[`@Q\x80\x91\x03\x90\xFD[\x80\x84\x84\x81Q\x81\x10a\x02\xB8Wa\x02\xB8a\x0C\x96V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x01\xB8V[P\x93\x92PPPV[`\0\x80a\x02\xE2\x83\x80a\x0C\xC5V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x82\x90RP\x93\x94Pa\x03$\x92P\x84\x91Pa\x04D\x90PV[PP\x90P[a\x032\x82a\x04\x80V[\x15a\x03GWa\x03@\x82a\x04\xBAV[\x91Pa\x03)V[`\0a\x03R\x83a\x04DV[P\x91PPa'\x10`\0T\x86`@\x015a\x03k\x91\x90a\x0ENV[a\x03u\x91\x90a\x0EeV[\x93P\x84``\x015\x84\x10\x15a\x03\xE5W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FToo little received\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x9CV[a\x04\x0Bs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x1630`@\x89\x015a\x04\xF1V[a\x04 = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ExactInputParams) -> Self { + (value.path, value.recipient, value.amountIn, value.amountOutMinimum) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ExactInputParams { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + path: tuple.0, + recipient: tuple.1, + amountIn: tuple.2, + amountOutMinimum: tuple.3, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ExactInputParams { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ExactInputParams { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.path, + ), + ::tokenize( + &self.recipient, + ), + as alloy_sol_types::SolType>::tokenize(&self.amountIn), + as alloy_sol_types::SolType>::tokenize(&self.amountOutMinimum), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ExactInputParams { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ExactInputParams { + const NAME: &'static str = "ExactInputParams"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ExactInputParams(bytes path,address recipient,uint256 amountIn,uint256 amountOutMinimum)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.path, + ) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amountIn) + .0, + as alloy_sol_types::SolType>::eip712_data_word( + &self.amountOutMinimum, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ExactInputParams { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.path, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amountIn, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amountOutMinimum, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.path, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amountIn, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amountOutMinimum, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Constructor`. +```solidity +constructor(address wethAddress); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub wethAddress: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value.wethAddress,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { wethAddress: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.wethAddress, + ), + ) + } + } + }; + /**Function with signature `SWAP_RATE_GRANULARITY()` and selector `0x7772e904`. +```solidity +function SWAP_RATE_GRANULARITY() external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SWAP_RATE_GRANULARITYCall {} + ///Container type for the return parameters of the [`SWAP_RATE_GRANULARITY()`](SWAP_RATE_GRANULARITYCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SWAP_RATE_GRANULARITYReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: SWAP_RATE_GRANULARITYCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for SWAP_RATE_GRANULARITYCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: SWAP_RATE_GRANULARITYReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for SWAP_RATE_GRANULARITYReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for SWAP_RATE_GRANULARITYCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = SWAP_RATE_GRANULARITYReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "SWAP_RATE_GRANULARITY()"; + const SELECTOR: [u8; 4] = [119u8, 114u8, 233u8, 4u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `WETH9()` and selector `0x4aa4a4fc`. +```solidity +function WETH9() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct WETH9Call {} + ///Container type for the return parameters of the [`WETH9()`](WETH9Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct WETH9Return { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WETH9Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WETH9Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: WETH9Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for WETH9Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for WETH9Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = WETH9Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "WETH9()"; + const SELECTOR: [u8; 4] = [74u8, 164u8, 164u8, 252u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `exactInput((bytes,address,uint256,uint256))` and selector `0xb858183f`. +```solidity +function exactInput(ExactInputParams memory params) external returns (uint256 amountOut); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct exactInputCall { + pub params: ::RustType, + } + ///Container type for the return parameters of the [`exactInput((bytes,address,uint256,uint256))`](exactInputCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct exactInputReturn { + pub amountOut: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ExactInputParams,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: exactInputCall) -> Self { + (value.params,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for exactInputCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { params: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: exactInputReturn) -> Self { + (value.amountOut,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for exactInputReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { amountOut: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for exactInputCall { + type Parameters<'a> = (ExactInputParams,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = exactInputReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "exactInput((bytes,address,uint256,uint256))"; + const SELECTOR: [u8; 4] = [184u8, 88u8, 24u8, 63u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.params),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `multicall(uint256,bytes[])` and selector `0x5ae401dc`. +```solidity +function multicall(uint256, bytes[] memory data) external payable returns (bytes[] memory results); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct multicallCall { + pub _0: alloy::sol_types::private::U256, + pub data: alloy::sol_types::private::Vec, + } + ///Container type for the return parameters of the [`multicall(uint256,bytes[])`](multicallCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct multicallReturn { + pub results: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::U256, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: multicallCall) -> Self { + (value._0, value.data) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for multicallCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0, data: tuple.1 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: multicallReturn) -> Self { + (value.results,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for multicallReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { results: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for multicallCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = multicallReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "multicall(uint256,bytes[])"; + const SELECTOR: [u8; 4] = [90u8, 228u8, 1u8, 220u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + as alloy_sol_types::SolType>::tokenize(&self.data), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setSwapRate(uint256)` and selector `0xf4cde469`. +```solidity +function setSwapRate(uint256 newRate) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setSwapRateCall { + pub newRate: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`setSwapRate(uint256)`](setSwapRateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setSwapRateReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setSwapRateCall) -> Self { + (value.newRate,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setSwapRateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newRate: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setSwapRateReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setSwapRateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setSwapRateCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setSwapRateReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setSwapRate(uint256)"; + const SELECTOR: [u8; 4] = [244u8, 205u8, 228u8, 105u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.newRate), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `swapRate()` and selector `0x698518e5`. +```solidity +function swapRate() external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct swapRateCall {} + ///Container type for the return parameters of the [`swapRate()`](swapRateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct swapRateReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: swapRateCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for swapRateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: swapRateReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for swapRateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for swapRateCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = swapRateReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "swapRate()"; + const SELECTOR: [u8; 4] = [105u8, 133u8, 24u8, 229u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockSwapRouter`](self) function calls. + pub enum MockSwapRouterCalls { + SWAP_RATE_GRANULARITY(SWAP_RATE_GRANULARITYCall), + WETH9(WETH9Call), + exactInput(exactInputCall), + multicall(multicallCall), + setSwapRate(setSwapRateCall), + swapRate(swapRateCall), + } + #[automatically_derived] + impl MockSwapRouterCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [74u8, 164u8, 164u8, 252u8], + [90u8, 228u8, 1u8, 220u8], + [105u8, 133u8, 24u8, 229u8], + [119u8, 114u8, 233u8, 4u8], + [184u8, 88u8, 24u8, 63u8], + [244u8, 205u8, 228u8, 105u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockSwapRouterCalls { + const NAME: &'static str = "MockSwapRouterCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 6usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::SWAP_RATE_GRANULARITY(_) => { + ::SELECTOR + } + Self::WETH9(_) => ::SELECTOR, + Self::exactInput(_) => { + ::SELECTOR + } + Self::multicall(_) => { + ::SELECTOR + } + Self::setSwapRate(_) => { + ::SELECTOR + } + Self::swapRate(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn WETH9( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockSwapRouterCalls::WETH9) + } + WETH9 + }, + { + fn multicall( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockSwapRouterCalls::multicall) + } + multicall + }, + { + fn swapRate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockSwapRouterCalls::swapRate) + } + swapRate + }, + { + fn SWAP_RATE_GRANULARITY( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockSwapRouterCalls::SWAP_RATE_GRANULARITY) + } + SWAP_RATE_GRANULARITY + }, + { + fn exactInput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockSwapRouterCalls::exactInput) + } + exactInput + }, + { + fn setSwapRate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockSwapRouterCalls::setSwapRate) + } + setSwapRate + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::SWAP_RATE_GRANULARITY(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::WETH9(inner) => { + ::abi_encoded_size(inner) + } + Self::exactInput(inner) => { + ::abi_encoded_size(inner) + } + Self::multicall(inner) => { + ::abi_encoded_size(inner) + } + Self::setSwapRate(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::swapRate(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::SWAP_RATE_GRANULARITY(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::WETH9(inner) => { + ::abi_encode_raw(inner, out) + } + Self::exactInput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::multicall(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::setSwapRate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::swapRate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockSwapRouter`](self) contract instance. + +See the [wrapper's documentation](`MockSwapRouterInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockSwapRouterInstance { + MockSwapRouterInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + wethAddress: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockSwapRouterInstance::::deploy(provider, wethAddress) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + wethAddress: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MockSwapRouterInstance::::deploy_builder(provider, wethAddress) + } + /**A [`MockSwapRouter`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockSwapRouter`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockSwapRouterInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockSwapRouterInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockSwapRouterInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockSwapRouterInstance { + /**Creates a new wrapper around an on-chain [`MockSwapRouter`](self) contract instance. + +See the [wrapper's documentation](`MockSwapRouterInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + wethAddress: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider, wethAddress); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + wethAddress: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { wethAddress }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockSwapRouterInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockSwapRouterInstance { + MockSwapRouterInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockSwapRouterInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`SWAP_RATE_GRANULARITY`] function. + pub fn SWAP_RATE_GRANULARITY( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&SWAP_RATE_GRANULARITYCall {}) + } + ///Creates a new call builder for the [`WETH9`] function. + pub fn WETH9(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&WETH9Call {}) + } + ///Creates a new call builder for the [`exactInput`] function. + pub fn exactInput( + &self, + params: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&exactInputCall { params }) + } + ///Creates a new call builder for the [`multicall`] function. + pub fn multicall( + &self, + _0: alloy::sol_types::private::U256, + data: alloy::sol_types::private::Vec, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&multicallCall { _0, data }) + } + ///Creates a new call builder for the [`setSwapRate`] function. + pub fn setSwapRate( + &self, + newRate: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setSwapRateCall { newRate }) + } + ///Creates a new call builder for the [`swapRate`] function. + pub fn swapRate( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&swapRateCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockSwapRouterInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/mockvalidationcontract.rs b/crates/bindings-uniswapx/src/mockvalidationcontract.rs new file mode 100644 index 0000000..de1451c --- /dev/null +++ b/crates/bindings-uniswapx/src/mockvalidationcontract.rs @@ -0,0 +1,2113 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MockValidationContract { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + error MockValidationError(); + + function setValid(bool _valid) external; + function valid() external view returns (bool); + function validate(address, ResolvedOrder memory) external view; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "setValid", + "inputs": [ + { + "name": "_valid", + "type": "bool", + "internalType": "bool" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "valid", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validate", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "outputs": [], + "stateMutability": "view" + }, + { + "type": "error", + "name": "MockValidationError", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MockValidationContract { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b5061057c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80636c64edee146100465780636e84ba2b14610087578063c19912191461009a575b600080fd5b6100856100543660046100fb565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b610085610095366004610460565b6100bb565b6000546100a79060ff1681565b604051901515815260200160405180910390f35b60005460ff166100f7576040517fb3ca2e2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60006020828403121561010d57600080fd5b8135801515811461011d57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461014657600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561019b5761019b610149565b60405290565b60405160a0810167ffffffffffffffff8111828210171561019b5761019b610149565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561020b5761020b610149565b604052919050565b600082601f83011261022457600080fd5b813567ffffffffffffffff81111561023e5761023e610149565b61026f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016101c4565b81815284602083860101111561028457600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156102b357600080fd5b60405160c0810167ffffffffffffffff82821081831117156102d7576102d7610149565b81604052829350843591506102eb82610124565b9082526020840135906102fd82610124565b81602084015260408501356040840152606085013560608401526080850135915061032782610124565b81608084015260a085013591508082111561034157600080fd5b5061034e85828601610213565b60a0830152505092915050565b60006060828403121561036d57600080fd5b610375610178565b9050813561038281610124565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126103b157600080fd5b8135602067ffffffffffffffff8211156103cd576103cd610149565b6103db818360051b016101c4565b828152606092830285018201928282019190878511156103fa57600080fd5b8387015b858110156104535781818a0312156104165760008081fd5b61041e610178565b813561042981610124565b8152818601358682015260408083013561044281610124565b9082015284529284019281016103fe565b5090979650505050505050565b6000806040838503121561047357600080fd5b823561047e81610124565b9150602083013567ffffffffffffffff8082111561049b57600080fd5b9084019060e082870312156104af57600080fd5b6104b76101a1565b8235828111156104c657600080fd5b6104d2888286016102a1565b8252506104e2876020850161035b565b60208201526080830135828111156104f957600080fd5b610505888286016103a0565b60408301525060a08301358281111561051d57600080fd5b61052988828601610213565b60608301525060c08301356080820152809350505050925092905056fea2646970667358221220ec43ccebacdbd95c7ccec8508538d4256e57eb37a4e8d92ca2a5a4134555c22764736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x05|\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cld\xED\xEE\x14a\0FW\x80cn\x84\xBA+\x14a\0\x87W\x80c\xC1\x99\x12\x19\x14a\0\x9AW[`\0\x80\xFD[a\0\x85a\0T6`\x04a\0\xFBV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[\0[a\0\x85a\0\x956`\x04a\x04`V[a\0\xBBV[`\0Ta\0\xA7\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0T`\xFF\x16a\0\xF7W`@Q\x7F\xB3\xCA.(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[`\0` \x82\x84\x03\x12\x15a\x01\rW`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x01\x1DW`\0\x80\xFD[\x93\x92PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01FW`\0\x80\xFD[PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9BWa\x01\x9Ba\x01IV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9BWa\x01\x9Ba\x01IV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\x0BWa\x02\x0Ba\x01IV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x02$W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02>Wa\x02>a\x01IV[a\x02o` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x01\xC4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x02\x84W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x02\xB3W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x02\xD7Wa\x02\xD7a\x01IV[\x81`@R\x82\x93P\x845\x91Pa\x02\xEB\x82a\x01$V[\x90\x82R` \x84\x015\x90a\x02\xFD\x82a\x01$V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x03'\x82a\x01$V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x03AW`\0\x80\xFD[Pa\x03N\x85\x82\x86\x01a\x02\x13V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x03mW`\0\x80\xFD[a\x03ua\x01xV[\x90P\x815a\x03\x82\x81a\x01$V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x03\xB1W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x03\xCDWa\x03\xCDa\x01IV[a\x03\xDB\x81\x83`\x05\x1B\x01a\x01\xC4V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x03\xFAW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x04SW\x81\x81\x8A\x03\x12\x15a\x04\x16W`\0\x80\x81\xFD[a\x04\x1Ea\x01xV[\x815a\x04)\x81a\x01$V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x04B\x81a\x01$V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x03\xFEV[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[\x825a\x04~\x81a\x01$V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\x9BW`\0\x80\xFD[\x90\x84\x01\x90`\xE0\x82\x87\x03\x12\x15a\x04\xAFW`\0\x80\xFD[a\x04\xB7a\x01\xA1V[\x825\x82\x81\x11\x15a\x04\xC6W`\0\x80\xFD[a\x04\xD2\x88\x82\x86\x01a\x02\xA1V[\x82RPa\x04\xE2\x87` \x85\x01a\x03[V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x04\xF9W`\0\x80\xFD[a\x05\x05\x88\x82\x86\x01a\x03\xA0V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x05\x1DW`\0\x80\xFD[a\x05)\x88\x82\x86\x01a\x02\x13V[``\x83\x01RP`\xC0\x83\x015`\x80\x82\x01R\x80\x93PPPP\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 \xECC\xCC\xEB\xAC\xDB\xD9\\|\xCE\xC8P\x858\xD4%nW\xEB7\xA4\xE8\xD9,\xA2\xA5\xA4\x13EU\xC2'dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80636c64edee146100465780636e84ba2b14610087578063c19912191461009a575b600080fd5b6100856100543660046100fb565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b610085610095366004610460565b6100bb565b6000546100a79060ff1681565b604051901515815260200160405180910390f35b60005460ff166100f7576040517fb3ca2e2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60006020828403121561010d57600080fd5b8135801515811461011d57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461014657600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561019b5761019b610149565b60405290565b60405160a0810167ffffffffffffffff8111828210171561019b5761019b610149565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561020b5761020b610149565b604052919050565b600082601f83011261022457600080fd5b813567ffffffffffffffff81111561023e5761023e610149565b61026f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016101c4565b81815284602083860101111561028457600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156102b357600080fd5b60405160c0810167ffffffffffffffff82821081831117156102d7576102d7610149565b81604052829350843591506102eb82610124565b9082526020840135906102fd82610124565b81602084015260408501356040840152606085013560608401526080850135915061032782610124565b81608084015260a085013591508082111561034157600080fd5b5061034e85828601610213565b60a0830152505092915050565b60006060828403121561036d57600080fd5b610375610178565b9050813561038281610124565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126103b157600080fd5b8135602067ffffffffffffffff8211156103cd576103cd610149565b6103db818360051b016101c4565b828152606092830285018201928282019190878511156103fa57600080fd5b8387015b858110156104535781818a0312156104165760008081fd5b61041e610178565b813561042981610124565b8152818601358682015260408083013561044281610124565b9082015284529284019281016103fe565b5090979650505050505050565b6000806040838503121561047357600080fd5b823561047e81610124565b9150602083013567ffffffffffffffff8082111561049b57600080fd5b9084019060e082870312156104af57600080fd5b6104b76101a1565b8235828111156104c657600080fd5b6104d2888286016102a1565b8252506104e2876020850161035b565b60208201526080830135828111156104f957600080fd5b610505888286016103a0565b60408301525060a08301358281111561051d57600080fd5b61052988828601610213565b60608301525060c08301356080820152809350505050925092905056fea2646970667358221220ec43ccebacdbd95c7ccec8508538d4256e57eb37a4e8d92ca2a5a4134555c22764736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cld\xED\xEE\x14a\0FW\x80cn\x84\xBA+\x14a\0\x87W\x80c\xC1\x99\x12\x19\x14a\0\x9AW[`\0\x80\xFD[a\0\x85a\0T6`\x04a\0\xFBV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[\0[a\0\x85a\0\x956`\x04a\x04`V[a\0\xBBV[`\0Ta\0\xA7\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0T`\xFF\x16a\0\xF7W`@Q\x7F\xB3\xCA.(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[`\0` \x82\x84\x03\x12\x15a\x01\rW`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x01\x1DW`\0\x80\xFD[\x93\x92PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01FW`\0\x80\xFD[PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9BWa\x01\x9Ba\x01IV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9BWa\x01\x9Ba\x01IV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\x0BWa\x02\x0Ba\x01IV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x02$W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02>Wa\x02>a\x01IV[a\x02o` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x01\xC4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x02\x84W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x02\xB3W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x02\xD7Wa\x02\xD7a\x01IV[\x81`@R\x82\x93P\x845\x91Pa\x02\xEB\x82a\x01$V[\x90\x82R` \x84\x015\x90a\x02\xFD\x82a\x01$V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x03'\x82a\x01$V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x03AW`\0\x80\xFD[Pa\x03N\x85\x82\x86\x01a\x02\x13V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x03mW`\0\x80\xFD[a\x03ua\x01xV[\x90P\x815a\x03\x82\x81a\x01$V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x03\xB1W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x03\xCDWa\x03\xCDa\x01IV[a\x03\xDB\x81\x83`\x05\x1B\x01a\x01\xC4V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x03\xFAW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x04SW\x81\x81\x8A\x03\x12\x15a\x04\x16W`\0\x80\x81\xFD[a\x04\x1Ea\x01xV[\x815a\x04)\x81a\x01$V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x04B\x81a\x01$V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x03\xFEV[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[\x825a\x04~\x81a\x01$V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\x9BW`\0\x80\xFD[\x90\x84\x01\x90`\xE0\x82\x87\x03\x12\x15a\x04\xAFW`\0\x80\xFD[a\x04\xB7a\x01\xA1V[\x825\x82\x81\x11\x15a\x04\xC6W`\0\x80\xFD[a\x04\xD2\x88\x82\x86\x01a\x02\xA1V[\x82RPa\x04\xE2\x87` \x85\x01a\x03[V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x04\xF9W`\0\x80\xFD[a\x05\x05\x88\x82\x86\x01a\x03\xA0V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x05\x1DW`\0\x80\xFD[a\x05)\x88\x82\x86\x01a\x02\x13V[``\x83\x01RP`\xC0\x83\x015`\x80\x82\x01R\x80\x93PPPP\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 \xECC\xCC\xEB\xAC\xDB\xD9\\|\xCE\xC8P\x858\xD4%nW\xEB7\xA4\xE8\xD9,\xA2\xA5\xA4\x13EU\xC2'dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `MockValidationError()` and selector `0xb3ca2e28`. +```solidity +error MockValidationError(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MockValidationError {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MockValidationError) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MockValidationError { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for MockValidationError { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MockValidationError()"; + const SELECTOR: [u8; 4] = [179u8, 202u8, 46u8, 40u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Function with signature `setValid(bool)` and selector `0x6c64edee`. +```solidity +function setValid(bool _valid) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setValidCall { + pub _valid: bool, + } + ///Container type for the return parameters of the [`setValid(bool)`](setValidCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setValidReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setValidCall) -> Self { + (value._valid,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setValidCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _valid: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setValidReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setValidReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setValidCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bool,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setValidReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setValid(bool)"; + const SELECTOR: [u8; 4] = [108u8, 100u8, 237u8, 238u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._valid, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `valid()` and selector `0xc1991219`. +```solidity +function valid() external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validCall {} + ///Container type for the return parameters of the [`valid()`](validCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for validCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = validReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "valid()"; + const SELECTOR: [u8; 4] = [193u8, 153u8, 18u8, 25u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))` and selector `0x6e84ba2b`. +```solidity +function validate(address, ResolvedOrder memory) external view; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validateCall { + pub _0: alloy::sol_types::private::Address, + pub _1: ::RustType, + } + ///Container type for the return parameters of the [`validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](validateCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct validateReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + ResolvedOrder, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validateCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validateCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0, _1: tuple.1 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: validateReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for validateReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for validateCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address, ResolvedOrder); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = validateReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))"; + const SELECTOR: [u8; 4] = [110u8, 132u8, 186u8, 43u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ::tokenize(&self._1), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MockValidationContract`](self) function calls. + pub enum MockValidationContractCalls { + setValid(setValidCall), + valid(validCall), + validate(validateCall), + } + #[automatically_derived] + impl MockValidationContractCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [108u8, 100u8, 237u8, 238u8], + [110u8, 132u8, 186u8, 43u8], + [193u8, 153u8, 18u8, 25u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockValidationContractCalls { + const NAME: &'static str = "MockValidationContractCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::setValid(_) => ::SELECTOR, + Self::valid(_) => ::SELECTOR, + Self::validate(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn setValid( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockValidationContractCalls::setValid) + } + setValid + }, + { + fn validate( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockValidationContractCalls::validate) + } + validate + }, + { + fn valid( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockValidationContractCalls::valid) + } + valid + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::setValid(inner) => { + ::abi_encoded_size(inner) + } + Self::valid(inner) => { + ::abi_encoded_size(inner) + } + Self::validate(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::setValid(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::valid(inner) => { + ::abi_encode_raw(inner, out) + } + Self::validate(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MockValidationContract`](self) custom errors. + pub enum MockValidationContractErrors { + MockValidationError(MockValidationError), + } + #[automatically_derived] + impl MockValidationContractErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[179u8, 202u8, 46u8, 40u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MockValidationContractErrors { + const NAME: &'static str = "MockValidationContractErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::MockValidationError(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn MockValidationError( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MockValidationContractErrors::MockValidationError) + } + MockValidationError + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::MockValidationError(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::MockValidationError(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MockValidationContract`](self) contract instance. + +See the [wrapper's documentation](`MockValidationContractInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MockValidationContractInstance { + MockValidationContractInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MockValidationContractInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + MockValidationContractInstance::::deploy_builder(provider) + } + /**A [`MockValidationContract`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MockValidationContract`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MockValidationContractInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for MockValidationContractInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MockValidationContractInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockValidationContractInstance { + /**Creates a new wrapper around an on-chain [`MockValidationContract`](self) contract instance. + +See the [wrapper's documentation](`MockValidationContractInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl MockValidationContractInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> MockValidationContractInstance { + MockValidationContractInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockValidationContractInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`setValid`] function. + pub fn setValid( + &self, + _valid: bool, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&setValidCall { _valid }) + } + ///Creates a new call builder for the [`valid`] function. + pub fn valid(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&validCall {}) + } + ///Creates a new call builder for the [`validate`] function. + pub fn validate( + &self, + _0: alloy::sol_types::private::Address, + _1: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&validateCall { _0, _1 }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MockValidationContractInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/multifillerswaprouter02executor.rs b/crates/bindings-uniswapx/src/multifillerswaprouter02executor.rs new file mode 100644 index 0000000..41fdf2e --- /dev/null +++ b/crates/bindings-uniswapx/src/multifillerswaprouter02executor.rs @@ -0,0 +1,4638 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface MultiFillerSwapRouter02Executor { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + struct SignedOrder { + bytes order; + bytes sig; + } + + error CallerNotWhitelisted(); + error MsgSenderNotReactor(); + error NativeTransferFailed(); + + event OwnershipTransferred(address indexed user, address indexed newOwner); + event ReactorChanged(address newReactor, address oldReactor); + + constructor(address[] _whitelistedCallers, address _reactor, address _owner, address _swapRouter02); + + receive() external payable; + + function execute(SignedOrder memory order, bytes memory callbackData) external; + function executeBatch(SignedOrder[] memory orders, bytes memory callbackData) external; + function multicall(address[] memory tokensToApprove, bytes[] memory multicallData) external; + function owner() external view returns (address); + function reactor() external view returns (address); + function reactorCallback(ResolvedOrder[] memory, bytes memory callbackData) external; + function transferOwnership(address newOwner) external; + function unwrapWETH(address recipient) external; + function updateReactor(address _reactor) external; + function withdrawERC20(address token, address to) external; + function withdrawETH(address recipient) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_whitelistedCallers", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "_reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_swapRouter02", + "type": "address", + "internalType": "contract ISwapRouter02" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "multicall", + "inputs": [ + { + "name": "tokensToApprove", + "type": "address[]", + "internalType": "contract ERC20[]" + }, + { + "name": "multicallData", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "reactor", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IReactor" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "reactorCallback", + "inputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct ResolvedOrder[]", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unwrapWETH", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateReactor", + "inputs": [ + { + "name": "_reactor", + "type": "address", + "internalType": "contract IReactor" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawERC20", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawETH", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ReactorChanged", + "inputs": [ + { + "name": "newReactor", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "oldReactor", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "CallerNotWhitelisted", + "inputs": [] + }, + { + "type": "error", + "name": "MsgSenderNotReactor", + "inputs": [] + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod MultiFillerSwapRouter02Executor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60c06040523480156200001157600080fd5b5060405162001e3338038062001e338339810160408190526200003491620001c1565b600080546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060005b8451811015620000df576001806000878481518110620000a457620000a4620002cc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010162000080565b50600280546001600160a01b0319166001600160a01b038581169190911790915581166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001699190620002e2565b6001600160a01b031660a052506200030992505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620001ac57600080fd5b50565b8051620001bc8162000196565b919050565b60008060008060808587031215620001d857600080fd5b84516001600160401b0380821115620001f057600080fd5b818701915087601f8301126200020557600080fd5b81516020828211156200021c576200021c62000180565b8160051b604051601f19603f8301168101818110868211171562000244576200024462000180565b60405292835281830193508481018201928b8411156200026357600080fd5b948201945b838610156200028c576200027c86620001af565b8552948201949382019362000268565b98506200029d9050898201620001af565b965050505050620002b160408601620001af565b9150620002c160608601620001af565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b600060208284031215620002f557600080fd5b8151620003028162000196565b9392505050565b60805160a051611ae86200034b600039600081816109870152610a390152600081816102e901528181610417015281816106b801526107820152611ae86000f3fe6080604052600436106100c05760003560e01c80638da5cb5b11610074578063d0f2d8ac1161004e578063d0f2d8ac14610211578063e5135ec614610231578063f2fde38b1461025157600080fd5b80638da5cb5b1461016e5780639456fbcc146101c4578063ab572650146101e457600080fd5b806363fb0b96116100a557806363fb0b961461010e578063690d83201461012e57806389a3f1361461014e57600080fd5b8063585da628146100cc5780635c8f9bf6146100ee57600080fd5b366100c757005b600080fd5b3480156100d857600080fd5b506100ec6100e73660046111d8565b610271565b005b3480156100fa57600080fd5b506100ec610109366004611266565b610506565b34801561011a57600080fd5b506100ec61012936600461128a565b610627565b34801561013a57600080fd5b506100ec610149366004611266565b610847565b34801561015a57600080fd5b506100ec610169366004611266565b6108d5565b34801561017a57600080fd5b5060005461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101d057600080fd5b506100ec6101df3660046112ea565b610ab8565b3480156101f057600080fd5b5060025461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561021d57600080fd5b506100ec61022c366004611323565b610beb565b34801561023d57600080fd5b506100ec61024c3660046111d8565b610cc0565b34801561025d57600080fd5b506100ec61026c366004611266565b610da1565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102c2576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806102d2848601866114f4565b92509250925060005b8351811015610370576103687f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061033b5761033b61162a565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610e929092919063ffffffff16565b6001016102db565b5060005b82518110156103d95760025483516103d19173ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908590811061033b5761033b61162a565b600101610374565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc9061046e907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161167d565b6000604051808303816000875af115801561048d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104d3919081019061173b565b5047156104fd576002546104fd9073ffffffffffffffffffffffffffffffffffffffff1647610f67565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff808516825290921660208301527f3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b60005b838110156107445761073c7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87878581811061070a5761070a61162a565b905060200201602081019061071f9190611266565b73ffffffffffffffffffffffffffffffffffffffff169190610e92565b6001016106ab565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906107db907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869086906004016118d5565b6000604051808303816000875af11580156107fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610840919081019061173b565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6108d28147611006565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a079190611966565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b50505050610ab48247611006565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610ab490829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611966565b73ffffffffffffffffffffffffffffffffffffffff8516919061107b565b3360009081526001602052604081205460ff1615159003610c38576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d33588490610c92908690869086906004016119ca565b600060405180830381600087803b158015610cac57600080fd5b505af11580156104fd573d6000803e3d6000fd5b3360009081526001602052604081205460ff1615159003610d0d576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906313fb72c790610d699087908790879087906004016119f0565b600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610583565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610fc1576040519150601f19603f3d011682016040523d82523d6000602084013e610fc6565b606091505b5050905080611001576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080611001576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610583565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610583565b60008083601f84011261115c57600080fd5b50813567ffffffffffffffff81111561117457600080fd5b6020830191508360208260051b850101111561118f57600080fd5b9250929050565b60008083601f8401126111a857600080fd5b50813567ffffffffffffffff8111156111c057600080fd5b60208301915083602082850101111561118f57600080fd5b600080600080604085870312156111ee57600080fd5b843567ffffffffffffffff8082111561120657600080fd5b6112128883890161114a565b9096509450602087013591508082111561122b57600080fd5b5061123887828801611196565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108d257600080fd5b60006020828403121561127857600080fd5b813561128381611244565b9392505050565b600080600080604085870312156112a057600080fd5b843567ffffffffffffffff808211156112b857600080fd5b6112c48883890161114a565b909650945060208701359150808211156112dd57600080fd5b506112388782880161114a565b600080604083850312156112fd57600080fd5b823561130881611244565b9150602083013561131881611244565b809150509250929050565b60008060006040848603121561133857600080fd5b833567ffffffffffffffff8082111561135057600080fd5b908501906040828803121561136457600080fd5b9093506020850135908082111561137a57600080fd5b5061138786828701611196565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561140a5761140a611394565b604052919050565b600067ffffffffffffffff82111561142c5761142c611394565b5060051b60200190565b600082601f83011261144757600080fd5b8135602061145c61145783611412565b6113c3565b8083825260208201915060208460051b87010193508684111561147e57600080fd5b602086015b848110156114a357803561149681611244565b8352918301918301611483565b509695505050505050565b600067ffffffffffffffff8211156114c8576114c8611394565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060006060848603121561150957600080fd5b833567ffffffffffffffff8082111561152157600080fd5b61152d87838801611436565b945060209150818601358181111561154457600080fd5b61155088828901611436565b9450506040808701358281111561156657600080fd5b8701601f8101891361157757600080fd5b803561158561145782611412565b81815260059190911b8201850190858101908b8311156115a457600080fd5b8684015b83811015611618578035878111156115c05760008081fd5b8501603f81018e136115d25760008081fd5b888101356115e2611457826114ae565b8181528f898385010111156115f75760008081fd5b818984018c83013760009181018b01919091528452509187019187016115a8565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561167457818101518382015260200161165c565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b8281101561172d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452815180518088526116f081888a01898501611659565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016969096018501955092840192908401906001016116ab565b509398975050505050505050565b6000602080838503121561174e57600080fd5b825167ffffffffffffffff8082111561176657600080fd5b818501915085601f83011261177a57600080fd5b815161178861145782611412565b81815260059190911b830184019084810190888311156117a757600080fd5b8585015b8381101561181b578051858111156117c35760008081fd5b8601603f81018b136117d55760008081fd5b8781015160406117e7611457836114ae565b8281528d828486010111156117fc5760008081fd5b61180b838c8301848701611659565b86525050509186019186016117ab565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126118a657600080fd5b830160208101925035905067ffffffffffffffff8111156118c657600080fd5b80360382131561118f57600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b87811015611958577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018352611939828a611871565b611944878284611828565b965050509183019190830190600101611900565b509298975050505050505050565b60006020828403121561197857600080fd5b5051919050565b600061198b8283611871565b6040855261199d604086018284611828565b9150506119ad6020840184611871565b85830360208701526119c0838284611828565b9695505050505050565b6040815260006119dd604083018661197f565b82810360208401526119c0818587611828565b6040808252810184905260006060600586901b830181019083018783805b89811015611a90577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112611a6e578283fd5b611a7a868d830161197f565b9550506020938401939290920191600101611a0e565b505050508281036020840152611aa7818587611828565b97965050505050505056fea26469706673582212200b39cb1d4ed27a99075eb0ba2bd0956359096764fc5d36462a8d461ef0c3820864736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x1E38\x03\x80b\0\x1E3\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\xC1V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\0[\x84Q\x81\x10\x15b\0\0\xDFW`\x01\x80`\0\x87\x84\x81Q\x81\x10b\0\0\xA4Wb\0\0\xA4b\0\x02\xCCV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x82R\x81\x01\x91\x90\x91R`@\x01`\0 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U`\x01\x01b\0\0\x80V[P`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x91\x90\x91\x17\x90\x91U\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x02\xE2V[`\x01`\x01`\xA0\x1B\x03\x16`\xA0RPb\0\x03\t\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01\xACW`\0\x80\xFD[PV[\x80Qb\0\x01\xBC\x81b\0\x01\x96V[\x91\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x01\xD8W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xF0W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12b\0\x02\x05W`\0\x80\xFD[\x81Q` \x82\x82\x11\x15b\0\x02\x1CWb\0\x02\x1Cb\0\x01\x80V[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15b\0\x02DWb\0\x02Db\0\x01\x80V[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x8B\x84\x11\x15b\0\x02cW`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15b\0\x02\x8CWb\0\x02|\x86b\0\x01\xAFV[\x85R\x94\x82\x01\x94\x93\x82\x01\x93b\0\x02hV[\x98Pb\0\x02\x9D\x90P\x89\x82\x01b\0\x01\xAFV[\x96PPPPPb\0\x02\xB1`@\x86\x01b\0\x01\xAFV[\x91Pb\0\x02\xC1``\x86\x01b\0\x01\xAFV[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15b\0\x02\xF5W`\0\x80\xFD[\x81Qb\0\x03\x02\x81b\0\x01\x96V[\x93\x92PPPV[`\x80Q`\xA0Qa\x1A\xE8b\0\x03K`\09`\0\x81\x81a\t\x87\x01Ra\n9\x01R`\0\x81\x81a\x02\xE9\x01R\x81\x81a\x04\x17\x01R\x81\x81a\x06\xB8\x01Ra\x07\x82\x01Ra\x1A\xE8`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xC0W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0tW\x80c\xD0\xF2\xD8\xAC\x11a\0NW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x11W\x80c\xE5\x13^\xC6\x14a\x021W\x80c\xF2\xFD\xE3\x8B\x14a\x02QW`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01nW\x80c\x94V\xFB\xCC\x14a\x01\xC4W\x80c\xABW&P\x14a\x01\xE4W`\0\x80\xFD[\x80cc\xFB\x0B\x96\x11a\0\xA5W\x80cc\xFB\x0B\x96\x14a\x01\x0EW\x80ci\r\x83 \x14a\x01.W\x80c\x89\xA3\xF16\x14a\x01NW`\0\x80\xFD[\x80cX]\xA6(\x14a\0\xCCW\x80c\\\x8F\x9B\xF6\x14a\0\xEEW`\0\x80\xFD[6a\0\xC7W\0[`\0\x80\xFD[4\x80\x15a\0\xD8W`\0\x80\xFD[Pa\0\xECa\0\xE76`\x04a\x11\xD8V[a\x02qV[\0[4\x80\x15a\0\xFAW`\0\x80\xFD[Pa\0\xECa\x01\t6`\x04a\x12fV[a\x05\x06V[4\x80\x15a\x01\x1AW`\0\x80\xFD[Pa\0\xECa\x01)6`\x04a\x12\x8AV[a\x06'V[4\x80\x15a\x01:W`\0\x80\xFD[Pa\0\xECa\x01I6`\x04a\x12fV[a\x08GV[4\x80\x15a\x01ZW`\0\x80\xFD[Pa\0\xECa\x01i6`\x04a\x12fV[a\x08\xD5V[4\x80\x15a\x01zW`\0\x80\xFD[P`\0Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xD0W`\0\x80\xFD[Pa\0\xECa\x01\xDF6`\x04a\x12\xEAV[a\n\xB8V[4\x80\x15a\x01\xF0W`\0\x80\xFD[P`\x02Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\0\xECa\x02,6`\x04a\x13#V[a\x0B\xEBV[4\x80\x15a\x02=W`\0\x80\xFD[Pa\0\xECa\x02L6`\x04a\x11\xD8V[a\x0C\xC0V[4\x80\x15a\x02]W`\0\x80\xFD[Pa\0\xECa\x02l6`\x04a\x12fV[a\r\xA1V[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02\xC2W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02\xD2\x84\x86\x01\x86a\x14\xF4V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x03pWa\x03h\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03;Wa\x03;a\x16*V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0E\x92\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02\xDBV[P`\0[\x82Q\x81\x10\x15a\x03\xD9W`\x02T\x83Qa\x03\xD1\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x85\x90\x81\x10a\x03;Wa\x03;a\x16*V[`\x01\x01a\x03tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x04n\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x16}V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\x8DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xD3\x91\x90\x81\x01\x90a\x17;V[PG\x15a\x04\xFDW`\x02Ta\x04\xFD\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16Ga\x0FgV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x82R\x90\x92\x16` \x83\x01R\x7F?Gi\xCBf\xE4,\x90\x99\x80\x90'}]r\xEEh>\xF1v\xA1\xF5o\xB1\x852\x8FUJ*\xB7\xDC\x91\x01`@Q\x80\x91\x03\x90\xA1`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0[\x83\x81\x10\x15a\x07DWa\x07<\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x07\nWa\x07\na\x16*V[\x90P` \x02\x01` \x81\x01\x90a\x07\x1F\x91\x90a\x12fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0E\x92V[`\x01\x01a\x06\xABV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x07\xDB\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x18\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x08@\x91\x90\x81\x01\x90a\x17;V[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xC8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[a\x08\xD2\x81Ga\x10\x06V[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\tVW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xE3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x07\x91\x90a\x19fV[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\n\xA6W=`\0\x80>=`\0\xFD[PPPPa\n\xB4\x82Ga\x10\x06V[PPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\n\xB4\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xA9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xCD\x91\x90a\x19fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x10{V[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C8W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\r3X\x84\x90a\x0C\x92\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x19\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\xACW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xFDW=`\0\x80>=`\0\xFD[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\r\rW`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x13\xFBr\xC7\x90a\ri\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x19\xF0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\x97W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0E\"W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x0F\xC1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0F\xC6V[``\x91P[PP\x90P\x80a\x10\x01W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x10\x01W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80\x83`\x1F\x84\x01\x12a\x11\\W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11tW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x11\xA8W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xC0W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x11\xEEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\x06W`\0\x80\xFD[a\x12\x12\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12+W`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xD2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12xW`\0\x80\xFD[\x815a\x12\x83\x81a\x12DV[\x93\x92PPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x12\xA0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\xB8W`\0\x80\xFD[a\x12\xC4\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12\xDDW`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11JV[`\0\x80`@\x83\x85\x03\x12\x15a\x12\xFDW`\0\x80\xFD[\x825a\x13\x08\x81a\x12DV[\x91P` \x83\x015a\x13\x18\x81a\x12DV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x138W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13PW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x13dW`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x13zW`\0\x80\xFD[Pa\x13\x87\x86\x82\x87\x01a\x11\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x14\nWa\x14\na\x13\x94V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14,Wa\x14,a\x13\x94V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x14GW`\0\x80\xFD[\x815` a\x14\\a\x14W\x83a\x14\x12V[a\x13\xC3V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x14~W`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x14\xA3W\x805a\x14\x96\x81a\x12DV[\x83R\x91\x83\x01\x91\x83\x01a\x14\x83V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14\xC8Wa\x14\xC8a\x13\x94V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15\tW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15!W`\0\x80\xFD[a\x15-\x87\x83\x88\x01a\x146V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x15DW`\0\x80\xFD[a\x15P\x88\x82\x89\x01a\x146V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x15fW`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x15wW`\0\x80\xFD[\x805a\x15\x85a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x15\xA4W`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x16\x18W\x805\x87\x81\x11\x15a\x15\xC0W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x15\xD2W`\0\x80\x81\xFD[\x88\x81\x015a\x15\xE2a\x14W\x82a\x14\xAEV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x15\xF7W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x15\xA8V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x16tW\x81\x81\x01Q\x83\x82\x01R` \x01a\x16\\V[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x17-W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x16\xF0\x81\x88\x8A\x01\x89\x85\x01a\x16YV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x16\xABV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17NW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x17fW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x17zW`\0\x80\xFD[\x81Qa\x17\x88a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x17\xA7W`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x18\x1BW\x80Q\x85\x81\x11\x15a\x17\xC3W`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x17\xD5W`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x17\xE7a\x14W\x83a\x14\xAEV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x17\xFCW`\0\x80\x81\xFD[a\x18\x0B\x83\x8C\x83\x01\x84\x87\x01a\x16YV[\x86RPPP\x91\x86\x01\x91\x86\x01a\x17\xABV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x18\xA6W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x18\xC6W`\0\x80\xFD[\x806\x03\x82\x13\x15a\x11\x8FW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x19XW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x199\x82\x8Aa\x18qV[a\x19D\x87\x82\x84a\x18(V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x19\0V[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x19xW`\0\x80\xFD[PQ\x91\x90PV[`\0a\x19\x8B\x82\x83a\x18qV[`@\x85Ra\x19\x9D`@\x86\x01\x82\x84a\x18(V[\x91PPa\x19\xAD` \x84\x01\x84a\x18qV[\x85\x83\x03` \x87\x01Ra\x19\xC0\x83\x82\x84a\x18(V[\x96\x95PPPPPPV[`@\x81R`\0a\x19\xDD`@\x83\x01\x86a\x19\x7FV[\x82\x81\x03` \x84\x01Ra\x19\xC0\x81\x85\x87a\x18(V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x1A\x90W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x1AnW\x82\x83\xFD[a\x1Az\x86\x8D\x83\x01a\x19\x7FV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x1A\x0EV[PPPP\x82\x81\x03` \x84\x01Ra\x1A\xA7\x81\x85\x87a\x18(V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 \x0B9\xCB\x1DN\xD2z\x99\x07^\xB0\xBA+\xD0\x95cY\tgd\xFC]6F*\x8DF\x1E\xF0\xC3\x82\x08dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052600436106100c05760003560e01c80638da5cb5b11610074578063d0f2d8ac1161004e578063d0f2d8ac14610211578063e5135ec614610231578063f2fde38b1461025157600080fd5b80638da5cb5b1461016e5780639456fbcc146101c4578063ab572650146101e457600080fd5b806363fb0b96116100a557806363fb0b961461010e578063690d83201461012e57806389a3f1361461014e57600080fd5b8063585da628146100cc5780635c8f9bf6146100ee57600080fd5b366100c757005b600080fd5b3480156100d857600080fd5b506100ec6100e73660046111d8565b610271565b005b3480156100fa57600080fd5b506100ec610109366004611266565b610506565b34801561011a57600080fd5b506100ec61012936600461128a565b610627565b34801561013a57600080fd5b506100ec610149366004611266565b610847565b34801561015a57600080fd5b506100ec610169366004611266565b6108d5565b34801561017a57600080fd5b5060005461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101d057600080fd5b506100ec6101df3660046112ea565b610ab8565b3480156101f057600080fd5b5060025461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561021d57600080fd5b506100ec61022c366004611323565b610beb565b34801561023d57600080fd5b506100ec61024c3660046111d8565b610cc0565b34801561025d57600080fd5b506100ec61026c366004611266565b610da1565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102c2576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806102d2848601866114f4565b92509250925060005b8351811015610370576103687f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061033b5761033b61162a565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610e929092919063ffffffff16565b6001016102db565b5060005b82518110156103d95760025483516103d19173ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908590811061033b5761033b61162a565b600101610374565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc9061046e907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161167d565b6000604051808303816000875af115801561048d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104d3919081019061173b565b5047156104fd576002546104fd9073ffffffffffffffffffffffffffffffffffffffff1647610f67565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff808516825290921660208301527f3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b60005b838110156107445761073c7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87878581811061070a5761070a61162a565b905060200201602081019061071f9190611266565b73ffffffffffffffffffffffffffffffffffffffff169190610e92565b6001016106ab565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906107db907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869086906004016118d5565b6000604051808303816000875af11580156107fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610840919081019061173b565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6108d28147611006565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a079190611966565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b50505050610ab48247611006565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610ab490829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611966565b73ffffffffffffffffffffffffffffffffffffffff8516919061107b565b3360009081526001602052604081205460ff1615159003610c38576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d33588490610c92908690869086906004016119ca565b600060405180830381600087803b158015610cac57600080fd5b505af11580156104fd573d6000803e3d6000fd5b3360009081526001602052604081205460ff1615159003610d0d576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906313fb72c790610d699087908790879087906004016119f0565b600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610583565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610fc1576040519150601f19603f3d011682016040523d82523d6000602084013e610fc6565b606091505b5050905080611001576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080611001576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610583565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610583565b60008083601f84011261115c57600080fd5b50813567ffffffffffffffff81111561117457600080fd5b6020830191508360208260051b850101111561118f57600080fd5b9250929050565b60008083601f8401126111a857600080fd5b50813567ffffffffffffffff8111156111c057600080fd5b60208301915083602082850101111561118f57600080fd5b600080600080604085870312156111ee57600080fd5b843567ffffffffffffffff8082111561120657600080fd5b6112128883890161114a565b9096509450602087013591508082111561122b57600080fd5b5061123887828801611196565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108d257600080fd5b60006020828403121561127857600080fd5b813561128381611244565b9392505050565b600080600080604085870312156112a057600080fd5b843567ffffffffffffffff808211156112b857600080fd5b6112c48883890161114a565b909650945060208701359150808211156112dd57600080fd5b506112388782880161114a565b600080604083850312156112fd57600080fd5b823561130881611244565b9150602083013561131881611244565b809150509250929050565b60008060006040848603121561133857600080fd5b833567ffffffffffffffff8082111561135057600080fd5b908501906040828803121561136457600080fd5b9093506020850135908082111561137a57600080fd5b5061138786828701611196565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561140a5761140a611394565b604052919050565b600067ffffffffffffffff82111561142c5761142c611394565b5060051b60200190565b600082601f83011261144757600080fd5b8135602061145c61145783611412565b6113c3565b8083825260208201915060208460051b87010193508684111561147e57600080fd5b602086015b848110156114a357803561149681611244565b8352918301918301611483565b509695505050505050565b600067ffffffffffffffff8211156114c8576114c8611394565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060006060848603121561150957600080fd5b833567ffffffffffffffff8082111561152157600080fd5b61152d87838801611436565b945060209150818601358181111561154457600080fd5b61155088828901611436565b9450506040808701358281111561156657600080fd5b8701601f8101891361157757600080fd5b803561158561145782611412565b81815260059190911b8201850190858101908b8311156115a457600080fd5b8684015b83811015611618578035878111156115c05760008081fd5b8501603f81018e136115d25760008081fd5b888101356115e2611457826114ae565b8181528f898385010111156115f75760008081fd5b818984018c83013760009181018b01919091528452509187019187016115a8565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561167457818101518382015260200161165c565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b8281101561172d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452815180518088526116f081888a01898501611659565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016969096018501955092840192908401906001016116ab565b509398975050505050505050565b6000602080838503121561174e57600080fd5b825167ffffffffffffffff8082111561176657600080fd5b818501915085601f83011261177a57600080fd5b815161178861145782611412565b81815260059190911b830184019084810190888311156117a757600080fd5b8585015b8381101561181b578051858111156117c35760008081fd5b8601603f81018b136117d55760008081fd5b8781015160406117e7611457836114ae565b8281528d828486010111156117fc5760008081fd5b61180b838c8301848701611659565b86525050509186019186016117ab565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126118a657600080fd5b830160208101925035905067ffffffffffffffff8111156118c657600080fd5b80360382131561118f57600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b87811015611958577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018352611939828a611871565b611944878284611828565b965050509183019190830190600101611900565b509298975050505050505050565b60006020828403121561197857600080fd5b5051919050565b600061198b8283611871565b6040855261199d604086018284611828565b9150506119ad6020840184611871565b85830360208701526119c0838284611828565b9695505050505050565b6040815260006119dd604083018661197f565b82810360208401526119c0818587611828565b6040808252810184905260006060600586901b830181019083018783805b89811015611a90577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112611a6e578283fd5b611a7a868d830161197f565b9550506020938401939290920191600101611a0e565b505050508281036020840152611aa7818587611828565b97965050505050505056fea26469706673582212200b39cb1d4ed27a99075eb0ba2bd0956359096764fc5d36462a8d461ef0c3820864736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\xC0W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0tW\x80c\xD0\xF2\xD8\xAC\x11a\0NW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x11W\x80c\xE5\x13^\xC6\x14a\x021W\x80c\xF2\xFD\xE3\x8B\x14a\x02QW`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01nW\x80c\x94V\xFB\xCC\x14a\x01\xC4W\x80c\xABW&P\x14a\x01\xE4W`\0\x80\xFD[\x80cc\xFB\x0B\x96\x11a\0\xA5W\x80cc\xFB\x0B\x96\x14a\x01\x0EW\x80ci\r\x83 \x14a\x01.W\x80c\x89\xA3\xF16\x14a\x01NW`\0\x80\xFD[\x80cX]\xA6(\x14a\0\xCCW\x80c\\\x8F\x9B\xF6\x14a\0\xEEW`\0\x80\xFD[6a\0\xC7W\0[`\0\x80\xFD[4\x80\x15a\0\xD8W`\0\x80\xFD[Pa\0\xECa\0\xE76`\x04a\x11\xD8V[a\x02qV[\0[4\x80\x15a\0\xFAW`\0\x80\xFD[Pa\0\xECa\x01\t6`\x04a\x12fV[a\x05\x06V[4\x80\x15a\x01\x1AW`\0\x80\xFD[Pa\0\xECa\x01)6`\x04a\x12\x8AV[a\x06'V[4\x80\x15a\x01:W`\0\x80\xFD[Pa\0\xECa\x01I6`\x04a\x12fV[a\x08GV[4\x80\x15a\x01ZW`\0\x80\xFD[Pa\0\xECa\x01i6`\x04a\x12fV[a\x08\xD5V[4\x80\x15a\x01zW`\0\x80\xFD[P`\0Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xD0W`\0\x80\xFD[Pa\0\xECa\x01\xDF6`\x04a\x12\xEAV[a\n\xB8V[4\x80\x15a\x01\xF0W`\0\x80\xFD[P`\x02Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\0\xECa\x02,6`\x04a\x13#V[a\x0B\xEBV[4\x80\x15a\x02=W`\0\x80\xFD[Pa\0\xECa\x02L6`\x04a\x11\xD8V[a\x0C\xC0V[4\x80\x15a\x02]W`\0\x80\xFD[Pa\0\xECa\x02l6`\x04a\x12fV[a\r\xA1V[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02\xC2W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02\xD2\x84\x86\x01\x86a\x14\xF4V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x03pWa\x03h\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03;Wa\x03;a\x16*V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0E\x92\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02\xDBV[P`\0[\x82Q\x81\x10\x15a\x03\xD9W`\x02T\x83Qa\x03\xD1\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x85\x90\x81\x10a\x03;Wa\x03;a\x16*V[`\x01\x01a\x03tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x04n\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x16}V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\x8DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xD3\x91\x90\x81\x01\x90a\x17;V[PG\x15a\x04\xFDW`\x02Ta\x04\xFD\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16Ga\x0FgV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x82R\x90\x92\x16` \x83\x01R\x7F?Gi\xCBf\xE4,\x90\x99\x80\x90'}]r\xEEh>\xF1v\xA1\xF5o\xB1\x852\x8FUJ*\xB7\xDC\x91\x01`@Q\x80\x91\x03\x90\xA1`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0[\x83\x81\x10\x15a\x07DWa\x07<\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x07\nWa\x07\na\x16*V[\x90P` \x02\x01` \x81\x01\x90a\x07\x1F\x91\x90a\x12fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0E\x92V[`\x01\x01a\x06\xABV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x07\xDB\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x18\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x08@\x91\x90\x81\x01\x90a\x17;V[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xC8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[a\x08\xD2\x81Ga\x10\x06V[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\tVW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xE3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x07\x91\x90a\x19fV[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\n\xA6W=`\0\x80>=`\0\xFD[PPPPa\n\xB4\x82Ga\x10\x06V[PPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\n\xB4\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xA9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xCD\x91\x90a\x19fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x10{V[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C8W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\r3X\x84\x90a\x0C\x92\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x19\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\xACW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xFDW=`\0\x80>=`\0\xFD[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\r\rW`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x13\xFBr\xC7\x90a\ri\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x19\xF0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\x97W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0E\"W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x0F\xC1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0F\xC6V[``\x91P[PP\x90P\x80a\x10\x01W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x10\x01W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80\x83`\x1F\x84\x01\x12a\x11\\W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11tW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x11\xA8W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xC0W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x11\xEEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\x06W`\0\x80\xFD[a\x12\x12\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12+W`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xD2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12xW`\0\x80\xFD[\x815a\x12\x83\x81a\x12DV[\x93\x92PPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x12\xA0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\xB8W`\0\x80\xFD[a\x12\xC4\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12\xDDW`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11JV[`\0\x80`@\x83\x85\x03\x12\x15a\x12\xFDW`\0\x80\xFD[\x825a\x13\x08\x81a\x12DV[\x91P` \x83\x015a\x13\x18\x81a\x12DV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x138W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13PW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x13dW`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x13zW`\0\x80\xFD[Pa\x13\x87\x86\x82\x87\x01a\x11\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x14\nWa\x14\na\x13\x94V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14,Wa\x14,a\x13\x94V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x14GW`\0\x80\xFD[\x815` a\x14\\a\x14W\x83a\x14\x12V[a\x13\xC3V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x14~W`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x14\xA3W\x805a\x14\x96\x81a\x12DV[\x83R\x91\x83\x01\x91\x83\x01a\x14\x83V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14\xC8Wa\x14\xC8a\x13\x94V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15\tW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15!W`\0\x80\xFD[a\x15-\x87\x83\x88\x01a\x146V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x15DW`\0\x80\xFD[a\x15P\x88\x82\x89\x01a\x146V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x15fW`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x15wW`\0\x80\xFD[\x805a\x15\x85a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x15\xA4W`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x16\x18W\x805\x87\x81\x11\x15a\x15\xC0W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x15\xD2W`\0\x80\x81\xFD[\x88\x81\x015a\x15\xE2a\x14W\x82a\x14\xAEV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x15\xF7W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x15\xA8V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x16tW\x81\x81\x01Q\x83\x82\x01R` \x01a\x16\\V[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x17-W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x16\xF0\x81\x88\x8A\x01\x89\x85\x01a\x16YV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x16\xABV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17NW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x17fW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x17zW`\0\x80\xFD[\x81Qa\x17\x88a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x17\xA7W`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x18\x1BW\x80Q\x85\x81\x11\x15a\x17\xC3W`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x17\xD5W`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x17\xE7a\x14W\x83a\x14\xAEV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x17\xFCW`\0\x80\x81\xFD[a\x18\x0B\x83\x8C\x83\x01\x84\x87\x01a\x16YV[\x86RPPP\x91\x86\x01\x91\x86\x01a\x17\xABV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x18\xA6W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x18\xC6W`\0\x80\xFD[\x806\x03\x82\x13\x15a\x11\x8FW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x19XW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x199\x82\x8Aa\x18qV[a\x19D\x87\x82\x84a\x18(V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x19\0V[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x19xW`\0\x80\xFD[PQ\x91\x90PV[`\0a\x19\x8B\x82\x83a\x18qV[`@\x85Ra\x19\x9D`@\x86\x01\x82\x84a\x18(V[\x91PPa\x19\xAD` \x84\x01\x84a\x18qV[\x85\x83\x03` \x87\x01Ra\x19\xC0\x83\x82\x84a\x18(V[\x96\x95PPPPPPV[`@\x81R`\0a\x19\xDD`@\x83\x01\x86a\x19\x7FV[\x82\x81\x03` \x84\x01Ra\x19\xC0\x81\x85\x87a\x18(V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x1A\x90W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x1AnW\x82\x83\xFD[a\x1Az\x86\x8D\x83\x01a\x19\x7FV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x1A\x0EV[PPPP\x82\x81\x03` \x84\x01Ra\x1A\xA7\x81\x85\x87a\x18(V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 \x0B9\xCB\x1DN\xD2z\x99\x07^\xB0\xBA+\xD0\x95cY\tgd\xFC]6F*\x8DF\x1E\xF0\xC3\x82\x08dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `CallerNotWhitelisted()` and selector `0x8c6e5d71`. +```solidity +error CallerNotWhitelisted(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct CallerNotWhitelisted {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: CallerNotWhitelisted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for CallerNotWhitelisted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for CallerNotWhitelisted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "CallerNotWhitelisted()"; + const SELECTOR: [u8; 4] = [140u8, 110u8, 93u8, 113u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `MsgSenderNotReactor()` and selector `0x933fe52f`. +```solidity +error MsgSenderNotReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MsgSenderNotReactor {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MsgSenderNotReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MsgSenderNotReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for MsgSenderNotReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MsgSenderNotReactor()"; + const SELECTOR: [u8; 4] = [147u8, 63u8, 229u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ReactorChanged(address,address)` and selector `0x3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc`. +```solidity +event ReactorChanged(address newReactor, address oldReactor); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ReactorChanged { + #[allow(missing_docs)] + pub newReactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub oldReactor: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ReactorChanged { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ReactorChanged(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 63u8, + 71u8, + 105u8, + 203u8, + 102u8, + 228u8, + 44u8, + 144u8, + 153u8, + 128u8, + 144u8, + 39u8, + 125u8, + 93u8, + 114u8, + 238u8, + 104u8, + 62u8, + 241u8, + 118u8, + 161u8, + 245u8, + 111u8, + 177u8, + 133u8, + 50u8, + 143u8, + 85u8, + 74u8, + 42u8, + 183u8, + 220u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + newReactor: data.0, + oldReactor: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.newReactor, + ), + ::tokenize( + &self.oldReactor, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ReactorChanged { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ReactorChanged> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &ReactorChanged) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address[] _whitelistedCallers, address _reactor, address _owner, address _swapRouter02); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _whitelistedCallers: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + pub _reactor: alloy::sol_types::private::Address, + pub _owner: alloy::sol_types::private::Address, + pub _swapRouter02: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + ( + value._whitelistedCallers, + value._reactor, + value._owner, + value._swapRouter02, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _whitelistedCallers: tuple.0, + _reactor: tuple.1, + _owner: tuple.2, + _swapRouter02: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._whitelistedCallers), + ::tokenize( + &self._reactor, + ), + ::tokenize( + &self._owner, + ), + ::tokenize( + &self._swapRouter02, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes),bytes)` and selector `0xd0f2d8ac`. +```solidity +function execute(SignedOrder memory order, bytes memory callbackData) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`execute((bytes,bytes),bytes)`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + SignedOrder, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder, alloy::sol_types::sol_data::Bytes); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes),bytes)"; + const SELECTOR: [u8; 4] = [208u8, 242u8, 216u8, 172u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[],bytes)` and selector `0xe5135ec6`. +```solidity +function executeBatch(SignedOrder[] memory orders, bytes memory callbackData) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[],bytes)`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[],bytes)"; + const SELECTOR: [u8; 4] = [229u8, 19u8, 94u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `multicall(address[],bytes[])` and selector `0x63fb0b96`. +```solidity +function multicall(address[] memory tokensToApprove, bytes[] memory multicallData) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct multicallCall { + pub tokensToApprove: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + pub multicallData: alloy::sol_types::private::Vec< + alloy::sol_types::private::Bytes, + >, + } + ///Container type for the return parameters of the [`multicall(address[],bytes[])`](multicallCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct multicallReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: multicallCall) -> Self { + (value.tokensToApprove, value.multicallData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for multicallCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + tokensToApprove: tuple.0, + multicallData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: multicallReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for multicallReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for multicallCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = multicallReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "multicall(address[],bytes[])"; + const SELECTOR: [u8; 4] = [99u8, 251u8, 11u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.tokensToApprove), + as alloy_sol_types::SolType>::tokenize(&self.multicallData), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `reactor()` and selector `0xab572650`. +```solidity +function reactor() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCall {} + ///Container type for the return parameters of the [`reactor()`](reactorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: reactorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for reactorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: reactorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for reactorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for reactorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = reactorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "reactor()"; + const SELECTOR: [u8; 4] = [171u8, 87u8, 38u8, 80u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628`. +```solidity +function reactorCallback(ResolvedOrder[] memory, bytes memory callbackData) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackCall { + pub _0: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackCall) -> Self { + (value._0, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for reactorCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for reactorCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for reactorCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = reactorCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)"; + const SELECTOR: [u8; 4] = [88u8, 93u8, 166u8, 40u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `unwrapWETH(address)` and selector `0x89a3f136`. +```solidity +function unwrapWETH(address recipient) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unwrapWETHCall { + pub recipient: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`unwrapWETH(address)`](unwrapWETHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unwrapWETHReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unwrapWETHCall) -> Self { + (value.recipient,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unwrapWETHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { recipient: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unwrapWETHReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unwrapWETHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unwrapWETHCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unwrapWETHReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unwrapWETH(address)"; + const SELECTOR: [u8; 4] = [137u8, 163u8, 241u8, 54u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `updateReactor(address)` and selector `0x5c8f9bf6`. +```solidity +function updateReactor(address _reactor) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateReactorCall { + pub _reactor: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`updateReactor(address)`](updateReactorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct updateReactorReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateReactorCall) -> Self { + (value._reactor,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateReactorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _reactor: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: updateReactorReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for updateReactorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for updateReactorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = updateReactorReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "updateReactor(address)"; + const SELECTOR: [u8; 4] = [92u8, 143u8, 155u8, 246u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._reactor, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `withdrawERC20(address,address)` and selector `0x9456fbcc`. +```solidity +function withdrawERC20(address token, address to) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawERC20Call { + pub token: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`withdrawERC20(address,address)`](withdrawERC20Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawERC20Return {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawERC20Call) -> Self { + (value.token, value.to) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawERC20Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + to: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawERC20Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawERC20Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawERC20Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawERC20Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdrawERC20(address,address)"; + const SELECTOR: [u8; 4] = [148u8, 86u8, 251u8, 204u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + ::tokenize( + &self.to, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `withdrawETH(address)` and selector `0x690d8320`. +```solidity +function withdrawETH(address recipient) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawETHCall { + pub recipient: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`withdrawETH(address)`](withdrawETHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawETHReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawETHCall) -> Self { + (value.recipient,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawETHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { recipient: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawETHReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawETHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawETHCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawETHReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdrawETH(address)"; + const SELECTOR: [u8; 4] = [105u8, 13u8, 131u8, 32u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`MultiFillerSwapRouter02Executor`](self) function calls. + pub enum MultiFillerSwapRouter02ExecutorCalls { + execute(executeCall), + executeBatch(executeBatchCall), + multicall(multicallCall), + owner(ownerCall), + reactor(reactorCall), + reactorCallback(reactorCallbackCall), + transferOwnership(transferOwnershipCall), + unwrapWETH(unwrapWETHCall), + updateReactor(updateReactorCall), + withdrawERC20(withdrawERC20Call), + withdrawETH(withdrawETHCall), + } + #[automatically_derived] + impl MultiFillerSwapRouter02ExecutorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [88u8, 93u8, 166u8, 40u8], + [92u8, 143u8, 155u8, 246u8], + [99u8, 251u8, 11u8, 150u8], + [105u8, 13u8, 131u8, 32u8], + [137u8, 163u8, 241u8, 54u8], + [141u8, 165u8, 203u8, 91u8], + [148u8, 86u8, 251u8, 204u8], + [171u8, 87u8, 38u8, 80u8], + [208u8, 242u8, 216u8, 172u8], + [229u8, 19u8, 94u8, 198u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MultiFillerSwapRouter02ExecutorCalls { + const NAME: &'static str = "MultiFillerSwapRouter02ExecutorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 11usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::multicall(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::reactor(_) => ::SELECTOR, + Self::reactorCallback(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::unwrapWETH(_) => { + ::SELECTOR + } + Self::updateReactor(_) => { + ::SELECTOR + } + Self::withdrawERC20(_) => { + ::SELECTOR + } + Self::withdrawETH(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn reactorCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiFillerSwapRouter02ExecutorCalls::reactorCallback) + } + reactorCallback + }, + { + fn updateReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiFillerSwapRouter02ExecutorCalls::updateReactor) + } + updateReactor + }, + { + fn multicall( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiFillerSwapRouter02ExecutorCalls::multicall) + } + multicall + }, + { + fn withdrawETH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiFillerSwapRouter02ExecutorCalls::withdrawETH) + } + withdrawETH + }, + { + fn unwrapWETH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiFillerSwapRouter02ExecutorCalls::unwrapWETH) + } + unwrapWETH + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiFillerSwapRouter02ExecutorCalls::owner) + } + owner + }, + { + fn withdrawERC20( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiFillerSwapRouter02ExecutorCalls::withdrawERC20) + } + withdrawERC20 + }, + { + fn reactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiFillerSwapRouter02ExecutorCalls::reactor) + } + reactor + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiFillerSwapRouter02ExecutorCalls::execute) + } + execute + }, + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiFillerSwapRouter02ExecutorCalls::executeBatch) + } + executeBatch + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(MultiFillerSwapRouter02ExecutorCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::multicall(inner) => { + ::abi_encoded_size(inner) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::reactor(inner) => { + ::abi_encoded_size(inner) + } + Self::reactorCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::unwrapWETH(inner) => { + ::abi_encoded_size(inner) + } + Self::updateReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::withdrawERC20(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::withdrawETH(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::multicall(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::reactor(inner) => { + ::abi_encode_raw(inner, out) + } + Self::reactorCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::unwrapWETH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::updateReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawERC20(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawETH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MultiFillerSwapRouter02Executor`](self) custom errors. + pub enum MultiFillerSwapRouter02ExecutorErrors { + CallerNotWhitelisted(CallerNotWhitelisted), + MsgSenderNotReactor(MsgSenderNotReactor), + NativeTransferFailed(NativeTransferFailed), + } + #[automatically_derived] + impl MultiFillerSwapRouter02ExecutorErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [140u8, 110u8, 93u8, 113u8], + [147u8, 63u8, 229u8, 47u8], + [244u8, 179u8, 177u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for MultiFillerSwapRouter02ExecutorErrors { + const NAME: &'static str = "MultiFillerSwapRouter02ExecutorErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::CallerNotWhitelisted(_) => { + ::SELECTOR + } + Self::MsgSenderNotReactor(_) => { + ::SELECTOR + } + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn CallerNotWhitelisted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + MultiFillerSwapRouter02ExecutorErrors::CallerNotWhitelisted, + ) + } + CallerNotWhitelisted + }, + { + fn MsgSenderNotReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + MultiFillerSwapRouter02ExecutorErrors::MsgSenderNotReactor, + ) + } + MsgSenderNotReactor + }, + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map( + MultiFillerSwapRouter02ExecutorErrors::NativeTransferFailed, + ) + } + NativeTransferFailed + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::CallerNotWhitelisted(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::MsgSenderNotReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::CallerNotWhitelisted(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::MsgSenderNotReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`MultiFillerSwapRouter02Executor`](self) events. + pub enum MultiFillerSwapRouter02ExecutorEvents { + OwnershipTransferred(OwnershipTransferred), + ReactorChanged(ReactorChanged), + } + #[automatically_derived] + impl MultiFillerSwapRouter02ExecutorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 63u8, + 71u8, + 105u8, + 203u8, + 102u8, + 228u8, + 44u8, + 144u8, + 153u8, + 128u8, + 144u8, + 39u8, + 125u8, + 93u8, + 114u8, + 238u8, + 104u8, + 62u8, + 241u8, + 118u8, + 161u8, + 245u8, + 111u8, + 177u8, + 133u8, + 50u8, + 143u8, + 85u8, + 74u8, + 42u8, + 183u8, + 220u8, + ], + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for MultiFillerSwapRouter02ExecutorEvents { + const NAME: &'static str = "MultiFillerSwapRouter02ExecutorEvents"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ReactorChanged) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData + for MultiFillerSwapRouter02ExecutorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ReactorChanged(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ReactorChanged(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`MultiFillerSwapRouter02Executor`](self) contract instance. + +See the [wrapper's documentation](`MultiFillerSwapRouter02ExecutorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> MultiFillerSwapRouter02ExecutorInstance { + MultiFillerSwapRouter02ExecutorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _whitelistedCallers: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + _reactor: alloy::sol_types::private::Address, + _owner: alloy::sol_types::private::Address, + _swapRouter02: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + MultiFillerSwapRouter02ExecutorInstance::< + T, + P, + N, + >::deploy(provider, _whitelistedCallers, _reactor, _owner, _swapRouter02) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _whitelistedCallers: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + _reactor: alloy::sol_types::private::Address, + _owner: alloy::sol_types::private::Address, + _swapRouter02: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + MultiFillerSwapRouter02ExecutorInstance::< + T, + P, + N, + >::deploy_builder(provider, _whitelistedCallers, _reactor, _owner, _swapRouter02) + } + /**A [`MultiFillerSwapRouter02Executor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`MultiFillerSwapRouter02Executor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct MultiFillerSwapRouter02ExecutorInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug + for MultiFillerSwapRouter02ExecutorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("MultiFillerSwapRouter02ExecutorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MultiFillerSwapRouter02ExecutorInstance { + /**Creates a new wrapper around an on-chain [`MultiFillerSwapRouter02Executor`](self) contract instance. + +See the [wrapper's documentation](`MultiFillerSwapRouter02ExecutorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _whitelistedCallers: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + _reactor: alloy::sol_types::private::Address, + _owner: alloy::sol_types::private::Address, + _swapRouter02: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _whitelistedCallers, + _reactor, + _owner, + _swapRouter02, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _whitelistedCallers: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + _reactor: alloy::sol_types::private::Address, + _owner: alloy::sol_types::private::Address, + _swapRouter02: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _whitelistedCallers, + _reactor, + _owner, + _swapRouter02, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl< + T, + P: ::core::clone::Clone, + N, + > MultiFillerSwapRouter02ExecutorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> MultiFillerSwapRouter02ExecutorInstance { + MultiFillerSwapRouter02ExecutorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MultiFillerSwapRouter02ExecutorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order, callbackData }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeBatchCall { + orders, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`multicall`] function. + pub fn multicall( + &self, + tokensToApprove: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + multicallData: alloy::sol_types::private::Vec< + alloy::sol_types::private::Bytes, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &multicallCall { + tokensToApprove, + multicallData, + }, + ) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`reactor`] function. + pub fn reactor(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&reactorCall {}) + } + ///Creates a new call builder for the [`reactorCallback`] function. + pub fn reactorCallback( + &self, + _0: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &reactorCallbackCall { + _0, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`unwrapWETH`] function. + pub fn unwrapWETH( + &self, + recipient: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&unwrapWETHCall { recipient }) + } + ///Creates a new call builder for the [`updateReactor`] function. + pub fn updateReactor( + &self, + _reactor: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&updateReactorCall { _reactor }) + } + ///Creates a new call builder for the [`withdrawERC20`] function. + pub fn withdrawERC20( + &self, + token: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawERC20Call { token, to }) + } + ///Creates a new call builder for the [`withdrawETH`] function. + pub fn withdrawETH( + &self, + recipient: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawETHCall { recipient }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > MultiFillerSwapRouter02ExecutorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ReactorChanged`] event. + pub fn ReactorChanged_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/nonlinear_dutch_decay_lib.rs b/crates/bindings-uniswapx/src/nonlinear_dutch_decay_lib.rs deleted file mode 100644 index 87617a6..0000000 --- a/crates/bindings-uniswapx/src/nonlinear_dutch_decay_lib.rs +++ /dev/null @@ -1,150 +0,0 @@ -pub use nonlinear_dutch_decay_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod nonlinear_dutch_decay_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("InvalidDecayCurve"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidDecayCurve"), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static NONLINEARDUTCHDECAYLIB_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xD9C\xB6v\xAF5\xB2\xE4\xE6_?\xE8\xA9\x0Fb \xA1n\xF0\x7F\xB6\x9F\xF4\xDF\xE5B\x08o+\xF28\xF2dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static NONLINEARDUTCHDECAYLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xD9C\xB6v\xAF5\xB2\xE4\xE6_?\xE8\xA9\x0Fb \xA1n\xF0\x7F\xB6\x9F\xF4\xDF\xE5B\x08o+\xF28\xF2dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static NONLINEARDUTCHDECAYLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct NonlinearDutchDecayLib(::ethers::contract::Contract); - impl ::core::clone::Clone for NonlinearDutchDecayLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for NonlinearDutchDecayLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for NonlinearDutchDecayLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for NonlinearDutchDecayLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(NonlinearDutchDecayLib)) - .field(&self.address()) - .finish() - } - } - impl NonlinearDutchDecayLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - NONLINEARDUTCHDECAYLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - NONLINEARDUTCHDECAYLIB_ABI.clone(), - NONLINEARDUTCHDECAYLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for NonlinearDutchDecayLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `InvalidDecayCurve` with signature `InvalidDecayCurve()` and selector `0x0e996766` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidDecayCurve", abi = "InvalidDecayCurve()")] - pub struct InvalidDecayCurve; -} diff --git a/crates/bindings-uniswapx/src/nonlineardutchdecaylib.rs b/crates/bindings-uniswapx/src/nonlineardutchdecaylib.rs new file mode 100644 index 0000000..ac28cc7 --- /dev/null +++ b/crates/bindings-uniswapx/src/nonlineardutchdecaylib.rs @@ -0,0 +1,381 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface NonlinearDutchDecayLib { + error InvalidDecayCurve(); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "error", + "name": "InvalidDecayCurve", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod NonlinearDutchDecayLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073e8454d043c4efd1a7cad7946aa7e5dd5c8fc017b17f52cb7b4317d1fc8662f64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 s\xE8EM\x04 = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidDecayCurve) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidDecayCurve { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidDecayCurve { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidDecayCurve()"; + const SELECTOR: [u8; 4] = [14u8, 153u8, 103u8, 102u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + ///Container for all the [`NonlinearDutchDecayLib`](self) custom errors. + pub enum NonlinearDutchDecayLibErrors { + InvalidDecayCurve(InvalidDecayCurve), + } + #[automatically_derived] + impl NonlinearDutchDecayLibErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[14u8, 153u8, 103u8, 102u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for NonlinearDutchDecayLibErrors { + const NAME: &'static str = "NonlinearDutchDecayLibErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InvalidDecayCurve(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn InvalidDecayCurve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(NonlinearDutchDecayLibErrors::InvalidDecayCurve) + } + InvalidDecayCurve + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InvalidDecayCurve(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::InvalidDecayCurve(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`NonlinearDutchDecayLib`](self) contract instance. + +See the [wrapper's documentation](`NonlinearDutchDecayLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> NonlinearDutchDecayLibInstance { + NonlinearDutchDecayLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + NonlinearDutchDecayLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + NonlinearDutchDecayLibInstance::::deploy_builder(provider) + } + /**A [`NonlinearDutchDecayLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`NonlinearDutchDecayLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct NonlinearDutchDecayLibInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for NonlinearDutchDecayLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("NonlinearDutchDecayLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > NonlinearDutchDecayLibInstance { + /**Creates a new wrapper around an on-chain [`NonlinearDutchDecayLib`](self) contract instance. + +See the [wrapper's documentation](`NonlinearDutchDecayLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl NonlinearDutchDecayLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> NonlinearDutchDecayLibInstance { + NonlinearDutchDecayLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > NonlinearDutchDecayLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > NonlinearDutchDecayLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/order_info_builder.rs b/crates/bindings-uniswapx/src/order_info_builder.rs deleted file mode 100644 index d92b7f0..0000000 --- a/crates/bindings-uniswapx/src/order_info_builder.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use order_info_builder::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod order_info_builder { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ORDERINFOBUILDER_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 [\x14\xA9\x16\xB1\xF76\x12>-T\xAC\xA8\x96\x9B\xEArr\xF4\xDEg\xAE\xD1}\xFB M\xA6\x04.\xA1\x19dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static ORDERINFOBUILDER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 [\x14\xA9\x16\xB1\xF76\x12>-T\xAC\xA8\x96\x9B\xEArr\xF4\xDEg\xAE\xD1}\xFB M\xA6\x04.\xA1\x19dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static ORDERINFOBUILDER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct OrderInfoBuilder(::ethers::contract::Contract); - impl ::core::clone::Clone for OrderInfoBuilder { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for OrderInfoBuilder { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for OrderInfoBuilder { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for OrderInfoBuilder { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(OrderInfoBuilder)) - .field(&self.address()) - .finish() - } - } - impl OrderInfoBuilder { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - ORDERINFOBUILDER_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - ORDERINFOBUILDER_ABI.clone(), - ORDERINFOBUILDER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for OrderInfoBuilder { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/order_info_lib.rs b/crates/bindings-uniswapx/src/order_info_lib.rs deleted file mode 100644 index 662811d..0000000 --- a/crates/bindings-uniswapx/src/order_info_lib.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use order_info_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod order_info_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ORDERINFOLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xCA\xB1#\xF4\x96\xC8sV&\xE9\xB5\xE7Mv\xEC- vH\x93\xB8\xD4@Ke\x9A3\x1D\xA10e\x1BdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static ORDERINFOLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xCA\xB1#\xF4\x96\xC8sV&\xE9\xB5\xE7Mv\xEC- vH\x93\xB8\xD4@Ke\x9A3\x1D\xA10e\x1BdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static ORDERINFOLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct OrderInfoLib(::ethers::contract::Contract); - impl ::core::clone::Clone for OrderInfoLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for OrderInfoLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for OrderInfoLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for OrderInfoLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(OrderInfoLib)) - .field(&self.address()) - .finish() - } - } - impl OrderInfoLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - ORDERINFOLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - ORDERINFOLIB_ABI.clone(), - ORDERINFOLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for OrderInfoLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/order_quoter.rs b/crates/bindings-uniswapx/src/order_quoter.rs deleted file mode 100644 index c6e5ac5..0000000 --- a/crates/bindings-uniswapx/src/order_quoter.rs +++ /dev/null @@ -1,510 +0,0 @@ -pub use order_quoter::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod order_quoter { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("getReactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getReactor"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("reactor"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IReactor"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("quote"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("quote"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("sig"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("result"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("reactorCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("reactorCallback"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("resolvedOrders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, - }, - ], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("OrdersLengthIncorrect"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "OrdersLengthIncorrect", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ORDERQUOTER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\r\xA6\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cA\xD8\x8Di\x14a\0CW\x80cX]\xA6(\x14a\0lW\x80cvq\xD0{\x14a\0\x81W[_\x80\xFD[a\0Va\0Q6`\x04a\x04\xA8V[a\0\xC2V[`@Qa\0c\x91\x90a\x05\xDCV[`@Q\x80\x91\x03\x90\xF3[a\0\x7Fa\0z6`\x04a\x08\xC4V[a\x02\x18V[\0[a\0\x9Da\0\x8F6`\x04a\n*V[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R_\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAA\x92\x91`\x04\x01a\ndV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC1W_\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xD2WP`\x01[a\x02\x12W=\x80\x80\x15a\x01\xFFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xFE\xB5\x9B\x92\xB026\x10F\xE1\x83\xA9\x95\xBD\xE7X(\x86\xEC\x94\x98\x99\x0F{vt\xB9\xC2\x17\xF8\xB1kdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static ORDERQUOTER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cA\xD8\x8Di\x14a\0CW\x80cX]\xA6(\x14a\0lW\x80cvq\xD0{\x14a\0\x81W[_\x80\xFD[a\0Va\0Q6`\x04a\x04\xA8V[a\0\xC2V[`@Qa\0c\x91\x90a\x05\xDCV[`@Q\x80\x91\x03\x90\xF3[a\0\x7Fa\0z6`\x04a\x08\xC4V[a\x02\x18V[\0[a\0\x9Da\0\x8F6`\x04a\n*V[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R_\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAA\x92\x91`\x04\x01a\ndV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC1W_\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xD2WP`\x01[a\x02\x12W=\x80\x80\x15a\x01\xFFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xFE\xB5\x9B\x92\xB026\x10F\xE1\x83\xA9\x95\xBD\xE7X(\x86\xEC\x94\x98\x99\x0F{vt\xB9\xC2\x17\xF8\xB1kdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static ORDERQUOTER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct OrderQuoter(::ethers::contract::Contract); - impl ::core::clone::Clone for OrderQuoter { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for OrderQuoter { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for OrderQuoter { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for OrderQuoter { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(OrderQuoter)) - .field(&self.address()) - .finish() - } - } - impl OrderQuoter { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - ORDERQUOTER_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - ORDERQUOTER_ABI.clone(), - ORDERQUOTER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `getReactor` (0x7671d07b) function - pub fn get_reactor( - &self, - order: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([118, 113, 208, 123], order) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `quote` (0x41d88d69) function - pub fn quote( - &self, - order: ::ethers::core::types::Bytes, - sig: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([65, 216, 141, 105], (order, sig)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `reactorCallback` (0x585da628) function - pub fn reactor_callback( - &self, - resolved_orders: ::std::vec::Vec, - p1: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([88, 93, 166, 40], (resolved_orders, p1)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for OrderQuoter { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `OrdersLengthIncorrect` with signature `OrdersLengthIncorrect()` and selector `0x06ee9878` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "OrdersLengthIncorrect", abi = "OrdersLengthIncorrect()")] - pub struct OrdersLengthIncorrect; - ///Container type for all input parameters for the `getReactor` function with signature `getReactor(bytes)` and selector `0x7671d07b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "getReactor", abi = "getReactor(bytes)")] - pub struct GetReactorCall { - pub order: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `quote` function with signature `quote(bytes,bytes)` and selector `0x41d88d69` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "quote", abi = "quote(bytes,bytes)")] - pub struct QuoteCall { - pub order: ::ethers::core::types::Bytes, - pub sig: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `reactorCallback` function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "reactorCallback", - abi = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)" - )] - pub struct ReactorCallbackCall { - pub resolved_orders: ::std::vec::Vec, - pub p1: ::ethers::core::types::Bytes, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum OrderQuoterCalls { - GetReactor(GetReactorCall), - Quote(QuoteCall), - ReactorCallback(ReactorCallbackCall), - } - impl ::ethers::core::abi::AbiDecode for OrderQuoterCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::GetReactor(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Quote(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ReactorCallback(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for OrderQuoterCalls { - fn encode(self) -> Vec { - match self { - Self::GetReactor(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Quote(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ReactorCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for OrderQuoterCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::GetReactor(element) => ::core::fmt::Display::fmt(element, f), - Self::Quote(element) => ::core::fmt::Display::fmt(element, f), - Self::ReactorCallback(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for OrderQuoterCalls { - fn from(value: GetReactorCall) -> Self { - Self::GetReactor(value) - } - } - impl ::core::convert::From for OrderQuoterCalls { - fn from(value: QuoteCall) -> Self { - Self::Quote(value) - } - } - impl ::core::convert::From for OrderQuoterCalls { - fn from(value: ReactorCallbackCall) -> Self { - Self::ReactorCallback(value) - } - } - ///Container type for all return fields from the `getReactor` function with signature `getReactor(bytes)` and selector `0x7671d07b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct GetReactorReturn { - pub reactor: ::ethers::core::types::Address, - } - ///Container type for all return fields from the `quote` function with signature `quote(bytes,bytes)` and selector `0x41d88d69` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct QuoteReturn { - pub result: ResolvedOrder, - } -} diff --git a/crates/bindings-uniswapx/src/orderinfobuilder.rs b/crates/bindings-uniswapx/src/orderinfobuilder.rs new file mode 100644 index 0000000..3dd2793 --- /dev/null +++ b/crates/bindings-uniswapx/src/orderinfobuilder.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface OrderInfoBuilder {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod OrderInfoBuilder { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122037e19c9c70d71ae5be891143bec1fbeeb48269c10abd4a21cb3c604500d6775d64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 7\xE1\x9C\x9Cp\xD7\x1A\xE5\xBE\x89\x11C\xBE\xC1\xFB\xEE\xB4\x82i\xC1\n\xBDJ!\xCB<`E\0\xD6w]dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122037e19c9c70d71ae5be891143bec1fbeeb48269c10abd4a21cb3c604500d6775d64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 7\xE1\x9C\x9Cp\xD7\x1A\xE5\xBE\x89\x11C\xBE\xC1\xFB\xEE\xB4\x82i\xC1\n\xBDJ!\xCB<`E\0\xD6w]dsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`OrderInfoBuilder`](self) contract instance. + +See the [wrapper's documentation](`OrderInfoBuilderInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> OrderInfoBuilderInstance { + OrderInfoBuilderInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + OrderInfoBuilderInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + OrderInfoBuilderInstance::::deploy_builder(provider) + } + /**A [`OrderInfoBuilder`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`OrderInfoBuilder`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct OrderInfoBuilderInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for OrderInfoBuilderInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("OrderInfoBuilderInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OrderInfoBuilderInstance { + /**Creates a new wrapper around an on-chain [`OrderInfoBuilder`](self) contract instance. + +See the [wrapper's documentation](`OrderInfoBuilderInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl OrderInfoBuilderInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> OrderInfoBuilderInstance { + OrderInfoBuilderInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OrderInfoBuilderInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OrderInfoBuilderInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/orderinfolib.rs b/crates/bindings-uniswapx/src/orderinfolib.rs new file mode 100644 index 0000000..7eb6d8c --- /dev/null +++ b/crates/bindings-uniswapx/src/orderinfolib.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface OrderInfoLib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod OrderInfoLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf507c7c51e908416930d5ccdd15d04d06b5f83a6a96fe588a5ef4f7e21bec7764736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xBFP||Q\xE9\x08Ai0\xD5\xCC\xDD\x15\xD0M\x06\xB5\xF8:j\x96\xFEX\x8A^\xF4\xF7\xE2\x1B\xECwdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf507c7c51e908416930d5ccdd15d04d06b5f83a6a96fe588a5ef4f7e21bec7764736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xBFP||Q\xE9\x08Ai0\xD5\xCC\xDD\x15\xD0M\x06\xB5\xF8:j\x96\xFEX\x8A^\xF4\xF7\xE2\x1B\xECwdsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`OrderInfoLib`](self) contract instance. + +See the [wrapper's documentation](`OrderInfoLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> OrderInfoLibInstance { + OrderInfoLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + OrderInfoLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + OrderInfoLibInstance::::deploy_builder(provider) + } + /**A [`OrderInfoLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`OrderInfoLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct OrderInfoLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for OrderInfoLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("OrderInfoLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OrderInfoLibInstance { + /**Creates a new wrapper around an on-chain [`OrderInfoLib`](self) contract instance. + +See the [wrapper's documentation](`OrderInfoLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl OrderInfoLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> OrderInfoLibInstance { + OrderInfoLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OrderInfoLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OrderInfoLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/orderquoter.rs b/crates/bindings-uniswapx/src/orderquoter.rs new file mode 100644 index 0000000..7cb14fe --- /dev/null +++ b/crates/bindings-uniswapx/src/orderquoter.rs @@ -0,0 +1,2276 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface OrderQuoter { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + + error OrdersLengthIncorrect(); + + function getReactor(bytes memory order) external pure returns (address reactor); + function quote(bytes memory order, bytes memory sig) external returns (ResolvedOrder memory result); + function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) external pure; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "getReactor", + "inputs": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "quote", + "inputs": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "result", + "type": "tuple", + "internalType": "struct ResolvedOrder", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "reactorCallback", + "inputs": [ + { + "name": "resolvedOrders", + "type": "tuple[]", + "internalType": "struct ResolvedOrder[]", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "pure" + }, + { + "type": "error", + "name": "OrdersLengthIncorrect", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod OrderQuoter { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07 = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `OrdersLengthIncorrect()` and selector `0x06ee9878`. +```solidity +error OrdersLengthIncorrect(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrdersLengthIncorrect {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrdersLengthIncorrect) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrdersLengthIncorrect { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OrdersLengthIncorrect { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OrdersLengthIncorrect()"; + const SELECTOR: [u8; 4] = [6u8, 238u8, 152u8, 120u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Function with signature `getReactor(bytes)` and selector `0x7671d07b`. +```solidity +function getReactor(bytes memory order) external pure returns (address reactor); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getReactorCall { + pub order: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`getReactor(bytes)`](getReactorCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct getReactorReturn { + pub reactor: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bytes,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Bytes,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getReactorCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getReactorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: getReactorReturn) -> Self { + (value.reactor,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for getReactorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { reactor: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for getReactorCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Bytes,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = getReactorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "getReactor(bytes)"; + const SELECTOR: [u8; 4] = [118u8, 113u8, 208u8, 123u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `quote(bytes,bytes)` and selector `0x41d88d69`. +```solidity +function quote(bytes memory order, bytes memory sig) external returns (ResolvedOrder memory result); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quoteCall { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`quote(bytes,bytes)`](quoteCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct quoteReturn { + pub result: ::RustType, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quoteCall) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quoteCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (ResolvedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: quoteReturn) -> Self { + (value.result,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for quoteReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { result: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for quoteCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = quoteReturn; + type ReturnTuple<'a> = (ResolvedOrder,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "quote(bytes,bytes)"; + const SELECTOR: [u8; 4] = [65u8, 216u8, 141u8, 105u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628`. +```solidity +function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) external pure; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackCall { + pub resolvedOrders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub _1: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackCall) -> Self { + (value.resolvedOrders, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for reactorCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + resolvedOrders: tuple.0, + _1: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for reactorCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for reactorCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = reactorCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)"; + const SELECTOR: [u8; 4] = [88u8, 93u8, 166u8, 40u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.resolvedOrders), + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`OrderQuoter`](self) function calls. + pub enum OrderQuoterCalls { + getReactor(getReactorCall), + quote(quoteCall), + reactorCallback(reactorCallbackCall), + } + #[automatically_derived] + impl OrderQuoterCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [65u8, 216u8, 141u8, 105u8], + [88u8, 93u8, 166u8, 40u8], + [118u8, 113u8, 208u8, 123u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for OrderQuoterCalls { + const NAME: &'static str = "OrderQuoterCalls"; + const MIN_DATA_LENGTH: usize = 64usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::getReactor(_) => { + ::SELECTOR + } + Self::quote(_) => ::SELECTOR, + Self::reactorCallback(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn quote( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(OrderQuoterCalls::quote) + } + quote + }, + { + fn reactorCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(OrderQuoterCalls::reactorCallback) + } + reactorCallback + }, + { + fn getReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(OrderQuoterCalls::getReactor) + } + getReactor + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::getReactor(inner) => { + ::abi_encoded_size(inner) + } + Self::quote(inner) => { + ::abi_encoded_size(inner) + } + Self::reactorCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::getReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::quote(inner) => { + ::abi_encode_raw(inner, out) + } + Self::reactorCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`OrderQuoter`](self) custom errors. + pub enum OrderQuoterErrors { + OrdersLengthIncorrect(OrdersLengthIncorrect), + } + #[automatically_derived] + impl OrderQuoterErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[6u8, 238u8, 152u8, 120u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for OrderQuoterErrors { + const NAME: &'static str = "OrderQuoterErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::OrdersLengthIncorrect(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn OrdersLengthIncorrect( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(OrderQuoterErrors::OrdersLengthIncorrect) + } + OrdersLengthIncorrect + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::OrdersLengthIncorrect(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::OrdersLengthIncorrect(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`OrderQuoter`](self) contract instance. + +See the [wrapper's documentation](`OrderQuoterInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> OrderQuoterInstance { + OrderQuoterInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + OrderQuoterInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + OrderQuoterInstance::::deploy_builder(provider) + } + /**A [`OrderQuoter`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`OrderQuoter`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct OrderQuoterInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for OrderQuoterInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("OrderQuoterInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OrderQuoterInstance { + /**Creates a new wrapper around an on-chain [`OrderQuoter`](self) contract instance. + +See the [wrapper's documentation](`OrderQuoterInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl OrderQuoterInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> OrderQuoterInstance { + OrderQuoterInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OrderQuoterInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`getReactor`] function. + pub fn getReactor( + &self, + order: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&getReactorCall { order }) + } + ///Creates a new call builder for the [`quote`] function. + pub fn quote( + &self, + order: alloy::sol_types::private::Bytes, + sig: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder("eCall { order, sig }) + } + ///Creates a new call builder for the [`reactorCallback`] function. + pub fn reactorCallback( + &self, + resolvedOrders: alloy::sol_types::private::Vec< + ::RustType, + >, + _1: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &reactorCallbackCall { + resolvedOrders, + _1, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OrderQuoterInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/outputs_builder.rs b/crates/bindings-uniswapx/src/outputs_builder.rs deleted file mode 100644 index 5d749df..0000000 --- a/crates/bindings-uniswapx/src/outputs_builder.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use outputs_builder::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod outputs_builder { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static OUTPUTSBUILDER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xD6\xC7\x0F\xBBp\x90\xFDr\x99\xCFB\xAAI\x9Cfn\x18\xF8\xADz|\x1D\xBA\x03\xF0\xEB)\xD9\xC2}\x8F.dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static OUTPUTSBUILDER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xD6\xC7\x0F\xBBp\x90\xFDr\x99\xCFB\xAAI\x9Cfn\x18\xF8\xADz|\x1D\xBA\x03\xF0\xEB)\xD9\xC2}\x8F.dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static OUTPUTSBUILDER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct OutputsBuilder(::ethers::contract::Contract); - impl ::core::clone::Clone for OutputsBuilder { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for OutputsBuilder { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for OutputsBuilder { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for OutputsBuilder { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(OutputsBuilder)) - .field(&self.address()) - .finish() - } - } - impl OutputsBuilder { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - OUTPUTSBUILDER_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - OUTPUTSBUILDER_ABI.clone(), - OUTPUTSBUILDER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for OutputsBuilder { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/outputsbuilder.rs b/crates/bindings-uniswapx/src/outputsbuilder.rs new file mode 100644 index 0000000..ee0c1e0 --- /dev/null +++ b/crates/bindings-uniswapx/src/outputsbuilder.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface OutputsBuilder {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod OutputsBuilder { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209a87c0565c863cfc5baf5b06beda674f87bd15d0faa52848f82fad617d1e231e64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9A\x87\xC0V\\\x86<\xFC[\xAF[\x06\xBE\xDAgO\x87\xBD\x15\xD0\xFA\xA5(H\xF8/\xADa}\x1E#\x1EdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209a87c0565c863cfc5baf5b06beda674f87bd15d0faa52848f82fad617d1e231e64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9A\x87\xC0V\\\x86<\xFC[\xAF[\x06\xBE\xDAgO\x87\xBD\x15\xD0\xFA\xA5(H\xF8/\xADa}\x1E#\x1EdsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`OutputsBuilder`](self) contract instance. + +See the [wrapper's documentation](`OutputsBuilderInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> OutputsBuilderInstance { + OutputsBuilderInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + OutputsBuilderInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + OutputsBuilderInstance::::deploy_builder(provider) + } + /**A [`OutputsBuilder`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`OutputsBuilder`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct OutputsBuilderInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for OutputsBuilderInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("OutputsBuilderInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OutputsBuilderInstance { + /**Creates a new wrapper around an on-chain [`OutputsBuilder`](self) contract instance. + +See the [wrapper's documentation](`OutputsBuilderInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl OutputsBuilderInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> OutputsBuilderInstance { + OutputsBuilderInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OutputsBuilderInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OutputsBuilderInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/owned.rs b/crates/bindings-uniswapx/src/owned.rs index 080b879..4f6f019 100644 --- a/crates/bindings-uniswapx/src/owned.rs +++ b/crates/bindings-uniswapx/src/owned.rs @@ -1,306 +1,854 @@ -pub use owned::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod owned { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static OWNED_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, +/** + +Generated by the following Solidity interface... +```solidity +interface Owned { + event OwnershipTransferred(address indexed user, address indexed newOwner); + + function owner() external view returns (address); + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Owned { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", ); - pub struct Owned(::ethers::contract::Contract); - impl ::core::clone::Clone for Owned { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, } - impl ::core::ops::Deref for Owned { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } } - } - impl ::core::ops::DerefMut for Owned { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } } - } - impl ::core::fmt::Debug for Owned { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Owned)).field(&self.address()).finish() + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, } - impl Owned { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - OWNED_ABI.clone(), - client, - ), - ) + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event_with_filter(::core::default::Default::default()) + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, } - impl From<::ethers::contract::Contract> - for Owned { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`Owned`](self) function calls. + pub enum OwnedCalls { + owner(ownerCall), + transferOwnership(transferOwnershipCall), } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, + #[automatically_derived] + impl OwnedCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for OwnedCalls { + const NAME: &'static str = "OwnedCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::owner(_) => ::SELECTOR, + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(OwnedCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(OwnedCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } } - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, + ///Container for all the [`Owned`](self) events. + pub enum OwnedEvents { + OwnershipTransferred(OwnershipTransferred), } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum OwnedCalls { - Owner(OwnerCall), - TransferOwnership(TransferOwnershipCall), + #[automatically_derived] + impl OwnedEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + ]; } - impl ::ethers::core::abi::AbiDecode for OwnedCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for OwnedEvents { + const NAME: &'static str = "OwnedEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } } - Err(::ethers::core::abi::Error::InvalidData.into()) } } - impl ::ethers::core::abi::AbiEncode for OwnedCalls { - fn encode(self) -> Vec { + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnedEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { match self { - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) } } } } - impl ::core::fmt::Display for OwnedCalls { + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Owned`](self) contract instance. + +See the [wrapper's documentation](`OwnedInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> OwnedInstance { + OwnedInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + OwnedInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + OwnedInstance::::deploy_builder(provider) + } + /**A [`Owned`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Owned`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct OwnedInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for OwnedInstance { + #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), + f.debug_tuple("OwnedInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OwnedInstance { + /**Creates a new wrapper around an on-chain [`Owned`](self) contract instance. + +See the [wrapper's documentation](`OwnedInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl OwnedInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> OwnedInstance { + OwnedInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, } } } - impl ::core::convert::From for OwnedCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OwnedInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) } } - impl ::core::convert::From for OwnedCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > OwnedInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() } } - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); } diff --git a/crates/bindings-uniswapx/src/path.rs b/crates/bindings-uniswapx/src/path.rs index eec57b1..9eac5ed 100644 --- a/crates/bindings-uniswapx/src/path.rs +++ b/crates/bindings-uniswapx/src/path.rs @@ -1,123 +1,215 @@ -pub use path::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod path { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static PATH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); +/** + +Generated by the following Solidity interface... +```solidity +interface Path {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Path { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209309ae5cbf4818965da5d32dd109cb6bd432be37daad310b2af84a2fe51585e564736f6c63430008180033 + /// ``` #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 4\xEF<\x0F&\xB4\xD7\x9B@\x13\xA1 \xDD\xD1I\x90\xF3\xEC:\xCF\xDE|\xA6v\xA7~\xE5\x18\xB1\x90\x9FYdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static PATH_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x93\t\xAE\\\xBFH\x18\x96]\xA5\xD3-\xD1\t\xCBk\xD42\xBE7\xDA\xAD1\x0B*\xF8J/\xE5\x15\x85\xE5dsolcC\0\x08\x18\x003", ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209309ae5cbf4818965da5d32dd109cb6bd432be37daad310b2af84a2fe51585e564736f6c63430008180033 + /// ``` #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 4\xEF<\x0F&\xB4\xD7\x9B@\x13\xA1 \xDD\xD1I\x90\xF3\xEC:\xCF\xDE|\xA6v\xA7~\xE5\x18\xB1\x90\x9FYdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static PATH_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x93\t\xAE\\\xBFH\x18\x96]\xA5\xD3-\xD1\t\xCBk\xD42\xBE7\xDA\xAD1\x0B*\xF8J/\xE5\x15\x85\xE5dsolcC\0\x08\x18\x003", ); - pub struct Path(::ethers::contract::Contract); - impl ::core::clone::Clone for Path { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Path`](self) contract instance. + +See the [wrapper's documentation](`PathInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> PathInstance { + PathInstance::::new(address, provider) } - impl ::core::ops::Deref for Path { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + PathInstance::::deploy(provider) } - impl ::core::ops::DerefMut for Path { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + PathInstance::::deploy_builder(provider) } - impl ::core::fmt::Debug for Path { + /**A [`Path`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Path`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct PathInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for PathInstance { + #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Path)).field(&self.address()).finish() + f.debug_tuple("PathInstance").field(&self.address).finish() } } - impl Path { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PathInstance { + /**Creates a new wrapper around an on-chain [`Path`](self) contract instance. + +See the [wrapper's documentation](`PathInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - PATH_ABI.clone(), - client, - ), + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), ) } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl PathInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> PathInstance { + PathInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PathInstance { + /// Creates a new call builder using this contract instance's provider and address. /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - PATH_ABI.clone(), - PATH_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) } } - impl From<::ethers::contract::Contract> - for Path { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PathInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) } } } diff --git a/crates/bindings-uniswapx/src/path_builder.rs b/crates/bindings-uniswapx/src/path_builder.rs deleted file mode 100644 index 2724bb3..0000000 --- a/crates/bindings-uniswapx/src/path_builder.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use path_builder::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod path_builder { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static PATHBUILDER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 Cx_\x02/\x1Fh\xE0\xE3|\xB7\r\xCD\xCB\x96#d\x87\xA2\x14\xCF\x16.\xFE:\xBE\xEE\xCF\xF9\xAC\x87fdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static PATHBUILDER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 Cx_\x02/\x1Fh\xE0\xE3|\xB7\r\xCD\xCB\x96#d\x87\xA2\x14\xCF\x16.\xFE:\xBE\xEE\xCF\xF9\xAC\x87fdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static PATHBUILDER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct PathBuilder(::ethers::contract::Contract); - impl ::core::clone::Clone for PathBuilder { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for PathBuilder { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for PathBuilder { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for PathBuilder { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(PathBuilder)) - .field(&self.address()) - .finish() - } - } - impl PathBuilder { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - PATHBUILDER_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - PATHBUILDER_ABI.clone(), - PATHBUILDER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for PathBuilder { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/pathbuilder.rs b/crates/bindings-uniswapx/src/pathbuilder.rs new file mode 100644 index 0000000..4817cc9 --- /dev/null +++ b/crates/bindings-uniswapx/src/pathbuilder.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface PathBuilder {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod PathBuilder { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206731f2c85fbcff7fa5dcac6f5fb03f537c3ceea466115131f713168e8e26841464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 g1\xF2\xC8_\xBC\xFF\x7F\xA5\xDC\xACo_\xB0?S|<\xEE\xA4f\x11Q1\xF7\x13\x16\x8E\x8E&\x84\x14dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206731f2c85fbcff7fa5dcac6f5fb03f537c3ceea466115131f713168e8e26841464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 g1\xF2\xC8_\xBC\xFF\x7F\xA5\xDC\xACo_\xB0?S|<\xEE\xA4f\x11Q1\xF7\x13\x16\x8E\x8E&\x84\x14dsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`PathBuilder`](self) contract instance. + +See the [wrapper's documentation](`PathBuilderInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> PathBuilderInstance { + PathBuilderInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + PathBuilderInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + PathBuilderInstance::::deploy_builder(provider) + } + /**A [`PathBuilder`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`PathBuilder`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct PathBuilderInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for PathBuilderInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("PathBuilderInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PathBuilderInstance { + /**Creates a new wrapper around an on-chain [`PathBuilder`](self) contract instance. + +See the [wrapper's documentation](`PathBuilderInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl PathBuilderInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> PathBuilderInstance { + PathBuilderInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PathBuilderInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PathBuilderInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/permit2lib.rs b/crates/bindings-uniswapx/src/permit2lib.rs new file mode 100644 index 0000000..169565d --- /dev/null +++ b/crates/bindings-uniswapx/src/permit2lib.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Permit2Lib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Permit2Lib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207dc0c30b41e846110f8902726312ffb6810ad4f3279ebf3174114e0bd977581664736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 }\xC0\xC3\x0BA\xE8F\x11\x0F\x89\x02rc\x12\xFF\xB6\x81\n\xD4\xF3'\x9E\xBF1t\x11N\x0B\xD9wX\x16dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207dc0c30b41e846110f8902726312ffb6810ad4f3279ebf3174114e0bd977581664736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 }\xC0\xC3\x0BA\xE8F\x11\x0F\x89\x02rc\x12\xFF\xB6\x81\n\xD4\xF3'\x9E\xBF1t\x11N\x0B\xD9wX\x16dsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Permit2Lib`](self) contract instance. + +See the [wrapper's documentation](`Permit2LibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Permit2LibInstance { + Permit2LibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + Permit2LibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + Permit2LibInstance::::deploy_builder(provider) + } + /**A [`Permit2Lib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Permit2Lib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct Permit2LibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for Permit2LibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("Permit2LibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > Permit2LibInstance { + /**Creates a new wrapper around an on-chain [`Permit2Lib`](self) contract instance. + +See the [wrapper's documentation](`Permit2LibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl Permit2LibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> Permit2LibInstance { + Permit2LibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > Permit2LibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > Permit2LibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/permit_2_lib.rs b/crates/bindings-uniswapx/src/permit_2_lib.rs deleted file mode 100644 index 898f322..0000000 --- a/crates/bindings-uniswapx/src/permit_2_lib.rs +++ /dev/null @@ -1,123 +0,0 @@ -pub use permit_2_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod permit_2_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static PERMIT2LIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x92\xB1\xB7Wn\xF7h\xC2\xEEp\xEF\x81\x13\xD4Z\xE4\x86>\x011\xE63\xB8\xD8\x1BK\x13\xFCS\xDE\x9F]dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static PERMIT2LIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x92\xB1\xB7Wn\xF7h\xC2\xEEp\xEF\x81\x13\xD4Z\xE4\x86>\x011\xE63\xB8\xD8\x1BK\x13\xFCS\xDE\x9F]dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static PERMIT2LIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct Permit2Lib(::ethers::contract::Contract); - impl ::core::clone::Clone for Permit2Lib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for Permit2Lib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for Permit2Lib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for Permit2Lib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Permit2Lib)).field(&self.address()).finish() - } - } - impl Permit2Lib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - PERMIT2LIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - PERMIT2LIB_ABI.clone(), - PERMIT2LIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for Permit2Lib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/permit_signature.rs b/crates/bindings-uniswapx/src/permit_signature.rs deleted file mode 100644 index 9628711..0000000 --- a/crates/bindings-uniswapx/src/permit_signature.rs +++ /dev/null @@ -1,2643 +0,0 @@ -pub use permit_signature::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod permit_signature { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("IS_TEST"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("IS_TEST"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NAME_HASH"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("NAME_HASH"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("TYPE_HASH"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("TYPE_HASH"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("excludeArtifacts"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("excludeArtifacts"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "excludedArtifacts_", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::String, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("excludeContracts"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("excludeContracts"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "excludedContracts_", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Address, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("excludeSelectors"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("excludeSelectors"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "excludedSelectors_", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), - ), - ), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct StdInvariant.FuzzSelector[]", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("excludeSenders"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("excludeSenders"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("excludedSenders_"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Address, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("failed"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("failed"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("targetArtifactSelectors"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "targetArtifactSelectors", - ), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "targetedArtifactSelectors_", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::String, - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), - ), - ), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct StdInvariant.FuzzArtifactSelector[]", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("targetArtifacts"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("targetArtifacts"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "targetedArtifacts_", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::String, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("targetContracts"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("targetContracts"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "targetedContracts_", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Address, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("targetInterfaces"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("targetInterfaces"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "targetedInterfaces_", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::String, - ), - ), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct StdInvariant.FuzzInterface[]", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("targetSelectors"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("targetSelectors"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "targetedSelectors_", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), - ), - ), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct StdInvariant.FuzzSelector[]", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("targetSenders"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("targetSenders"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("targetedSenders_"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Address, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address[]"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("log"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_address"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_address"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_array"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_array"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ), - ), - indexed: false, - }, - ], - anonymous: false, - }, - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_array"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Int(256usize), - ), - ), - indexed: false, - }, - ], - anonymous: false, - }, - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_array"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Address, - ), - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_bytes"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_bytes"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_bytes32"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_bytes32"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_int"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_int"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_named_address"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_named_address"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_named_array"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_named_array"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ), - ), - indexed: false, - }, - ], - anonymous: false, - }, - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_named_array"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Int(256usize), - ), - ), - indexed: false, - }, - ], - anonymous: false, - }, - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_named_array"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Address, - ), - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_named_bytes"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_named_bytes"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_named_bytes32"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_named_bytes32"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_named_decimal_int"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "log_named_decimal_int", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("decimals"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_named_decimal_uint"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "log_named_decimal_uint", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("decimals"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_named_int"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_named_int"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_named_string"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_named_string"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_named_uint"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_named_uint"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("val"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_string"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_string"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("log_uint"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("log_uint"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("logs"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("logs"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static PERMITSIGNATURE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R`\x0C\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x1F\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15a\0,W_\x80\xFD[Pa\x0FS\x80a\0:_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0\xE5W_5`\xE0\x1C\x80c\x85\"l\x81\x11a\0\x88W\x80c\xB5P\x8A\xA9\x11a\0cW\x80c\xB5P\x8A\xA9\x14a\x01\xCBW\x80c\xBAAO\xA6\x14a\x01\xD3W\x80c\xE2\x0C\x9Fq\x14a\x01\xEBW\x80c\xFAv&\xD4\x14a\x01\xF3W_\x80\xFD[\x80c\x85\"l\x81\x14a\x01\x99W\x80c\x91j\x17\xC6\x14a\x01\xAEW\x80c\xB0FO\xDC\x14a\x01\xC3W_\x80\xFD[\x80c>^<#\x11a\0\xC3W\x80c>^<#\x14a\x01MW\x80c?r\x86\xF4\x14a\x01UW\x80cd\xD4\xC8\x19\x14a\x01]W\x80cf\xD9\xA9\xA0\x14a\x01\x84W_\x80\xFD[\x80c\x04b,.\x14a\0\xE9W\x80c\x1E\xD7\x83\x1C\x14a\x01#W\x80c*\xDE8\x80\x14a\x018W[_\x80\xFD[a\x01\x10\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01+a\x02\0V[`@Qa\x01\x1A\x91\x90a\n\xDCV[a\x01@a\x02mV[`@Qa\x01\x1A\x91\x90a\x0B\x96V[a\x01+a\x03\xB6V[a\x01+a\x04!V[a\x01\x10\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[a\x01\x8Ca\x04\x8CV[`@Qa\x01\x1A\x91\x90a\x0C\xF8V[a\x01\xA1a\x06\x05V[`@Qa\x01\x1A\x91\x90a\r\x9BV[a\x01\xB6a\x06\xD0V[`@Qa\x01\x1A\x91\x90a\x0E\x1BV[a\x01\xB6a\x07\xD3V[a\x01\xA1a\x08\xD6V[a\x01\xDBa\t\xA1V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1AV[a\x01+a\nqV[`\x1FTa\x01\xDB\x90`\xFF\x16\x81V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90[\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028W[PPPPP\x90P\x90V[```\x1E\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW_\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\x96W\x83\x82\x90_R` _ \x01\x80Ta\x03\x0B\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x037\x90a\x0E\xB5V[\x80\x15a\x03\x82W\x80`\x1F\x10a\x03YWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x82V[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03eW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x02\xEEV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\x90V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028WPPPPP\x90P\x90V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028WPPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW\x83\x82\x90_R` _ \x90`\x02\x02\x01`@Q\x80`@\x01`@R\x90\x81_\x82\x01\x80Ta\x04\xDF\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x0B\x90a\x0E\xB5V[\x80\x15a\x05VW\x80`\x1F\x10a\x05-Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05VV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x059W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01`\x01\x82\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05\xEDW` \x02\x82\x01\x91\x90_R` _ \x90_\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\x9AW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xAFV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW\x83\x82\x90_R` _ \x01\x80Ta\x06E\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06q\x90a\x0E\xB5V[\x80\x15a\x06\xBCW\x80`\x1F\x10a\x06\x93Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\xBCV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06(V[```\x1D\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW_\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\xBBW` \x02\x82\x01\x91\x90_R` _ \x90_\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07hW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xF3V[```\x1C\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW_\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xBEW` \x02\x82\x01\x91\x90_R` _ \x90_\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08kW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF6V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW\x83\x82\x90_R` _ \x01\x80Ta\t\x16\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\tB\x90a\x0E\xB5V[\x80\x15a\t\x8DW\x80`\x1F\x10a\tdWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8DV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\tpW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xF9V[`\x08T_\x90`\xFF\x16\x15a\t\xB8WP`\x08T`\xFF\x16\x90V[`@Q\x7Ff\x7F\x9Dp\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\x04\x82\x01\x81\x90R\x7Ffailed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`$\x83\x01R_\x91cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nFW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nj\x91\x90a\x0F\x06V[\x14\x15\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028WPPPPP\x90P\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0B)W\x83Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\xF7V[P\x90\x96\x95PPPPPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x0BYW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0B=V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87[\x84\x81\x10\x15a\x0C\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x8A\x84\x03\x01\x86R\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x88\x01Q\x88\x84\x01\x88\x90R\x80Q\x88\x85\x01\x81\x90R\x90\x89\x01\x90``\x81\x87\x1B\x86\x01\x81\x01\x91\x90\x86\x01\x90_[\x81\x81\x10\x15a\x0CwW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x85\x03\x01\x83Ra\x0Ce\x84\x86Qa\x0B5V[\x94\x8D\x01\x94\x93P\x91\x8C\x01\x91`\x01\x01a\x0C+V[PPP\x96\x89\x01\x96\x93PP\x90\x87\x01\x90`\x01\x01a\x0B\xBBV[P\x90\x99\x98PPPPPPPPPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x0C\xEDW\x81Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x0C\xAFV[P\x94\x95\x94PPPPPV[_` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01_[\x83\x81\x10\x15a\r\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x89\x84\x03\x01\x85R\x81Q\x80Q\x87\x85Ra\ra\x88\x86\x01\x82a\x0B5V[\x91\x89\x01Q\x85\x83\x03\x86\x8B\x01R\x91\x90Pa\ry\x81\x83a\x0C\x9CV[\x96\x89\x01\x96\x94PPP\x90\x86\x01\x90`\x01\x01a\r\x1FV[P\x90\x98\x97PPPPPPPPV[_` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15a\x0E\x0EW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x88\x86\x03\x01\x84Ra\r\xFC\x85\x83Qa\x0B5V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\r\xC2V[P\x92\x97\x96PPPPPPPV[_` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01_[\x83\x81\x10\x15a\r\x8DW\x88\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x01\x85R\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x87\x01Q\x87\x84\x01\x87\x90Ra\x0E\xA2\x87\x85\x01\x82a\x0C\x9CV[\x95\x88\x01\x95\x93PP\x90\x86\x01\x90`\x01\x01a\x0EBV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0E\xC9W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0F\0W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[_` \x82\x84\x03\x12\x15a\x0F\x16W_\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB3\xDE\xF8QTk\xBA\x95+aP\xC4\xA7\x07\xAF2LQ\xB9a\x89c%\r\xF3,l\xBA\xE0G\xFCOdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static PERMITSIGNATURE_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0\xE5W_5`\xE0\x1C\x80c\x85\"l\x81\x11a\0\x88W\x80c\xB5P\x8A\xA9\x11a\0cW\x80c\xB5P\x8A\xA9\x14a\x01\xCBW\x80c\xBAAO\xA6\x14a\x01\xD3W\x80c\xE2\x0C\x9Fq\x14a\x01\xEBW\x80c\xFAv&\xD4\x14a\x01\xF3W_\x80\xFD[\x80c\x85\"l\x81\x14a\x01\x99W\x80c\x91j\x17\xC6\x14a\x01\xAEW\x80c\xB0FO\xDC\x14a\x01\xC3W_\x80\xFD[\x80c>^<#\x11a\0\xC3W\x80c>^<#\x14a\x01MW\x80c?r\x86\xF4\x14a\x01UW\x80cd\xD4\xC8\x19\x14a\x01]W\x80cf\xD9\xA9\xA0\x14a\x01\x84W_\x80\xFD[\x80c\x04b,.\x14a\0\xE9W\x80c\x1E\xD7\x83\x1C\x14a\x01#W\x80c*\xDE8\x80\x14a\x018W[_\x80\xFD[a\x01\x10\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01+a\x02\0V[`@Qa\x01\x1A\x91\x90a\n\xDCV[a\x01@a\x02mV[`@Qa\x01\x1A\x91\x90a\x0B\x96V[a\x01+a\x03\xB6V[a\x01+a\x04!V[a\x01\x10\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[a\x01\x8Ca\x04\x8CV[`@Qa\x01\x1A\x91\x90a\x0C\xF8V[a\x01\xA1a\x06\x05V[`@Qa\x01\x1A\x91\x90a\r\x9BV[a\x01\xB6a\x06\xD0V[`@Qa\x01\x1A\x91\x90a\x0E\x1BV[a\x01\xB6a\x07\xD3V[a\x01\xA1a\x08\xD6V[a\x01\xDBa\t\xA1V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1AV[a\x01+a\nqV[`\x1FTa\x01\xDB\x90`\xFF\x16\x81V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90[\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028W[PPPPP\x90P\x90V[```\x1E\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW_\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\x96W\x83\x82\x90_R` _ \x01\x80Ta\x03\x0B\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x037\x90a\x0E\xB5V[\x80\x15a\x03\x82W\x80`\x1F\x10a\x03YWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x82V[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03eW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x02\xEEV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\x90V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028WPPPPP\x90P\x90V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028WPPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW\x83\x82\x90_R` _ \x90`\x02\x02\x01`@Q\x80`@\x01`@R\x90\x81_\x82\x01\x80Ta\x04\xDF\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x0B\x90a\x0E\xB5V[\x80\x15a\x05VW\x80`\x1F\x10a\x05-Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05VV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x059W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01`\x01\x82\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05\xEDW` \x02\x82\x01\x91\x90_R` _ \x90_\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\x9AW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xAFV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW\x83\x82\x90_R` _ \x01\x80Ta\x06E\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06q\x90a\x0E\xB5V[\x80\x15a\x06\xBCW\x80`\x1F\x10a\x06\x93Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\xBCV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06(V[```\x1D\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW_\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\xBBW` \x02\x82\x01\x91\x90_R` _ \x90_\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07hW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xF3V[```\x1C\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW_\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xBEW` \x02\x82\x01\x91\x90_R` _ \x90_\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08kW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF6V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW\x83\x82\x90_R` _ \x01\x80Ta\t\x16\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\tB\x90a\x0E\xB5V[\x80\x15a\t\x8DW\x80`\x1F\x10a\tdWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8DV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\tpW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xF9V[`\x08T_\x90`\xFF\x16\x15a\t\xB8WP`\x08T`\xFF\x16\x90V[`@Q\x7Ff\x7F\x9Dp\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\x04\x82\x01\x81\x90R\x7Ffailed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`$\x83\x01R_\x91cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nFW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nj\x91\x90a\x0F\x06V[\x14\x15\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028WPPPPP\x90P\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0B)W\x83Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\xF7V[P\x90\x96\x95PPPPPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x0BYW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0B=V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87[\x84\x81\x10\x15a\x0C\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x8A\x84\x03\x01\x86R\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x88\x01Q\x88\x84\x01\x88\x90R\x80Q\x88\x85\x01\x81\x90R\x90\x89\x01\x90``\x81\x87\x1B\x86\x01\x81\x01\x91\x90\x86\x01\x90_[\x81\x81\x10\x15a\x0CwW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x85\x03\x01\x83Ra\x0Ce\x84\x86Qa\x0B5V[\x94\x8D\x01\x94\x93P\x91\x8C\x01\x91`\x01\x01a\x0C+V[PPP\x96\x89\x01\x96\x93PP\x90\x87\x01\x90`\x01\x01a\x0B\xBBV[P\x90\x99\x98PPPPPPPPPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x0C\xEDW\x81Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x0C\xAFV[P\x94\x95\x94PPPPPV[_` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01_[\x83\x81\x10\x15a\r\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x89\x84\x03\x01\x85R\x81Q\x80Q\x87\x85Ra\ra\x88\x86\x01\x82a\x0B5V[\x91\x89\x01Q\x85\x83\x03\x86\x8B\x01R\x91\x90Pa\ry\x81\x83a\x0C\x9CV[\x96\x89\x01\x96\x94PPP\x90\x86\x01\x90`\x01\x01a\r\x1FV[P\x90\x98\x97PPPPPPPPV[_` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15a\x0E\x0EW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x88\x86\x03\x01\x84Ra\r\xFC\x85\x83Qa\x0B5V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\r\xC2V[P\x92\x97\x96PPPPPPPV[_` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01_[\x83\x81\x10\x15a\r\x8DW\x88\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x01\x85R\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x87\x01Q\x87\x84\x01\x87\x90Ra\x0E\xA2\x87\x85\x01\x82a\x0C\x9CV[\x95\x88\x01\x95\x93PP\x90\x86\x01\x90`\x01\x01a\x0EBV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0E\xC9W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0F\0W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[_` \x82\x84\x03\x12\x15a\x0F\x16W_\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB3\xDE\xF8QTk\xBA\x95+aP\xC4\xA7\x07\xAF2LQ\xB9a\x89c%\r\xF3,l\xBA\xE0G\xFCOdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static PERMITSIGNATURE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct PermitSignature(::ethers::contract::Contract); - impl ::core::clone::Clone for PermitSignature { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for PermitSignature { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for PermitSignature { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for PermitSignature { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(PermitSignature)) - .field(&self.address()) - .finish() - } - } - impl PermitSignature { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - PERMITSIGNATURE_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - PERMITSIGNATURE_ABI.clone(), - PERMITSIGNATURE_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `IS_TEST` (0xfa7626d4) function - pub fn is_test(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([250, 118, 38, 212], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `NAME_HASH` (0x04622c2e) function - pub fn name_hash( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([4, 98, 44, 46], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `TYPE_HASH` (0x64d4c819) function - pub fn type_hash( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([100, 212, 200, 25], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `excludeArtifacts` (0xb5508aa9) function - pub fn exclude_artifacts( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec<::std::string::String>, - > { - self.0 - .method_hash([181, 80, 138, 169], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `excludeContracts` (0xe20c9f71) function - pub fn exclude_contracts( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec<::ethers::core::types::Address>, - > { - self.0 - .method_hash([226, 12, 159, 113], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `excludeSelectors` (0xb0464fdc) function - pub fn exclude_selectors( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec, - > { - self.0 - .method_hash([176, 70, 79, 220], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `excludeSenders` (0x1ed7831c) function - pub fn exclude_senders( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec<::ethers::core::types::Address>, - > { - self.0 - .method_hash([30, 215, 131, 28], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `failed` (0xba414fa6) function - pub fn failed(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([186, 65, 79, 166], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `targetArtifactSelectors` (0x66d9a9a0) function - pub fn target_artifact_selectors( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec, - > { - self.0 - .method_hash([102, 217, 169, 160], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `targetArtifacts` (0x85226c81) function - pub fn target_artifacts( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec<::std::string::String>, - > { - self.0 - .method_hash([133, 34, 108, 129], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `targetContracts` (0x3f7286f4) function - pub fn target_contracts( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec<::ethers::core::types::Address>, - > { - self.0 - .method_hash([63, 114, 134, 244], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `targetInterfaces` (0x2ade3880) function - pub fn target_interfaces( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec, - > { - self.0 - .method_hash([42, 222, 56, 128], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `targetSelectors` (0x916a17c6) function - pub fn target_selectors( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec, - > { - self.0 - .method_hash([145, 106, 23, 198], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `targetSenders` (0x3e5e3c23) function - pub fn target_senders( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec<::ethers::core::types::Address>, - > { - self.0 - .method_hash([62, 94, 60, 35], ()) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `log` event - pub fn log_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogFilter> { - self.0.event() - } - ///Gets the contract's `log_address` event - pub fn log_address_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogAddressFilter, - > { - self.0.event() - } - ///Gets the contract's `log_array` event - pub fn log_array_1_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogArray1Filter, - > { - self.0.event() - } - ///Gets the contract's `log_array` event - pub fn log_array_2_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogArray2Filter, - > { - self.0.event() - } - ///Gets the contract's `log_array` event - pub fn log_array_3_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogArray3Filter, - > { - self.0.event() - } - ///Gets the contract's `log_bytes` event - pub fn log_bytes_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogBytesFilter, - > { - self.0.event() - } - ///Gets the contract's `log_bytes32` event - pub fn log_bytes_32_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogBytes32Filter, - > { - self.0.event() - } - ///Gets the contract's `log_int` event - pub fn log_int_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogIntFilter> { - self.0.event() - } - ///Gets the contract's `log_named_address` event - pub fn log_named_address_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogNamedAddressFilter, - > { - self.0.event() - } - ///Gets the contract's `log_named_array` event - pub fn log_named_array_1_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogNamedArray1Filter, - > { - self.0.event() - } - ///Gets the contract's `log_named_array` event - pub fn log_named_array_2_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogNamedArray2Filter, - > { - self.0.event() - } - ///Gets the contract's `log_named_array` event - pub fn log_named_array_3_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogNamedArray3Filter, - > { - self.0.event() - } - ///Gets the contract's `log_named_bytes` event - pub fn log_named_bytes_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogNamedBytesFilter, - > { - self.0.event() - } - ///Gets the contract's `log_named_bytes32` event - pub fn log_named_bytes_32_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogNamedBytes32Filter, - > { - self.0.event() - } - ///Gets the contract's `log_named_decimal_int` event - pub fn log_named_decimal_int_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogNamedDecimalIntFilter, - > { - self.0.event() - } - ///Gets the contract's `log_named_decimal_uint` event - pub fn log_named_decimal_uint_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogNamedDecimalUintFilter, - > { - self.0.event() - } - ///Gets the contract's `log_named_int` event - pub fn log_named_int_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogNamedIntFilter, - > { - self.0.event() - } - ///Gets the contract's `log_named_string` event - pub fn log_named_string_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogNamedStringFilter, - > { - self.0.event() - } - ///Gets the contract's `log_named_uint` event - pub fn log_named_uint_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogNamedUintFilter, - > { - self.0.event() - } - ///Gets the contract's `log_string` event - pub fn log_string_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - LogStringFilter, - > { - self.0.event() - } - ///Gets the contract's `log_uint` event - pub fn log_uint_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogUintFilter> { - self.0.event() - } - ///Gets the contract's `logs` event - pub fn logs_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogsFilter> { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - PermitSignatureEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for PermitSignature { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log", abi = "log(string)")] - pub struct LogFilter(pub ::std::string::String); - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_address", abi = "log_address(address)")] - pub struct LogAddressFilter(pub ::ethers::core::types::Address); - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_array", abi = "log_array(uint256[])")] - pub struct LogArray1Filter { - pub val: ::std::vec::Vec<::ethers::core::types::U256>, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_array", abi = "log_array(int256[])")] - pub struct LogArray2Filter { - pub val: ::std::vec::Vec<::ethers::core::types::I256>, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_array", abi = "log_array(address[])")] - pub struct LogArray3Filter { - pub val: ::std::vec::Vec<::ethers::core::types::Address>, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_bytes", abi = "log_bytes(bytes)")] - pub struct LogBytesFilter(pub ::ethers::core::types::Bytes); - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_bytes32", abi = "log_bytes32(bytes32)")] - pub struct LogBytes32Filter(pub [u8; 32]); - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_int", abi = "log_int(int256)")] - pub struct LogIntFilter(pub ::ethers::core::types::I256); - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_named_address", abi = "log_named_address(string,address)")] - pub struct LogNamedAddressFilter { - pub key: ::std::string::String, - pub val: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_named_array", abi = "log_named_array(string,uint256[])")] - pub struct LogNamedArray1Filter { - pub key: ::std::string::String, - pub val: ::std::vec::Vec<::ethers::core::types::U256>, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_named_array", abi = "log_named_array(string,int256[])")] - pub struct LogNamedArray2Filter { - pub key: ::std::string::String, - pub val: ::std::vec::Vec<::ethers::core::types::I256>, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_named_array", abi = "log_named_array(string,address[])")] - pub struct LogNamedArray3Filter { - pub key: ::std::string::String, - pub val: ::std::vec::Vec<::ethers::core::types::Address>, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_named_bytes", abi = "log_named_bytes(string,bytes)")] - pub struct LogNamedBytesFilter { - pub key: ::std::string::String, - pub val: ::ethers::core::types::Bytes, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_named_bytes32", abi = "log_named_bytes32(string,bytes32)")] - pub struct LogNamedBytes32Filter { - pub key: ::std::string::String, - pub val: [u8; 32], - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "log_named_decimal_int", - abi = "log_named_decimal_int(string,int256,uint256)" - )] - pub struct LogNamedDecimalIntFilter { - pub key: ::std::string::String, - pub val: ::ethers::core::types::I256, - pub decimals: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "log_named_decimal_uint", - abi = "log_named_decimal_uint(string,uint256,uint256)" - )] - pub struct LogNamedDecimalUintFilter { - pub key: ::std::string::String, - pub val: ::ethers::core::types::U256, - pub decimals: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_named_int", abi = "log_named_int(string,int256)")] - pub struct LogNamedIntFilter { - pub key: ::std::string::String, - pub val: ::ethers::core::types::I256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_named_string", abi = "log_named_string(string,string)")] - pub struct LogNamedStringFilter { - pub key: ::std::string::String, - pub val: ::std::string::String, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_named_uint", abi = "log_named_uint(string,uint256)")] - pub struct LogNamedUintFilter { - pub key: ::std::string::String, - pub val: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_string", abi = "log_string(string)")] - pub struct LogStringFilter(pub ::std::string::String); - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "log_uint", abi = "log_uint(uint256)")] - pub struct LogUintFilter(pub ::ethers::core::types::U256); - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "logs", abi = "logs(bytes)")] - pub struct LogsFilter(pub ::ethers::core::types::Bytes); - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum PermitSignatureEvents { - LogFilter(LogFilter), - LogAddressFilter(LogAddressFilter), - LogArray1Filter(LogArray1Filter), - LogArray2Filter(LogArray2Filter), - LogArray3Filter(LogArray3Filter), - LogBytesFilter(LogBytesFilter), - LogBytes32Filter(LogBytes32Filter), - LogIntFilter(LogIntFilter), - LogNamedAddressFilter(LogNamedAddressFilter), - LogNamedArray1Filter(LogNamedArray1Filter), - LogNamedArray2Filter(LogNamedArray2Filter), - LogNamedArray3Filter(LogNamedArray3Filter), - LogNamedBytesFilter(LogNamedBytesFilter), - LogNamedBytes32Filter(LogNamedBytes32Filter), - LogNamedDecimalIntFilter(LogNamedDecimalIntFilter), - LogNamedDecimalUintFilter(LogNamedDecimalUintFilter), - LogNamedIntFilter(LogNamedIntFilter), - LogNamedStringFilter(LogNamedStringFilter), - LogNamedUintFilter(LogNamedUintFilter), - LogStringFilter(LogStringFilter), - LogUintFilter(LogUintFilter), - LogsFilter(LogsFilter), - } - impl ::ethers::contract::EthLogDecode for PermitSignatureEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = LogFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogFilter(decoded)); - } - if let Ok(decoded) = LogAddressFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogAddressFilter(decoded)); - } - if let Ok(decoded) = LogArray1Filter::decode_log(log) { - return Ok(PermitSignatureEvents::LogArray1Filter(decoded)); - } - if let Ok(decoded) = LogArray2Filter::decode_log(log) { - return Ok(PermitSignatureEvents::LogArray2Filter(decoded)); - } - if let Ok(decoded) = LogArray3Filter::decode_log(log) { - return Ok(PermitSignatureEvents::LogArray3Filter(decoded)); - } - if let Ok(decoded) = LogBytesFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogBytesFilter(decoded)); - } - if let Ok(decoded) = LogBytes32Filter::decode_log(log) { - return Ok(PermitSignatureEvents::LogBytes32Filter(decoded)); - } - if let Ok(decoded) = LogIntFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogIntFilter(decoded)); - } - if let Ok(decoded) = LogNamedAddressFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogNamedAddressFilter(decoded)); - } - if let Ok(decoded) = LogNamedArray1Filter::decode_log(log) { - return Ok(PermitSignatureEvents::LogNamedArray1Filter(decoded)); - } - if let Ok(decoded) = LogNamedArray2Filter::decode_log(log) { - return Ok(PermitSignatureEvents::LogNamedArray2Filter(decoded)); - } - if let Ok(decoded) = LogNamedArray3Filter::decode_log(log) { - return Ok(PermitSignatureEvents::LogNamedArray3Filter(decoded)); - } - if let Ok(decoded) = LogNamedBytesFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogNamedBytesFilter(decoded)); - } - if let Ok(decoded) = LogNamedBytes32Filter::decode_log(log) { - return Ok(PermitSignatureEvents::LogNamedBytes32Filter(decoded)); - } - if let Ok(decoded) = LogNamedDecimalIntFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogNamedDecimalIntFilter(decoded)); - } - if let Ok(decoded) = LogNamedDecimalUintFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogNamedDecimalUintFilter(decoded)); - } - if let Ok(decoded) = LogNamedIntFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogNamedIntFilter(decoded)); - } - if let Ok(decoded) = LogNamedStringFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogNamedStringFilter(decoded)); - } - if let Ok(decoded) = LogNamedUintFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogNamedUintFilter(decoded)); - } - if let Ok(decoded) = LogStringFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogStringFilter(decoded)); - } - if let Ok(decoded) = LogUintFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogUintFilter(decoded)); - } - if let Ok(decoded) = LogsFilter::decode_log(log) { - return Ok(PermitSignatureEvents::LogsFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for PermitSignatureEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::LogFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::LogAddressFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::LogArray1Filter(element) => ::core::fmt::Display::fmt(element, f), - Self::LogArray2Filter(element) => ::core::fmt::Display::fmt(element, f), - Self::LogArray3Filter(element) => ::core::fmt::Display::fmt(element, f), - Self::LogBytesFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::LogBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), - Self::LogIntFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::LogNamedAddressFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::LogNamedArray1Filter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::LogNamedArray2Filter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::LogNamedArray3Filter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::LogNamedBytesFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::LogNamedBytes32Filter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::LogNamedDecimalIntFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::LogNamedDecimalUintFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::LogNamedIntFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::LogNamedStringFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::LogNamedUintFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::LogStringFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::LogUintFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::LogsFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogFilter) -> Self { - Self::LogFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogAddressFilter) -> Self { - Self::LogAddressFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogArray1Filter) -> Self { - Self::LogArray1Filter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogArray2Filter) -> Self { - Self::LogArray2Filter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogArray3Filter) -> Self { - Self::LogArray3Filter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogBytesFilter) -> Self { - Self::LogBytesFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogBytes32Filter) -> Self { - Self::LogBytes32Filter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogIntFilter) -> Self { - Self::LogIntFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogNamedAddressFilter) -> Self { - Self::LogNamedAddressFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogNamedArray1Filter) -> Self { - Self::LogNamedArray1Filter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogNamedArray2Filter) -> Self { - Self::LogNamedArray2Filter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogNamedArray3Filter) -> Self { - Self::LogNamedArray3Filter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogNamedBytesFilter) -> Self { - Self::LogNamedBytesFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogNamedBytes32Filter) -> Self { - Self::LogNamedBytes32Filter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogNamedDecimalIntFilter) -> Self { - Self::LogNamedDecimalIntFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogNamedDecimalUintFilter) -> Self { - Self::LogNamedDecimalUintFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogNamedIntFilter) -> Self { - Self::LogNamedIntFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogNamedStringFilter) -> Self { - Self::LogNamedStringFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogNamedUintFilter) -> Self { - Self::LogNamedUintFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogStringFilter) -> Self { - Self::LogStringFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogUintFilter) -> Self { - Self::LogUintFilter(value) - } - } - impl ::core::convert::From for PermitSignatureEvents { - fn from(value: LogsFilter) -> Self { - Self::LogsFilter(value) - } - } - ///Container type for all input parameters for the `IS_TEST` function with signature `IS_TEST()` and selector `0xfa7626d4` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "IS_TEST", abi = "IS_TEST()")] - pub struct IsTestCall; - ///Container type for all input parameters for the `NAME_HASH` function with signature `NAME_HASH()` and selector `0x04622c2e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "NAME_HASH", abi = "NAME_HASH()")] - pub struct NameHashCall; - ///Container type for all input parameters for the `TYPE_HASH` function with signature `TYPE_HASH()` and selector `0x64d4c819` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "TYPE_HASH", abi = "TYPE_HASH()")] - pub struct TypeHashCall; - ///Container type for all input parameters for the `excludeArtifacts` function with signature `excludeArtifacts()` and selector `0xb5508aa9` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "excludeArtifacts", abi = "excludeArtifacts()")] - pub struct ExcludeArtifactsCall; - ///Container type for all input parameters for the `excludeContracts` function with signature `excludeContracts()` and selector `0xe20c9f71` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "excludeContracts", abi = "excludeContracts()")] - pub struct ExcludeContractsCall; - ///Container type for all input parameters for the `excludeSelectors` function with signature `excludeSelectors()` and selector `0xb0464fdc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "excludeSelectors", abi = "excludeSelectors()")] - pub struct ExcludeSelectorsCall; - ///Container type for all input parameters for the `excludeSenders` function with signature `excludeSenders()` and selector `0x1ed7831c` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "excludeSenders", abi = "excludeSenders()")] - pub struct ExcludeSendersCall; - ///Container type for all input parameters for the `failed` function with signature `failed()` and selector `0xba414fa6` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "failed", abi = "failed()")] - pub struct FailedCall; - ///Container type for all input parameters for the `targetArtifactSelectors` function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "targetArtifactSelectors", abi = "targetArtifactSelectors()")] - pub struct TargetArtifactSelectorsCall; - ///Container type for all input parameters for the `targetArtifacts` function with signature `targetArtifacts()` and selector `0x85226c81` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "targetArtifacts", abi = "targetArtifacts()")] - pub struct TargetArtifactsCall; - ///Container type for all input parameters for the `targetContracts` function with signature `targetContracts()` and selector `0x3f7286f4` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "targetContracts", abi = "targetContracts()")] - pub struct TargetContractsCall; - ///Container type for all input parameters for the `targetInterfaces` function with signature `targetInterfaces()` and selector `0x2ade3880` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "targetInterfaces", abi = "targetInterfaces()")] - pub struct TargetInterfacesCall; - ///Container type for all input parameters for the `targetSelectors` function with signature `targetSelectors()` and selector `0x916a17c6` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "targetSelectors", abi = "targetSelectors()")] - pub struct TargetSelectorsCall; - ///Container type for all input parameters for the `targetSenders` function with signature `targetSenders()` and selector `0x3e5e3c23` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "targetSenders", abi = "targetSenders()")] - pub struct TargetSendersCall; - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum PermitSignatureCalls { - IsTest(IsTestCall), - NameHash(NameHashCall), - TypeHash(TypeHashCall), - ExcludeArtifacts(ExcludeArtifactsCall), - ExcludeContracts(ExcludeContractsCall), - ExcludeSelectors(ExcludeSelectorsCall), - ExcludeSenders(ExcludeSendersCall), - Failed(FailedCall), - TargetArtifactSelectors(TargetArtifactSelectorsCall), - TargetArtifacts(TargetArtifactsCall), - TargetContracts(TargetContractsCall), - TargetInterfaces(TargetInterfacesCall), - TargetSelectors(TargetSelectorsCall), - TargetSenders(TargetSendersCall), - } - impl ::ethers::core::abi::AbiDecode for PermitSignatureCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IsTest(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NameHash(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TypeHash(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExcludeArtifacts(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExcludeContracts(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExcludeSelectors(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExcludeSenders(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Failed(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TargetArtifactSelectors(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TargetArtifacts(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TargetContracts(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TargetInterfaces(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TargetSelectors(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TargetSenders(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for PermitSignatureCalls { - fn encode(self) -> Vec { - match self { - Self::IsTest(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::NameHash(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TypeHash(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExcludeArtifacts(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExcludeContracts(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExcludeSelectors(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExcludeSenders(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Failed(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TargetArtifactSelectors(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TargetArtifacts(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TargetContracts(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TargetInterfaces(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TargetSelectors(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TargetSenders(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for PermitSignatureCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::IsTest(element) => ::core::fmt::Display::fmt(element, f), - Self::NameHash(element) => ::core::fmt::Display::fmt(element, f), - Self::TypeHash(element) => ::core::fmt::Display::fmt(element, f), - Self::ExcludeArtifacts(element) => ::core::fmt::Display::fmt(element, f), - Self::ExcludeContracts(element) => ::core::fmt::Display::fmt(element, f), - Self::ExcludeSelectors(element) => ::core::fmt::Display::fmt(element, f), - Self::ExcludeSenders(element) => ::core::fmt::Display::fmt(element, f), - Self::Failed(element) => ::core::fmt::Display::fmt(element, f), - Self::TargetArtifactSelectors(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TargetArtifacts(element) => ::core::fmt::Display::fmt(element, f), - Self::TargetContracts(element) => ::core::fmt::Display::fmt(element, f), - Self::TargetInterfaces(element) => ::core::fmt::Display::fmt(element, f), - Self::TargetSelectors(element) => ::core::fmt::Display::fmt(element, f), - Self::TargetSenders(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: IsTestCall) -> Self { - Self::IsTest(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: NameHashCall) -> Self { - Self::NameHash(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: TypeHashCall) -> Self { - Self::TypeHash(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: ExcludeArtifactsCall) -> Self { - Self::ExcludeArtifacts(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: ExcludeContractsCall) -> Self { - Self::ExcludeContracts(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: ExcludeSelectorsCall) -> Self { - Self::ExcludeSelectors(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: ExcludeSendersCall) -> Self { - Self::ExcludeSenders(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: FailedCall) -> Self { - Self::Failed(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: TargetArtifactSelectorsCall) -> Self { - Self::TargetArtifactSelectors(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: TargetArtifactsCall) -> Self { - Self::TargetArtifacts(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: TargetContractsCall) -> Self { - Self::TargetContracts(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: TargetInterfacesCall) -> Self { - Self::TargetInterfaces(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: TargetSelectorsCall) -> Self { - Self::TargetSelectors(value) - } - } - impl ::core::convert::From for PermitSignatureCalls { - fn from(value: TargetSendersCall) -> Self { - Self::TargetSenders(value) - } - } - ///Container type for all return fields from the `IS_TEST` function with signature `IS_TEST()` and selector `0xfa7626d4` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct IsTestReturn(pub bool); - ///Container type for all return fields from the `NAME_HASH` function with signature `NAME_HASH()` and selector `0x04622c2e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct NameHashReturn(pub [u8; 32]); - ///Container type for all return fields from the `TYPE_HASH` function with signature `TYPE_HASH()` and selector `0x64d4c819` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TypeHashReturn(pub [u8; 32]); - ///Container type for all return fields from the `excludeArtifacts` function with signature `excludeArtifacts()` and selector `0xb5508aa9` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ExcludeArtifactsReturn { - pub excluded_artifacts: ::std::vec::Vec<::std::string::String>, - } - ///Container type for all return fields from the `excludeContracts` function with signature `excludeContracts()` and selector `0xe20c9f71` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ExcludeContractsReturn { - pub excluded_contracts: ::std::vec::Vec<::ethers::core::types::Address>, - } - ///Container type for all return fields from the `excludeSelectors` function with signature `excludeSelectors()` and selector `0xb0464fdc` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ExcludeSelectorsReturn { - pub excluded_selectors: ::std::vec::Vec, - } - ///Container type for all return fields from the `excludeSenders` function with signature `excludeSenders()` and selector `0x1ed7831c` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ExcludeSendersReturn { - pub excluded_senders: ::std::vec::Vec<::ethers::core::types::Address>, - } - ///Container type for all return fields from the `failed` function with signature `failed()` and selector `0xba414fa6` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FailedReturn(pub bool); - ///Container type for all return fields from the `targetArtifactSelectors` function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TargetArtifactSelectorsReturn { - pub targeted_artifact_selectors: ::std::vec::Vec, - } - ///Container type for all return fields from the `targetArtifacts` function with signature `targetArtifacts()` and selector `0x85226c81` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TargetArtifactsReturn { - pub targeted_artifacts: ::std::vec::Vec<::std::string::String>, - } - ///Container type for all return fields from the `targetContracts` function with signature `targetContracts()` and selector `0x3f7286f4` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TargetContractsReturn { - pub targeted_contracts: ::std::vec::Vec<::ethers::core::types::Address>, - } - ///Container type for all return fields from the `targetInterfaces` function with signature `targetInterfaces()` and selector `0x2ade3880` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TargetInterfacesReturn { - pub targeted_interfaces: ::std::vec::Vec, - } - ///Container type for all return fields from the `targetSelectors` function with signature `targetSelectors()` and selector `0x916a17c6` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TargetSelectorsReturn { - pub targeted_selectors: ::std::vec::Vec, - } - ///Container type for all return fields from the `targetSenders` function with signature `targetSenders()` and selector `0x3e5e3c23` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TargetSendersReturn { - pub targeted_senders: ::std::vec::Vec<::ethers::core::types::Address>, - } - ///`FuzzArtifactSelector(string,bytes4[])` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FuzzArtifactSelector { - pub artifact: ::std::string::String, - pub selectors: ::std::vec::Vec<[u8; 4]>, - } - ///`FuzzInterface(address,string[])` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FuzzInterface { - pub addr: ::ethers::core::types::Address, - pub artifacts: ::std::vec::Vec<::std::string::String>, - } - ///`FuzzSelector(address,bytes4[])` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FuzzSelector { - pub addr: ::ethers::core::types::Address, - pub selectors: ::std::vec::Vec<[u8; 4]>, - } -} diff --git a/crates/bindings-uniswapx/src/permitsignature.rs b/crates/bindings-uniswapx/src/permitsignature.rs new file mode 100644 index 0000000..24240ad --- /dev/null +++ b/crates/bindings-uniswapx/src/permitsignature.rs @@ -0,0 +1,7483 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface PermitSignature { + struct FuzzArtifactSelector { + string artifact; + bytes4[] selectors; + } + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } + + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function NAME_HASH() external view returns (bytes32); + function TYPE_HASH() external view returns (bytes32); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSelectors() external view returns (FuzzSelector[] memory excludedSelectors_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external view returns (bool); + function targetArtifactSelectors() external view returns (FuzzArtifactSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "NAME_HASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "TYPE_HASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSelectors", + "inputs": [], + "outputs": [ + { + "name": "excludedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzArtifactSelector[]", + "components": [ + { + "name": "artifact", + "type": "string", + "internalType": "string" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod PermitSignature { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c8054600160ff199182168117909255601f8054909116909117905534801561002d57600080fd5b50610f9b8061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa9146101d1578063ba414fa6146101d9578063e20c9f71146101f1578063fa7626d4146101f957600080fd5b806385226c811461019f578063916a17c6146101b4578063b0464fdc146101c957600080fd5b80633e5e3c23116100c85780633e5e3c23146101535780633f7286f41461015b57806364d4c8191461016357806366d9a9a01461018a57600080fd5b806304622c2e146100ef5780631ed7831c146101295780632ade38801461013e575b600080fd5b6101167f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a81565b6040519081526020015b60405180910390f35b610131610206565b6040516101209190610b11565b610146610275565b6040516101209190610bcf565b6101316103c4565b610131610431565b6101167f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61019261049e565b6040516101209190610d36565b6101a7610620565b6040516101209190610ddb565b6101bc6106f0565b6040516101209190610e5d565b6101bc6107f8565b6101a7610900565b6101e16109d0565b6040519015158152602001610120565b610131610aa4565b601f546101e19060ff1681565b6060601680548060200260200160405190810160405280929190818152602001828054801561026b57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156103bb576000848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103a457838290600052602060002001805461031790610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461034390610ef9565b80156103905780601f1061036557610100808354040283529160200191610390565b820191906000526020600020905b81548152906001019060200180831161037357829003601f168201915b5050505050815260200190600101906102f8565b505050508152505081526020019060010190610299565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561026b5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561026b5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002090600202016040518060400160405290816000820180546104f590610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461052190610ef9565b801561056e5780601f106105435761010080835404028352916020019161056e565b820191906000526020600020905b81548152906001019060200180831161055157829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561060857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105b55790505b505050505081525050815260200190600101906104c2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002001805461066390610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461068f90610ef9565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b505050505081526020019060010190610644565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156103bb57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156107e057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161078d5790505b50505050508152505081526020019060010190610714565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156103bb57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108e857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108955790505b5050505050815250508152602001906001019061081c565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002001805461094390610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461096f90610ef9565b80156109bc5780601f10610991576101008083540402835291602001916109bc565b820191906000526020600020905b81548152906001019060200180831161099f57829003601f168201915b505050505081526020019060010190610924565b60085460009060ff16156109e8575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9d9190610f4c565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561026b5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575050505050905090565b6020808252825182820181905260009190848201906040850190845b81811015610b5f57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610b2d565b50909695505050505050565b6000815180845260005b81811015610b9157602081850181015186830182015201610b75565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610cc8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b85030187528251805173ffffffffffffffffffffffffffffffffffffffff1685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610cb2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898503018352610ca0848651610b6b565b948e01949350918d0191600101610c66565b505050978a019794505091880191600101610bf6565b50919a9950505050505050505050565b60008151808452602080850194506020840160005b83811015610d2b5781517fffffffff000000000000000000000000000000000000000000000000000000001687529582019590820190600101610ced565b509495945050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015610dcd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552610da188860182610b6b565b91890151858303868b0152919050610db98183610cd8565b968901969450505090860190600101610d5f565b509098975050505050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015610e50577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610e3e858351610b6b565b94509285019290850190600101610e04565b5092979650505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015610dcd578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff168452870151878401879052610ee687850182610cd8565b9588019593505090860190600101610e86565b600181811c90821680610f0d57607f821691505b602082108103610f46577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215610f5e57600080fd5b505191905056fea264697066735822122026d939e7d9dd41d878bf01c5cab20688fed635637c6ca152757ad4ebec5dc76d64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x1F\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15a\0-W`\0\x80\xFD[Pa\x0F\x9B\x80a\0=`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\x8CW\x80c\xB5P\x8A\xA9\x11a\0fW\x80c\xB5P\x8A\xA9\x14a\x01\xD1W\x80c\xBAAO\xA6\x14a\x01\xD9W\x80c\xE2\x0C\x9Fq\x14a\x01\xF1W\x80c\xFAv&\xD4\x14a\x01\xF9W`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x01\x9FW\x80c\x91j\x17\xC6\x14a\x01\xB4W\x80c\xB0FO\xDC\x14a\x01\xC9W`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x01SW\x80c?r\x86\xF4\x14a\x01[W\x80cd\xD4\xC8\x19\x14a\x01cW\x80cf\xD9\xA9\xA0\x14a\x01\x8AW`\0\x80\xFD[\x80c\x04b,.\x14a\0\xEFW\x80c\x1E\xD7\x83\x1C\x14a\x01)W\x80c*\xDE8\x80\x14a\x01>W[`\0\x80\xFD[a\x01\x16\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x011a\x02\x06V[`@Qa\x01 \x91\x90a\x0B\x11V[a\x01Fa\x02uV[`@Qa\x01 \x91\x90a\x0B\xCFV[a\x011a\x03\xC4V[a\x011a\x041V[a\x01\x16\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[a\x01\x92a\x04\x9EV[`@Qa\x01 \x91\x90a\r6V[a\x01\xA7a\x06 V[`@Qa\x01 \x91\x90a\r\xDBV[a\x01\xBCa\x06\xF0V[`@Qa\x01 \x91\x90a\x0E]V[a\x01\xBCa\x07\xF8V[a\x01\xA7a\t\0V[a\x01\xE1a\t\xD0V[`@Q\x90\x15\x15\x81R` \x01a\x01 V[a\x011a\n\xA4V[`\x1FTa\x01\xE1\x90`\xFF\x16\x81V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@W[PPPPP\x90P\x90V[```\x1E\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xA4W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03\x17\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03C\x90a\x0E\xF9V[\x80\x15a\x03\x90W\x80`\x1F\x10a\x03eWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x90V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03sW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x02\xF8V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\x99V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@WPPPPP\x90P\x90V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@WPPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW\x83\x82\x90`\0R` `\0 \x90`\x02\x02\x01`@Q\x80`@\x01`@R\x90\x81`\0\x82\x01\x80Ta\x04\xF5\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05!\x90a\x0E\xF9V[\x80\x15a\x05nW\x80`\x1F\x10a\x05CWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05QW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01`\x01\x82\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x06\x08W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\xB5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xC2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x06c\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x8F\x90a\x0E\xF9V[\x80\x15a\x06\xDCW\x80`\x1F\x10a\x06\xB1Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\xDCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xBFW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06DV[```\x1D\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\xE0W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x8DW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\x14V[```\x1C\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xE8W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\x95W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x1CV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW\x83\x82\x90`\0R` `\0 \x01\x80Ta\tC\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\to\x90a\x0E\xF9V[\x80\x15a\t\xBCW\x80`\x1F\x10a\t\x91Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\xBCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t$V[`\x08T`\0\x90`\xFF\x16\x15a\t\xE8WP`\x08T`\xFF\x16\x90V[`@Q\x7Ff\x7F\x9Dp\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\x04\x82\x01\x81\x90R\x7Ffailed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`$\x83\x01R`\0\x91cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nyW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x9D\x91\x90a\x0FLV[\x14\x15\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@WPPPPP\x90P\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0B_W\x83Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0B-V[P\x90\x96\x95PPPPPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x0B\x91W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0BuV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0C\xC8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x8B\x85\x03\x01\x87R\x82Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0C\xB2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x89\x85\x03\x01\x83Ra\x0C\xA0\x84\x86Qa\x0BkV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0CfV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\x0B\xF6V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\r+W\x81Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x0C\xEDV[P\x94\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a\r\xCDW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x89\x84\x03\x01\x85R\x81Q\x80Q\x87\x85Ra\r\xA1\x88\x86\x01\x82a\x0BkV[\x91\x89\x01Q\x85\x83\x03\x86\x8B\x01R\x91\x90Pa\r\xB9\x81\x83a\x0C\xD8V[\x96\x89\x01\x96\x94PPP\x90\x86\x01\x90`\x01\x01a\r_V[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01`\0[\x82\x81\x10\x15a\x0EPW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x88\x86\x03\x01\x84Ra\x0E>\x85\x83Qa\x0BkV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0E\x04V[P\x92\x97\x96PPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a\r\xCDW\x88\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x01\x85R\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x87\x01Q\x87\x84\x01\x87\x90Ra\x0E\xE6\x87\x85\x01\x82a\x0C\xD8V[\x95\x88\x01\x95\x93PP\x90\x86\x01\x90`\x01\x01a\x0E\x86V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\rW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0FFW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F^W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 &\xD99\xE7\xD9\xDDA\xD8x\xBF\x01\xC5\xCA\xB2\x06\x88\xFE\xD65c|l\xA1Ruz\xD4\xEB\xEC]\xC7mdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa9146101d1578063ba414fa6146101d9578063e20c9f71146101f1578063fa7626d4146101f957600080fd5b806385226c811461019f578063916a17c6146101b4578063b0464fdc146101c957600080fd5b80633e5e3c23116100c85780633e5e3c23146101535780633f7286f41461015b57806364d4c8191461016357806366d9a9a01461018a57600080fd5b806304622c2e146100ef5780631ed7831c146101295780632ade38801461013e575b600080fd5b6101167f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a81565b6040519081526020015b60405180910390f35b610131610206565b6040516101209190610b11565b610146610275565b6040516101209190610bcf565b6101316103c4565b610131610431565b6101167f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61019261049e565b6040516101209190610d36565b6101a7610620565b6040516101209190610ddb565b6101bc6106f0565b6040516101209190610e5d565b6101bc6107f8565b6101a7610900565b6101e16109d0565b6040519015158152602001610120565b610131610aa4565b601f546101e19060ff1681565b6060601680548060200260200160405190810160405280929190818152602001828054801561026b57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156103bb576000848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103a457838290600052602060002001805461031790610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461034390610ef9565b80156103905780601f1061036557610100808354040283529160200191610390565b820191906000526020600020905b81548152906001019060200180831161037357829003601f168201915b5050505050815260200190600101906102f8565b505050508152505081526020019060010190610299565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561026b5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561026b5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002090600202016040518060400160405290816000820180546104f590610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461052190610ef9565b801561056e5780601f106105435761010080835404028352916020019161056e565b820191906000526020600020905b81548152906001019060200180831161055157829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561060857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105b55790505b505050505081525050815260200190600101906104c2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002001805461066390610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461068f90610ef9565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b505050505081526020019060010190610644565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156103bb57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156107e057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161078d5790505b50505050508152505081526020019060010190610714565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156103bb57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108e857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108955790505b5050505050815250508152602001906001019061081c565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002001805461094390610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461096f90610ef9565b80156109bc5780601f10610991576101008083540402835291602001916109bc565b820191906000526020600020905b81548152906001019060200180831161099f57829003601f168201915b505050505081526020019060010190610924565b60085460009060ff16156109e8575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9d9190610f4c565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561026b5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575050505050905090565b6020808252825182820181905260009190848201906040850190845b81811015610b5f57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610b2d565b50909695505050505050565b6000815180845260005b81811015610b9157602081850181015186830182015201610b75565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610cc8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b85030187528251805173ffffffffffffffffffffffffffffffffffffffff1685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610cb2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898503018352610ca0848651610b6b565b948e01949350918d0191600101610c66565b505050978a019794505091880191600101610bf6565b50919a9950505050505050505050565b60008151808452602080850194506020840160005b83811015610d2b5781517fffffffff000000000000000000000000000000000000000000000000000000001687529582019590820190600101610ced565b509495945050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015610dcd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552610da188860182610b6b565b91890151858303868b0152919050610db98183610cd8565b968901969450505090860190600101610d5f565b509098975050505050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015610e50577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610e3e858351610b6b565b94509285019290850190600101610e04565b5092979650505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015610dcd578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff168452870151878401879052610ee687850182610cd8565b9588019593505090860190600101610e86565b600181811c90821680610f0d57607f821691505b602082108103610f46577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215610f5e57600080fd5b505191905056fea264697066735822122026d939e7d9dd41d878bf01c5cab20688fed635637c6ca152757ad4ebec5dc76d64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\x8CW\x80c\xB5P\x8A\xA9\x11a\0fW\x80c\xB5P\x8A\xA9\x14a\x01\xD1W\x80c\xBAAO\xA6\x14a\x01\xD9W\x80c\xE2\x0C\x9Fq\x14a\x01\xF1W\x80c\xFAv&\xD4\x14a\x01\xF9W`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x01\x9FW\x80c\x91j\x17\xC6\x14a\x01\xB4W\x80c\xB0FO\xDC\x14a\x01\xC9W`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x01SW\x80c?r\x86\xF4\x14a\x01[W\x80cd\xD4\xC8\x19\x14a\x01cW\x80cf\xD9\xA9\xA0\x14a\x01\x8AW`\0\x80\xFD[\x80c\x04b,.\x14a\0\xEFW\x80c\x1E\xD7\x83\x1C\x14a\x01)W\x80c*\xDE8\x80\x14a\x01>W[`\0\x80\xFD[a\x01\x16\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x011a\x02\x06V[`@Qa\x01 \x91\x90a\x0B\x11V[a\x01Fa\x02uV[`@Qa\x01 \x91\x90a\x0B\xCFV[a\x011a\x03\xC4V[a\x011a\x041V[a\x01\x16\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[a\x01\x92a\x04\x9EV[`@Qa\x01 \x91\x90a\r6V[a\x01\xA7a\x06 V[`@Qa\x01 \x91\x90a\r\xDBV[a\x01\xBCa\x06\xF0V[`@Qa\x01 \x91\x90a\x0E]V[a\x01\xBCa\x07\xF8V[a\x01\xA7a\t\0V[a\x01\xE1a\t\xD0V[`@Q\x90\x15\x15\x81R` \x01a\x01 V[a\x011a\n\xA4V[`\x1FTa\x01\xE1\x90`\xFF\x16\x81V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@W[PPPPP\x90P\x90V[```\x1E\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xA4W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03\x17\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03C\x90a\x0E\xF9V[\x80\x15a\x03\x90W\x80`\x1F\x10a\x03eWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x90V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03sW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x02\xF8V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\x99V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@WPPPPP\x90P\x90V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@WPPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW\x83\x82\x90`\0R` `\0 \x90`\x02\x02\x01`@Q\x80`@\x01`@R\x90\x81`\0\x82\x01\x80Ta\x04\xF5\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05!\x90a\x0E\xF9V[\x80\x15a\x05nW\x80`\x1F\x10a\x05CWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05QW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01`\x01\x82\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x06\x08W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\xB5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xC2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x06c\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x8F\x90a\x0E\xF9V[\x80\x15a\x06\xDCW\x80`\x1F\x10a\x06\xB1Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\xDCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xBFW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06DV[```\x1D\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\xE0W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x8DW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\x14V[```\x1C\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xE8W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\x95W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x1CV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW\x83\x82\x90`\0R` `\0 \x01\x80Ta\tC\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\to\x90a\x0E\xF9V[\x80\x15a\t\xBCW\x80`\x1F\x10a\t\x91Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\xBCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t$V[`\x08T`\0\x90`\xFF\x16\x15a\t\xE8WP`\x08T`\xFF\x16\x90V[`@Q\x7Ff\x7F\x9Dp\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\x04\x82\x01\x81\x90R\x7Ffailed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`$\x83\x01R`\0\x91cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nyW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x9D\x91\x90a\x0FLV[\x14\x15\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@WPPPPP\x90P\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0B_W\x83Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0B-V[P\x90\x96\x95PPPPPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x0B\x91W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0BuV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0C\xC8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x8B\x85\x03\x01\x87R\x82Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0C\xB2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x89\x85\x03\x01\x83Ra\x0C\xA0\x84\x86Qa\x0BkV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0CfV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\x0B\xF6V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\r+W\x81Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x0C\xEDV[P\x94\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a\r\xCDW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x89\x84\x03\x01\x85R\x81Q\x80Q\x87\x85Ra\r\xA1\x88\x86\x01\x82a\x0BkV[\x91\x89\x01Q\x85\x83\x03\x86\x8B\x01R\x91\x90Pa\r\xB9\x81\x83a\x0C\xD8V[\x96\x89\x01\x96\x94PPP\x90\x86\x01\x90`\x01\x01a\r_V[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01`\0[\x82\x81\x10\x15a\x0EPW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x88\x86\x03\x01\x84Ra\x0E>\x85\x83Qa\x0BkV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0E\x04V[P\x92\x97\x96PPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a\r\xCDW\x88\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x01\x85R\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x87\x01Q\x87\x84\x01\x87\x90Ra\x0E\xE6\x87\x85\x01\x82a\x0C\xD8V[\x95\x88\x01\x95\x93PP\x90\x86\x01\x90`\x01\x01a\x0E\x86V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\rW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0FFW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F^W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 &\xD99\xE7\xD9\xDDA\xD8x\xBF\x01\xC5\xCA\xB2\x06\x88\xFE\xD65c|l\xA1Ruz\xD4\xEB\xEC]\xC7mdsolcC\0\x08\x18\x003", + ); + /**```solidity +struct FuzzArtifactSelector { string artifact; bytes4[] selectors; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FuzzArtifactSelector { + pub artifact: alloy::sol_types::private::String, + pub selectors: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<4>, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FuzzArtifactSelector) -> Self { + (value.artifact, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzArtifactSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + artifact: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzArtifactSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzArtifactSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.artifact, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for FuzzArtifactSelector { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for FuzzArtifactSelector { + const NAME: &'static str = "FuzzArtifactSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzArtifactSelector(string artifact,bytes4[] selectors)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.artifact, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzArtifactSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.artifact, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.artifact, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct FuzzInterface { address addr; string[] artifacts; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FuzzInterface { + pub addr: alloy::sol_types::private::Address, + pub artifacts: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FuzzInterface) -> Self { + (value.addr, value.artifacts) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzInterface { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + artifacts: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzInterface { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzInterface { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + as alloy_sol_types::SolType>::tokenize(&self.artifacts), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for FuzzInterface { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for FuzzInterface { + const NAME: &'static str = "FuzzInterface"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzInterface(address addr,string[] artifacts)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.addr, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.artifacts) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzInterface { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.artifacts, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.addr, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.artifacts, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct FuzzSelector { address addr; bytes4[] selectors; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FuzzSelector { + pub addr: alloy::sol_types::private::Address, + pub selectors: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<4>, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FuzzSelector) -> Self { + (value.addr, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + addr: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.addr, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for FuzzSelector { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for FuzzSelector { + const NAME: &'static str = "FuzzSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzSelector(address addr,bytes4[] selectors)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.addr, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.addr, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.addr, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. +```solidity +event log(string); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log { + type DataTuple<'a> = (alloy::sol_types::sol_data::String,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 65u8, + 48u8, + 79u8, + 172u8, + 217u8, + 50u8, + 61u8, + 117u8, + 177u8, + 27u8, + 205u8, + 214u8, + 9u8, + 203u8, + 56u8, + 239u8, + 255u8, + 253u8, + 176u8, + 87u8, + 16u8, + 247u8, + 202u8, + 240u8, + 233u8, + 177u8, + 108u8, + 109u8, + 157u8, + 112u8, + 159u8, + 80u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: data.0 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_address(address)` and selector `0x7ae74c527414ae135fd97047b12921a5ec3911b804197855d67e25c7b75ee6f3`. +```solidity +event log_address(address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_address { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_address { + type DataTuple<'a> = (alloy::sol_types::sol_data::Address,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_address(address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 122u8, + 231u8, + 76u8, + 82u8, + 116u8, + 20u8, + 174u8, + 19u8, + 95u8, + 217u8, + 112u8, + 71u8, + 177u8, + 41u8, + 33u8, + 165u8, + 236u8, + 57u8, + 17u8, + 184u8, + 4u8, + 25u8, + 120u8, + 85u8, + 214u8, + 126u8, + 37u8, + 199u8, + 183u8, + 94u8, + 230u8, + 243u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: data.0 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(uint256[])` and selector `0xfb102865d50addddf69da9b5aa1bced66c80cf869a5c8d0471a467e18ce9cab1`. +```solidity +event log_array(uint256[] val); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_array_0 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 251u8, + 16u8, + 40u8, + 101u8, + 213u8, + 10u8, + 221u8, + 221u8, + 246u8, + 157u8, + 169u8, + 181u8, + 170u8, + 27u8, + 206u8, + 214u8, + 108u8, + 128u8, + 207u8, + 134u8, + 154u8, + 92u8, + 141u8, + 4u8, + 113u8, + 164u8, + 103u8, + 225u8, + 140u8, + 233u8, + 202u8, + 177u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: data.0 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(int256[])` and selector `0x890a82679b470f2bd82816ed9b161f97d8b967f37fa3647c21d5bf39749e2dd5`. +```solidity +event log_array(int256[] val); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_array_1 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 137u8, + 10u8, + 130u8, + 103u8, + 155u8, + 71u8, + 15u8, + 43u8, + 216u8, + 40u8, + 22u8, + 237u8, + 155u8, + 22u8, + 31u8, + 151u8, + 216u8, + 185u8, + 103u8, + 243u8, + 127u8, + 163u8, + 100u8, + 124u8, + 33u8, + 213u8, + 191u8, + 57u8, + 116u8, + 158u8, + 45u8, + 213u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: data.0 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_array(address[])` and selector `0x40e1840f5769073d61bd01372d9b75baa9842d5629a0c99ff103be1178a8e9e2`. +```solidity +event log_array(address[] val); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_array_2 { + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_array(address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 64u8, + 225u8, + 132u8, + 15u8, + 87u8, + 105u8, + 7u8, + 61u8, + 97u8, + 189u8, + 1u8, + 55u8, + 45u8, + 155u8, + 117u8, + 186u8, + 169u8, + 132u8, + 45u8, + 86u8, + 41u8, + 160u8, + 201u8, + 159u8, + 241u8, + 3u8, + 190u8, + 17u8, + 120u8, + 168u8, + 233u8, + 226u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { val: data.0 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes(bytes)` and selector `0x23b62ad0584d24a75f0bf3560391ef5659ec6db1269c56e11aa241d637f19b20`. +```solidity +event log_bytes(bytes); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_bytes { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bytes,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_bytes(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 35u8, + 182u8, + 42u8, + 208u8, + 88u8, + 77u8, + 36u8, + 167u8, + 95u8, + 11u8, + 243u8, + 86u8, + 3u8, + 145u8, + 239u8, + 86u8, + 89u8, + 236u8, + 109u8, + 177u8, + 38u8, + 156u8, + 86u8, + 225u8, + 26u8, + 162u8, + 65u8, + 214u8, + 55u8, + 241u8, + 155u8, + 32u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: data.0 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_bytes32(bytes32)` and selector `0xe81699b85113eea1c73e10588b2b035e55893369632173afd43feb192fac64e3`. +```solidity +event log_bytes32(bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_bytes32 { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_bytes32 { + type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_bytes32(bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 232u8, + 22u8, + 153u8, + 184u8, + 81u8, + 19u8, + 238u8, + 161u8, + 199u8, + 62u8, + 16u8, + 88u8, + 139u8, + 43u8, + 3u8, + 94u8, + 85u8, + 137u8, + 51u8, + 105u8, + 99u8, + 33u8, + 115u8, + 175u8, + 212u8, + 63u8, + 235u8, + 25u8, + 47u8, + 172u8, + 100u8, + 227u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: data.0 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_int(int256)` and selector `0x0eb5d52624c8d28ada9fc55a8c502ed5aa3fbe2fb6e91b71b5f376882b1d2fb8`. +```solidity +event log_int(int256); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_int { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::I256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_int { + type DataTuple<'a> = (alloy::sol_types::sol_data::Int<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_int(int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 14u8, + 181u8, + 213u8, + 38u8, + 36u8, + 200u8, + 210u8, + 138u8, + 218u8, + 159u8, + 197u8, + 90u8, + 140u8, + 80u8, + 46u8, + 213u8, + 170u8, + 63u8, + 190u8, + 47u8, + 182u8, + 233u8, + 27u8, + 113u8, + 181u8, + 243u8, + 118u8, + 136u8, + 43u8, + 29u8, + 47u8, + 184u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: data.0 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_address(string,address)` and selector `0x9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f`. +```solidity +event log_named_address(string key, address val); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_named_address { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_address { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_address(string,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 156u8, + 78u8, + 133u8, + 65u8, + 202u8, + 143u8, + 13u8, + 193u8, + 196u8, + 19u8, + 249u8, + 16u8, + 143u8, + 102u8, + 216u8, + 45u8, + 60u8, + 236u8, + 177u8, + 189u8, + 219u8, + 206u8, + 67u8, + 122u8, + 97u8, + 202u8, + 163u8, + 23u8, + 92u8, + 76u8, + 201u8, + 111u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { key: data.0, val: data.1 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_named_address { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_address> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_address) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,uint256[])` and selector `0x00aaa39c9ffb5f567a4534380c737075702e1f7f14107fc95328e3b56c0325fb`. +```solidity +event log_named_array(string key, uint256[] val); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_named_array_0 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_0 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,uint256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 0u8, + 170u8, + 163u8, + 156u8, + 159u8, + 251u8, + 95u8, + 86u8, + 122u8, + 69u8, + 52u8, + 56u8, + 12u8, + 115u8, + 112u8, + 117u8, + 112u8, + 46u8, + 31u8, + 127u8, + 20u8, + 16u8, + 127u8, + 201u8, + 83u8, + 40u8, + 227u8, + 181u8, + 108u8, + 3u8, + 37u8, + 251u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { key: data.0, val: data.1 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_named_array_0 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_0> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_0) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,int256[])` and selector `0xa73eda09662f46dde729be4611385ff34fe6c44fbbc6f7e17b042b59a3445b57`. +```solidity +event log_named_array(string key, int256[] val); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_named_array_1 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_1 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,int256[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 167u8, + 62u8, + 218u8, + 9u8, + 102u8, + 47u8, + 70u8, + 221u8, + 231u8, + 41u8, + 190u8, + 70u8, + 17u8, + 56u8, + 95u8, + 243u8, + 79u8, + 230u8, + 196u8, + 79u8, + 187u8, + 198u8, + 247u8, + 225u8, + 123u8, + 4u8, + 43u8, + 89u8, + 163u8, + 68u8, + 91u8, + 87u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { key: data.0, val: data.1 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.key, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_named_array_1 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_1> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_1) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_array(string,address[])` and selector `0x3bcfb2ae2e8d132dd1fce7cf278a9a19756a9fceabe470df3bdabb4bc577d1bd`. +```solidity +event log_named_array(string key, address[] val); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_named_array_2 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Vec, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_array_2 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_array(string,address[])"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 59u8, + 207u8, + 178u8, + 174u8, + 46u8, + 141u8, + 19u8, + 45u8, + 209u8, + 252u8, + 231u8, + 207u8, + 39u8, + 138u8, + 154u8, + 25u8, + 117u8, + 106u8, + 159u8, + 206u8, + 171u8, + 228u8, + 112u8, + 223u8, + 59u8, + 218u8, + 187u8, + 75u8, + 197u8, + 119u8, + 209u8, + 189u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { key: data.0, val: data.1 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_named_array_2 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_array_2> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_array_2) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes(string,bytes)` and selector `0xd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18`. +```solidity +event log_named_bytes(string key, bytes val); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_named_bytes { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Bytes, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_bytes(string,bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 210u8, + 110u8, + 22u8, + 202u8, + 212u8, + 84u8, + 135u8, + 5u8, + 228u8, + 201u8, + 226u8, + 217u8, + 79u8, + 152u8, + 238u8, + 145u8, + 194u8, + 137u8, + 8u8, + 94u8, + 228u8, + 37u8, + 89u8, + 79u8, + 213u8, + 99u8, + 95u8, + 162u8, + 150u8, + 76u8, + 207u8, + 24u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { key: data.0, val: data.1 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_named_bytes { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_bytes32(string,bytes32)` and selector `0xafb795c9c61e4fe7468c386f925d7a5429ecad9c0495ddb8d38d690614d32f99`. +```solidity +event log_named_bytes32(string key, bytes32 val); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_named_bytes32 { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_bytes32 { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_bytes32(string,bytes32)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 175u8, + 183u8, + 149u8, + 201u8, + 198u8, + 30u8, + 79u8, + 231u8, + 70u8, + 140u8, + 56u8, + 111u8, + 146u8, + 93u8, + 122u8, + 84u8, + 41u8, + 236u8, + 173u8, + 156u8, + 4u8, + 149u8, + 221u8, + 184u8, + 211u8, + 141u8, + 105u8, + 6u8, + 20u8, + 211u8, + 47u8, + 153u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { key: data.0, val: data.1 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_named_bytes32 { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_bytes32> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_bytes32) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_int(string,int256,uint256)` and selector `0x5da6ce9d51151ba10c09a559ef24d520b9dac5c5b8810ae8434e4d0d86411a95`. +```solidity +event log_named_decimal_int(string key, int256 val, uint256 decimals); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_named_decimal_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::I256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_decimal_int(string,int256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 93u8, + 166u8, + 206u8, + 157u8, + 81u8, + 21u8, + 27u8, + 161u8, + 12u8, + 9u8, + 165u8, + 89u8, + 239u8, + 36u8, + 213u8, + 32u8, + 185u8, + 218u8, + 197u8, + 197u8, + 184u8, + 129u8, + 10u8, + 232u8, + 67u8, + 78u8, + 77u8, + 13u8, + 134u8, + 65u8, + 26u8, + 149u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: data.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + as alloy_sol_types::SolType>::tokenize(&self.decimals), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_named_decimal_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_decimal_uint(string,uint256,uint256)` and selector `0xeb8ba43ced7537421946bd43e828b8b2b8428927aa8f801c13d934bf11aca57b`. +```solidity +event log_named_decimal_uint(string key, uint256 val, uint256 decimals); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_named_decimal_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub decimals: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_decimal_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_decimal_uint(string,uint256,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 235u8, + 139u8, + 164u8, + 60u8, + 237u8, + 117u8, + 55u8, + 66u8, + 25u8, + 70u8, + 189u8, + 67u8, + 232u8, + 40u8, + 184u8, + 178u8, + 184u8, + 66u8, + 137u8, + 39u8, + 170u8, + 143u8, + 128u8, + 28u8, + 19u8, + 217u8, + 52u8, + 191u8, + 17u8, + 172u8, + 165u8, + 123u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + key: data.0, + val: data.1, + decimals: data.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + as alloy_sol_types::SolType>::tokenize(&self.decimals), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_named_decimal_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_decimal_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_decimal_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_int(string,int256)` and selector `0x2fe632779174374378442a8e978bccfbdcc1d6b2b0d81f7e8eb776ab2286f168`. +```solidity +event log_named_int(string key, int256 val); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_named_int { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::I256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_int { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Int<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_int(string,int256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 47u8, + 230u8, + 50u8, + 119u8, + 145u8, + 116u8, + 55u8, + 67u8, + 120u8, + 68u8, + 42u8, + 142u8, + 151u8, + 139u8, + 204u8, + 251u8, + 220u8, + 193u8, + 214u8, + 178u8, + 176u8, + 216u8, + 31u8, + 126u8, + 142u8, + 183u8, + 118u8, + 171u8, + 34u8, + 134u8, + 241u8, + 104u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { key: data.0, val: data.1 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_named_int { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_int> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_int) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_string(string,string)` and selector `0x280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583`. +```solidity +event log_named_string(string key, string val); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_named_string { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_string { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::String, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_string(string,string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 40u8, + 15u8, + 68u8, + 70u8, + 178u8, + 138u8, + 19u8, + 114u8, + 65u8, + 125u8, + 218u8, + 101u8, + 141u8, + 48u8, + 185u8, + 91u8, + 41u8, + 146u8, + 177u8, + 42u8, + 201u8, + 199u8, + 243u8, + 120u8, + 83u8, + 95u8, + 41u8, + 169u8, + 122u8, + 207u8, + 53u8, + 131u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { key: data.0, val: data.1 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.key, + ), + ::tokenize( + &self.val, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_named_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_named_uint(string,uint256)` and selector `0xb2de2fbe801a0df6c0cbddfd448ba3c41d48a040ca35c56c8196ef0fcae721a8`. +```solidity +event log_named_uint(string key, uint256 val); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_named_uint { + #[allow(missing_docs)] + pub key: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub val: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_named_uint { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Uint<256>, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_named_uint(string,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 178u8, + 222u8, + 47u8, + 190u8, + 128u8, + 26u8, + 13u8, + 246u8, + 192u8, + 203u8, + 221u8, + 253u8, + 68u8, + 139u8, + 163u8, + 196u8, + 29u8, + 72u8, + 160u8, + 64u8, + 202u8, + 53u8, + 197u8, + 108u8, + 129u8, + 150u8, + 239u8, + 15u8, + 202u8, + 231u8, + 33u8, + 168u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { key: data.0, val: data.1 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.key, + ), + as alloy_sol_types::SolType>::tokenize(&self.val), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_named_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_named_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_named_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_string(string)` and selector `0x0b2e13ff20ac7b474198655583edf70dedd2c1dc980e329c4fbb2fc0748b796b`. +```solidity +event log_string(string); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_string { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_string { + type DataTuple<'a> = (alloy::sol_types::sol_data::String,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_string(string)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 11u8, + 46u8, + 19u8, + 255u8, + 32u8, + 172u8, + 123u8, + 71u8, + 65u8, + 152u8, + 101u8, + 85u8, + 131u8, + 237u8, + 247u8, + 13u8, + 237u8, + 210u8, + 193u8, + 220u8, + 152u8, + 14u8, + 50u8, + 156u8, + 79u8, + 187u8, + 47u8, + 192u8, + 116u8, + 139u8, + 121u8, + 107u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: data.0 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_string { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_string> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_string) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `log_uint(uint256)` and selector `0x2cab9790510fd8bdfbd2115288db33fec66691d476efc5427cfd4c0969301755`. +```solidity +event log_uint(uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct log_uint { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for log_uint { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "log_uint(uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 44u8, + 171u8, + 151u8, + 144u8, + 81u8, + 15u8, + 216u8, + 189u8, + 251u8, + 210u8, + 17u8, + 82u8, + 136u8, + 219u8, + 51u8, + 254u8, + 198u8, + 102u8, + 145u8, + 212u8, + 118u8, + 239u8, + 197u8, + 66u8, + 124u8, + 253u8, + 76u8, + 9u8, + 105u8, + 48u8, + 23u8, + 85u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: data.0 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for log_uint { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&log_uint> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &log_uint) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `logs(bytes)` and selector `0xe7950ede0394b9f2ce4a5a1bf5a7e1852411f7e6661b4308c913c4bfd11027e4`. +```solidity +event logs(bytes); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct logs { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for logs { + type DataTuple<'a> = (alloy::sol_types::sol_data::Bytes,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "logs(bytes)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 231u8, + 149u8, + 14u8, + 222u8, + 3u8, + 148u8, + 185u8, + 242u8, + 206u8, + 74u8, + 90u8, + 27u8, + 245u8, + 167u8, + 225u8, + 133u8, + 36u8, + 17u8, + 247u8, + 230u8, + 102u8, + 27u8, + 67u8, + 8u8, + 201u8, + 19u8, + 196u8, + 191u8, + 209u8, + 16u8, + 39u8, + 228u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { _0: data.0 } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for logs { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&logs> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &logs) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `IS_TEST()` and selector `0xfa7626d4`. +```solidity +function IS_TEST() external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_TESTCall {} + ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IS_TESTReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_TESTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_TESTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_TESTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_TESTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_TESTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_TEST()"; + const SELECTOR: [u8; 4] = [250u8, 118u8, 38u8, 212u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `NAME_HASH()` and selector `0x04622c2e`. +```solidity +function NAME_HASH() external view returns (bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NAME_HASHCall {} + ///Container type for the return parameters of the [`NAME_HASH()`](NAME_HASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NAME_HASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NAME_HASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NAME_HASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NAME_HASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NAME_HASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for NAME_HASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = NAME_HASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NAME_HASH()"; + const SELECTOR: [u8; 4] = [4u8, 98u8, 44u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `TYPE_HASH()` and selector `0x64d4c819`. +```solidity +function TYPE_HASH() external view returns (bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct TYPE_HASHCall {} + ///Container type for the return parameters of the [`TYPE_HASH()`](TYPE_HASHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct TYPE_HASHReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TYPE_HASHCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TYPE_HASHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TYPE_HASHReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for TYPE_HASHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for TYPE_HASHCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = TYPE_HASHReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TYPE_HASH()"; + const SELECTOR: [u8; 4] = [100u8, 212u8, 200u8, 25u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `excludeArtifacts()` and selector `0xb5508aa9`. +```solidity +function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct excludeArtifactsCall {} + ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct excludeArtifactsReturn { + pub excludedArtifacts_: alloy::sol_types::private::Vec< + alloy::sol_types::private::String, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for excludeArtifactsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: excludeArtifactsReturn) -> Self { + (value.excludedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for excludeArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeArtifactsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeArtifacts()"; + const SELECTOR: [u8; 4] = [181u8, 80u8, 138u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `excludeContracts()` and selector `0xe20c9f71`. +```solidity +function excludeContracts() external view returns (address[] memory excludedContracts_); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct excludeContractsCall {} + ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct excludeContractsReturn { + pub excludedContracts_: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for excludeContractsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: excludeContractsReturn) -> Self { + (value.excludedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for excludeContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeContractsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeContracts()"; + const SELECTOR: [u8; 4] = [226u8, 12u8, 159u8, 113u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `excludeSelectors()` and selector `0xb0464fdc`. +```solidity +function excludeSelectors() external view returns (FuzzSelector[] memory excludedSelectors_); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct excludeSelectorsCall {} + ///Container type for the return parameters of the [`excludeSelectors()`](excludeSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct excludeSelectorsReturn { + pub excludedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: excludeSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for excludeSelectorsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: excludeSelectorsReturn) -> Self { + (value.excludedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for excludeSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + excludedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSelectors()"; + const SELECTOR: [u8; 4] = [176u8, 70u8, 79u8, 220u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `excludeSenders()` and selector `0x1ed7831c`. +```solidity +function excludeSenders() external view returns (address[] memory excludedSenders_); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct excludeSendersCall {} + ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct excludeSendersReturn { + pub excludedSenders_: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for excludeSendersCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: excludeSendersReturn) -> Self { + (value.excludedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for excludeSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { excludedSenders_: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for excludeSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = excludeSendersReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "excludeSenders()"; + const SELECTOR: [u8; 4] = [30u8, 215u8, 131u8, 28u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `failed()` and selector `0xba414fa6`. +```solidity +function failed() external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct failedCall {} + ///Container type for the return parameters of the [`failed()`](failedCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct failedReturn { + pub _0: bool, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: failedReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for failedReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for failedCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = failedReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "failed()"; + const SELECTOR: [u8; 4] = [186u8, 65u8, 79u8, 166u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. +```solidity +function targetArtifactSelectors() external view returns (FuzzArtifactSelector[] memory targetedArtifactSelectors_); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct targetArtifactSelectorsCall {} + ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct targetArtifactSelectorsReturn { + pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for targetArtifactSelectorsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactSelectorsReturn) -> Self { + (value.targetedArtifactSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for targetArtifactSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifactSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactSelectorsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifactSelectors()"; + const SELECTOR: [u8; 4] = [102u8, 217u8, 169u8, 160u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `targetArtifacts()` and selector `0x85226c81`. +```solidity +function targetArtifacts() external view returns (string[] memory targetedArtifacts_); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct targetArtifactsCall {} + ///Container type for the return parameters of the [`targetArtifacts()`](targetArtifactsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct targetArtifactsReturn { + pub targetedArtifacts_: alloy::sol_types::private::Vec< + alloy::sol_types::private::String, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetArtifactsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: targetArtifactsReturn) -> Self { + (value.targetedArtifacts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for targetArtifactsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedArtifacts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetArtifactsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetArtifactsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetArtifacts()"; + const SELECTOR: [u8; 4] = [133u8, 34u8, 108u8, 129u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `targetContracts()` and selector `0x3f7286f4`. +```solidity +function targetContracts() external view returns (address[] memory targetedContracts_); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct targetContractsCall {} + ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct targetContractsReturn { + pub targetedContracts_: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetContractsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetContractsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: targetContractsReturn) -> Self { + (value.targetedContracts_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for targetContractsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedContracts_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetContractsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetContractsReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetContracts()"; + const SELECTOR: [u8; 4] = [63u8, 114u8, 134u8, 244u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. +```solidity +function targetInterfaces() external view returns (FuzzInterface[] memory targetedInterfaces_); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct targetInterfacesCall {} + ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct targetInterfacesReturn { + pub targetedInterfaces_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for targetInterfacesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: targetInterfacesReturn) -> Self { + (value.targetedInterfaces_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for targetInterfacesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedInterfaces_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetInterfacesCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetInterfacesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetInterfaces()"; + const SELECTOR: [u8; 4] = [42u8, 222u8, 56u8, 128u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `targetSelectors()` and selector `0x916a17c6`. +```solidity +function targetSelectors() external view returns (FuzzSelector[] memory targetedSelectors_); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct targetSelectorsCall {} + ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct targetSelectorsReturn { + pub targetedSelectors_: alloy::sol_types::private::Vec< + ::RustType, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSelectorsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: targetSelectorsReturn) -> Self { + (value.targetedSelectors_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for targetSelectorsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + targetedSelectors_: tuple.0, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSelectorsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSelectorsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSelectors()"; + const SELECTOR: [u8; 4] = [145u8, 106u8, 23u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `targetSenders()` and selector `0x3e5e3c23`. +```solidity +function targetSenders() external view returns (address[] memory targetedSenders_); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct targetSendersCall {} + ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct targetSendersReturn { + pub targetedSenders_: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: targetSendersReturn) -> Self { + (value.targetedSenders_,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for targetSendersReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { targetedSenders_: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for targetSendersCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = targetSendersReturn; + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "targetSenders()"; + const SELECTOR: [u8; 4] = [62u8, 94u8, 60u8, 35u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`PermitSignature`](self) function calls. + pub enum PermitSignatureCalls { + IS_TEST(IS_TESTCall), + NAME_HASH(NAME_HASHCall), + TYPE_HASH(TYPE_HASHCall), + excludeArtifacts(excludeArtifactsCall), + excludeContracts(excludeContractsCall), + excludeSelectors(excludeSelectorsCall), + excludeSenders(excludeSendersCall), + failed(failedCall), + targetArtifactSelectors(targetArtifactSelectorsCall), + targetArtifacts(targetArtifactsCall), + targetContracts(targetContractsCall), + targetInterfaces(targetInterfacesCall), + targetSelectors(targetSelectorsCall), + targetSenders(targetSendersCall), + } + #[automatically_derived] + impl PermitSignatureCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [4u8, 98u8, 44u8, 46u8], + [30u8, 215u8, 131u8, 28u8], + [42u8, 222u8, 56u8, 128u8], + [62u8, 94u8, 60u8, 35u8], + [63u8, 114u8, 134u8, 244u8], + [100u8, 212u8, 200u8, 25u8], + [102u8, 217u8, 169u8, 160u8], + [133u8, 34u8, 108u8, 129u8], + [145u8, 106u8, 23u8, 198u8], + [176u8, 70u8, 79u8, 220u8], + [181u8, 80u8, 138u8, 169u8], + [186u8, 65u8, 79u8, 166u8], + [226u8, 12u8, 159u8, 113u8], + [250u8, 118u8, 38u8, 212u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for PermitSignatureCalls { + const NAME: &'static str = "PermitSignatureCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 14usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_TEST(_) => ::SELECTOR, + Self::NAME_HASH(_) => { + ::SELECTOR + } + Self::TYPE_HASH(_) => { + ::SELECTOR + } + Self::excludeArtifacts(_) => { + ::SELECTOR + } + Self::excludeContracts(_) => { + ::SELECTOR + } + Self::excludeSelectors(_) => { + ::SELECTOR + } + Self::excludeSenders(_) => { + ::SELECTOR + } + Self::failed(_) => ::SELECTOR, + Self::targetArtifactSelectors(_) => { + ::SELECTOR + } + Self::targetArtifacts(_) => { + ::SELECTOR + } + Self::targetContracts(_) => { + ::SELECTOR + } + Self::targetInterfaces(_) => { + ::SELECTOR + } + Self::targetSelectors(_) => { + ::SELECTOR + } + Self::targetSenders(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn NAME_HASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::NAME_HASH) + } + NAME_HASH + }, + { + fn excludeSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::excludeSenders) + } + excludeSenders + }, + { + fn targetInterfaces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::targetInterfaces) + } + targetInterfaces + }, + { + fn targetSenders( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::targetSenders) + } + targetSenders + }, + { + fn targetContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::targetContracts) + } + targetContracts + }, + { + fn TYPE_HASH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::TYPE_HASH) + } + TYPE_HASH + }, + { + fn targetArtifactSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::targetArtifactSelectors) + } + targetArtifactSelectors + }, + { + fn targetArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::targetArtifacts) + } + targetArtifacts + }, + { + fn targetSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::targetSelectors) + } + targetSelectors + }, + { + fn excludeSelectors( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::excludeSelectors) + } + excludeSelectors + }, + { + fn excludeArtifacts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::excludeArtifacts) + } + excludeArtifacts + }, + { + fn failed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::failed) + } + failed + }, + { + fn excludeContracts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::excludeContracts) + } + excludeContracts + }, + { + fn IS_TEST( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PermitSignatureCalls::IS_TEST) + } + IS_TEST + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_TEST(inner) => { + ::abi_encoded_size(inner) + } + Self::NAME_HASH(inner) => { + ::abi_encoded_size(inner) + } + Self::TYPE_HASH(inner) => { + ::abi_encoded_size(inner) + } + Self::excludeArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::excludeSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::failed(inner) => { + ::abi_encoded_size(inner) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetContracts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSelectors(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::targetSenders(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_TEST(inner) => { + ::abi_encode_raw(inner, out) + } + Self::NAME_HASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TYPE_HASH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::excludeSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::failed(inner) => { + ::abi_encode_raw(inner, out) + } + Self::targetArtifactSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetArtifacts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetContracts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetInterfaces(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSelectors(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::targetSenders(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`PermitSignature`](self) events. + pub enum PermitSignatureEvents { + log(log), + log_address(log_address), + log_array_0(log_array_0), + log_array_1(log_array_1), + log_array_2(log_array_2), + log_bytes(log_bytes), + log_bytes32(log_bytes32), + log_int(log_int), + log_named_address(log_named_address), + log_named_array_0(log_named_array_0), + log_named_array_1(log_named_array_1), + log_named_array_2(log_named_array_2), + log_named_bytes(log_named_bytes), + log_named_bytes32(log_named_bytes32), + log_named_decimal_int(log_named_decimal_int), + log_named_decimal_uint(log_named_decimal_uint), + log_named_int(log_named_int), + log_named_string(log_named_string), + log_named_uint(log_named_uint), + log_string(log_string), + log_uint(log_uint), + logs(logs), + } + #[automatically_derived] + impl PermitSignatureEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 0u8, + 170u8, + 163u8, + 156u8, + 159u8, + 251u8, + 95u8, + 86u8, + 122u8, + 69u8, + 52u8, + 56u8, + 12u8, + 115u8, + 112u8, + 117u8, + 112u8, + 46u8, + 31u8, + 127u8, + 20u8, + 16u8, + 127u8, + 201u8, + 83u8, + 40u8, + 227u8, + 181u8, + 108u8, + 3u8, + 37u8, + 251u8, + ], + [ + 11u8, + 46u8, + 19u8, + 255u8, + 32u8, + 172u8, + 123u8, + 71u8, + 65u8, + 152u8, + 101u8, + 85u8, + 131u8, + 237u8, + 247u8, + 13u8, + 237u8, + 210u8, + 193u8, + 220u8, + 152u8, + 14u8, + 50u8, + 156u8, + 79u8, + 187u8, + 47u8, + 192u8, + 116u8, + 139u8, + 121u8, + 107u8, + ], + [ + 14u8, + 181u8, + 213u8, + 38u8, + 36u8, + 200u8, + 210u8, + 138u8, + 218u8, + 159u8, + 197u8, + 90u8, + 140u8, + 80u8, + 46u8, + 213u8, + 170u8, + 63u8, + 190u8, + 47u8, + 182u8, + 233u8, + 27u8, + 113u8, + 181u8, + 243u8, + 118u8, + 136u8, + 43u8, + 29u8, + 47u8, + 184u8, + ], + [ + 35u8, + 182u8, + 42u8, + 208u8, + 88u8, + 77u8, + 36u8, + 167u8, + 95u8, + 11u8, + 243u8, + 86u8, + 3u8, + 145u8, + 239u8, + 86u8, + 89u8, + 236u8, + 109u8, + 177u8, + 38u8, + 156u8, + 86u8, + 225u8, + 26u8, + 162u8, + 65u8, + 214u8, + 55u8, + 241u8, + 155u8, + 32u8, + ], + [ + 40u8, + 15u8, + 68u8, + 70u8, + 178u8, + 138u8, + 19u8, + 114u8, + 65u8, + 125u8, + 218u8, + 101u8, + 141u8, + 48u8, + 185u8, + 91u8, + 41u8, + 146u8, + 177u8, + 42u8, + 201u8, + 199u8, + 243u8, + 120u8, + 83u8, + 95u8, + 41u8, + 169u8, + 122u8, + 207u8, + 53u8, + 131u8, + ], + [ + 44u8, + 171u8, + 151u8, + 144u8, + 81u8, + 15u8, + 216u8, + 189u8, + 251u8, + 210u8, + 17u8, + 82u8, + 136u8, + 219u8, + 51u8, + 254u8, + 198u8, + 102u8, + 145u8, + 212u8, + 118u8, + 239u8, + 197u8, + 66u8, + 124u8, + 253u8, + 76u8, + 9u8, + 105u8, + 48u8, + 23u8, + 85u8, + ], + [ + 47u8, + 230u8, + 50u8, + 119u8, + 145u8, + 116u8, + 55u8, + 67u8, + 120u8, + 68u8, + 42u8, + 142u8, + 151u8, + 139u8, + 204u8, + 251u8, + 220u8, + 193u8, + 214u8, + 178u8, + 176u8, + 216u8, + 31u8, + 126u8, + 142u8, + 183u8, + 118u8, + 171u8, + 34u8, + 134u8, + 241u8, + 104u8, + ], + [ + 59u8, + 207u8, + 178u8, + 174u8, + 46u8, + 141u8, + 19u8, + 45u8, + 209u8, + 252u8, + 231u8, + 207u8, + 39u8, + 138u8, + 154u8, + 25u8, + 117u8, + 106u8, + 159u8, + 206u8, + 171u8, + 228u8, + 112u8, + 223u8, + 59u8, + 218u8, + 187u8, + 75u8, + 197u8, + 119u8, + 209u8, + 189u8, + ], + [ + 64u8, + 225u8, + 132u8, + 15u8, + 87u8, + 105u8, + 7u8, + 61u8, + 97u8, + 189u8, + 1u8, + 55u8, + 45u8, + 155u8, + 117u8, + 186u8, + 169u8, + 132u8, + 45u8, + 86u8, + 41u8, + 160u8, + 201u8, + 159u8, + 241u8, + 3u8, + 190u8, + 17u8, + 120u8, + 168u8, + 233u8, + 226u8, + ], + [ + 65u8, + 48u8, + 79u8, + 172u8, + 217u8, + 50u8, + 61u8, + 117u8, + 177u8, + 27u8, + 205u8, + 214u8, + 9u8, + 203u8, + 56u8, + 239u8, + 255u8, + 253u8, + 176u8, + 87u8, + 16u8, + 247u8, + 202u8, + 240u8, + 233u8, + 177u8, + 108u8, + 109u8, + 157u8, + 112u8, + 159u8, + 80u8, + ], + [ + 93u8, + 166u8, + 206u8, + 157u8, + 81u8, + 21u8, + 27u8, + 161u8, + 12u8, + 9u8, + 165u8, + 89u8, + 239u8, + 36u8, + 213u8, + 32u8, + 185u8, + 218u8, + 197u8, + 197u8, + 184u8, + 129u8, + 10u8, + 232u8, + 67u8, + 78u8, + 77u8, + 13u8, + 134u8, + 65u8, + 26u8, + 149u8, + ], + [ + 122u8, + 231u8, + 76u8, + 82u8, + 116u8, + 20u8, + 174u8, + 19u8, + 95u8, + 217u8, + 112u8, + 71u8, + 177u8, + 41u8, + 33u8, + 165u8, + 236u8, + 57u8, + 17u8, + 184u8, + 4u8, + 25u8, + 120u8, + 85u8, + 214u8, + 126u8, + 37u8, + 199u8, + 183u8, + 94u8, + 230u8, + 243u8, + ], + [ + 137u8, + 10u8, + 130u8, + 103u8, + 155u8, + 71u8, + 15u8, + 43u8, + 216u8, + 40u8, + 22u8, + 237u8, + 155u8, + 22u8, + 31u8, + 151u8, + 216u8, + 185u8, + 103u8, + 243u8, + 127u8, + 163u8, + 100u8, + 124u8, + 33u8, + 213u8, + 191u8, + 57u8, + 116u8, + 158u8, + 45u8, + 213u8, + ], + [ + 156u8, + 78u8, + 133u8, + 65u8, + 202u8, + 143u8, + 13u8, + 193u8, + 196u8, + 19u8, + 249u8, + 16u8, + 143u8, + 102u8, + 216u8, + 45u8, + 60u8, + 236u8, + 177u8, + 189u8, + 219u8, + 206u8, + 67u8, + 122u8, + 97u8, + 202u8, + 163u8, + 23u8, + 92u8, + 76u8, + 201u8, + 111u8, + ], + [ + 167u8, + 62u8, + 218u8, + 9u8, + 102u8, + 47u8, + 70u8, + 221u8, + 231u8, + 41u8, + 190u8, + 70u8, + 17u8, + 56u8, + 95u8, + 243u8, + 79u8, + 230u8, + 196u8, + 79u8, + 187u8, + 198u8, + 247u8, + 225u8, + 123u8, + 4u8, + 43u8, + 89u8, + 163u8, + 68u8, + 91u8, + 87u8, + ], + [ + 175u8, + 183u8, + 149u8, + 201u8, + 198u8, + 30u8, + 79u8, + 231u8, + 70u8, + 140u8, + 56u8, + 111u8, + 146u8, + 93u8, + 122u8, + 84u8, + 41u8, + 236u8, + 173u8, + 156u8, + 4u8, + 149u8, + 221u8, + 184u8, + 211u8, + 141u8, + 105u8, + 6u8, + 20u8, + 211u8, + 47u8, + 153u8, + ], + [ + 178u8, + 222u8, + 47u8, + 190u8, + 128u8, + 26u8, + 13u8, + 246u8, + 192u8, + 203u8, + 221u8, + 253u8, + 68u8, + 139u8, + 163u8, + 196u8, + 29u8, + 72u8, + 160u8, + 64u8, + 202u8, + 53u8, + 197u8, + 108u8, + 129u8, + 150u8, + 239u8, + 15u8, + 202u8, + 231u8, + 33u8, + 168u8, + ], + [ + 210u8, + 110u8, + 22u8, + 202u8, + 212u8, + 84u8, + 135u8, + 5u8, + 228u8, + 201u8, + 226u8, + 217u8, + 79u8, + 152u8, + 238u8, + 145u8, + 194u8, + 137u8, + 8u8, + 94u8, + 228u8, + 37u8, + 89u8, + 79u8, + 213u8, + 99u8, + 95u8, + 162u8, + 150u8, + 76u8, + 207u8, + 24u8, + ], + [ + 231u8, + 149u8, + 14u8, + 222u8, + 3u8, + 148u8, + 185u8, + 242u8, + 206u8, + 74u8, + 90u8, + 27u8, + 245u8, + 167u8, + 225u8, + 133u8, + 36u8, + 17u8, + 247u8, + 230u8, + 102u8, + 27u8, + 67u8, + 8u8, + 201u8, + 19u8, + 196u8, + 191u8, + 209u8, + 16u8, + 39u8, + 228u8, + ], + [ + 232u8, + 22u8, + 153u8, + 184u8, + 81u8, + 19u8, + 238u8, + 161u8, + 199u8, + 62u8, + 16u8, + 88u8, + 139u8, + 43u8, + 3u8, + 94u8, + 85u8, + 137u8, + 51u8, + 105u8, + 99u8, + 33u8, + 115u8, + 175u8, + 212u8, + 63u8, + 235u8, + 25u8, + 47u8, + 172u8, + 100u8, + 227u8, + ], + [ + 235u8, + 139u8, + 164u8, + 60u8, + 237u8, + 117u8, + 55u8, + 66u8, + 25u8, + 70u8, + 189u8, + 67u8, + 232u8, + 40u8, + 184u8, + 178u8, + 184u8, + 66u8, + 137u8, + 39u8, + 170u8, + 143u8, + 128u8, + 28u8, + 19u8, + 217u8, + 52u8, + 191u8, + 17u8, + 172u8, + 165u8, + 123u8, + ], + [ + 251u8, + 16u8, + 40u8, + 101u8, + 213u8, + 10u8, + 221u8, + 221u8, + 246u8, + 157u8, + 169u8, + 181u8, + 170u8, + 27u8, + 206u8, + 214u8, + 108u8, + 128u8, + 207u8, + 134u8, + 154u8, + 92u8, + 141u8, + 4u8, + 113u8, + 164u8, + 103u8, + 225u8, + 140u8, + 233u8, + 202u8, + 177u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for PermitSignatureEvents { + const NAME: &'static str = "PermitSignatureEvents"; + const COUNT: usize = 22usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_address) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_array_0) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_array_1) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_bytes) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_bytes32) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_int) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_address) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_array_0) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_array_1) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_array_2) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_bytes) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_bytes32) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_decimal_int) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_decimal_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_int) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_named_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_string) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::log_uint) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::logs) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PermitSignatureEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::logs(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::log(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_address(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_0(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_1(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_array_2(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_bytes32(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_decimal_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_int(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_named_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_string(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::log_uint(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::logs(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`PermitSignature`](self) contract instance. + +See the [wrapper's documentation](`PermitSignatureInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> PermitSignatureInstance { + PermitSignatureInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + PermitSignatureInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + PermitSignatureInstance::::deploy_builder(provider) + } + /**A [`PermitSignature`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`PermitSignature`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct PermitSignatureInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for PermitSignatureInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("PermitSignatureInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PermitSignatureInstance { + /**Creates a new wrapper around an on-chain [`PermitSignature`](self) contract instance. + +See the [wrapper's documentation](`PermitSignatureInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl PermitSignatureInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> PermitSignatureInstance { + PermitSignatureInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PermitSignatureInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_TEST`] function. + pub fn IS_TEST(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_TESTCall {}) + } + ///Creates a new call builder for the [`NAME_HASH`] function. + pub fn NAME_HASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&NAME_HASHCall {}) + } + ///Creates a new call builder for the [`TYPE_HASH`] function. + pub fn TYPE_HASH( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&TYPE_HASHCall {}) + } + ///Creates a new call builder for the [`excludeArtifacts`] function. + pub fn excludeArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeArtifactsCall {}) + } + ///Creates a new call builder for the [`excludeContracts`] function. + pub fn excludeContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeContractsCall {}) + } + ///Creates a new call builder for the [`excludeSelectors`] function. + pub fn excludeSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSelectorsCall {}) + } + ///Creates a new call builder for the [`excludeSenders`] function. + pub fn excludeSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&excludeSendersCall {}) + } + ///Creates a new call builder for the [`failed`] function. + pub fn failed(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&failedCall {}) + } + ///Creates a new call builder for the [`targetArtifactSelectors`] function. + pub fn targetArtifactSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactSelectorsCall {}) + } + ///Creates a new call builder for the [`targetArtifacts`] function. + pub fn targetArtifacts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetArtifactsCall {}) + } + ///Creates a new call builder for the [`targetContracts`] function. + pub fn targetContracts( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetContractsCall {}) + } + ///Creates a new call builder for the [`targetInterfaces`] function. + pub fn targetInterfaces( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetInterfacesCall {}) + } + ///Creates a new call builder for the [`targetSelectors`] function. + pub fn targetSelectors( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSelectorsCall {}) + } + ///Creates a new call builder for the [`targetSenders`] function. + pub fn targetSenders( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&targetSendersCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PermitSignatureInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`log`] event. + pub fn log_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_address`] event. + pub fn log_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_0`] event. + pub fn log_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_1`] event. + pub fn log_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_array_2`] event. + pub fn log_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes`] event. + pub fn log_bytes_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_bytes32`] event. + pub fn log_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_int`] event. + pub fn log_int_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_address`] event. + pub fn log_named_address_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_0`] event. + pub fn log_named_array_0_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_1`] event. + pub fn log_named_array_1_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_array_2`] event. + pub fn log_named_array_2_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes`] event. + pub fn log_named_bytes_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_bytes32`] event. + pub fn log_named_bytes32_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_int`] event. + pub fn log_named_decimal_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_decimal_uint`] event. + pub fn log_named_decimal_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_int`] event. + pub fn log_named_int_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_string`] event. + pub fn log_named_string_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_named_uint`] event. + pub fn log_named_uint_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_string`] event. + pub fn log_string_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`log_uint`] event. + pub fn log_uint_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`logs`] event. + pub fn logs_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/priority_fee_lib.rs b/crates/bindings-uniswapx/src/priority_fee_lib.rs deleted file mode 100644 index dc7f6bd..0000000 --- a/crates/bindings-uniswapx/src/priority_fee_lib.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use priority_fee_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod priority_fee_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static PRIORITYFEELIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xE8\x92\xBD\xBC\xDB\x7F\xC0R\"G\xE7\x85\xFDf9\xEB/\x96\x1E?\xD1A\xDC\x1E\xEF\xD8\x98\xD7\xF6s\xC3rdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static PRIORITYFEELIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xE8\x92\xBD\xBC\xDB\x7F\xC0R\"G\xE7\x85\xFDf9\xEB/\x96\x1E?\xD1A\xDC\x1E\xEF\xD8\x98\xD7\xF6s\xC3rdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static PRIORITYFEELIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct PriorityFeeLib(::ethers::contract::Contract); - impl ::core::clone::Clone for PriorityFeeLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for PriorityFeeLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for PriorityFeeLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for PriorityFeeLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(PriorityFeeLib)) - .field(&self.address()) - .finish() - } - } - impl PriorityFeeLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - PRIORITYFEELIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - PRIORITYFEELIB_ABI.clone(), - PRIORITYFEELIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for PriorityFeeLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/priority_order_lib.rs b/crates/bindings-uniswapx/src/priority_order_lib.rs deleted file mode 100644 index f58f0fa..0000000 --- a/crates/bindings-uniswapx/src/priority_order_lib.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use priority_order_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod priority_order_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static PRIORITYORDERLIB_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \r\x8C\x88{\xB2\xE8\xA0\xA7H\xC8\x92mrB\xE5-!\xBBOpv\xB8\xCF\xD8\xC6\x9B\xB7\x9B\xA0;c\x9BdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static PRIORITYORDERLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \r\x8C\x88{\xB2\xE8\xA0\xA7H\xC8\x92mrB\xE5-!\xBBOpv\xB8\xCF\xD8\xC6\x9B\xB7\x9B\xA0;c\x9BdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static PRIORITYORDERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct PriorityOrderLib(::ethers::contract::Contract); - impl ::core::clone::Clone for PriorityOrderLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for PriorityOrderLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for PriorityOrderLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for PriorityOrderLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(PriorityOrderLib)) - .field(&self.address()) - .finish() - } - } - impl PriorityOrderLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - PRIORITYORDERLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - PRIORITYORDERLIB_ABI.clone(), - PRIORITYORDERLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for PriorityOrderLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/priority_order_reactor.rs b/crates/bindings-uniswapx/src/priority_order_reactor.rs deleted file mode 100644 index 7d9191b..0000000 --- a/crates/bindings-uniswapx/src/priority_order_reactor.rs +++ /dev/null @@ -1,1714 +0,0 @@ -pub use priority_order_reactor::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod priority_order_reactor { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_permit2"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_protocolFeeOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatchWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeBatchWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("feeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeController"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "contract IProtocolFeeController", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit2"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit2"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setProtocolFeeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "setProtocolFeeController", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Fill"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Fill"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("orderHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("swapper"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ProtocolFeeControllerSet"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "ProtocolFeeControllerSet", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("oldFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("duplicateToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("recipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputOutputScaling"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InputOutputScaling"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidCosignature"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidCosignature"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidDeadline"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidDeadline"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("feeToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidGasPrice"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidGasPrice"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidReactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidReactor"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("OrderAlreadyFilled"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("OrderAlreadyFilled"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("OrderNotFillable"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("OrderNotFillable"), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static PRIORITYORDERREACTOR_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x003\x908\x03\x80b\x003\x90\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa2xb\0\x01\x18_9_\x81\x81`\xDA\x01R\x81\x81a\r-\x01Ra\x19\x8F\x01Ra2x_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a#\xBDV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a$bV[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a$\xA1V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%4V[a\x06eV[a\0\xB4a\x01e6`\x04a%VV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%4V[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a%\xBDV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x86V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a({V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B7V[a\x04\x9F\x81a\x0B\x86V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x86V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga%\xBDV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B7V[a\x08d\x81a\x0B\x86V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a(\xB7V[\x81\x01\x90a\nW\x91\x90a,nV[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\np\x91a\x0C\xD1V[_a\nz\x82a\r\xE0V[\x90Pa\n\x86\x81\x83a\x10,V[_a\n\x94\x83``\x01Qa\x11\x8CV[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\n\xC1\x83\x86`\x80\x01Qa\x11\xDF\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xDD\x83\x86`\xA0\x01Qa\x12\xD8\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\n\xF2\x91\x90a(\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BVWa\x0BVa%\xBDV[` \x02` \x01\x01Q\x90Pa\x0Bi\x81a\x13\xBBV[a\x0Bs\x813a\x18\x98V[a\x0B}\x813a\x19\x8DV[P`\x01\x01a\x0B;V[\x80Q_[\x81\x81\x10\x15a\x0C\xC0W_\x83\x82\x81Q\x81\x10a\x0B\xA5Wa\x0B\xA5a%\xBDV[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\"W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xD9Wa\x0B\xD9a%\xBDV[` \x02` \x01\x01Q\x90Pa\x0C\x19\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBAV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CjWa\x0Cja%\xBDV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xAE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8AV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1D\x06V[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91_\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\rtW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x98\x91\x90a-hV[\x90P\x81\x81\x18\x80\x83\x16_\x03a\r\xD8W`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R_\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a1[` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919`@Q` \x01a\x0Fy\x94\x93\x92\x91\x90a-\x7FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\x9B\x83_\x01Qa\x1D\x9CV[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xB7\x87`\x80\x01Qa\x1E5V[a\x0F\xC4\x88`\xA0\x01Qa\x1E\x9BV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10kW`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\x98WP\x80C\x10[\x80\x15a\x10\xA8WP`\xC0\x82\x01QQ\x81\x11[\x15a\x10\xD2W` \x82\x01Qa\x10\xCA\x90a\x10\xC0\x84\x86a\x1F6V[\x84`\xE0\x01Qa\x1F\xACV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11\x0CW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03LW_[\x82`\xA0\x01QQ\x81\x10\x15a\x06_W_\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11@Wa\x11@a%\xBDV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\x84W`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11\x1CV[_H:\x10\x15a\x11\xC7W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x11\xD7W\x03\x90V[P_[\x91\x90PV[a\x12\x16`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[_\x83`@\x01Q\x83a\x12'\x91\x90a.\x02V[\x90Pb\x98\x96\x80\x81\x10a\x12sW`@Q\x80``\x01`@R\x80\x85_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x12\xD2V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x12\xBDW` \x86\x01Qa\x12\xB8\x90b\x98\x96\x80\x85\x81\x03\x90a \xCFV[a\x12\xC3V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xF6Wa\x12\xF6a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x14W\x90P[P\x91P_[\x81\x81\x10\x15a\x13\xB3Wa\x13\x8E\x85\x82\x81Q\x81\x10a\x13\x80Wa\x13\x80a%\xBDV[` \x02` \x01\x01Q\x85a!\tV[\x83\x82\x81Q\x81\x10a\x13\xA0Wa\x13\xA0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13cV[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x13\xDBWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x141\x90\x85\x90`\x04\x01a.\x19V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14KW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\x90\x91\x90\x81\x01\x90a.+V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x14\xA7\x82\x84a.\xF4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\xBFWa\x14\xBFa%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x15wW\x85`@\x01Q\x81\x81Q\x81\x10a\x15JWa\x15Ja%\xBDV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15dWa\x15da%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15,V[P_\x80_[\x84\x81\x10\x15a\x18\x87W_\x87\x82\x81Q\x81\x10a\x15\x97Wa\x15\x97a%\xBDV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16RW\x88\x81\x81Q\x81\x10a\x15\xBDWa\x15\xBDa%\xBDV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x15\xA3V[P_\x80[\x88\x81\x10\x15a\x17\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16uWa\x16ua%\xBDV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x06W\x85\x15a\x16\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x16\xFF\x90\x84a.\xF4V[\x92P`\x01\x96P[P`\x01\x01a\x16VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\x88W\x84\x15a\x17oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\x81\x90\x82a.\xF4V[\x90P`\x01\x93P[\x80_\x03a\x17\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x17\xEA\x81`\x05a'\x10a \xCFV[\x82` \x01Q\x11\x15a\x18]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18rWa\x18ra%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x18\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19e\x90\x84\x90\x86\x90`\x04\x01a/\x07V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19{W_\x80\xFD[PZ\xFA\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1AL\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a1\xE8\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a1-`.\x919`@Q` \x01a\x1C)\x95\x94\x93\x92\x91\x90a/5V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\x96\x96\x95\x94\x93\x92`\x04\x01a/\xCFV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xADW_\x80\xFD[PZ\xF1\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1C\xE4Wa\x03L\x82\x82a\x1D\x06V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xBCV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\\W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1DaV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x0F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10\x0F\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBAWa\x1E\xBAa%\x90V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE4W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1F'W_a\x1F\x15\x85\x83\x81Q\x81\x10a\x1F\x08Wa\x1F\x08a%\xBDV[` \x02` \x01\x01Qa\"\xAAV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xE9V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xC0\x01Q`@Q` \x01a\x1FQ\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x8E\x93\x92\x91` \x01a0\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x1F\xC2\x91\x90a0\xC2V[\x91P\x91P_\x83`@\x81Q\x81\x10a\x1F\xDAWa\x1F\xDAa%\xBDV[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a 4W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a \x8FWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a \xC6W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\x02W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a!\x8BWa!\x86\x85`@\x01Q\x85a!j\x91\x90a.\x02V[a!w\x90b\x98\x96\x80a.\xF4V[` \x87\x01Q\x90b\x98\x96\x80a# V[a!\x91V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\"\xA3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10\x0F\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#SW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_`@\x82\x84\x03\x12\x15a#rW_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a#\x88W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\x9FW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a#\xCFW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE6W_\x80\xFD[a#\xF2\x87\x83\x88\x01a#bV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x07W_\x80\xFD[Pa$\x14\x86\x82\x87\x01a#xV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$1W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$HW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a$sW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x89W_\x80\xFD[a$\x95\x85\x82\x86\x01a$!V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a$\xB4W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\xCBW_\x80\xFD[a$\xD7\x88\x83\x89\x01a$!V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\xEFW_\x80\xFD[Pa$\xFC\x87\x82\x88\x01a#xV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a\x11\xDA\x81a%\x08V[_` \x82\x84\x03\x12\x15a%DW_\x80\xFD[\x815a%O\x81a%\x08V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a%fW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%|W_\x80\xFD[a%\x88\x84\x82\x85\x01a#bV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\x04W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xECV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&#\x81` \x86\x01` \x86\x01a%\xEAV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a&\xB3W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a&hV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'1a\x01\xA0\x85\x01\x82a&\x0CV[\x90P` \x83\x01Qa'o` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'\x87\x82\x82a&UV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'\xA1\x82\x82a&\x0CV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(+W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\x19\x86\x83Qa&\xBEV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\xDFV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(\xADW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xEAW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\x04W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#\xB6W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xCFWa)\xCFa%\x90V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\xE6W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\0Wa*\0a%\x90V[a*1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)\x88V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*EW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a*qW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\x95Wa*\x95a%\x90V[\x81`@R\x82\x93P\x845\x91Pa*\xA9\x82a%\x08V[\x90\x82R` \x84\x015\x90a*\xBB\x82a%\x08V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xE5\x82a%\x08V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xFEW_\x80\xFD[Pa+\x0B\x85\x82\x86\x01a)\xD7V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+(W_\x80\xFD[a+0a)\x18V[\x90P\x815a+=\x81a%\x08V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+tWa+ta%\x90V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a+\x8DW_\x80\xFD[\x815` a+\xA2a+\x9D\x83a+[V[a)\x88V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\xC0W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,#W`\x80\x81\x89\x03\x12\x15a+\xDBW_\x80\xFD[a+\xE3a)AV[\x815a+\xEE\x81a%\x08V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x11\x81a%\x08V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\xC4V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a,>W_\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a,aWa,aa%\x90V[`@R\x915\x82RP\x91\x90PV[_` \x82\x84\x03\x12\x15a,~W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,\x95W_\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a,\xA9W_\x80\xFD[a,\xB1a)dV[\x825\x82\x81\x11\x15a,\xBFW_\x80\xFD[a,\xCB\x87\x82\x86\x01a*aV[\x82RPa,\xDA` \x84\x01a%)V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\0\x86`\x80\x85\x01a+\x18V[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\x16W_\x80\xFD[a-\"\x87\x82\x86\x01a+~V[`\xA0\x83\x01RPa-6\x86a\x01\0\x85\x01a,.V[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a-MW_\x80\xFD[a-Y\x87\x82\x86\x01a)\xD7V[`\xE0\x83\x01RP\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-xW_\x80\xFD[PQ\x91\x90PV[_\x85Qa-\x90\x81\x84` \x8A\x01a%\xEAV[\x85Q\x90\x83\x01\x90a-\xA4\x81\x83` \x8A\x01a%\xEAV[\x85Q\x91\x01\x90a-\xB7\x81\x83` \x89\x01a%\xEAV[\x84Q\x91\x01\x90a-\xCA\x81\x83` \x88\x01a%\xEAV[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x12\xD2Wa\x12\xD2a-\xD5V[` \x81R_a%O` \x83\x01\x84a&\xBEV[_` \x80\x83\x85\x03\x12\x15a.=_\xFD[PPPPa\x03A\x81a\x0B\x86V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a({V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B7V[a\x04\x9F\x81a\x0B\x86V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x86V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga%\xBDV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B7V[a\x08d\x81a\x0B\x86V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a(\xB7V[\x81\x01\x90a\nW\x91\x90a,nV[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\np\x91a\x0C\xD1V[_a\nz\x82a\r\xE0V[\x90Pa\n\x86\x81\x83a\x10,V[_a\n\x94\x83``\x01Qa\x11\x8CV[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\n\xC1\x83\x86`\x80\x01Qa\x11\xDF\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xDD\x83\x86`\xA0\x01Qa\x12\xD8\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\n\xF2\x91\x90a(\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BVWa\x0BVa%\xBDV[` \x02` \x01\x01Q\x90Pa\x0Bi\x81a\x13\xBBV[a\x0Bs\x813a\x18\x98V[a\x0B}\x813a\x19\x8DV[P`\x01\x01a\x0B;V[\x80Q_[\x81\x81\x10\x15a\x0C\xC0W_\x83\x82\x81Q\x81\x10a\x0B\xA5Wa\x0B\xA5a%\xBDV[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\"W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xD9Wa\x0B\xD9a%\xBDV[` \x02` \x01\x01Q\x90Pa\x0C\x19\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBAV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CjWa\x0Cja%\xBDV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xAE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8AV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1D\x06V[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91_\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\rtW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x98\x91\x90a-hV[\x90P\x81\x81\x18\x80\x83\x16_\x03a\r\xD8W`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R_\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a1[` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919`@Q` \x01a\x0Fy\x94\x93\x92\x91\x90a-\x7FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\x9B\x83_\x01Qa\x1D\x9CV[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xB7\x87`\x80\x01Qa\x1E5V[a\x0F\xC4\x88`\xA0\x01Qa\x1E\x9BV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10kW`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\x98WP\x80C\x10[\x80\x15a\x10\xA8WP`\xC0\x82\x01QQ\x81\x11[\x15a\x10\xD2W` \x82\x01Qa\x10\xCA\x90a\x10\xC0\x84\x86a\x1F6V[\x84`\xE0\x01Qa\x1F\xACV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11\x0CW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03LW_[\x82`\xA0\x01QQ\x81\x10\x15a\x06_W_\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11@Wa\x11@a%\xBDV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\x84W`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11\x1CV[_H:\x10\x15a\x11\xC7W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x11\xD7W\x03\x90V[P_[\x91\x90PV[a\x12\x16`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[_\x83`@\x01Q\x83a\x12'\x91\x90a.\x02V[\x90Pb\x98\x96\x80\x81\x10a\x12sW`@Q\x80``\x01`@R\x80\x85_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x12\xD2V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x12\xBDW` \x86\x01Qa\x12\xB8\x90b\x98\x96\x80\x85\x81\x03\x90a \xCFV[a\x12\xC3V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xF6Wa\x12\xF6a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x14W\x90P[P\x91P_[\x81\x81\x10\x15a\x13\xB3Wa\x13\x8E\x85\x82\x81Q\x81\x10a\x13\x80Wa\x13\x80a%\xBDV[` \x02` \x01\x01Q\x85a!\tV[\x83\x82\x81Q\x81\x10a\x13\xA0Wa\x13\xA0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13cV[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x13\xDBWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x141\x90\x85\x90`\x04\x01a.\x19V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14KW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\x90\x91\x90\x81\x01\x90a.+V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x14\xA7\x82\x84a.\xF4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\xBFWa\x14\xBFa%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x15wW\x85`@\x01Q\x81\x81Q\x81\x10a\x15JWa\x15Ja%\xBDV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15dWa\x15da%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15,V[P_\x80_[\x84\x81\x10\x15a\x18\x87W_\x87\x82\x81Q\x81\x10a\x15\x97Wa\x15\x97a%\xBDV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16RW\x88\x81\x81Q\x81\x10a\x15\xBDWa\x15\xBDa%\xBDV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x15\xA3V[P_\x80[\x88\x81\x10\x15a\x17\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16uWa\x16ua%\xBDV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x06W\x85\x15a\x16\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x16\xFF\x90\x84a.\xF4V[\x92P`\x01\x96P[P`\x01\x01a\x16VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\x88W\x84\x15a\x17oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\x81\x90\x82a.\xF4V[\x90P`\x01\x93P[\x80_\x03a\x17\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x17\xEA\x81`\x05a'\x10a \xCFV[\x82` \x01Q\x11\x15a\x18]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18rWa\x18ra%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x18\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19e\x90\x84\x90\x86\x90`\x04\x01a/\x07V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19{W_\x80\xFD[PZ\xFA\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1AL\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a1\xE8\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a1-`.\x919`@Q` \x01a\x1C)\x95\x94\x93\x92\x91\x90a/5V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\x96\x96\x95\x94\x93\x92`\x04\x01a/\xCFV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xADW_\x80\xFD[PZ\xF1\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1C\xE4Wa\x03L\x82\x82a\x1D\x06V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xBCV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\\W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1DaV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x0F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10\x0F\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBAWa\x1E\xBAa%\x90V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE4W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1F'W_a\x1F\x15\x85\x83\x81Q\x81\x10a\x1F\x08Wa\x1F\x08a%\xBDV[` \x02` \x01\x01Qa\"\xAAV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xE9V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xC0\x01Q`@Q` \x01a\x1FQ\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x8E\x93\x92\x91` \x01a0\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x1F\xC2\x91\x90a0\xC2V[\x91P\x91P_\x83`@\x81Q\x81\x10a\x1F\xDAWa\x1F\xDAa%\xBDV[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a 4W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a \x8FWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a \xC6W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\x02W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a!\x8BWa!\x86\x85`@\x01Q\x85a!j\x91\x90a.\x02V[a!w\x90b\x98\x96\x80a.\xF4V[` \x87\x01Q\x90b\x98\x96\x80a# V[a!\x91V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\"\xA3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10\x0F\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#SW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_`@\x82\x84\x03\x12\x15a#rW_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a#\x88W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\x9FW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a#\xCFW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE6W_\x80\xFD[a#\xF2\x87\x83\x88\x01a#bV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x07W_\x80\xFD[Pa$\x14\x86\x82\x87\x01a#xV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$1W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$HW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a$sW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x89W_\x80\xFD[a$\x95\x85\x82\x86\x01a$!V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a$\xB4W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\xCBW_\x80\xFD[a$\xD7\x88\x83\x89\x01a$!V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\xEFW_\x80\xFD[Pa$\xFC\x87\x82\x88\x01a#xV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a\x11\xDA\x81a%\x08V[_` \x82\x84\x03\x12\x15a%DW_\x80\xFD[\x815a%O\x81a%\x08V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a%fW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%|W_\x80\xFD[a%\x88\x84\x82\x85\x01a#bV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\x04W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xECV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&#\x81` \x86\x01` \x86\x01a%\xEAV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a&\xB3W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a&hV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'1a\x01\xA0\x85\x01\x82a&\x0CV[\x90P` \x83\x01Qa'o` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'\x87\x82\x82a&UV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'\xA1\x82\x82a&\x0CV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(+W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\x19\x86\x83Qa&\xBEV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\xDFV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(\xADW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xEAW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\x04W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#\xB6W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xCFWa)\xCFa%\x90V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\xE6W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\0Wa*\0a%\x90V[a*1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)\x88V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*EW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a*qW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\x95Wa*\x95a%\x90V[\x81`@R\x82\x93P\x845\x91Pa*\xA9\x82a%\x08V[\x90\x82R` \x84\x015\x90a*\xBB\x82a%\x08V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xE5\x82a%\x08V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xFEW_\x80\xFD[Pa+\x0B\x85\x82\x86\x01a)\xD7V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+(W_\x80\xFD[a+0a)\x18V[\x90P\x815a+=\x81a%\x08V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+tWa+ta%\x90V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a+\x8DW_\x80\xFD[\x815` a+\xA2a+\x9D\x83a+[V[a)\x88V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\xC0W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,#W`\x80\x81\x89\x03\x12\x15a+\xDBW_\x80\xFD[a+\xE3a)AV[\x815a+\xEE\x81a%\x08V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x11\x81a%\x08V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\xC4V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a,>W_\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a,aWa,aa%\x90V[`@R\x915\x82RP\x91\x90PV[_` \x82\x84\x03\x12\x15a,~W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,\x95W_\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a,\xA9W_\x80\xFD[a,\xB1a)dV[\x825\x82\x81\x11\x15a,\xBFW_\x80\xFD[a,\xCB\x87\x82\x86\x01a*aV[\x82RPa,\xDA` \x84\x01a%)V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\0\x86`\x80\x85\x01a+\x18V[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\x16W_\x80\xFD[a-\"\x87\x82\x86\x01a+~V[`\xA0\x83\x01RPa-6\x86a\x01\0\x85\x01a,.V[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a-MW_\x80\xFD[a-Y\x87\x82\x86\x01a)\xD7V[`\xE0\x83\x01RP\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-xW_\x80\xFD[PQ\x91\x90PV[_\x85Qa-\x90\x81\x84` \x8A\x01a%\xEAV[\x85Q\x90\x83\x01\x90a-\xA4\x81\x83` \x8A\x01a%\xEAV[\x85Q\x91\x01\x90a-\xB7\x81\x83` \x89\x01a%\xEAV[\x84Q\x91\x01\x90a-\xCA\x81\x83` \x88\x01a%\xEAV[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x12\xD2Wa\x12\xD2a-\xD5V[` \x81R_a%O` \x83\x01\x84a&\xBEV[_` \x80\x83\x85\x03\x12\x15a.(::ethers::contract::Contract); - impl ::core::clone::Clone for PriorityOrderReactor { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for PriorityOrderReactor { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for PriorityOrderReactor { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for PriorityOrderReactor { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(PriorityOrderReactor)) - .field(&self.address()) - .finish() - } - } - impl PriorityOrderReactor { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - PRIORITYORDERREACTOR_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - PRIORITYORDERREACTOR_ABI.clone(), - PRIORITYORDERREACTOR_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `execute` (0x3f62192e) function - pub fn execute( - &self, - order: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 98, 25, 46], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x0d7a16c3) function - pub fn execute_batch( - &self, - orders: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 122, 22, 195], orders) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatchWithCallback` (0x13fb72c7) function - pub fn execute_batch_with_callback( - &self, - orders: ::std::vec::Vec, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([19, 251, 114, 199], (orders, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeWithCallback` (0x0d335884) function - pub fn execute_with_callback( - &self, - order: SignedOrder, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 51, 88, 132], (order, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `feeController` (0x6999b377) function - pub fn fee_controller( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([105, 153, 179, 119], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit2` (0x12261ee7) function - pub fn permit_2( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([18, 38, 30, 231], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setProtocolFeeController` (0x2d771389) function - pub fn set_protocol_fee_controller( - &self, - new_fee_controller: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([45, 119, 19, 137], new_fee_controller) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Fill` event - pub fn fill_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, FillFilter> { - self.0.event() - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - ///Gets the contract's `ProtocolFeeControllerSet` event - pub fn protocol_fee_controller_set_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ProtocolFeeControllerSetFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - PriorityOrderReactorEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for PriorityOrderReactor { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `DuplicateFeeOutput` with signature `DuplicateFeeOutput(address)` and selector `0xfff08303` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DuplicateFeeOutput", abi = "DuplicateFeeOutput(address)")] - pub struct DuplicateFeeOutput { - pub duplicate_token: ::ethers::core::types::Address, - } - ///Custom Error type `FeeTooLarge` with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "FeeTooLarge", abi = "FeeTooLarge(address,uint256,address)")] - pub struct FeeTooLarge { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub recipient: ::ethers::core::types::Address, - } - ///Custom Error type `InputAndOutputFees` with signature `InputAndOutputFees()` and selector `0xedc7e2e4` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputFees", abi = "InputAndOutputFees()")] - pub struct InputAndOutputFees; - ///Custom Error type `InputOutputScaling` with signature `InputOutputScaling()` and selector `0xa6b844f5` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputOutputScaling", abi = "InputOutputScaling()")] - pub struct InputOutputScaling; - ///Custom Error type `InvalidCosignature` with signature `InvalidCosignature()` and selector `0xd7815be1` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidCosignature", abi = "InvalidCosignature()")] - pub struct InvalidCosignature; - ///Custom Error type `InvalidDeadline` with signature `InvalidDeadline()` and selector `0x769d11e4` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidDeadline", abi = "InvalidDeadline()")] - pub struct InvalidDeadline; - ///Custom Error type `InvalidFeeToken` with signature `InvalidFeeToken(address)` and selector `0xeddf07f5` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidFeeToken", abi = "InvalidFeeToken(address)")] - pub struct InvalidFeeToken { - pub fee_token: ::ethers::core::types::Address, - } - ///Custom Error type `InvalidGasPrice` with signature `InvalidGasPrice()` and selector `0xf3eb44e5` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidGasPrice", abi = "InvalidGasPrice()")] - pub struct InvalidGasPrice; - ///Custom Error type `InvalidReactor` with signature `InvalidReactor()` and selector `0x4ddf4a64` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidReactor", abi = "InvalidReactor()")] - pub struct InvalidReactor; - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; - ///Custom Error type `OrderAlreadyFilled` with signature `OrderAlreadyFilled()` and selector `0xee3b3d4b` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "OrderAlreadyFilled", abi = "OrderAlreadyFilled()")] - pub struct OrderAlreadyFilled; - ///Custom Error type `OrderNotFillable` with signature `OrderNotFillable()` and selector `0xc6035520` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "OrderNotFillable", abi = "OrderNotFillable()")] - pub struct OrderNotFillable; - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum PriorityOrderReactorErrors { - DuplicateFeeOutput(DuplicateFeeOutput), - FeeTooLarge(FeeTooLarge), - InputAndOutputFees(InputAndOutputFees), - InputOutputScaling(InputOutputScaling), - InvalidCosignature(InvalidCosignature), - InvalidDeadline(InvalidDeadline), - InvalidFeeToken(InvalidFeeToken), - InvalidGasPrice(InvalidGasPrice), - InvalidReactor(InvalidReactor), - NativeTransferFailed(NativeTransferFailed), - OrderAlreadyFilled(OrderAlreadyFilled), - OrderNotFillable(OrderNotFillable), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for PriorityOrderReactorErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DuplicateFeeOutput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeTooLarge(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputFees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputOutputScaling(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidCosignature(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidDeadline(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidFeeToken(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidGasPrice(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidReactor(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NativeTransferFailed(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::OrderAlreadyFilled(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::OrderNotFillable(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for PriorityOrderReactorErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::DuplicateFeeOutput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeTooLarge(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputFees(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputOutputScaling(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidCosignature(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidDeadline(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidFeeToken(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidGasPrice(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidReactor(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NativeTransferFailed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::OrderAlreadyFilled(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::OrderNotFillable(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for PriorityOrderReactorErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for PriorityOrderReactorErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DuplicateFeeOutput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeTooLarge(element) => ::core::fmt::Display::fmt(element, f), - Self::InputAndOutputFees(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InputOutputScaling(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidCosignature(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidDeadline(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidFeeToken(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidGasPrice(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidReactor(element) => ::core::fmt::Display::fmt(element, f), - Self::NativeTransferFailed(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::OrderAlreadyFilled(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::OrderNotFillable(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for PriorityOrderReactorErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for PriorityOrderReactorErrors { - fn from(value: DuplicateFeeOutput) -> Self { - Self::DuplicateFeeOutput(value) - } - } - impl ::core::convert::From for PriorityOrderReactorErrors { - fn from(value: FeeTooLarge) -> Self { - Self::FeeTooLarge(value) - } - } - impl ::core::convert::From for PriorityOrderReactorErrors { - fn from(value: InputAndOutputFees) -> Self { - Self::InputAndOutputFees(value) - } - } - impl ::core::convert::From for PriorityOrderReactorErrors { - fn from(value: InputOutputScaling) -> Self { - Self::InputOutputScaling(value) - } - } - impl ::core::convert::From for PriorityOrderReactorErrors { - fn from(value: InvalidCosignature) -> Self { - Self::InvalidCosignature(value) - } - } - impl ::core::convert::From for PriorityOrderReactorErrors { - fn from(value: InvalidDeadline) -> Self { - Self::InvalidDeadline(value) - } - } - impl ::core::convert::From for PriorityOrderReactorErrors { - fn from(value: InvalidFeeToken) -> Self { - Self::InvalidFeeToken(value) - } - } - impl ::core::convert::From for PriorityOrderReactorErrors { - fn from(value: InvalidGasPrice) -> Self { - Self::InvalidGasPrice(value) - } - } - impl ::core::convert::From for PriorityOrderReactorErrors { - fn from(value: InvalidReactor) -> Self { - Self::InvalidReactor(value) - } - } - impl ::core::convert::From for PriorityOrderReactorErrors { - fn from(value: NativeTransferFailed) -> Self { - Self::NativeTransferFailed(value) - } - } - impl ::core::convert::From for PriorityOrderReactorErrors { - fn from(value: OrderAlreadyFilled) -> Self { - Self::OrderAlreadyFilled(value) - } - } - impl ::core::convert::From for PriorityOrderReactorErrors { - fn from(value: OrderNotFillable) -> Self { - Self::OrderNotFillable(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Fill", abi = "Fill(bytes32,address,address,uint256)")] - pub struct FillFilter { - #[ethevent(indexed)] - pub order_hash: [u8; 32], - #[ethevent(indexed)] - pub filler: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub swapper: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "ProtocolFeeControllerSet", - abi = "ProtocolFeeControllerSet(address,address)" - )] - pub struct ProtocolFeeControllerSetFilter { - pub old_fee_controller: ::ethers::core::types::Address, - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum PriorityOrderReactorEvents { - FillFilter(FillFilter), - OwnershipTransferredFilter(OwnershipTransferredFilter), - ProtocolFeeControllerSetFilter(ProtocolFeeControllerSetFilter), - } - impl ::ethers::contract::EthLogDecode for PriorityOrderReactorEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = FillFilter::decode_log(log) { - return Ok(PriorityOrderReactorEvents::FillFilter(decoded)); - } - if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) { - return Ok( - PriorityOrderReactorEvents::OwnershipTransferredFilter(decoded), - ); - } - if let Ok(decoded) = ProtocolFeeControllerSetFilter::decode_log(log) { - return Ok( - PriorityOrderReactorEvents::ProtocolFeeControllerSetFilter(decoded), - ); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for PriorityOrderReactorEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FillFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ProtocolFeeControllerSetFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for PriorityOrderReactorEvents { - fn from(value: FillFilter) -> Self { - Self::FillFilter(value) - } - } - impl ::core::convert::From - for PriorityOrderReactorEvents { - fn from(value: OwnershipTransferredFilter) -> Self { - Self::OwnershipTransferredFilter(value) - } - } - impl ::core::convert::From - for PriorityOrderReactorEvents { - fn from(value: ProtocolFeeControllerSetFilter) -> Self { - Self::ProtocolFeeControllerSetFilter(value) - } - } - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes))` and selector `0x3f62192e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes))")] - pub struct ExecuteCall { - pub order: SignedOrder, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((bytes,bytes)[])")] - pub struct ExecuteBatchCall { - pub orders: ::std::vec::Vec, - } - ///Container type for all input parameters for the `executeBatchWithCallback` function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeBatchWithCallback", - abi = "executeBatchWithCallback((bytes,bytes)[],bytes)" - )] - pub struct ExecuteBatchWithCallbackCall { - pub orders: ::std::vec::Vec, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `executeWithCallback` function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeWithCallback", - abi = "executeWithCallback((bytes,bytes),bytes)" - )] - pub struct ExecuteWithCallbackCall { - pub order: SignedOrder, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeController", abi = "feeController()")] - pub struct FeeControllerCall; - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "permit2", abi = "permit2()")] - pub struct Permit2Call; - ///Container type for all input parameters for the `setProtocolFeeController` function with signature `setProtocolFeeController(address)` and selector `0x2d771389` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "setProtocolFeeController", - abi = "setProtocolFeeController(address)" - )] - pub struct SetProtocolFeeControllerCall { - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum PriorityOrderReactorCalls { - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ExecuteBatchWithCallback(ExecuteBatchWithCallbackCall), - ExecuteWithCallback(ExecuteWithCallbackCall), - FeeController(FeeControllerCall), - Owner(OwnerCall), - Permit2(Permit2Call), - SetProtocolFeeController(SetProtocolFeeControllerCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for PriorityOrderReactorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatchWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Permit2(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetProtocolFeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for PriorityOrderReactorCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteBatchWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Permit2(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetProtocolFeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for PriorityOrderReactorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatchWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ExecuteWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeController(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit2(element) => ::core::fmt::Display::fmt(element, f), - Self::SetProtocolFeeController(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for PriorityOrderReactorCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for PriorityOrderReactorCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From - for PriorityOrderReactorCalls { - fn from(value: ExecuteBatchWithCallbackCall) -> Self { - Self::ExecuteBatchWithCallback(value) - } - } - impl ::core::convert::From for PriorityOrderReactorCalls { - fn from(value: ExecuteWithCallbackCall) -> Self { - Self::ExecuteWithCallback(value) - } - } - impl ::core::convert::From for PriorityOrderReactorCalls { - fn from(value: FeeControllerCall) -> Self { - Self::FeeController(value) - } - } - impl ::core::convert::From for PriorityOrderReactorCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for PriorityOrderReactorCalls { - fn from(value: Permit2Call) -> Self { - Self::Permit2(value) - } - } - impl ::core::convert::From - for PriorityOrderReactorCalls { - fn from(value: SetProtocolFeeControllerCall) -> Self { - Self::SetProtocolFeeController(value) - } - } - impl ::core::convert::From for PriorityOrderReactorCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeControllerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct Permit2Return(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/priorityfeelib.rs b/crates/bindings-uniswapx/src/priorityfeelib.rs new file mode 100644 index 0000000..07030ae --- /dev/null +++ b/crates/bindings-uniswapx/src/priorityfeelib.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface PriorityFeeLib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod PriorityFeeLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba058eeaf1cdc2400fa891f5668a5338558285dc5917c84d1f1c1a1cd017802c64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xBA\x05\x8E\xEA\xF1\xCD\xC2@\x0F\xA8\x91\xF5f\x8AS8U\x82\x85\xDCY\x17\xC8M\x1F\x1C\x1A\x1C\xD0\x17\x80,dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba058eeaf1cdc2400fa891f5668a5338558285dc5917c84d1f1c1a1cd017802c64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xBA\x05\x8E\xEA\xF1\xCD\xC2@\x0F\xA8\x91\xF5f\x8AS8U\x82\x85\xDCY\x17\xC8M\x1F\x1C\x1A\x1C\xD0\x17\x80,dsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`PriorityFeeLib`](self) contract instance. + +See the [wrapper's documentation](`PriorityFeeLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> PriorityFeeLibInstance { + PriorityFeeLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + PriorityFeeLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + PriorityFeeLibInstance::::deploy_builder(provider) + } + /**A [`PriorityFeeLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`PriorityFeeLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct PriorityFeeLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for PriorityFeeLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("PriorityFeeLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PriorityFeeLibInstance { + /**Creates a new wrapper around an on-chain [`PriorityFeeLib`](self) contract instance. + +See the [wrapper's documentation](`PriorityFeeLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl PriorityFeeLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> PriorityFeeLibInstance { + PriorityFeeLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PriorityFeeLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PriorityFeeLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/priorityorderlib.rs b/crates/bindings-uniswapx/src/priorityorderlib.rs new file mode 100644 index 0000000..4370227 --- /dev/null +++ b/crates/bindings-uniswapx/src/priorityorderlib.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface PriorityOrderLib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod PriorityOrderLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220125b2cb2f9ea5ad3c0b36c17a41ebde6e465a2ee66763efba5e2f2cc9ec46b8364736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x12[,\xB2\xF9\xEAZ\xD3\xC0\xB3l\x17\xA4\x1E\xBD\xE6\xE4e\xA2\xEEfv>\xFB\xA5\xE2\xF2\xCC\x9E\xC4k\x83dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220125b2cb2f9ea5ad3c0b36c17a41ebde6e465a2ee66763efba5e2f2cc9ec46b8364736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x12[,\xB2\xF9\xEAZ\xD3\xC0\xB3l\x17\xA4\x1E\xBD\xE6\xE4e\xA2\xEEfv>\xFB\xA5\xE2\xF2\xCC\x9E\xC4k\x83dsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`PriorityOrderLib`](self) contract instance. + +See the [wrapper's documentation](`PriorityOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> PriorityOrderLibInstance { + PriorityOrderLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + PriorityOrderLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + PriorityOrderLibInstance::::deploy_builder(provider) + } + /**A [`PriorityOrderLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`PriorityOrderLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct PriorityOrderLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for PriorityOrderLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("PriorityOrderLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PriorityOrderLibInstance { + /**Creates a new wrapper around an on-chain [`PriorityOrderLib`](self) contract instance. + +See the [wrapper's documentation](`PriorityOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl PriorityOrderLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> PriorityOrderLibInstance { + PriorityOrderLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PriorityOrderLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PriorityOrderLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/priorityorderreactor.rs b/crates/bindings-uniswapx/src/priorityorderreactor.rs new file mode 100644 index 0000000..d661010 --- /dev/null +++ b/crates/bindings-uniswapx/src/priorityorderreactor.rs @@ -0,0 +1,4159 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface PriorityOrderReactor { + struct SignedOrder { + bytes order; + bytes sig; + } + + error DuplicateFeeOutput(address duplicateToken); + error FeeTooLarge(address token, uint256 amount, address recipient); + error InputAndOutputFees(); + error InputOutputScaling(); + error InvalidCosignature(); + error InvalidDeadline(); + error InvalidFeeToken(address feeToken); + error InvalidGasPrice(); + error InvalidReactor(); + error NativeTransferFailed(); + error OrderAlreadyFilled(); + error OrderNotFillable(); + + event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); + event OwnershipTransferred(address indexed user, address indexed newOwner); + event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); + + constructor(address _permit2, address _protocolFeeOwner); + + receive() external payable; + + function execute(SignedOrder memory order) external payable; + function executeBatch(SignedOrder[] memory orders) external payable; + function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; + function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; + function feeController() external view returns (address); + function owner() external view returns (address); + function permit2() external view returns (address); + function setProtocolFeeController(address _newFeeController) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_permit2", + "type": "address", + "internalType": "contract IPermit2" + }, + { + "name": "_protocolFeeOwner", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatchWithCallback", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeWithCallback", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "feeController", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IProtocolFeeController" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit2", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPermit2" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setProtocolFeeController", + "inputs": [ + { + "name": "_newFeeController", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Fill", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "filler", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "swapper", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProtocolFeeControllerSet", + "inputs": [ + { + "name": "oldFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "DuplicateFeeOutput", + "inputs": [ + { + "name": "duplicateToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "FeeTooLarge", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InputAndOutputFees", + "inputs": [] + }, + { + "type": "error", + "name": "InputOutputScaling", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidCosignature", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidDeadline", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidFeeToken", + "inputs": [ + { + "name": "feeToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InvalidGasPrice", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidReactor", + "inputs": [] + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + }, + { + "type": "error", + "name": "OrderAlreadyFilled", + "inputs": [] + }, + { + "type": "error", + "name": "OrderNotFillable", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod PriorityOrderReactor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a06040523480156200001157600080fd5b5060405162003470380380620034708339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051613350620001206000396000818160e001528181610d6101526119eb01526133506000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612440565b6101eb565b005b6100b96100c93660046124ee565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612530565b6104c5565b34801561014a57600080fd5b506100b96101593660046125c9565b610683565b6100b961016c3660046125ed565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125c9565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612659565b60200260200101819052506102d981610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161285c565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb1565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861262a565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612659565b90506020028101906104789190612922565b6109f6565b82828151811061048f5761048f612659565b6020908102919091010152600101610449565b506104ac81610b60565b6104b581610bb1565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961262a565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612659565b8282815181106105d9576105d9612659565b60209081029190910101526001016105aa565b506105f681610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161285c565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb1565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612659565b602002602001018190525061087d81610b60565b61088681610bb1565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612960565b810190610a7c9190612d2c565b80516020810151604090910151919250610a9591610d04565b6000610aa082610e17565b9050610aac8183611065565b6000610abb83606001516111c7565b90506040518060a0016040528084600001518152602001610ae983866080015161121c90919063ffffffff16565b8152602001610b05838660a0015161131b90919063ffffffff16565b8152602001868060200190610b1a9190612960565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b8157610b81612659565b60200260200101519050610b9481611400565b610b9e81336118f0565b610ba881336119e9565b50600101610b65565b805160005b81811015610cf3576000838281518110610bd257610bd2612659565b602002602001015190506000816040015151905060005b81811015610c5357600083604001518281518110610c0957610c09612659565b60200260200101519050610c4a81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d239092919063ffffffff16565b50600101610be9565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9c57610c9c612659565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce191815260200190565b60405180910390a45050600101610bb6565b5047156104c1576104c13347611d6a565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b916000917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce9190612e2d565b9050818118808316600003610e0f576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061323360208301396040518060800160405280604881526020016131bd604891396040518060800160405280605b81526020016132c0605b9139604051602001610fb19493929190612e46565b60405160208183030381529060405280519060200120610fd48360000151611e04565b836020015184604001518560600151610ff08760800151611e9e565b610ffd8860a00151611f05565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110a4576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff16158015906110d157508043105b80156110e1575060c08201515181115b1561110b576020820151611103906110f98486611fa3565b8460e0015161201a565b5060c0810151515b80431015611145576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a00151828151811061117b5761117b612659565b60200260200101516040015111156111bf576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611156565b6000483a1015611203576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a0381811115611213570390565b5060005b919050565b6112566040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60008360400151836112689190612ecc565b90506298968081106112b6576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018560200151815250915050611315565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156113005760208601516112fb906298968085810390612142565b611306565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156113395761133961262a565b6040519080825280602002602001820160405280156113a257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113575790505b50915060005b818110156113f8576113d38582815181106113c5576113c5612659565b60200260200101518561217e565b8382815181106113e5576113e5612659565b60209081029190910101526001016113a8565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166114205750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611477908590600401612ee3565b600060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114da9190810190612ef6565b60408301515181519192509060006114f28284612fc6565b67ffffffffffffffff81111561150a5761150a61262a565b60405190808252806020026020018201604052801561157357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115285790505b50905060005b838110156115c4578560400151818151811061159757611597612659565b60200260200101518282815181106115b1576115b1612659565b6020908102919091010152600101611579565b5060008060005b848110156118df5760008782815181106115e7576115e7612659565b6020026020010151905060005b828110156116a55788818151811061160e5761160e612659565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361169d5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016115f4565b506000805b888110156117665760008b6040015182815181106116ca576116ca612659565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361175d578515611747576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117569084612fc6565b9250600196505b506001016116aa565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117df5784156117c6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117d89082612fc6565b9050600193505b806000036118345781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611842816005612710612142565b826020015111156118b5578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106118ca576118ca612659565b602090810291909101015250506001016115cb565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611941576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119bd9084908690600401612fd9565b60006040518083038186803b1580156119d557600080fd5b505afa158015610e0f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611aa9846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d8152602001613233608d91396040518060800160405280604881526020016131bd60489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916132c09060d401396040518060600160405280602e8152602001613205602e9139604051602001611c88959493929190613008565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cf596959493926004016130a3565b600060405180830381600087803b158015611d0f57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d485761035f8282611d6a565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612232565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613233608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161104898939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016131bd6048913980516020918201208351848301516040808701519051611048950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611f2557611f2561262a565b6040519080825280601f01601f191660200182016040528015611f4f576020820181803683370190505b50905060005b8351811015611f94576000611f82858381518110611f7557611f75612659565b6020026020010151612324565b60208381028501015250600101611f55565b50805160209091012092915050565b600081468460c00151604051602001611fbf9151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ffc93929160200161316b565b60405160208183030381529060405280519060200120905092915050565b600080828060200190518101906120319190613198565b9150915060008360408151811061204a5761204a612659565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156120a7573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612102575073ffffffffffffffffffffffffffffffffffffffff8116155b15612139576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261217757600080fd5b5091020490565b604080516060810182526000808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff16815290840151602082019015612201576121fc8560400151856121e09190612ecc565b6121ed9062989680612fc6565b6020870151906298968061239b565b612207565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061231d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b81526020016132c0605b9139805160209182012083518483015160408087015160608801519151611048969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123d057600080fd5b50910281810615159190040190565b6000604082840312156123f157600080fd5b50919050565b60008083601f84011261240957600080fd5b50813567ffffffffffffffff81111561242157600080fd5b60208301915083602082850101111561243957600080fd5b9250929050565b60008060006040848603121561245557600080fd5b833567ffffffffffffffff8082111561246d57600080fd5b612479878388016123df565b9450602086013591508082111561248f57600080fd5b5061249c868287016123f7565b9497909650939450505050565b60008083601f8401126124bb57600080fd5b50813567ffffffffffffffff8111156124d357600080fd5b6020830191508360208260051b850101111561243957600080fd5b6000806020838503121561250157600080fd5b823567ffffffffffffffff81111561251857600080fd5b612524858286016124a9565b90969095509350505050565b6000806000806040858703121561254657600080fd5b843567ffffffffffffffff8082111561255e57600080fd5b61256a888389016124a9565b9096509450602087013591508082111561258357600080fd5b50612590878288016123f7565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356112178161259c565b6000602082840312156125db57600080fd5b81356125e68161259c565b9392505050565b6000602082840312156125ff57600080fd5b813567ffffffffffffffff81111561261657600080fd5b612622848285016123df565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126a357818101518382015260200161268b565b50506000910152565b600081518084526126c4816020860160208601612688565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612756578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161270b565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d56101a08501826126ac565b905060208301516128136020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282b82826126f6565b915050606083015184820360a086015261284582826126ac565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128bf868351612761565b95509382019390820190600101612885565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261295657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261299557600080fd5b83018035915067ffffffffffffffff8211156129b057600080fd5b60200191503681900382131561243957600080fd5b6040516060810167ffffffffffffffff811182821017156129e8576129e861262a565b60405290565b6040516080810167ffffffffffffffff811182821017156129e8576129e861262a565b604051610100810167ffffffffffffffff811182821017156129e8576129e861262a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a7c57612a7c61262a565b604052919050565b600082601f830112612a9557600080fd5b813567ffffffffffffffff811115612aaf57612aaf61262a565b612ae060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a35565b818152846020838601011115612af557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2457600080fd5b60405160c0810167ffffffffffffffff8282108183111715612b4857612b4861262a565b8160405282935084359150612b5c8261259c565b908252602084013590612b6e8261259c565b816020840152604085013560408401526060850135606084015260808501359150612b988261259c565b81608084015260a0850135915080821115612bb257600080fd5b50612bbf85828601612a84565b60a0830152505092915050565b600060608284031215612bde57600080fd5b612be66129c5565b90508135612bf38161259c565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c2b57612c2b61262a565b5060051b60200190565b600082601f830112612c4657600080fd5b81356020612c5b612c5683612c11565b612a35565b82815260079290921b84018101918181019086841115612c7a57600080fd5b8286015b84811015612cdf5760808189031215612c975760008081fd5b612c9f6129ee565b8135612caa8161259c565b8152818501358582015260408083013590820152606080830135612ccd8161259c565b90820152835291830191608001612c7e565b509695505050505050565b600060208284031215612cfc57600080fd5b6040516020810181811067ffffffffffffffff82111715612d1f57612d1f61262a565b6040529135825250919050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff80821115612d5657600080fd5b908301906101408286031215612d6b57600080fd5b612d73612a11565b823582811115612d8257600080fd5b612d8e87828601612b12565b825250612d9d602084016125be565b60208201526040830135604082015260608301356060820152612dc38660808501612bcc565b608082015260e083013582811115612dda57600080fd5b612de687828601612c35565b60a083015250612dfa866101008501612cea565b60c082015261012083013582811115612e1257600080fd5b612e1e87828601612a84565b60e08301525095945050505050565b600060208284031215612e3f57600080fd5b5051919050565b60008551612e58818460208a01612688565b855190830190612e6c818360208a01612688565b8551910190612e7f818360208901612688565b8451910190612e92818360208801612688565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761131557611315612e9d565b6020815260006125e66020830184612761565b60006020808385031215612f0957600080fd5b825167ffffffffffffffff811115612f2057600080fd5b8301601f81018513612f3157600080fd5b8051612f3f612c5682612c11565b81815260609182028301840191848201919088841115612f5e57600080fd5b938501935b83851015612fba5780858a031215612f7b5760008081fd5b612f836129c5565b8551612f8e8161259c565b81528587015187820152604080870151612fa78161259c565b9082015283529384019391850191612f63565b50979650505050505050565b8082018082111561131557611315612e9d565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006126226040830184612761565b7f5072696f726974794f72646572207769746e657373290000000000000000000081526000601687516130418183860160208c01612688565b8751908401906130578184840160208c01612688565b875191019061306c8184840160208b01612688565b86519101906130818184840160208a01612688565b85519101906130968184840160208901612688565b0101979650505050505050565b60006101406130d3838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131146080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152613149818401866126ac565b905082810361012084015261315e81856126ac565b9998505050505050505050565b83815282602082015260008251613189816040850160208701612688565b91909101604001949350505050565b600080604083850312156131ab57600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220353e4a9c8af32ce67b5de33aaecb5fae198f4618ed76c7f0ec66d08df440265b64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x004p8\x03\x80b\x004p\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa3Pb\0\x01 `\09`\0\x81\x81`\xE0\x01R\x81\x81a\ra\x01Ra\x19\xEB\x01Ra3P`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$@V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\xEEV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%0V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a%\xC9V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\xEDV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a%\xC9V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&YV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB1V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\"V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0B`V[a\x04\xB5\x81a\x0B\xB1V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB1V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&YV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0B`V[a\x08\x86\x81a\x0B\xB1V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a)`V[\x81\x01\x90a\n|\x91\x90a-,V[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\n\x95\x91a\r\x04V[`\0a\n\xA0\x82a\x0E\x17V[\x90Pa\n\xAC\x81\x83a\x10eV[`\0a\n\xBB\x83``\x01Qa\x11\xC7V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\n\xE9\x83\x86`\x80\x01Qa\x12\x1C\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\x0B\x05\x83\x86`\xA0\x01Qa\x13\x1B\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x1A\x91\x90a)`V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x81Wa\x0B\x81a&YV[` \x02` \x01\x01Q\x90Pa\x0B\x94\x81a\x14\0V[a\x0B\x9E\x813a\x18\xF0V[a\x0B\xA8\x813a\x19\xE9V[P`\x01\x01a\x0BeV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF3W`\0\x83\x82\x81Q\x81\x10a\x0B\xD2Wa\x0B\xD2a&YV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CSW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\tWa\x0C\ta&YV[` \x02` \x01\x01Q\x90Pa\x0CJ\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D#\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xE9V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9CWa\x0C\x9Ca&YV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE1\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB6V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1DjV[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xCE\x91\x90a.-V[\x90P\x81\x81\x18\x80\x83\x16`\0\x03a\x0E\x0FW`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R`\0\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a23` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919`@Q` \x01a\x0F\xB1\x94\x93\x92\x91\x90a.FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\xD4\x83`\0\x01Qa\x1E\x04V[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xF0\x87`\x80\x01Qa\x1E\x9EV[a\x0F\xFD\x88`\xA0\x01Qa\x1F\x05V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xA4W`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\xD1WP\x80C\x10[\x80\x15a\x10\xE1WP`\xC0\x82\x01QQ\x81\x11[\x15a\x11\x0BW` \x82\x01Qa\x11\x03\x90a\x10\xF9\x84\x86a\x1F\xA3V[\x84`\xE0\x01Qa \x1AV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11EW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03_W`\0[\x82`\xA0\x01QQ\x81\x10\x15a\x06}W`\0\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11{Wa\x11{a&YV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\xBFW`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11VV[`\0H:\x10\x15a\x12\x03W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x12\x13W\x03\x90V[P`\0[\x91\x90PV[a\x12V`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0\x83`@\x01Q\x83a\x12h\x91\x90a.\xCCV[\x90Pb\x98\x96\x80\x81\x10a\x12\xB6W`@Q\x80``\x01`@R\x80\x85`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x13\x15V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x13\0W` \x86\x01Qa\x12\xFB\x90b\x98\x96\x80\x85\x81\x03\x90a!BV[a\x13\x06V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x139Wa\x139a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xA2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13WW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x13\xF8Wa\x13\xD3\x85\x82\x81Q\x81\x10a\x13\xC5Wa\x13\xC5a&YV[` \x02` \x01\x01Q\x85a!~V[\x83\x82\x81Q\x81\x10a\x13\xE5Wa\x13\xE5a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xA8V[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14 WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14w\x90\x85\x90`\x04\x01a.\xE3V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xDA\x91\x90\x81\x01\x90a.\xF6V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x14\xF2\x82\x84a/\xC6V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\nWa\x15\na&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15sW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15(W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\xC4W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\x97Wa\x15\x97a&YV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xB1Wa\x15\xB1a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15yV[P`\0\x80`\0[\x84\x81\x10\x15a\x18\xDFW`\0\x87\x82\x81Q\x81\x10a\x15\xE7Wa\x15\xE7a&YV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x16\xA5W\x88\x81\x81Q\x81\x10a\x16\x0EWa\x16\x0Ea&YV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\x9DW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x15\xF4V[P`\0\x80[\x88\x81\x10\x15a\x17fW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xCAWa\x16\xCAa&YV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17]W\x85\x15a\x17GW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17V\x90\x84a/\xC6V[\x92P`\x01\x96P[P`\x01\x01a\x16\xAAV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xDFW\x84\x15a\x17\xC6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xD8\x90\x82a/\xC6V[\x90P`\x01\x93P[\x80`\0\x03a\x184W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18B\x81`\x05a'\x10a!BV[\x82` \x01Q\x11\x15a\x18\xB5W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xCAWa\x18\xCAa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xCBV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19AW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xBD\x90\x84\x90\x86\x90`\x04\x01a/\xD9V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xD5W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xA9\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a2\xC0\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\x05`.\x919`@Q` \x01a\x1C\x88\x95\x94\x93\x92\x91\x90a0\x08V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xF5\x96\x95\x94\x93\x92`\x04\x01a0\xA3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\x0FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1DHWa\x03_\x82\x82a\x1DjV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\"2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xC4W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1D\xC9V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10H\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10H\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1F%Wa\x1F%a&*V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1FOW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F\x94W`\0a\x1F\x82\x85\x83\x81Q\x81\x10a\x1FuWa\x1Fua&YV[` \x02` \x01\x01Qa#$V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1FUV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xC0\x01Q`@Q` \x01a\x1F\xBF\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\xFC\x93\x92\x91` \x01a1kV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a 1\x91\x90a1\x98V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a JWa Ja&YV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a \xA7W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a!\x02WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a!9W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!wW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a\"\x01Wa!\xFC\x85`@\x01Q\x85a!\xE0\x91\x90a.\xCCV[a!\xED\x90b\x98\x96\x80a/\xC6V[` \x87\x01Q\x90b\x98\x96\x80a#\x9BV[a\"\x07V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a#\x1DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10H\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xD0W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0`@\x82\x84\x03\x12\x15a#\xF1W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\tW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$!W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$UW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$mW`\0\x80\xFD[a$y\x87\x83\x88\x01a#\xDFV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x8FW`\0\x80\xFD[Pa$\x9C\x86\x82\x87\x01a#\xF7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a$\xBBW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xD3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\x01W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x18W`\0\x80\xFD[a%$\x85\x82\x86\x01a$\xA9V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%FW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%^W`\0\x80\xFD[a%j\x88\x83\x89\x01a$\xA9V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x83W`\0\x80\xFD[Pa%\x90\x87\x82\x88\x01a#\xF7V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a\x12\x17\x81a%\x9CV[`\0` \x82\x84\x03\x12\x15a%\xDBW`\0\x80\xFD[\x815a%\xE6\x81a%\x9CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\xFFW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\x16W`\0\x80\xFD[a&\"\x84\x82\x85\x01a#\xDFV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra&\xC4\x81` \x86\x01` \x86\x01a&\x88V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'VW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x0BV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD5a\x01\xA0\x85\x01\x82a&\xACV[\x90P` \x83\x01Qa(\x13` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(+\x82\x82a&\xF6V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(E\x82\x82a&\xACV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a(\xD1W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xBF\x86\x83Qa'aV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(\x85V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)VW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x95W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xB0W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$9W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*|Wa*|a&*V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a*\x95W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xAFWa*\xAFa&*V[a*\xE0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xF5W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+$W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a+HWa+Ha&*V[\x81`@R\x82\x93P\x845\x91Pa+\\\x82a%\x9CV[\x90\x82R` \x84\x015\x90a+n\x82a%\x9CV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa+\x98\x82a%\x9CV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a+\xB2W`\0\x80\xFD[Pa+\xBF\x85\x82\x86\x01a*\x84V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a+\xDEW`\0\x80\xFD[a+\xE6a)\xC5V[\x90P\x815a+\xF3\x81a%\x9CV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,+Wa,+a&*V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,FW`\0\x80\xFD[\x815` a,[a,V\x83a,\x11V[a*5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,zW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xDFW`\x80\x81\x89\x03\x12\x15a,\x97W`\0\x80\x81\xFD[a,\x9Fa)\xEEV[\x815a,\xAA\x81a%\x9CV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\xCD\x81a%\x9CV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,~V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\xFCW`\0\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a-\x1FWa-\x1Fa&*V[`@R\x915\x82RP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a->W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-VW`\0\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a-kW`\0\x80\xFD[a-sa*\x11V[\x825\x82\x81\x11\x15a-\x82W`\0\x80\xFD[a-\x8E\x87\x82\x86\x01a+\x12V[\x82RPa-\x9D` \x84\x01a%\xBEV[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\xC3\x86`\x80\x85\x01a+\xCCV[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\xDAW`\0\x80\xFD[a-\xE6\x87\x82\x86\x01a,5V[`\xA0\x83\x01RPa-\xFA\x86a\x01\0\x85\x01a,\xEAV[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a.\x12W`\0\x80\xFD[a.\x1E\x87\x82\x86\x01a*\x84V[`\xE0\x83\x01RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.?W`\0\x80\xFD[PQ\x91\x90PV[`\0\x85Qa.X\x81\x84` \x8A\x01a&\x88V[\x85Q\x90\x83\x01\x90a.l\x81\x83` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a.\x7F\x81\x83` \x89\x01a&\x88V[\x84Q\x91\x01\x90a.\x92\x81\x83` \x88\x01a&\x88V[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x13\x15Wa\x13\x15a.\x9DV[` \x81R`\0a%\xE6` \x83\x01\x84a'aV[`\0` \x80\x83\x85\x03\x12\x15a/\tW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/ W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/1W`\0\x80\xFD[\x80Qa/?a,V\x82a,\x11V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/^W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a/\xBAW\x80\x85\x8A\x03\x12\x15a/{W`\0\x80\x81\xFD[a/\x83a)\xC5V[\x85Qa/\x8E\x81a%\x9CV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa/\xA7\x81a%\x9CV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a/cV[P\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x13\x15Wa\x13\x15a.\x9DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a&\"`@\x83\x01\x84a'aV[\x7FPriorityOrder witness)\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x16\x87Qa0A\x81\x83\x86\x01` \x8C\x01a&\x88V[\x87Q\x90\x84\x01\x90a0W\x81\x84\x84\x01` \x8C\x01a&\x88V[\x87Q\x91\x01\x90a0l\x81\x84\x84\x01` \x8B\x01a&\x88V[\x86Q\x91\x01\x90a0\x81\x81\x84\x84\x01` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a0\x96\x81\x84\x84\x01` \x89\x01a&\x88V[\x01\x01\x97\x96PPPPPPPV[`\0a\x01@a0\xD3\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\x14`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1I\x81\x84\x01\x86a&\xACV[\x90P\x82\x81\x03a\x01 \x84\x01Ra1^\x81\x85a&\xACV[\x99\x98PPPPPPPPPV[\x83\x81R\x82` \x82\x01R`\0\x82Qa1\x89\x81`@\x85\x01` \x87\x01a&\x88V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a1\xABW`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV\xFEPriorityInput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)PriorityOutput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei,address recipient)\xA2dipfsX\"\x12 5>J\x9C\x8A\xF3,\xE6{]\xE3:\xAE\xCB_\xAE\x19\x8FF\x18\xEDv\xC7\xF0\xECf\xD0\x8D\xF4@&[dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612440565b6101eb565b005b6100b96100c93660046124ee565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612530565b6104c5565b34801561014a57600080fd5b506100b96101593660046125c9565b610683565b6100b961016c3660046125ed565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125c9565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612659565b60200260200101819052506102d981610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161285c565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb1565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861262a565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612659565b90506020028101906104789190612922565b6109f6565b82828151811061048f5761048f612659565b6020908102919091010152600101610449565b506104ac81610b60565b6104b581610bb1565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961262a565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612659565b8282815181106105d9576105d9612659565b60209081029190910101526001016105aa565b506105f681610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161285c565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb1565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612659565b602002602001018190525061087d81610b60565b61088681610bb1565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612960565b810190610a7c9190612d2c565b80516020810151604090910151919250610a9591610d04565b6000610aa082610e17565b9050610aac8183611065565b6000610abb83606001516111c7565b90506040518060a0016040528084600001518152602001610ae983866080015161121c90919063ffffffff16565b8152602001610b05838660a0015161131b90919063ffffffff16565b8152602001868060200190610b1a9190612960565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b8157610b81612659565b60200260200101519050610b9481611400565b610b9e81336118f0565b610ba881336119e9565b50600101610b65565b805160005b81811015610cf3576000838281518110610bd257610bd2612659565b602002602001015190506000816040015151905060005b81811015610c5357600083604001518281518110610c0957610c09612659565b60200260200101519050610c4a81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d239092919063ffffffff16565b50600101610be9565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9c57610c9c612659565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce191815260200190565b60405180910390a45050600101610bb6565b5047156104c1576104c13347611d6a565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b916000917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce9190612e2d565b9050818118808316600003610e0f576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061323360208301396040518060800160405280604881526020016131bd604891396040518060800160405280605b81526020016132c0605b9139604051602001610fb19493929190612e46565b60405160208183030381529060405280519060200120610fd48360000151611e04565b836020015184604001518560600151610ff08760800151611e9e565b610ffd8860a00151611f05565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110a4576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff16158015906110d157508043105b80156110e1575060c08201515181115b1561110b576020820151611103906110f98486611fa3565b8460e0015161201a565b5060c0810151515b80431015611145576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a00151828151811061117b5761117b612659565b60200260200101516040015111156111bf576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611156565b6000483a1015611203576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a0381811115611213570390565b5060005b919050565b6112566040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60008360400151836112689190612ecc565b90506298968081106112b6576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018560200151815250915050611315565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156113005760208601516112fb906298968085810390612142565b611306565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156113395761133961262a565b6040519080825280602002602001820160405280156113a257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113575790505b50915060005b818110156113f8576113d38582815181106113c5576113c5612659565b60200260200101518561217e565b8382815181106113e5576113e5612659565b60209081029190910101526001016113a8565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166114205750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611477908590600401612ee3565b600060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114da9190810190612ef6565b60408301515181519192509060006114f28284612fc6565b67ffffffffffffffff81111561150a5761150a61262a565b60405190808252806020026020018201604052801561157357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115285790505b50905060005b838110156115c4578560400151818151811061159757611597612659565b60200260200101518282815181106115b1576115b1612659565b6020908102919091010152600101611579565b5060008060005b848110156118df5760008782815181106115e7576115e7612659565b6020026020010151905060005b828110156116a55788818151811061160e5761160e612659565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361169d5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016115f4565b506000805b888110156117665760008b6040015182815181106116ca576116ca612659565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361175d578515611747576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117569084612fc6565b9250600196505b506001016116aa565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117df5784156117c6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117d89082612fc6565b9050600193505b806000036118345781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611842816005612710612142565b826020015111156118b5578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106118ca576118ca612659565b602090810291909101015250506001016115cb565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611941576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119bd9084908690600401612fd9565b60006040518083038186803b1580156119d557600080fd5b505afa158015610e0f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611aa9846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d8152602001613233608d91396040518060800160405280604881526020016131bd60489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916132c09060d401396040518060600160405280602e8152602001613205602e9139604051602001611c88959493929190613008565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cf596959493926004016130a3565b600060405180830381600087803b158015611d0f57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d485761035f8282611d6a565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612232565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613233608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161104898939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016131bd6048913980516020918201208351848301516040808701519051611048950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611f2557611f2561262a565b6040519080825280601f01601f191660200182016040528015611f4f576020820181803683370190505b50905060005b8351811015611f94576000611f82858381518110611f7557611f75612659565b6020026020010151612324565b60208381028501015250600101611f55565b50805160209091012092915050565b600081468460c00151604051602001611fbf9151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ffc93929160200161316b565b60405160208183030381529060405280519060200120905092915050565b600080828060200190518101906120319190613198565b9150915060008360408151811061204a5761204a612659565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156120a7573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612102575073ffffffffffffffffffffffffffffffffffffffff8116155b15612139576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261217757600080fd5b5091020490565b604080516060810182526000808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff16815290840151602082019015612201576121fc8560400151856121e09190612ecc565b6121ed9062989680612fc6565b6020870151906298968061239b565b612207565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061231d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b81526020016132c0605b9139805160209182012083518483015160408087015160608801519151611048969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123d057600080fd5b50910281810615159190040190565b6000604082840312156123f157600080fd5b50919050565b60008083601f84011261240957600080fd5b50813567ffffffffffffffff81111561242157600080fd5b60208301915083602082850101111561243957600080fd5b9250929050565b60008060006040848603121561245557600080fd5b833567ffffffffffffffff8082111561246d57600080fd5b612479878388016123df565b9450602086013591508082111561248f57600080fd5b5061249c868287016123f7565b9497909650939450505050565b60008083601f8401126124bb57600080fd5b50813567ffffffffffffffff8111156124d357600080fd5b6020830191508360208260051b850101111561243957600080fd5b6000806020838503121561250157600080fd5b823567ffffffffffffffff81111561251857600080fd5b612524858286016124a9565b90969095509350505050565b6000806000806040858703121561254657600080fd5b843567ffffffffffffffff8082111561255e57600080fd5b61256a888389016124a9565b9096509450602087013591508082111561258357600080fd5b50612590878288016123f7565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356112178161259c565b6000602082840312156125db57600080fd5b81356125e68161259c565b9392505050565b6000602082840312156125ff57600080fd5b813567ffffffffffffffff81111561261657600080fd5b612622848285016123df565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126a357818101518382015260200161268b565b50506000910152565b600081518084526126c4816020860160208601612688565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612756578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161270b565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d56101a08501826126ac565b905060208301516128136020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282b82826126f6565b915050606083015184820360a086015261284582826126ac565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128bf868351612761565b95509382019390820190600101612885565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261295657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261299557600080fd5b83018035915067ffffffffffffffff8211156129b057600080fd5b60200191503681900382131561243957600080fd5b6040516060810167ffffffffffffffff811182821017156129e8576129e861262a565b60405290565b6040516080810167ffffffffffffffff811182821017156129e8576129e861262a565b604051610100810167ffffffffffffffff811182821017156129e8576129e861262a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a7c57612a7c61262a565b604052919050565b600082601f830112612a9557600080fd5b813567ffffffffffffffff811115612aaf57612aaf61262a565b612ae060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a35565b818152846020838601011115612af557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2457600080fd5b60405160c0810167ffffffffffffffff8282108183111715612b4857612b4861262a565b8160405282935084359150612b5c8261259c565b908252602084013590612b6e8261259c565b816020840152604085013560408401526060850135606084015260808501359150612b988261259c565b81608084015260a0850135915080821115612bb257600080fd5b50612bbf85828601612a84565b60a0830152505092915050565b600060608284031215612bde57600080fd5b612be66129c5565b90508135612bf38161259c565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c2b57612c2b61262a565b5060051b60200190565b600082601f830112612c4657600080fd5b81356020612c5b612c5683612c11565b612a35565b82815260079290921b84018101918181019086841115612c7a57600080fd5b8286015b84811015612cdf5760808189031215612c975760008081fd5b612c9f6129ee565b8135612caa8161259c565b8152818501358582015260408083013590820152606080830135612ccd8161259c565b90820152835291830191608001612c7e565b509695505050505050565b600060208284031215612cfc57600080fd5b6040516020810181811067ffffffffffffffff82111715612d1f57612d1f61262a565b6040529135825250919050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff80821115612d5657600080fd5b908301906101408286031215612d6b57600080fd5b612d73612a11565b823582811115612d8257600080fd5b612d8e87828601612b12565b825250612d9d602084016125be565b60208201526040830135604082015260608301356060820152612dc38660808501612bcc565b608082015260e083013582811115612dda57600080fd5b612de687828601612c35565b60a083015250612dfa866101008501612cea565b60c082015261012083013582811115612e1257600080fd5b612e1e87828601612a84565b60e08301525095945050505050565b600060208284031215612e3f57600080fd5b5051919050565b60008551612e58818460208a01612688565b855190830190612e6c818360208a01612688565b8551910190612e7f818360208901612688565b8451910190612e92818360208801612688565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761131557611315612e9d565b6020815260006125e66020830184612761565b60006020808385031215612f0957600080fd5b825167ffffffffffffffff811115612f2057600080fd5b8301601f81018513612f3157600080fd5b8051612f3f612c5682612c11565b81815260609182028301840191848201919088841115612f5e57600080fd5b938501935b83851015612fba5780858a031215612f7b5760008081fd5b612f836129c5565b8551612f8e8161259c565b81528587015187820152604080870151612fa78161259c565b9082015283529384019391850191612f63565b50979650505050505050565b8082018082111561131557611315612e9d565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006126226040830184612761565b7f5072696f726974794f72646572207769746e657373290000000000000000000081526000601687516130418183860160208c01612688565b8751908401906130578184840160208c01612688565b875191019061306c8184840160208b01612688565b86519101906130818184840160208a01612688565b85519101906130968184840160208901612688565b0101979650505050505050565b60006101406130d3838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131146080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152613149818401866126ac565b905082810361012084015261315e81856126ac565b9998505050505050505050565b83815282602082015260008251613189816040850160208701612688565b91909101604001949350505050565b600080604083850312156131ab57600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220353e4a9c8af32ce67b5de33aaecb5fae198f4618ed76c7f0ec66d08df440265b64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$@V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\xEEV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%0V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a%\xC9V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\xEDV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a%\xC9V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&YV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB1V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\"V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0B`V[a\x04\xB5\x81a\x0B\xB1V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB1V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&YV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0B`V[a\x08\x86\x81a\x0B\xB1V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a)`V[\x81\x01\x90a\n|\x91\x90a-,V[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\n\x95\x91a\r\x04V[`\0a\n\xA0\x82a\x0E\x17V[\x90Pa\n\xAC\x81\x83a\x10eV[`\0a\n\xBB\x83``\x01Qa\x11\xC7V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\n\xE9\x83\x86`\x80\x01Qa\x12\x1C\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\x0B\x05\x83\x86`\xA0\x01Qa\x13\x1B\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x1A\x91\x90a)`V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x81Wa\x0B\x81a&YV[` \x02` \x01\x01Q\x90Pa\x0B\x94\x81a\x14\0V[a\x0B\x9E\x813a\x18\xF0V[a\x0B\xA8\x813a\x19\xE9V[P`\x01\x01a\x0BeV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF3W`\0\x83\x82\x81Q\x81\x10a\x0B\xD2Wa\x0B\xD2a&YV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CSW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\tWa\x0C\ta&YV[` \x02` \x01\x01Q\x90Pa\x0CJ\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D#\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xE9V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9CWa\x0C\x9Ca&YV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE1\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB6V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1DjV[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xCE\x91\x90a.-V[\x90P\x81\x81\x18\x80\x83\x16`\0\x03a\x0E\x0FW`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R`\0\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a23` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919`@Q` \x01a\x0F\xB1\x94\x93\x92\x91\x90a.FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\xD4\x83`\0\x01Qa\x1E\x04V[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xF0\x87`\x80\x01Qa\x1E\x9EV[a\x0F\xFD\x88`\xA0\x01Qa\x1F\x05V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xA4W`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\xD1WP\x80C\x10[\x80\x15a\x10\xE1WP`\xC0\x82\x01QQ\x81\x11[\x15a\x11\x0BW` \x82\x01Qa\x11\x03\x90a\x10\xF9\x84\x86a\x1F\xA3V[\x84`\xE0\x01Qa \x1AV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11EW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03_W`\0[\x82`\xA0\x01QQ\x81\x10\x15a\x06}W`\0\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11{Wa\x11{a&YV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\xBFW`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11VV[`\0H:\x10\x15a\x12\x03W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x12\x13W\x03\x90V[P`\0[\x91\x90PV[a\x12V`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0\x83`@\x01Q\x83a\x12h\x91\x90a.\xCCV[\x90Pb\x98\x96\x80\x81\x10a\x12\xB6W`@Q\x80``\x01`@R\x80\x85`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x13\x15V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x13\0W` \x86\x01Qa\x12\xFB\x90b\x98\x96\x80\x85\x81\x03\x90a!BV[a\x13\x06V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x139Wa\x139a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xA2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13WW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x13\xF8Wa\x13\xD3\x85\x82\x81Q\x81\x10a\x13\xC5Wa\x13\xC5a&YV[` \x02` \x01\x01Q\x85a!~V[\x83\x82\x81Q\x81\x10a\x13\xE5Wa\x13\xE5a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xA8V[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14 WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14w\x90\x85\x90`\x04\x01a.\xE3V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xDA\x91\x90\x81\x01\x90a.\xF6V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x14\xF2\x82\x84a/\xC6V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\nWa\x15\na&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15sW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15(W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\xC4W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\x97Wa\x15\x97a&YV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xB1Wa\x15\xB1a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15yV[P`\0\x80`\0[\x84\x81\x10\x15a\x18\xDFW`\0\x87\x82\x81Q\x81\x10a\x15\xE7Wa\x15\xE7a&YV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x16\xA5W\x88\x81\x81Q\x81\x10a\x16\x0EWa\x16\x0Ea&YV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\x9DW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x15\xF4V[P`\0\x80[\x88\x81\x10\x15a\x17fW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xCAWa\x16\xCAa&YV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17]W\x85\x15a\x17GW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17V\x90\x84a/\xC6V[\x92P`\x01\x96P[P`\x01\x01a\x16\xAAV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xDFW\x84\x15a\x17\xC6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xD8\x90\x82a/\xC6V[\x90P`\x01\x93P[\x80`\0\x03a\x184W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18B\x81`\x05a'\x10a!BV[\x82` \x01Q\x11\x15a\x18\xB5W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xCAWa\x18\xCAa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xCBV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19AW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xBD\x90\x84\x90\x86\x90`\x04\x01a/\xD9V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xD5W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xA9\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a2\xC0\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\x05`.\x919`@Q` \x01a\x1C\x88\x95\x94\x93\x92\x91\x90a0\x08V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xF5\x96\x95\x94\x93\x92`\x04\x01a0\xA3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\x0FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1DHWa\x03_\x82\x82a\x1DjV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\"2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xC4W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1D\xC9V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10H\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10H\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1F%Wa\x1F%a&*V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1FOW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F\x94W`\0a\x1F\x82\x85\x83\x81Q\x81\x10a\x1FuWa\x1Fua&YV[` \x02` \x01\x01Qa#$V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1FUV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xC0\x01Q`@Q` \x01a\x1F\xBF\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\xFC\x93\x92\x91` \x01a1kV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a 1\x91\x90a1\x98V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a JWa Ja&YV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a \xA7W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a!\x02WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a!9W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!wW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a\"\x01Wa!\xFC\x85`@\x01Q\x85a!\xE0\x91\x90a.\xCCV[a!\xED\x90b\x98\x96\x80a/\xC6V[` \x87\x01Q\x90b\x98\x96\x80a#\x9BV[a\"\x07V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a#\x1DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10H\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xD0W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0`@\x82\x84\x03\x12\x15a#\xF1W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\tW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$!W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$UW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$mW`\0\x80\xFD[a$y\x87\x83\x88\x01a#\xDFV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x8FW`\0\x80\xFD[Pa$\x9C\x86\x82\x87\x01a#\xF7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a$\xBBW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xD3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\x01W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x18W`\0\x80\xFD[a%$\x85\x82\x86\x01a$\xA9V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%FW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%^W`\0\x80\xFD[a%j\x88\x83\x89\x01a$\xA9V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x83W`\0\x80\xFD[Pa%\x90\x87\x82\x88\x01a#\xF7V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a\x12\x17\x81a%\x9CV[`\0` \x82\x84\x03\x12\x15a%\xDBW`\0\x80\xFD[\x815a%\xE6\x81a%\x9CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\xFFW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\x16W`\0\x80\xFD[a&\"\x84\x82\x85\x01a#\xDFV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra&\xC4\x81` \x86\x01` \x86\x01a&\x88V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'VW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x0BV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD5a\x01\xA0\x85\x01\x82a&\xACV[\x90P` \x83\x01Qa(\x13` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(+\x82\x82a&\xF6V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(E\x82\x82a&\xACV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a(\xD1W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xBF\x86\x83Qa'aV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(\x85V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)VW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x95W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xB0W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$9W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*|Wa*|a&*V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a*\x95W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xAFWa*\xAFa&*V[a*\xE0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xF5W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+$W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a+HWa+Ha&*V[\x81`@R\x82\x93P\x845\x91Pa+\\\x82a%\x9CV[\x90\x82R` \x84\x015\x90a+n\x82a%\x9CV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa+\x98\x82a%\x9CV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a+\xB2W`\0\x80\xFD[Pa+\xBF\x85\x82\x86\x01a*\x84V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a+\xDEW`\0\x80\xFD[a+\xE6a)\xC5V[\x90P\x815a+\xF3\x81a%\x9CV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,+Wa,+a&*V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,FW`\0\x80\xFD[\x815` a,[a,V\x83a,\x11V[a*5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,zW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xDFW`\x80\x81\x89\x03\x12\x15a,\x97W`\0\x80\x81\xFD[a,\x9Fa)\xEEV[\x815a,\xAA\x81a%\x9CV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\xCD\x81a%\x9CV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,~V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\xFCW`\0\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a-\x1FWa-\x1Fa&*V[`@R\x915\x82RP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a->W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-VW`\0\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a-kW`\0\x80\xFD[a-sa*\x11V[\x825\x82\x81\x11\x15a-\x82W`\0\x80\xFD[a-\x8E\x87\x82\x86\x01a+\x12V[\x82RPa-\x9D` \x84\x01a%\xBEV[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\xC3\x86`\x80\x85\x01a+\xCCV[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\xDAW`\0\x80\xFD[a-\xE6\x87\x82\x86\x01a,5V[`\xA0\x83\x01RPa-\xFA\x86a\x01\0\x85\x01a,\xEAV[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a.\x12W`\0\x80\xFD[a.\x1E\x87\x82\x86\x01a*\x84V[`\xE0\x83\x01RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.?W`\0\x80\xFD[PQ\x91\x90PV[`\0\x85Qa.X\x81\x84` \x8A\x01a&\x88V[\x85Q\x90\x83\x01\x90a.l\x81\x83` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a.\x7F\x81\x83` \x89\x01a&\x88V[\x84Q\x91\x01\x90a.\x92\x81\x83` \x88\x01a&\x88V[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x13\x15Wa\x13\x15a.\x9DV[` \x81R`\0a%\xE6` \x83\x01\x84a'aV[`\0` \x80\x83\x85\x03\x12\x15a/\tW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/ W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/1W`\0\x80\xFD[\x80Qa/?a,V\x82a,\x11V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/^W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a/\xBAW\x80\x85\x8A\x03\x12\x15a/{W`\0\x80\x81\xFD[a/\x83a)\xC5V[\x85Qa/\x8E\x81a%\x9CV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa/\xA7\x81a%\x9CV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a/cV[P\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x13\x15Wa\x13\x15a.\x9DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a&\"`@\x83\x01\x84a'aV[\x7FPriorityOrder witness)\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x16\x87Qa0A\x81\x83\x86\x01` \x8C\x01a&\x88V[\x87Q\x90\x84\x01\x90a0W\x81\x84\x84\x01` \x8C\x01a&\x88V[\x87Q\x91\x01\x90a0l\x81\x84\x84\x01` \x8B\x01a&\x88V[\x86Q\x91\x01\x90a0\x81\x81\x84\x84\x01` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a0\x96\x81\x84\x84\x01` \x89\x01a&\x88V[\x01\x01\x97\x96PPPPPPPV[`\0a\x01@a0\xD3\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\x14`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1I\x81\x84\x01\x86a&\xACV[\x90P\x82\x81\x03a\x01 \x84\x01Ra1^\x81\x85a&\xACV[\x99\x98PPPPPPPPPV[\x83\x81R\x82` \x82\x01R`\0\x82Qa1\x89\x81`@\x85\x01` \x87\x01a&\x88V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a1\xABW`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV\xFEPriorityInput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)PriorityOutput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei,address recipient)\xA2dipfsX\"\x12 5>J\x9C\x8A\xF3,\xE6{]\xE3:\xAE\xCB_\xAE\x19\x8FF\x18\xEDv\xC7\xF0\xECf\xD0\x8D\xF4@&[dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `DuplicateFeeOutput(address)` and selector `0xfff08303`. +```solidity +error DuplicateFeeOutput(address duplicateToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DuplicateFeeOutput { + pub duplicateToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DuplicateFeeOutput) -> Self { + (value.duplicateToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DuplicateFeeOutput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { duplicateToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DuplicateFeeOutput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DuplicateFeeOutput(address)"; + const SELECTOR: [u8; 4] = [255u8, 240u8, 131u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.duplicateToken, + ), + ) + } + } + }; + /**Custom error with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656`. +```solidity +error FeeTooLarge(address token, uint256 amount, address recipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FeeTooLarge { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FeeTooLarge) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FeeTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for FeeTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "FeeTooLarge(address,uint256,address)"; + const SELECTOR: [u8; 4] = [130u8, 231u8, 86u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + } + }; + /**Custom error with signature `InputAndOutputFees()` and selector `0xedc7e2e4`. +```solidity +error InputAndOutputFees(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputFees {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputFees) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputFees { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputFees { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputFees()"; + const SELECTOR: [u8; 4] = [237u8, 199u8, 226u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputOutputScaling()` and selector `0xa6b844f5`. +```solidity +error InputOutputScaling(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputOutputScaling {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputOutputScaling) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputOutputScaling { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputOutputScaling { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputOutputScaling()"; + const SELECTOR: [u8; 4] = [166u8, 184u8, 68u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidCosignature()` and selector `0xd7815be1`. +```solidity +error InvalidCosignature(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidCosignature {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidCosignature) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidCosignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidCosignature { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidCosignature()"; + const SELECTOR: [u8; 4] = [215u8, 129u8, 91u8, 225u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidDeadline()` and selector `0x769d11e4`. +```solidity +error InvalidDeadline(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidDeadline {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidDeadline) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidDeadline { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidDeadline { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidDeadline()"; + const SELECTOR: [u8; 4] = [118u8, 157u8, 17u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidFeeToken(address)` and selector `0xeddf07f5`. +```solidity +error InvalidFeeToken(address feeToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidFeeToken { + pub feeToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidFeeToken) -> Self { + (value.feeToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidFeeToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { feeToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidFeeToken { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidFeeToken(address)"; + const SELECTOR: [u8; 4] = [237u8, 223u8, 7u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.feeToken, + ), + ) + } + } + }; + /**Custom error with signature `InvalidGasPrice()` and selector `0xf3eb44e5`. +```solidity +error InvalidGasPrice(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidGasPrice {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidGasPrice) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidGasPrice { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidGasPrice { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidGasPrice()"; + const SELECTOR: [u8; 4] = [243u8, 235u8, 68u8, 229u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidReactor()` and selector `0x4ddf4a64`. +```solidity +error InvalidReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReactor {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReactor()"; + const SELECTOR: [u8; 4] = [77u8, 223u8, 74u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OrderAlreadyFilled()` and selector `0xee3b3d4b`. +```solidity +error OrderAlreadyFilled(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderAlreadyFilled {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderAlreadyFilled) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderAlreadyFilled { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OrderAlreadyFilled { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OrderAlreadyFilled()"; + const SELECTOR: [u8; 4] = [238u8, 59u8, 61u8, 75u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `OrderNotFillable()` and selector `0xc6035520`. +```solidity +error OrderNotFillable(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderNotFillable {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderNotFillable) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderNotFillable { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for OrderNotFillable { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "OrderNotFillable()"; + const SELECTOR: [u8; 4] = [198u8, 3u8, 85u8, 32u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Fill(bytes32,address,address,uint256)` and selector `0x78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66`. +```solidity +event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Fill { + #[allow(missing_docs)] + pub orderHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub filler: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub swapper: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Fill { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Fill(bytes32,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + orderHash: topics.1, + filler: topics.2, + swapper: topics.3, + nonce: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.orderHash.clone(), + self.filler.clone(), + self.swapper.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.orderHash); + out[2usize] = ::encode_topic( + &self.filler, + ); + out[3usize] = ::encode_topic( + &self.swapper, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Fill { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Fill> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Fill) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ProtocolFeeControllerSet(address,address)` and selector `0xb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0`. +```solidity +event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ProtocolFeeControllerSet { + #[allow(missing_docs)] + pub oldFeeController: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newFeeController: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProtocolFeeControllerSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ProtocolFeeControllerSet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldFeeController: data.0, + newFeeController: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldFeeController, + ), + ::tokenize( + &self.newFeeController, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ProtocolFeeControllerSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProtocolFeeControllerSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &ProtocolFeeControllerSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _permit2, address _protocolFeeOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _permit2: alloy::sol_types::private::Address, + pub _protocolFeeOwner: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._permit2, value._protocolFeeOwner) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _permit2: tuple.0, + _protocolFeeOwner: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._permit2, + ), + ::tokenize( + &self._protocolFeeOwner, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes))` and selector `0x3f62192e`. +```solidity +function execute(SignedOrder memory order) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes))"; + const SELECTOR: [u8; 4] = [63u8, 98u8, 25u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3`. +```solidity +function executeBatch(SignedOrder[] memory orders) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { orders: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[])"; + const SELECTOR: [u8; 4] = [13u8, 122u8, 22u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7`. +```solidity +function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackCall) -> Self { + (value.orders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchWithCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatchWithCallback((bytes,bytes)[],bytes)"; + const SELECTOR: [u8; 4] = [19u8, 251u8, 114u8, 199u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884`. +```solidity +function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackCall { + pub order: ::RustType, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + SignedOrder, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackCall) -> Self { + (value.order, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeWithCallbackCall { + type Parameters<'a> = (SignedOrder, alloy::sol_types::sol_data::Bytes); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeWithCallback((bytes,bytes),bytes)"; + const SELECTOR: [u8; 4] = [13u8, 51u8, 88u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `feeController()` and selector `0x6999b377`. +```solidity +function feeController() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerCall {} + ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeControllerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeControllerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeController()"; + const SELECTOR: [u8; 4] = [105u8, 153u8, 179u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit2()` and selector `0x12261ee7`. +```solidity +function permit2() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Call {} + ///Container type for the return parameters of the [`permit2()`](permit2Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Return { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit2Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit2Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit2()"; + const SELECTOR: [u8; 4] = [18u8, 38u8, 30u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setProtocolFeeController(address)` and selector `0x2d771389`. +```solidity +function setProtocolFeeController(address _newFeeController) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerCall { + pub _newFeeController: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerCall) -> Self { + (value._newFeeController,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _newFeeController: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProtocolFeeControllerCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProtocolFeeControllerReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProtocolFeeController(address)"; + const SELECTOR: [u8; 4] = [45u8, 119u8, 19u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newFeeController, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`PriorityOrderReactor`](self) function calls. + pub enum PriorityOrderReactorCalls { + execute(executeCall), + executeBatch(executeBatchCall), + executeBatchWithCallback(executeBatchWithCallbackCall), + executeWithCallback(executeWithCallbackCall), + feeController(feeControllerCall), + owner(ownerCall), + permit2(permit2Call), + setProtocolFeeController(setProtocolFeeControllerCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl PriorityOrderReactorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 51u8, 88u8, 132u8], + [13u8, 122u8, 22u8, 195u8], + [18u8, 38u8, 30u8, 231u8], + [19u8, 251u8, 114u8, 199u8], + [45u8, 119u8, 19u8, 137u8], + [63u8, 98u8, 25u8, 46u8], + [105u8, 153u8, 179u8, 119u8], + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for PriorityOrderReactorCalls { + const NAME: &'static str = "PriorityOrderReactorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::executeBatchWithCallback(_) => { + ::SELECTOR + } + Self::executeWithCallback(_) => { + ::SELECTOR + } + Self::feeController(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::permit2(_) => ::SELECTOR, + Self::setProtocolFeeController(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn executeWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorCalls::executeWithCallback) + } + executeWithCallback + }, + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorCalls::executeBatch) + } + executeBatch + }, + { + fn permit2( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorCalls::permit2) + } + permit2 + }, + { + fn executeBatchWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorCalls::executeBatchWithCallback) + } + executeBatchWithCallback + }, + { + fn setProtocolFeeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorCalls::setProtocolFeeController) + } + setProtocolFeeController + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorCalls::execute) + } + execute + }, + { + fn feeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorCalls::feeController) + } + feeController + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::feeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::permit2(inner) => { + ::abi_encoded_size(inner) + } + Self::setProtocolFeeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::feeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit2(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setProtocolFeeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`PriorityOrderReactor`](self) custom errors. + pub enum PriorityOrderReactorErrors { + DuplicateFeeOutput(DuplicateFeeOutput), + FeeTooLarge(FeeTooLarge), + InputAndOutputFees(InputAndOutputFees), + InputOutputScaling(InputOutputScaling), + InvalidCosignature(InvalidCosignature), + InvalidDeadline(InvalidDeadline), + InvalidFeeToken(InvalidFeeToken), + InvalidGasPrice(InvalidGasPrice), + InvalidReactor(InvalidReactor), + NativeTransferFailed(NativeTransferFailed), + OrderAlreadyFilled(OrderAlreadyFilled), + OrderNotFillable(OrderNotFillable), + } + #[automatically_derived] + impl PriorityOrderReactorErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [77u8, 223u8, 74u8, 100u8], + [118u8, 157u8, 17u8, 228u8], + [130u8, 231u8, 86u8, 86u8], + [166u8, 184u8, 68u8, 245u8], + [198u8, 3u8, 85u8, 32u8], + [215u8, 129u8, 91u8, 225u8], + [237u8, 199u8, 226u8, 228u8], + [237u8, 223u8, 7u8, 245u8], + [238u8, 59u8, 61u8, 75u8], + [243u8, 235u8, 68u8, 229u8], + [244u8, 179u8, 177u8, 188u8], + [255u8, 240u8, 131u8, 3u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for PriorityOrderReactorErrors { + const NAME: &'static str = "PriorityOrderReactorErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 12usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DuplicateFeeOutput(_) => { + ::SELECTOR + } + Self::FeeTooLarge(_) => { + ::SELECTOR + } + Self::InputAndOutputFees(_) => { + ::SELECTOR + } + Self::InputOutputScaling(_) => { + ::SELECTOR + } + Self::InvalidCosignature(_) => { + ::SELECTOR + } + Self::InvalidDeadline(_) => { + ::SELECTOR + } + Self::InvalidFeeToken(_) => { + ::SELECTOR + } + Self::InvalidGasPrice(_) => { + ::SELECTOR + } + Self::InvalidReactor(_) => { + ::SELECTOR + } + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + Self::OrderAlreadyFilled(_) => { + ::SELECTOR + } + Self::OrderNotFillable(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn InvalidReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorErrors::InvalidReactor) + } + InvalidReactor + }, + { + fn InvalidDeadline( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorErrors::InvalidDeadline) + } + InvalidDeadline + }, + { + fn FeeTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorErrors::FeeTooLarge) + } + FeeTooLarge + }, + { + fn InputOutputScaling( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorErrors::InputOutputScaling) + } + InputOutputScaling + }, + { + fn OrderNotFillable( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorErrors::OrderNotFillable) + } + OrderNotFillable + }, + { + fn InvalidCosignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorErrors::InvalidCosignature) + } + InvalidCosignature + }, + { + fn InputAndOutputFees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorErrors::InputAndOutputFees) + } + InputAndOutputFees + }, + { + fn InvalidFeeToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorErrors::InvalidFeeToken) + } + InvalidFeeToken + }, + { + fn OrderAlreadyFilled( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorErrors::OrderAlreadyFilled) + } + OrderAlreadyFilled + }, + { + fn InvalidGasPrice( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorErrors::InvalidGasPrice) + } + InvalidGasPrice + }, + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorErrors::NativeTransferFailed) + } + NativeTransferFailed + }, + { + fn DuplicateFeeOutput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(PriorityOrderReactorErrors::DuplicateFeeOutput) + } + DuplicateFeeOutput + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DuplicateFeeOutput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encoded_size(inner) + } + Self::InputAndOutputFees(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InputOutputScaling(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidCosignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidDeadline(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidGasPrice(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::OrderAlreadyFilled(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::OrderNotFillable(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DuplicateFeeOutput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputOutputScaling(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidCosignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidDeadline(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidGasPrice(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::OrderAlreadyFilled(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::OrderNotFillable(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`PriorityOrderReactor`](self) events. + pub enum PriorityOrderReactorEvents { + Fill(Fill), + OwnershipTransferred(OwnershipTransferred), + ProtocolFeeControllerSet(ProtocolFeeControllerSet), + } + #[automatically_derived] + impl PriorityOrderReactorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ], + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + [ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for PriorityOrderReactorEvents { + const NAME: &'static str = "PriorityOrderReactorEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Fill) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ProtocolFeeControllerSet) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for PriorityOrderReactorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`PriorityOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`PriorityOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> PriorityOrderReactorInstance { + PriorityOrderReactorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + PriorityOrderReactorInstance::< + T, + P, + N, + >::deploy(provider, _permit2, _protocolFeeOwner) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + PriorityOrderReactorInstance::< + T, + P, + N, + >::deploy_builder(provider, _permit2, _protocolFeeOwner) + } + /**A [`PriorityOrderReactor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`PriorityOrderReactor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct PriorityOrderReactorInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for PriorityOrderReactorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("PriorityOrderReactorInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PriorityOrderReactorInstance { + /**Creates a new wrapper around an on-chain [`PriorityOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`PriorityOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _permit2, + _protocolFeeOwner, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _permit2, + _protocolFeeOwner, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl PriorityOrderReactorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> PriorityOrderReactorInstance { + PriorityOrderReactorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PriorityOrderReactorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeBatchCall { orders }) + } + ///Creates a new call builder for the [`executeBatchWithCallback`] function. + pub fn executeBatchWithCallback( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeBatchWithCallbackCall { + orders, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`executeWithCallback`] function. + pub fn executeWithCallback( + &self, + order: ::RustType, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeWithCallbackCall { + order, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`feeController`] function. + pub fn feeController( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeControllerCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`permit2`] function. + pub fn permit2(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&permit2Call {}) + } + ///Creates a new call builder for the [`setProtocolFeeController`] function. + pub fn setProtocolFeeController( + &self, + _newFeeController: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setProtocolFeeControllerCall { + _newFeeController, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > PriorityOrderReactorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Fill`] event. + pub fn Fill_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ProtocolFeeControllerSet`] event. + pub fn ProtocolFeeControllerSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/protocol_fees.rs b/crates/bindings-uniswapx/src/protocol_fees.rs deleted file mode 100644 index eb21973..0000000 --- a/crates/bindings-uniswapx/src/protocol_fees.rs +++ /dev/null @@ -1,835 +0,0 @@ -pub use protocol_fees::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod protocol_fees { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("feeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeController"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "contract IProtocolFeeController", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setProtocolFeeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "setProtocolFeeController", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ProtocolFeeControllerSet"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "ProtocolFeeControllerSet", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("oldFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("duplicateToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("recipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("feeToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static PROTOCOLFEES_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - pub struct ProtocolFees(::ethers::contract::Contract); - impl ::core::clone::Clone for ProtocolFees { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ProtocolFees { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ProtocolFees { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ProtocolFees { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ProtocolFees)) - .field(&self.address()) - .finish() - } - } - impl ProtocolFees { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - PROTOCOLFEES_ABI.clone(), - client, - ), - ) - } - ///Calls the contract's `feeController` (0x6999b377) function - pub fn fee_controller( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([105, 153, 179, 119], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setProtocolFeeController` (0x2d771389) function - pub fn set_protocol_fee_controller( - &self, - new_fee_controller: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([45, 119, 19, 137], new_fee_controller) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - ///Gets the contract's `ProtocolFeeControllerSet` event - pub fn protocol_fee_controller_set_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ProtocolFeeControllerSetFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ProtocolFeesEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for ProtocolFees { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `DuplicateFeeOutput` with signature `DuplicateFeeOutput(address)` and selector `0xfff08303` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DuplicateFeeOutput", abi = "DuplicateFeeOutput(address)")] - pub struct DuplicateFeeOutput { - pub duplicate_token: ::ethers::core::types::Address, - } - ///Custom Error type `FeeTooLarge` with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "FeeTooLarge", abi = "FeeTooLarge(address,uint256,address)")] - pub struct FeeTooLarge { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub recipient: ::ethers::core::types::Address, - } - ///Custom Error type `InputAndOutputFees` with signature `InputAndOutputFees()` and selector `0xedc7e2e4` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputFees", abi = "InputAndOutputFees()")] - pub struct InputAndOutputFees; - ///Custom Error type `InvalidFeeToken` with signature `InvalidFeeToken(address)` and selector `0xeddf07f5` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidFeeToken", abi = "InvalidFeeToken(address)")] - pub struct InvalidFeeToken { - pub fee_token: ::ethers::core::types::Address, - } - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum ProtocolFeesErrors { - DuplicateFeeOutput(DuplicateFeeOutput), - FeeTooLarge(FeeTooLarge), - InputAndOutputFees(InputAndOutputFees), - InvalidFeeToken(InvalidFeeToken), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for ProtocolFeesErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DuplicateFeeOutput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeTooLarge(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputFees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidFeeToken(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ProtocolFeesErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::DuplicateFeeOutput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeTooLarge(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputFees(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidFeeToken(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for ProtocolFeesErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for ProtocolFeesErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DuplicateFeeOutput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeTooLarge(element) => ::core::fmt::Display::fmt(element, f), - Self::InputAndOutputFees(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidFeeToken(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for ProtocolFeesErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for ProtocolFeesErrors { - fn from(value: DuplicateFeeOutput) -> Self { - Self::DuplicateFeeOutput(value) - } - } - impl ::core::convert::From for ProtocolFeesErrors { - fn from(value: FeeTooLarge) -> Self { - Self::FeeTooLarge(value) - } - } - impl ::core::convert::From for ProtocolFeesErrors { - fn from(value: InputAndOutputFees) -> Self { - Self::InputAndOutputFees(value) - } - } - impl ::core::convert::From for ProtocolFeesErrors { - fn from(value: InvalidFeeToken) -> Self { - Self::InvalidFeeToken(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "ProtocolFeeControllerSet", - abi = "ProtocolFeeControllerSet(address,address)" - )] - pub struct ProtocolFeeControllerSetFilter { - pub old_fee_controller: ::ethers::core::types::Address, - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum ProtocolFeesEvents { - OwnershipTransferredFilter(OwnershipTransferredFilter), - ProtocolFeeControllerSetFilter(ProtocolFeeControllerSetFilter), - } - impl ::ethers::contract::EthLogDecode for ProtocolFeesEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) { - return Ok(ProtocolFeesEvents::OwnershipTransferredFilter(decoded)); - } - if let Ok(decoded) = ProtocolFeeControllerSetFilter::decode_log(log) { - return Ok(ProtocolFeesEvents::ProtocolFeeControllerSetFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for ProtocolFeesEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ProtocolFeeControllerSetFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for ProtocolFeesEvents { - fn from(value: OwnershipTransferredFilter) -> Self { - Self::OwnershipTransferredFilter(value) - } - } - impl ::core::convert::From for ProtocolFeesEvents { - fn from(value: ProtocolFeeControllerSetFilter) -> Self { - Self::ProtocolFeeControllerSetFilter(value) - } - } - ///Container type for all input parameters for the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeController", abi = "feeController()")] - pub struct FeeControllerCall; - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `setProtocolFeeController` function with signature `setProtocolFeeController(address)` and selector `0x2d771389` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "setProtocolFeeController", - abi = "setProtocolFeeController(address)" - )] - pub struct SetProtocolFeeControllerCall { - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum ProtocolFeesCalls { - FeeController(FeeControllerCall), - Owner(OwnerCall), - SetProtocolFeeController(SetProtocolFeeControllerCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for ProtocolFeesCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetProtocolFeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ProtocolFeesCalls { - fn encode(self) -> Vec { - match self { - Self::FeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetProtocolFeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for ProtocolFeesCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FeeController(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::SetProtocolFeeController(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for ProtocolFeesCalls { - fn from(value: FeeControllerCall) -> Self { - Self::FeeController(value) - } - } - impl ::core::convert::From for ProtocolFeesCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for ProtocolFeesCalls { - fn from(value: SetProtocolFeeControllerCall) -> Self { - Self::SetProtocolFeeController(value) - } - } - impl ::core::convert::From for ProtocolFeesCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeControllerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/protocolfees.rs b/crates/bindings-uniswapx/src/protocolfees.rs new file mode 100644 index 0000000..849752a --- /dev/null +++ b/crates/bindings-uniswapx/src/protocolfees.rs @@ -0,0 +1,1894 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ProtocolFees { + error DuplicateFeeOutput(address duplicateToken); + error FeeTooLarge(address token, uint256 amount, address recipient); + error InputAndOutputFees(); + error InvalidFeeToken(address feeToken); + + event OwnershipTransferred(address indexed user, address indexed newOwner); + event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); + + function feeController() external view returns (address); + function owner() external view returns (address); + function setProtocolFeeController(address _newFeeController) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "feeController", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IProtocolFeeController" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setProtocolFeeController", + "inputs": [ + { + "name": "_newFeeController", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProtocolFeeControllerSet", + "inputs": [ + { + "name": "oldFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "DuplicateFeeOutput", + "inputs": [ + { + "name": "duplicateToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "FeeTooLarge", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InputAndOutputFees", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidFeeToken", + "inputs": [ + { + "name": "feeToken", + "type": "address", + "internalType": "address" + } + ] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ProtocolFees { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Custom error with signature `DuplicateFeeOutput(address)` and selector `0xfff08303`. +```solidity +error DuplicateFeeOutput(address duplicateToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DuplicateFeeOutput { + pub duplicateToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DuplicateFeeOutput) -> Self { + (value.duplicateToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DuplicateFeeOutput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { duplicateToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DuplicateFeeOutput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DuplicateFeeOutput(address)"; + const SELECTOR: [u8; 4] = [255u8, 240u8, 131u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.duplicateToken, + ), + ) + } + } + }; + /**Custom error with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656`. +```solidity +error FeeTooLarge(address token, uint256 amount, address recipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FeeTooLarge { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FeeTooLarge) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FeeTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for FeeTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "FeeTooLarge(address,uint256,address)"; + const SELECTOR: [u8; 4] = [130u8, 231u8, 86u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + } + }; + /**Custom error with signature `InputAndOutputFees()` and selector `0xedc7e2e4`. +```solidity +error InputAndOutputFees(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputFees {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputFees) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputFees { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputFees { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputFees()"; + const SELECTOR: [u8; 4] = [237u8, 199u8, 226u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidFeeToken(address)` and selector `0xeddf07f5`. +```solidity +error InvalidFeeToken(address feeToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidFeeToken { + pub feeToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidFeeToken) -> Self { + (value.feeToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidFeeToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { feeToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidFeeToken { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidFeeToken(address)"; + const SELECTOR: [u8; 4] = [237u8, 223u8, 7u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.feeToken, + ), + ) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ProtocolFeeControllerSet(address,address)` and selector `0xb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0`. +```solidity +event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ProtocolFeeControllerSet { + #[allow(missing_docs)] + pub oldFeeController: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newFeeController: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProtocolFeeControllerSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ProtocolFeeControllerSet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldFeeController: data.0, + newFeeController: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldFeeController, + ), + ::tokenize( + &self.newFeeController, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ProtocolFeeControllerSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProtocolFeeControllerSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &ProtocolFeeControllerSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `feeController()` and selector `0x6999b377`. +```solidity +function feeController() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerCall {} + ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeControllerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeControllerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeController()"; + const SELECTOR: [u8; 4] = [105u8, 153u8, 179u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setProtocolFeeController(address)` and selector `0x2d771389`. +```solidity +function setProtocolFeeController(address _newFeeController) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerCall { + pub _newFeeController: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerCall) -> Self { + (value._newFeeController,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _newFeeController: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProtocolFeeControllerCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProtocolFeeControllerReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProtocolFeeController(address)"; + const SELECTOR: [u8; 4] = [45u8, 119u8, 19u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newFeeController, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`ProtocolFees`](self) function calls. + pub enum ProtocolFeesCalls { + feeController(feeControllerCall), + owner(ownerCall), + setProtocolFeeController(setProtocolFeeControllerCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl ProtocolFeesCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [45u8, 119u8, 19u8, 137u8], + [105u8, 153u8, 179u8, 119u8], + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ProtocolFeesCalls { + const NAME: &'static str = "ProtocolFeesCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 4usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::feeController(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::setProtocolFeeController(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn setProtocolFeeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ProtocolFeesCalls::setProtocolFeeController) + } + setProtocolFeeController + }, + { + fn feeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ProtocolFeesCalls::feeController) + } + feeController + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ProtocolFeesCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ProtocolFeesCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::feeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::setProtocolFeeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::feeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setProtocolFeeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`ProtocolFees`](self) custom errors. + pub enum ProtocolFeesErrors { + DuplicateFeeOutput(DuplicateFeeOutput), + FeeTooLarge(FeeTooLarge), + InputAndOutputFees(InputAndOutputFees), + InvalidFeeToken(InvalidFeeToken), + } + #[automatically_derived] + impl ProtocolFeesErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [130u8, 231u8, 86u8, 86u8], + [237u8, 199u8, 226u8, 228u8], + [237u8, 223u8, 7u8, 245u8], + [255u8, 240u8, 131u8, 3u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ProtocolFeesErrors { + const NAME: &'static str = "ProtocolFeesErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 4usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DuplicateFeeOutput(_) => { + ::SELECTOR + } + Self::FeeTooLarge(_) => { + ::SELECTOR + } + Self::InputAndOutputFees(_) => { + ::SELECTOR + } + Self::InvalidFeeToken(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn FeeTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ProtocolFeesErrors::FeeTooLarge) + } + FeeTooLarge + }, + { + fn InputAndOutputFees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ProtocolFeesErrors::InputAndOutputFees) + } + InputAndOutputFees + }, + { + fn InvalidFeeToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ProtocolFeesErrors::InvalidFeeToken) + } + InvalidFeeToken + }, + { + fn DuplicateFeeOutput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ProtocolFeesErrors::DuplicateFeeOutput) + } + DuplicateFeeOutput + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DuplicateFeeOutput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encoded_size(inner) + } + Self::InputAndOutputFees(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DuplicateFeeOutput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`ProtocolFees`](self) events. + pub enum ProtocolFeesEvents { + OwnershipTransferred(OwnershipTransferred), + ProtocolFeeControllerSet(ProtocolFeeControllerSet), + } + #[automatically_derived] + impl ProtocolFeesEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + [ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ProtocolFeesEvents { + const NAME: &'static str = "ProtocolFeesEvents"; + const COUNT: usize = 2usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ProtocolFeeControllerSet) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ProtocolFeesEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ProtocolFees`](self) contract instance. + +See the [wrapper's documentation](`ProtocolFeesInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ProtocolFeesInstance { + ProtocolFeesInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ProtocolFeesInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ProtocolFeesInstance::::deploy_builder(provider) + } + /**A [`ProtocolFees`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ProtocolFees`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ProtocolFeesInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ProtocolFeesInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ProtocolFeesInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ProtocolFeesInstance { + /**Creates a new wrapper around an on-chain [`ProtocolFees`](self) contract instance. + +See the [wrapper's documentation](`ProtocolFeesInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ProtocolFeesInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ProtocolFeesInstance { + ProtocolFeesInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ProtocolFeesInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`feeController`] function. + pub fn feeController( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeControllerCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`setProtocolFeeController`] function. + pub fn setProtocolFeeController( + &self, + _newFeeController: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setProtocolFeeControllerCall { + _newFeeController, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ProtocolFeesInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ProtocolFeeControllerSet`] event. + pub fn ProtocolFeeControllerSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/reactor_events.rs b/crates/bindings-uniswapx/src/reactor_events.rs deleted file mode 100644 index 34f9c9b..0000000 --- a/crates/bindings-uniswapx/src/reactor_events.rs +++ /dev/null @@ -1,144 +0,0 @@ -pub use reactor_events::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod reactor_events { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Fill"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Fill"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("orderHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("swapper"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static REACTOREVENTS_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - pub struct ReactorEvents(::ethers::contract::Contract); - impl ::core::clone::Clone for ReactorEvents { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ReactorEvents { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ReactorEvents { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ReactorEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ReactorEvents)) - .field(&self.address()) - .finish() - } - } - impl ReactorEvents { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - REACTOREVENTS_ABI.clone(), - client, - ), - ) - } - ///Gets the contract's `Fill` event - pub fn fill_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, FillFilter> { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, FillFilter> { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for ReactorEvents { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Fill", abi = "Fill(bytes32,address,address,uint256)")] - pub struct FillFilter { - #[ethevent(indexed)] - pub order_hash: [u8; 32], - #[ethevent(indexed)] - pub filler: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub swapper: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - } -} diff --git a/crates/bindings-uniswapx/src/reactorevents.rs b/crates/bindings-uniswapx/src/reactorevents.rs new file mode 100644 index 0000000..1f45c4e --- /dev/null +++ b/crates/bindings-uniswapx/src/reactorevents.rs @@ -0,0 +1,491 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ReactorEvents { + event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "event", + "name": "Fill", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "filler", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "swapper", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ReactorEvents { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Event with signature `Fill(bytes32,address,address,uint256)` and selector `0x78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66`. +```solidity +event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Fill { + #[allow(missing_docs)] + pub orderHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub filler: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub swapper: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Fill { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Fill(bytes32,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + orderHash: topics.1, + filler: topics.2, + swapper: topics.3, + nonce: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.orderHash.clone(), + self.filler.clone(), + self.swapper.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.orderHash); + out[2usize] = ::encode_topic( + &self.filler, + ); + out[3usize] = ::encode_topic( + &self.swapper, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Fill { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Fill> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Fill) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + ///Container for all the [`ReactorEvents`](self) events. + pub enum ReactorEventsEvents { + Fill(Fill), + } + #[automatically_derived] + impl ReactorEventsEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for ReactorEventsEvents { + const NAME: &'static str = "ReactorEventsEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Fill) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ReactorEventsEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ReactorEvents`](self) contract instance. + +See the [wrapper's documentation](`ReactorEventsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ReactorEventsInstance { + ReactorEventsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ReactorEventsInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ReactorEventsInstance::::deploy_builder(provider) + } + /**A [`ReactorEvents`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ReactorEvents`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ReactorEventsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ReactorEventsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ReactorEventsInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ReactorEventsInstance { + /**Creates a new wrapper around an on-chain [`ReactorEvents`](self) contract instance. + +See the [wrapper's documentation](`ReactorEventsInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ReactorEventsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ReactorEventsInstance { + ReactorEventsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ReactorEventsInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ReactorEventsInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Fill`] event. + pub fn Fill_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/reentrancy_guard.rs b/crates/bindings-uniswapx/src/reentrancy_guard.rs deleted file mode 100644 index 07ea782..0000000 --- a/crates/bindings-uniswapx/src/reentrancy_guard.rs +++ /dev/null @@ -1,74 +0,0 @@ -pub use reentrancy_guard::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod reentrancy_guard { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static REENTRANCYGUARD_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - pub struct ReentrancyGuard(::ethers::contract::Contract); - impl ::core::clone::Clone for ReentrancyGuard { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ReentrancyGuard { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ReentrancyGuard { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ReentrancyGuard { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ReentrancyGuard)) - .field(&self.address()) - .finish() - } - } - impl ReentrancyGuard { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - REENTRANCYGUARD_ABI.clone(), - client, - ), - ) - } - } - impl From<::ethers::contract::Contract> - for ReentrancyGuard { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/reentrancyguard.rs b/crates/bindings-uniswapx/src/reentrancyguard.rs new file mode 100644 index 0000000..24d1d02 --- /dev/null +++ b/crates/bindings-uniswapx/src/reentrancyguard.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ReentrancyGuard {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ReentrancyGuard { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ReentrancyGuard`](self) contract instance. + +See the [wrapper's documentation](`ReentrancyGuardInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ReentrancyGuardInstance { + ReentrancyGuardInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ReentrancyGuardInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ReentrancyGuardInstance::::deploy_builder(provider) + } + /**A [`ReentrancyGuard`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ReentrancyGuard`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ReentrancyGuardInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ReentrancyGuardInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ReentrancyGuardInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ReentrancyGuardInstance { + /**Creates a new wrapper around an on-chain [`ReentrancyGuard`](self) contract instance. + +See the [wrapper's documentation](`ReentrancyGuardInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ReentrancyGuardInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ReentrancyGuardInstance { + ReentrancyGuardInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ReentrancyGuardInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ReentrancyGuardInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/resolved_order_lib.rs b/crates/bindings-uniswapx/src/resolved_order_lib.rs deleted file mode 100644 index 2590c1f..0000000 --- a/crates/bindings-uniswapx/src/resolved_order_lib.rs +++ /dev/null @@ -1,150 +0,0 @@ -pub use resolved_order_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod resolved_order_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("InvalidReactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidReactor"), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static RESOLVEDORDERLIB_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xC3R\xE3\x96\xAD[\xA2\xDB.\x9D\xCCM\t)\xEF\xE1\x8D\xF9j\x9F\x16\0F\xA7p\x05]2R\\\xA6|dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static RESOLVEDORDERLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xC3R\xE3\x96\xAD[\xA2\xDB.\x9D\xCCM\t)\xEF\xE1\x8D\xF9j\x9F\x16\0F\xA7p\x05]2R\\\xA6|dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static RESOLVEDORDERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct ResolvedOrderLib(::ethers::contract::Contract); - impl ::core::clone::Clone for ResolvedOrderLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ResolvedOrderLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ResolvedOrderLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ResolvedOrderLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ResolvedOrderLib)) - .field(&self.address()) - .finish() - } - } - impl ResolvedOrderLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - RESOLVEDORDERLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - RESOLVEDORDERLIB_ABI.clone(), - RESOLVEDORDERLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for ResolvedOrderLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `InvalidReactor` with signature `InvalidReactor()` and selector `0x4ddf4a64` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidReactor", abi = "InvalidReactor()")] - pub struct InvalidReactor; -} diff --git a/crates/bindings-uniswapx/src/resolvedorderlib.rs b/crates/bindings-uniswapx/src/resolvedorderlib.rs new file mode 100644 index 0000000..8d97357 --- /dev/null +++ b/crates/bindings-uniswapx/src/resolvedorderlib.rs @@ -0,0 +1,377 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ResolvedOrderLib { + error InvalidReactor(); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "error", + "name": "InvalidReactor", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ResolvedOrderLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220867f62454ce76825babfd6674198af2b8a1ad2fc0d0b7c67889fcfb72a60360f64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x86\x7FbEL\xE7h%\xBA\xBF\xD6gA\x98\xAF+\x8A\x1A\xD2\xFC\r\x0B|g\x88\x9F\xCF\xB7*`6\x0FdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220867f62454ce76825babfd6674198af2b8a1ad2fc0d0b7c67889fcfb72a60360f64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x86\x7FbEL\xE7h%\xBA\xBF\xD6gA\x98\xAF+\x8A\x1A\xD2\xFC\r\x0B|g\x88\x9F\xCF\xB7*`6\x0FdsolcC\0\x08\x18\x003", + ); + /**Custom error with signature `InvalidReactor()` and selector `0x4ddf4a64`. +```solidity +error InvalidReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReactor {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReactor()"; + const SELECTOR: [u8; 4] = [77u8, 223u8, 74u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + ///Container for all the [`ResolvedOrderLib`](self) custom errors. + pub enum ResolvedOrderLibErrors { + InvalidReactor(InvalidReactor), + } + #[automatically_derived] + impl ResolvedOrderLibErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[77u8, 223u8, 74u8, 100u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ResolvedOrderLibErrors { + const NAME: &'static str = "ResolvedOrderLibErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InvalidReactor(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn InvalidReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ResolvedOrderLibErrors::InvalidReactor) + } + InvalidReactor + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InvalidReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::InvalidReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ResolvedOrderLib`](self) contract instance. + +See the [wrapper's documentation](`ResolvedOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ResolvedOrderLibInstance { + ResolvedOrderLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ResolvedOrderLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ResolvedOrderLibInstance::::deploy_builder(provider) + } + /**A [`ResolvedOrderLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ResolvedOrderLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ResolvedOrderLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ResolvedOrderLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ResolvedOrderLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ResolvedOrderLibInstance { + /**Creates a new wrapper around an on-chain [`ResolvedOrderLib`](self) contract instance. + +See the [wrapper's documentation](`ResolvedOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ResolvedOrderLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ResolvedOrderLibInstance { + ResolvedOrderLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ResolvedOrderLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ResolvedOrderLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/safe_cast.rs b/crates/bindings-uniswapx/src/safe_cast.rs deleted file mode 100644 index 39402c9..0000000 --- a/crates/bindings-uniswapx/src/safe_cast.rs +++ /dev/null @@ -1,123 +0,0 @@ -pub use safe_cast::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod safe_cast { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static SAFECAST_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xB3,\xFDP\xDB\x06\xB6C\xA4\xF0\xBC\xEE\xF7\xE9\xB7\xF1\x89\x1F\xE4l\xABW\xDC=\xE2\xC0]\x88\xFFpf\rdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static SAFECAST_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xB3,\xFDP\xDB\x06\xB6C\xA4\xF0\xBC\xEE\xF7\xE9\xB7\xF1\x89\x1F\xE4l\xABW\xDC=\xE2\xC0]\x88\xFFpf\rdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static SAFECAST_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct SafeCast(::ethers::contract::Contract); - impl ::core::clone::Clone for SafeCast { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for SafeCast { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for SafeCast { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for SafeCast { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(SafeCast)).field(&self.address()).finish() - } - } - impl SafeCast { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - SAFECAST_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - SAFECAST_ABI.clone(), - SAFECAST_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for SafeCast { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/safe_transfer_lib.rs b/crates/bindings-uniswapx/src/safe_transfer_lib.rs deleted file mode 100644 index 440c150..0000000 --- a/crates/bindings-uniswapx/src/safe_transfer_lib.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use safe_transfer_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod safe_transfer_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static SAFETRANSFERLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x19\xA5\x0C\x10F\x18\xCD\xA1\x02n\xBB\xC0\x8D\xD9\x94\x99\t\xC7\xAEy\x9A\x0CX\xA7Du\r\x018\xA2\xA9\x86dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static SAFETRANSFERLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x19\xA5\x0C\x10F\x18\xCD\xA1\x02n\xBB\xC0\x8D\xD9\x94\x99\t\xC7\xAEy\x9A\x0CX\xA7Du\r\x018\xA2\xA9\x86dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static SAFETRANSFERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct SafeTransferLib(::ethers::contract::Contract); - impl ::core::clone::Clone for SafeTransferLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for SafeTransferLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for SafeTransferLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for SafeTransferLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(SafeTransferLib)) - .field(&self.address()) - .finish() - } - } - impl SafeTransferLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - SAFETRANSFERLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - SAFETRANSFERLIB_ABI.clone(), - SAFETRANSFERLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for SafeTransferLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/safecast.rs b/crates/bindings-uniswapx/src/safecast.rs new file mode 100644 index 0000000..3288098 --- /dev/null +++ b/crates/bindings-uniswapx/src/safecast.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface SafeCast {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod SafeCast { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d0bcea8e0408ff457a1a97330d81e2c2352181a61dfb5fd135f0948bbb204ad64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9D\x0B\xCE\xA8\xE0@\x8F\xF4W\xA1\xA9s0\xD8\x1E,#R\x18\x1Aa\xDF\xB5\xFD\x13_\tH\xBB\xB2\x04\xADdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d0bcea8e0408ff457a1a97330d81e2c2352181a61dfb5fd135f0948bbb204ad64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9D\x0B\xCE\xA8\xE0@\x8F\xF4W\xA1\xA9s0\xD8\x1E,#R\x18\x1Aa\xDF\xB5\xFD\x13_\tH\xBB\xB2\x04\xADdsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`SafeCast`](self) contract instance. + +See the [wrapper's documentation](`SafeCastInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> SafeCastInstance { + SafeCastInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + SafeCastInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + SafeCastInstance::::deploy_builder(provider) + } + /**A [`SafeCast`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`SafeCast`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct SafeCastInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for SafeCastInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("SafeCastInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SafeCastInstance { + /**Creates a new wrapper around an on-chain [`SafeCast`](self) contract instance. + +See the [wrapper's documentation](`SafeCastInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl SafeCastInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> SafeCastInstance { + SafeCastInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SafeCastInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SafeCastInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/safetransferlib.rs b/crates/bindings-uniswapx/src/safetransferlib.rs new file mode 100644 index 0000000..7671b59 --- /dev/null +++ b/crates/bindings-uniswapx/src/safetransferlib.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface SafeTransferLib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod SafeTransferLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122060697c11f93b7ce2bfe7e07577de68d4e64d6ec7f62e2a2e8affa7e4a6655e8764736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 `i|\x11\xF9;|\xE2\xBF\xE7\xE0uw\xDEh\xD4\xE6Mn\xC7\xF6.*.\x8A\xFF\xA7\xE4\xA6e^\x87dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122060697c11f93b7ce2bfe7e07577de68d4e64d6ec7f62e2a2e8affa7e4a6655e8764736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 `i|\x11\xF9;|\xE2\xBF\xE7\xE0uw\xDEh\xD4\xE6Mn\xC7\xF6.*.\x8A\xFF\xA7\xE4\xA6e^\x87dsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`SafeTransferLib`](self) contract instance. + +See the [wrapper's documentation](`SafeTransferLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> SafeTransferLibInstance { + SafeTransferLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + SafeTransferLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + SafeTransferLibInstance::::deploy_builder(provider) + } + /**A [`SafeTransferLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`SafeTransferLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct SafeTransferLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for SafeTransferLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("SafeTransferLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SafeTransferLibInstance { + /**Creates a new wrapper around an on-chain [`SafeTransferLib`](self) contract instance. + +See the [wrapper's documentation](`SafeTransferLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl SafeTransferLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> SafeTransferLibInstance { + SafeTransferLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SafeTransferLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SafeTransferLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/shared_types.rs b/crates/bindings-uniswapx/src/shared_types.rs deleted file mode 100644 index b928875..0000000 --- a/crates/bindings-uniswapx/src/shared_types.rs +++ /dev/null @@ -1,274 +0,0 @@ -///`ExactInputParams(bytes,address,uint256,uint256)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct ExactInputParams { - pub path: ::ethers::core::types::Bytes, - pub recipient: ::ethers::core::types::Address, - pub amount_in: ::ethers::core::types::U256, - pub amount_out_minimum: ::ethers::core::types::U256, -} -///`AllowanceTransferDetails(address,address,uint160,address)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct AllowanceTransferDetails { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub token: ::ethers::core::types::Address, -} -///`PermitBatch((address,uint160,uint48,uint48)[],address,uint256)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct PermitBatch { - pub details: ::std::vec::Vec, - pub spender: ::ethers::core::types::Address, - pub sig_deadline: ::ethers::core::types::U256, -} -///`PermitDetails(address,uint160,uint48,uint48)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct PermitDetails { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub expiration: u64, - pub nonce: u64, -} -///`PermitSingle((address,uint160,uint48,uint48),address,uint256)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct PermitSingle { - pub details: PermitDetails, - pub spender: ::ethers::core::types::Address, - pub sig_deadline: ::ethers::core::types::U256, -} -///`TokenSpenderPair(address,address)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct TokenSpenderPair { - pub token: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, -} -///`PermitBatchTransferFrom((address,uint256)[],uint256,uint256)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct PermitBatchTransferFrom { - pub permitted: ::std::vec::Vec, - pub nonce: ::ethers::core::types::U256, - pub deadline: ::ethers::core::types::U256, -} -///`PermitTransferFrom((address,uint256),uint256,uint256)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct PermitTransferFrom { - pub permitted: TokenPermissions, - pub nonce: ::ethers::core::types::U256, - pub deadline: ::ethers::core::types::U256, -} -///`SignatureTransferDetails(address,uint256)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct SignatureTransferDetails { - pub to: ::ethers::core::types::Address, - pub requested_amount: ::ethers::core::types::U256, -} -///`TokenPermissions(address,uint256)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct TokenPermissions { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, -} -///`InputToken(address,uint256,uint256)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct InputToken { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub max_amount: ::ethers::core::types::U256, -} -///`OrderInfo(address,address,uint256,uint256,address,bytes)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct OrderInfo { - pub reactor: ::ethers::core::types::Address, - pub swapper: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - pub deadline: ::ethers::core::types::U256, - pub additional_validation_contract: ::ethers::core::types::Address, - pub additional_validation_data: ::ethers::core::types::Bytes, -} -///`OutputToken(address,uint256,address)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct OutputToken { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub recipient: ::ethers::core::types::Address, -} -///`ResolvedOrder((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct ResolvedOrder { - pub info: OrderInfo, - pub input: InputToken, - pub outputs: ::std::vec::Vec, - pub sig: ::ethers::core::types::Bytes, - pub hash: [u8; 32], -} -///`SignedOrder(bytes,bytes)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash -)] -pub struct SignedOrder { - pub order: ::ethers::core::types::Bytes, - pub sig: ::ethers::core::types::Bytes, -} diff --git a/crates/bindings-uniswapx/src/short_strings.rs b/crates/bindings-uniswapx/src/short_strings.rs deleted file mode 100644 index 7f38363..0000000 --- a/crates/bindings-uniswapx/src/short_strings.rs +++ /dev/null @@ -1,280 +0,0 @@ -pub use short_strings::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod short_strings { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("InvalidShortString"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidShortString"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("StringTooLong"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("StringTooLong"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("str"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static SHORTSTRINGS_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xF2i\x84\x03\xE5\x9C\xA1J\x10/\xF1\xAF\x0B\x9B\xE5\x9C\x93eeR(C\xB3J=\xF9\xB0D\xCAm\xFA(dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static SHORTSTRINGS_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xF2i\x84\x03\xE5\x9C\xA1J\x10/\xF1\xAF\x0B\x9B\xE5\x9C\x93eeR(C\xB3J=\xF9\xB0D\xCAm\xFA(dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static SHORTSTRINGS_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct ShortStrings(::ethers::contract::Contract); - impl ::core::clone::Clone for ShortStrings { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ShortStrings { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ShortStrings { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ShortStrings { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ShortStrings)) - .field(&self.address()) - .finish() - } - } - impl ShortStrings { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - SHORTSTRINGS_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - SHORTSTRINGS_ABI.clone(), - SHORTSTRINGS_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for ShortStrings { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `InvalidShortString` with signature `InvalidShortString()` and selector `0xb3512b0c` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidShortString", abi = "InvalidShortString()")] - pub struct InvalidShortString; - ///Custom Error type `StringTooLong` with signature `StringTooLong(string)` and selector `0x305a27a9` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "StringTooLong", abi = "StringTooLong(string)")] - pub struct StringTooLong { - pub str: ::std::string::String, - } - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum ShortStringsErrors { - InvalidShortString(InvalidShortString), - StringTooLong(StringTooLong), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for ShortStringsErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidShortString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::StringTooLong(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ShortStringsErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::InvalidShortString(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::StringTooLong(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for ShortStringsErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for ShortStringsErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::InvalidShortString(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::StringTooLong(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for ShortStringsErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for ShortStringsErrors { - fn from(value: InvalidShortString) -> Self { - Self::InvalidShortString(value) - } - } - impl ::core::convert::From for ShortStringsErrors { - fn from(value: StringTooLong) -> Self { - Self::StringTooLong(value) - } - } -} diff --git a/crates/bindings-uniswapx/src/shortstrings.rs b/crates/bindings-uniswapx/src/shortstrings.rs new file mode 100644 index 0000000..074c8e9 --- /dev/null +++ b/crates/bindings-uniswapx/src/shortstrings.rs @@ -0,0 +1,483 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface ShortStrings { + error InvalidShortString(); + error StringTooLong(string str); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "error", + "name": "InvalidShortString", + "inputs": [] + }, + { + "type": "error", + "name": "StringTooLong", + "inputs": [ + { + "name": "str", + "type": "string", + "internalType": "string" + } + ] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod ShortStrings { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206f753514e72671d4c80df6863d70f127c1ff676ec5ea0d38b7773626d8cb637264736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 ou5\x14\xE7&q\xD4\xC8\r\xF6\x86=p\xF1'\xC1\xFFgn\xC5\xEA\r8\xB7w6&\xD8\xCBcrdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206f753514e72671d4c80df6863d70f127c1ff676ec5ea0d38b7773626d8cb637264736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 ou5\x14\xE7&q\xD4\xC8\r\xF6\x86=p\xF1'\xC1\xFFgn\xC5\xEA\r8\xB7w6&\xD8\xCBcrdsolcC\0\x08\x18\x003", + ); + /**Custom error with signature `InvalidShortString()` and selector `0xb3512b0c`. +```solidity +error InvalidShortString(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidShortString {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidShortString) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidShortString { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidShortString { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidShortString()"; + const SELECTOR: [u8; 4] = [179u8, 81u8, 43u8, 12u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `StringTooLong(string)` and selector `0x305a27a9`. +```solidity +error StringTooLong(string str); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct StringTooLong { + pub str: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: StringTooLong) -> Self { + (value.str,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for StringTooLong { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { str: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for StringTooLong { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "StringTooLong(string)"; + const SELECTOR: [u8; 4] = [48u8, 90u8, 39u8, 169u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.str, + ), + ) + } + } + }; + ///Container for all the [`ShortStrings`](self) custom errors. + pub enum ShortStringsErrors { + InvalidShortString(InvalidShortString), + StringTooLong(StringTooLong), + } + #[automatically_derived] + impl ShortStringsErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [48u8, 90u8, 39u8, 169u8], + [179u8, 81u8, 43u8, 12u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for ShortStringsErrors { + const NAME: &'static str = "ShortStringsErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 2usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::InvalidShortString(_) => { + ::SELECTOR + } + Self::StringTooLong(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn StringTooLong( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ShortStringsErrors::StringTooLong) + } + StringTooLong + }, + { + fn InvalidShortString( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(ShortStringsErrors::InvalidShortString) + } + InvalidShortString + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::InvalidShortString(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::StringTooLong(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::InvalidShortString(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::StringTooLong(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ShortStrings`](self) contract instance. + +See the [wrapper's documentation](`ShortStringsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ShortStringsInstance { + ShortStringsInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + ShortStringsInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + ShortStringsInstance::::deploy_builder(provider) + } + /**A [`ShortStrings`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ShortStrings`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ShortStringsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ShortStringsInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ShortStringsInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ShortStringsInstance { + /**Creates a new wrapper around an on-chain [`ShortStrings`](self) contract instance. + +See the [wrapper's documentation](`ShortStringsInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ShortStringsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ShortStringsInstance { + ShortStringsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ShortStringsInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ShortStringsInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/signed_math.rs b/crates/bindings-uniswapx/src/signed_math.rs deleted file mode 100644 index ede2376..0000000 --- a/crates/bindings-uniswapx/src/signed_math.rs +++ /dev/null @@ -1,123 +0,0 @@ -pub use signed_math::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod signed_math { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static SIGNEDMATH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xC3\x9D\xB0:\xB8v\xE7\xDE\xC1\xC4\xD2\xEB\x1F1\x83O~\xE8=T\xEC\x12\x911Z\xEE\x03\x1C\xC6\xBB\xFE8dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static SIGNEDMATH_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xC3\x9D\xB0:\xB8v\xE7\xDE\xC1\xC4\xD2\xEB\x1F1\x83O~\xE8=T\xEC\x12\x911Z\xEE\x03\x1C\xC6\xBB\xFE8dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static SIGNEDMATH_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct SignedMath(::ethers::contract::Contract); - impl ::core::clone::Clone for SignedMath { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for SignedMath { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for SignedMath { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for SignedMath { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(SignedMath)).field(&self.address()).finish() - } - } - impl SignedMath { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - SIGNEDMATH_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - SIGNEDMATH_ABI.clone(), - SIGNEDMATH_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for SignedMath { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/signedmath.rs b/crates/bindings-uniswapx/src/signedmath.rs new file mode 100644 index 0000000..6932fb1 --- /dev/null +++ b/crates/bindings-uniswapx/src/signedmath.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface SignedMath {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod SignedMath { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201441d1165b23759ac59e4907b34f456bb4d6f8e1dfd7898d647c820c9e40796b64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x14A\xD1\x16[#u\x9A\xC5\x9EI\x07\xB3OEk\xB4\xD6\xF8\xE1\xDF\xD7\x89\x8Dd|\x82\x0C\x9E@ykdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201441d1165b23759ac59e4907b34f456bb4d6f8e1dfd7898d647c820c9e40796b64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x14A\xD1\x16[#u\x9A\xC5\x9EI\x07\xB3OEk\xB4\xD6\xF8\xE1\xDF\xD7\x89\x8Dd|\x82\x0C\x9E@ykdsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`SignedMath`](self) contract instance. + +See the [wrapper's documentation](`SignedMathInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> SignedMathInstance { + SignedMathInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + SignedMathInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + SignedMathInstance::::deploy_builder(provider) + } + /**A [`SignedMath`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`SignedMath`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct SignedMathInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for SignedMathInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("SignedMathInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SignedMathInstance { + /**Creates a new wrapper around an on-chain [`SignedMath`](self) contract instance. + +See the [wrapper's documentation](`SignedMathInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl SignedMathInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> SignedMathInstance { + SignedMathInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SignedMathInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SignedMathInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/solarray.rs b/crates/bindings-uniswapx/src/solarray.rs index 900eec0..c5e8273 100644 --- a/crates/bindings-uniswapx/src/solarray.rs +++ b/crates/bindings-uniswapx/src/solarray.rs @@ -1,123 +1,218 @@ -pub use solarray::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod solarray { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static SOLARRAY_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); +/** + +Generated by the following Solidity interface... +```solidity +interface Solarray {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Solarray { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208521abdefb4bd4010a5faa6967a010522ae63f42a70250bfdd3bc6197a833fdb64736f6c63430008180033 + /// ``` #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x1A\x10\xCE)'\xE9\x11\xE5\xC9\x89\xA9V\xB7\xF3\xC9\x86\x9B\xC5<\xB4\xF6\xA0\xD3B\x07j\xD3%\x1A_r\xBFdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static SOLARRAY_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x85!\xAB\xDE\xFBK\xD4\x01\n_\xAAig\xA0\x10R*\xE6?B\xA7\x02P\xBF\xDD;\xC6\x19z\x83?\xDBdsolcC\0\x08\x18\x003", ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208521abdefb4bd4010a5faa6967a010522ae63f42a70250bfdd3bc6197a833fdb64736f6c63430008180033 + /// ``` #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x1A\x10\xCE)'\xE9\x11\xE5\xC9\x89\xA9V\xB7\xF3\xC9\x86\x9B\xC5<\xB4\xF6\xA0\xD3B\x07j\xD3%\x1A_r\xBFdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static SOLARRAY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x85!\xAB\xDE\xFBK\xD4\x01\n_\xAAig\xA0\x10R*\xE6?B\xA7\x02P\xBF\xDD;\xC6\x19z\x83?\xDBdsolcC\0\x08\x18\x003", ); - pub struct Solarray(::ethers::contract::Contract); - impl ::core::clone::Clone for Solarray { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Solarray`](self) contract instance. + +See the [wrapper's documentation](`SolarrayInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> SolarrayInstance { + SolarrayInstance::::new(address, provider) } - impl ::core::ops::Deref for Solarray { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + SolarrayInstance::::deploy(provider) } - impl ::core::ops::DerefMut for Solarray { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + SolarrayInstance::::deploy_builder(provider) } - impl ::core::fmt::Debug for Solarray { + /**A [`Solarray`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Solarray`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct SolarrayInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for SolarrayInstance { + #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Solarray)).field(&self.address()).finish() + f.debug_tuple("SolarrayInstance").field(&self.address).finish() } } - impl Solarray { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SolarrayInstance { + /**Creates a new wrapper around an on-chain [`Solarray`](self) contract instance. + +See the [wrapper's documentation](`SolarrayInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - SOLARRAY_ABI.clone(), - client, - ), + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), ) } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl SolarrayInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> SolarrayInstance { + SolarrayInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SolarrayInstance { + /// Creates a new call builder using this contract instance's provider and address. /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - SOLARRAY_ABI.clone(), - SOLARRAY_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) } } - impl From<::ethers::contract::Contract> - for Solarray { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SolarrayInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) } } } diff --git a/crates/bindings-uniswapx/src/storage_slot.rs b/crates/bindings-uniswapx/src/storage_slot.rs deleted file mode 100644 index 5aa8911..0000000 --- a/crates/bindings-uniswapx/src/storage_slot.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use storage_slot::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod storage_slot { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static STORAGESLOT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xF2\xBBGKu\x80$]\xF3 _\xF0B\xD0\x16UxZ\x9F\xF8\xB5\xD4\xCD\x10\x9Cik\x01\x94j\x8E\x98dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static STORAGESLOT_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xF2\xBBGKu\x80$]\xF3 _\xF0B\xD0\x16UxZ\x9F\xF8\xB5\xD4\xCD\x10\x9Cik\x01\x94j\x8E\x98dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static STORAGESLOT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct StorageSlot(::ethers::contract::Contract); - impl ::core::clone::Clone for StorageSlot { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for StorageSlot { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for StorageSlot { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for StorageSlot { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(StorageSlot)) - .field(&self.address()) - .finish() - } - } - impl StorageSlot { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - STORAGESLOT_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - STORAGESLOT_ABI.clone(), - STORAGESLOT_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for StorageSlot { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/storageslot.rs b/crates/bindings-uniswapx/src/storageslot.rs new file mode 100644 index 0000000..59f097e --- /dev/null +++ b/crates/bindings-uniswapx/src/storageslot.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface StorageSlot {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod StorageSlot { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dd902391a5af7dee270ac786f31dec2612e26293b68ce60eb65577426383304564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xDD\x90#\x91\xA5\xAF}\xEE'\n\xC7\x86\xF3\x1D\xEC&\x12\xE2b\x93\xB6\x8C\xE6\x0E\xB6UwBc\x830EdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dd902391a5af7dee270ac786f31dec2612e26293b68ce60eb65577426383304564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xDD\x90#\x91\xA5\xAF}\xEE'\n\xC7\x86\xF3\x1D\xEC&\x12\xE2b\x93\xB6\x8C\xE6\x0E\xB6UwBc\x830EdsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`StorageSlot`](self) contract instance. + +See the [wrapper's documentation](`StorageSlotInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> StorageSlotInstance { + StorageSlotInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + StorageSlotInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + StorageSlotInstance::::deploy_builder(provider) + } + /**A [`StorageSlot`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`StorageSlot`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct StorageSlotInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StorageSlotInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StorageSlotInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StorageSlotInstance { + /**Creates a new wrapper around an on-chain [`StorageSlot`](self) contract instance. + +See the [wrapper's documentation](`StorageSlotInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl StorageSlotInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StorageSlotInstance { + StorageSlotInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StorageSlotInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StorageSlotInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/strings.rs b/crates/bindings-uniswapx/src/strings.rs index 4ccb521..6c5f535 100644 --- a/crates/bindings-uniswapx/src/strings.rs +++ b/crates/bindings-uniswapx/src/strings.rs @@ -1,123 +1,218 @@ -pub use strings::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod strings { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static STRINGS_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); +/** + +Generated by the following Solidity interface... +```solidity +interface Strings {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Strings { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b7c7f72e70606dd166442ec70e1e311c0943796f1cd70d533a8b4a66b0b612ab64736f6c63430008180033 + /// ``` #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xFE\x1BZi\x1A\x80\x07\xD5\x80_\x9F\x12(K\x15$3\x96\xB1ZQ$R4\x8A\xA360!\x10]\xA5dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static STRINGS_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xB7\xC7\xF7.p`m\xD1fD.\xC7\x0E\x1E1\x1C\tCyo\x1C\xD7\rS:\x8BJf\xB0\xB6\x12\xABdsolcC\0\x08\x18\x003", ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b7c7f72e70606dd166442ec70e1e311c0943796f1cd70d533a8b4a66b0b612ab64736f6c63430008180033 + /// ``` #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xFE\x1BZi\x1A\x80\x07\xD5\x80_\x9F\x12(K\x15$3\x96\xB1ZQ$R4\x8A\xA360!\x10]\xA5dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static STRINGS_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xB7\xC7\xF7.p`m\xD1fD.\xC7\x0E\x1E1\x1C\tCyo\x1C\xD7\rS:\x8BJf\xB0\xB6\x12\xABdsolcC\0\x08\x18\x003", ); - pub struct Strings(::ethers::contract::Contract); - impl ::core::clone::Clone for Strings { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Strings`](self) contract instance. + +See the [wrapper's documentation](`StringsInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> StringsInstance { + StringsInstance::::new(address, provider) } - impl ::core::ops::Deref for Strings { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + StringsInstance::::deploy(provider) } - impl ::core::ops::DerefMut for Strings { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + StringsInstance::::deploy_builder(provider) } - impl ::core::fmt::Debug for Strings { + /**A [`Strings`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Strings`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct StringsInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StringsInstance { + #[inline] fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Strings)).field(&self.address()).finish() + f.debug_tuple("StringsInstance").field(&self.address).finish() } } - impl Strings { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StringsInstance { + /**Creates a new wrapper around an on-chain [`Strings`](self) contract instance. + +See the [wrapper's documentation](`StringsInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - STRINGS_ABI.clone(), - client, - ), + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), ) } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl StringsInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StringsInstance { + StringsInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StringsInstance { + /// Creates a new call builder using this contract instance's provider and address. /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - STRINGS_ABI.clone(), - STRINGS_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) } } - impl From<::ethers::contract::Contract> - for Strings { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StringsInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) } } } diff --git a/crates/bindings-uniswapx/src/swap_router_02_executor.rs b/crates/bindings-uniswapx/src/swap_router_02_executor.rs deleted file mode 100644 index 3687f4e..0000000 --- a/crates/bindings-uniswapx/src/swap_router_02_executor.rs +++ /dev/null @@ -1,1347 +0,0 @@ -pub use swap_router_02_executor::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod swap_router_02_executor { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_whitelistedCaller"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_reactor"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IReactor"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_swapRouter02"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ISwapRouter02"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("multicall"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("multicall"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokensToApprove"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Address, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ERC20[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("multicallData"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Bytes, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("reactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("reactor"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IReactor"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("reactorCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("reactorCallback"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct ResolvedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("swapRouter02"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("swapRouter02"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract ISwapRouter02"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("unwrapWETH"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("unwrapWETH"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("recipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("weth"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("weth"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract WETH"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("whitelistedCaller"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("whitelistedCaller"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("withdrawETH"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("withdrawETH"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("recipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("CallerNotWhitelisted"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CallerNotWhitelisted", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("MsgSenderNotReactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "MsgSenderNotReactor", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static SWAPROUTER02EXECUTOR_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"a\x01\0`@R4\x80\x15b\0\0\x11W_\x80\xFD[P`@Qb\0\x19a8\x03\x80b\0\x19a\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01&V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x81\x16`\xC0R\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\xD1W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xF7\x91\x90b\0\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xB0\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01#W_\x80\xFD[PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15b\0\x01:W_\x80\xFD[\x84Qb\0\x01G\x81b\0\x01\x0EV[` \x86\x01Q\x90\x94Pb\0\x01Z\x81b\0\x01\x0EV[`@\x86\x01Q\x90\x93Pb\0\x01m\x81b\0\x01\x0EV[``\x86\x01Q\x90\x92Pb\0\x01\x80\x81b\0\x01\x0EV[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15b\0\x01\x9CW_\x80\xFD[\x81Qb\0\x01\xA9\x81b\0\x01\x0EV[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x171b\0\x020_9_\x81\x81`\xE2\x01R\x81\x81a\x08\xDC\x01Ra\t\x8C\x01R_\x81\x81a\x02M\x01R\x81\x81a\x02\xE4\x01R\x81\x81a\x03\xF8\x01R\x81\x81a\x05S\x01R\x81\x81a\nC\x01Ra\n\xE2\x01R_a\x01\xEF\x01R_\x81\x81a\x01\x9D\x01R\x81\x81a\x03`\x01R\x81\x81a\x04\x90\x01R\x81\x81a\x06\x15\x01Ra\x06\xDF\x01Ra\x171_\xF3\xFE`\x80`@R`\x046\x10a\0\xC6W_5`\xE0\x1C\x80c\x8C!\xB4\x11\x11a\0qW\x80c\xD0\xF2\xD8\xAC\x11a\0LW\x80c\xD0\xF2\xD8\xAC\x14a\x02oW\x80c\xE5\x13^\xC6\x14a\x02\x8EW\x80c\xF2\xFD\xE3\x8B\x14a\x02\xADW_\x80\xFD[\x80c\x8C!\xB4\x11\x14a\x01\xDEW\x80c\x8D\xA5\xCB[\x14a\x02\x11W\x80c\xABW&P\x14a\x02=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x05G\x91\x90\x81\x01\x90a\x13\x9EV[PG\x15a\x05xWa\x05x\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\r\x10V[PPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_[\x83\x81\x10\x15a\x06\xA1Wa\x06\x99\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x06gWa\x06ga\x12\x93V[\x90P` \x02\x01` \x81\x01\x90a\x06|\x91\x90a\x0F\x86V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C?V[`\x01\x01a\x06\x08V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x078\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x15'V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x07SW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x07\x98\x91\x90\x81\x01\x90a\x13\x9EV[PPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\x1FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[a\x08)\x81Ga\r\xABV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xACW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t6W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tZ\x91\x90a\x15\xB6V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\t\xE2W_\x80\xFD[PZ\xF1\x15\x80\x15a\t\xF4W=_\x80>=_\xFD[PPPPa\n\x02\x82Ga\r\xABV[PPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\n|\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x16\x17V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\n\x93W_\x80\xFD[PZ\xF1\x15\x80\x15a\x05xW=_\x80>=_\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x0B\x1D\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\xD0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\r\nW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\rfW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\rkV[``\x91P[PP\x90P\x80a\r\xA6W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\r\xA6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[_\x80\x83`\x1F\x84\x01\x12a\x0E-W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0EDW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0E^W_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x0EuW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x8CW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0E^W_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0E\xB6W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xCDW_\x80\xFD[a\x0E\xD9\x88\x83\x89\x01a\x0E\x1DV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0E\xF1W_\x80\xFD[Pa\x0E\xFE\x87\x82\x88\x01a\x0EeV[\x95\x98\x94\x97P\x95PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0F\x1DW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F4W_\x80\xFD[a\x0F@\x88\x83\x89\x01a\x0E\x1DV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0FXW_\x80\xFD[Pa\x0E\xFE\x87\x82\x88\x01a\x0E\x1DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08)W_\x80\xFD[_` \x82\x84\x03\x12\x15a\x0F\x96W_\x80\xFD[\x815a\x0F\xA1\x81a\x0FeV[\x93\x92PPPV[_\x80_`@\x84\x86\x03\x12\x15a\x0F\xBAW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\xD1W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x0F\xE4W_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x0F\xF9W_\x80\xFD[Pa\x10\x06\x86\x82\x87\x01a\x0EeV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10\x87Wa\x10\x87a\x10\x13V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10\xA8Wa\x10\xA8a\x10\x13V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x10\xC1W_\x80\xFD[\x815` a\x10\xD6a\x10\xD1\x83a\x10\x8FV[a\x10@V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x10\xF7W_\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x11\x1CW\x805a\x11\x0F\x81a\x0FeV[\x83R\x91\x83\x01\x91\x83\x01a\x10\xFCV[P\x96\x95PPPPPPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11@Wa\x11@a\x10\x13V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x80_``\x84\x86\x03\x12\x15a\x11~W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\x95W_\x80\xFD[a\x11\xA1\x87\x83\x88\x01a\x10\xB2V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\xB7W_\x80\xFD[a\x11\xC3\x88\x82\x89\x01a\x10\xB2V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x11\xD8W_\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x11\xE8W_\x80\xFD[\x805a\x11\xF6a\x10\xD1\x82a\x10\x8FV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x12\x14W_\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12\x81W\x805\x87\x81\x11\x15a\x12.W_\x80\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12>W_\x80\xFD[\x88\x81\x015a\x12Na\x10\xD1\x82a\x11'V[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12aW_\x80\xFD[\x81\x89\x84\x01\x8C\x83\x017_\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x12\x18V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x12\xDAW\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\xC2V[PP_\x91\x01RV[_`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01_[\x82\x81\x10\x15a\x13\x90W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13S\x81\x88\x8A\x01\x89\x85\x01a\x12\xC0V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x13\x0EV[P\x93\x98\x97PPPPPPPPV[_` \x80\x83\x85\x03\x12\x15a\x13\xAFW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\xC6W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x13\xD9W_\x80\xFD[\x81Qa\x13\xE7a\x10\xD1\x82a\x10\x8FV[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x14\x05W_\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14sW\x80Q\x85\x81\x11\x15a\x14\x1FW_\x80\xFD[\x86\x01`?\x81\x01\x8B\x13a\x14/W_\x80\xFD[\x87\x81\x01Q`@a\x14Aa\x10\xD1\x83a\x11'V[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14TW_\x80\xFD[a\x14c\x83\x8C\x83\x01\x84\x87\x01a\x12\xC0V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x14\tV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x14\xFAW_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\x19W_\x80\xFD[\x806\x03\x82\x13\x15a\x0E^W_\x80\xFD[_`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86_[\x87\x81\x10\x15a\x15\xA8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15\x89\x82\x8Aa\x14\xC7V[a\x15\x94\x87\x82\x84a\x14\x80V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15PV[P\x92\x98\x97PPPPPPPPV[_` \x82\x84\x03\x12\x15a\x15\xC6W_\x80\xFD[PQ\x91\x90PV[_a\x15\xD8\x82\x83a\x14\xC7V[`@\x85Ra\x15\xEA`@\x86\x01\x82\x84a\x14\x80V[\x91PPa\x15\xFA` \x84\x01\x84a\x14\xC7V[\x85\x83\x03` \x87\x01Ra\x16\r\x83\x82\x84a\x14\x80V[\x96\x95PPPPPPV[`@\x81R_a\x16)`@\x83\x01\x86a\x15\xCDV[\x82\x81\x03` \x84\x01Ra\x16\r\x81\x85\x87a\x14\x80V[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x16\xDAW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x16\xB8W_\x80\xFD[a\x16\xC4\x85\x8C\x83\x01a\x15\xCDV[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x16XV[PPP\x82\x81\x03` \x84\x01Ra\x16\xF0\x81\x85\x87a\x14\x80V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 -i\xC6I`\xC7\xE4\xC5\xF4\xE7\x9D\x02\x88~~\r@\x03~\x12ObD\x0B\xDF\x115\x1F\0\xD6-\x88dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static SWAPROUTER02EXECUTOR_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\xC6W_5`\xE0\x1C\x80c\x8C!\xB4\x11\x11a\0qW\x80c\xD0\xF2\xD8\xAC\x11a\0LW\x80c\xD0\xF2\xD8\xAC\x14a\x02oW\x80c\xE5\x13^\xC6\x14a\x02\x8EW\x80c\xF2\xFD\xE3\x8B\x14a\x02\xADW_\x80\xFD[\x80c\x8C!\xB4\x11\x14a\x01\xDEW\x80c\x8D\xA5\xCB[\x14a\x02\x11W\x80c\xABW&P\x14a\x02=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x05G\x91\x90\x81\x01\x90a\x13\x9EV[PG\x15a\x05xWa\x05x\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\r\x10V[PPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_[\x83\x81\x10\x15a\x06\xA1Wa\x06\x99\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x06gWa\x06ga\x12\x93V[\x90P` \x02\x01` \x81\x01\x90a\x06|\x91\x90a\x0F\x86V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C?V[`\x01\x01a\x06\x08V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x078\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x15'V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x07SW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x07\x98\x91\x90\x81\x01\x90a\x13\x9EV[PPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\x1FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[a\x08)\x81Ga\r\xABV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xACW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t6W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tZ\x91\x90a\x15\xB6V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\t\xE2W_\x80\xFD[PZ\xF1\x15\x80\x15a\t\xF4W=_\x80>=_\xFD[PPPPa\n\x02\x82Ga\r\xABV[PPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\n|\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x16\x17V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\n\x93W_\x80\xFD[PZ\xF1\x15\x80\x15a\x05xW=_\x80>=_\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x0B\x1D\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\xD0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\r\nW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\rfW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\rkV[``\x91P[PP\x90P\x80a\r\xA6W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\r\xA6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\xFDV[_\x80\x83`\x1F\x84\x01\x12a\x0E-W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0EDW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0E^W_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x0EuW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x8CW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0E^W_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0E\xB6W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xCDW_\x80\xFD[a\x0E\xD9\x88\x83\x89\x01a\x0E\x1DV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0E\xF1W_\x80\xFD[Pa\x0E\xFE\x87\x82\x88\x01a\x0EeV[\x95\x98\x94\x97P\x95PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0F\x1DW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F4W_\x80\xFD[a\x0F@\x88\x83\x89\x01a\x0E\x1DV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0FXW_\x80\xFD[Pa\x0E\xFE\x87\x82\x88\x01a\x0E\x1DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08)W_\x80\xFD[_` \x82\x84\x03\x12\x15a\x0F\x96W_\x80\xFD[\x815a\x0F\xA1\x81a\x0FeV[\x93\x92PPPV[_\x80_`@\x84\x86\x03\x12\x15a\x0F\xBAW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\xD1W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x0F\xE4W_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x0F\xF9W_\x80\xFD[Pa\x10\x06\x86\x82\x87\x01a\x0EeV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10\x87Wa\x10\x87a\x10\x13V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10\xA8Wa\x10\xA8a\x10\x13V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x10\xC1W_\x80\xFD[\x815` a\x10\xD6a\x10\xD1\x83a\x10\x8FV[a\x10@V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x10\xF7W_\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x11\x1CW\x805a\x11\x0F\x81a\x0FeV[\x83R\x91\x83\x01\x91\x83\x01a\x10\xFCV[P\x96\x95PPPPPPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11@Wa\x11@a\x10\x13V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x80_``\x84\x86\x03\x12\x15a\x11~W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\x95W_\x80\xFD[a\x11\xA1\x87\x83\x88\x01a\x10\xB2V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\xB7W_\x80\xFD[a\x11\xC3\x88\x82\x89\x01a\x10\xB2V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x11\xD8W_\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x11\xE8W_\x80\xFD[\x805a\x11\xF6a\x10\xD1\x82a\x10\x8FV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x12\x14W_\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12\x81W\x805\x87\x81\x11\x15a\x12.W_\x80\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12>W_\x80\xFD[\x88\x81\x015a\x12Na\x10\xD1\x82a\x11'V[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12aW_\x80\xFD[\x81\x89\x84\x01\x8C\x83\x017_\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x12\x18V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x12\xDAW\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\xC2V[PP_\x91\x01RV[_`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01_[\x82\x81\x10\x15a\x13\x90W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13S\x81\x88\x8A\x01\x89\x85\x01a\x12\xC0V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x13\x0EV[P\x93\x98\x97PPPPPPPPV[_` \x80\x83\x85\x03\x12\x15a\x13\xAFW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\xC6W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x13\xD9W_\x80\xFD[\x81Qa\x13\xE7a\x10\xD1\x82a\x10\x8FV[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x14\x05W_\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14sW\x80Q\x85\x81\x11\x15a\x14\x1FW_\x80\xFD[\x86\x01`?\x81\x01\x8B\x13a\x14/W_\x80\xFD[\x87\x81\x01Q`@a\x14Aa\x10\xD1\x83a\x11'V[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14TW_\x80\xFD[a\x14c\x83\x8C\x83\x01\x84\x87\x01a\x12\xC0V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x14\tV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x14\xFAW_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\x19W_\x80\xFD[\x806\x03\x82\x13\x15a\x0E^W_\x80\xFD[_`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86_[\x87\x81\x10\x15a\x15\xA8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15\x89\x82\x8Aa\x14\xC7V[a\x15\x94\x87\x82\x84a\x14\x80V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15PV[P\x92\x98\x97PPPPPPPPV[_` \x82\x84\x03\x12\x15a\x15\xC6W_\x80\xFD[PQ\x91\x90PV[_a\x15\xD8\x82\x83a\x14\xC7V[`@\x85Ra\x15\xEA`@\x86\x01\x82\x84a\x14\x80V[\x91PPa\x15\xFA` \x84\x01\x84a\x14\xC7V[\x85\x83\x03` \x87\x01Ra\x16\r\x83\x82\x84a\x14\x80V[\x96\x95PPPPPPV[`@\x81R_a\x16)`@\x83\x01\x86a\x15\xCDV[\x82\x81\x03` \x84\x01Ra\x16\r\x81\x85\x87a\x14\x80V[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x16\xDAW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x16\xB8W_\x80\xFD[a\x16\xC4\x85\x8C\x83\x01a\x15\xCDV[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x16XV[PPP\x82\x81\x03` \x84\x01Ra\x16\xF0\x81\x85\x87a\x14\x80V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 -i\xC6I`\xC7\xE4\xC5\xF4\xE7\x9D\x02\x88~~\r@\x03~\x12ObD\x0B\xDF\x115\x1F\0\xD6-\x88dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static SWAPROUTER02EXECUTOR_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct SwapRouter02Executor(::ethers::contract::Contract); - impl ::core::clone::Clone for SwapRouter02Executor { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for SwapRouter02Executor { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for SwapRouter02Executor { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for SwapRouter02Executor { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(SwapRouter02Executor)) - .field(&self.address()) - .finish() - } - } - impl SwapRouter02Executor { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - SWAPROUTER02EXECUTOR_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - SWAPROUTER02EXECUTOR_ABI.clone(), - SWAPROUTER02EXECUTOR_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `execute` (0xd0f2d8ac) function - pub fn execute( - &self, - order: SignedOrder, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([208, 242, 216, 172], (order, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0xe5135ec6) function - pub fn execute_batch( - &self, - orders: ::std::vec::Vec, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([229, 19, 94, 198], (orders, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `multicall` (0x63fb0b96) function - pub fn multicall( - &self, - tokens_to_approve: ::std::vec::Vec<::ethers::core::types::Address>, - multicall_data: ::std::vec::Vec<::ethers::core::types::Bytes>, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([99, 251, 11, 150], (tokens_to_approve, multicall_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `reactor` (0xab572650) function - pub fn reactor( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([171, 87, 38, 80], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `reactorCallback` (0x585da628) function - pub fn reactor_callback( - &self, - p0: ::std::vec::Vec, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([88, 93, 166, 40], (p0, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `swapRouter02` (0x7eaf1116) function - pub fn swap_router_02( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([126, 175, 17, 22], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `unwrapWETH` (0x89a3f136) function - pub fn unwrap_weth( - &self, - recipient: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([137, 163, 241, 54], recipient) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `weth` (0x3fc8cef3) function - pub fn weth( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([63, 200, 206, 243], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `whitelistedCaller` (0x8c21b411) function - pub fn whitelisted_caller( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([140, 33, 180, 17], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `withdrawETH` (0x690d8320) function - pub fn withdraw_eth( - &self, - recipient: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([105, 13, 131, 32], recipient) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for SwapRouter02Executor { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `CallerNotWhitelisted` with signature `CallerNotWhitelisted()` and selector `0x8c6e5d71` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "CallerNotWhitelisted", abi = "CallerNotWhitelisted()")] - pub struct CallerNotWhitelisted; - ///Custom Error type `MsgSenderNotReactor` with signature `MsgSenderNotReactor()` and selector `0x933fe52f` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "MsgSenderNotReactor", abi = "MsgSenderNotReactor()")] - pub struct MsgSenderNotReactor; - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum SwapRouter02ExecutorErrors { - CallerNotWhitelisted(CallerNotWhitelisted), - MsgSenderNotReactor(MsgSenderNotReactor), - NativeTransferFailed(NativeTransferFailed), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for SwapRouter02ExecutorErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::CallerNotWhitelisted(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::MsgSenderNotReactor(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NativeTransferFailed(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for SwapRouter02ExecutorErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::CallerNotWhitelisted(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::MsgSenderNotReactor(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NativeTransferFailed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for SwapRouter02ExecutorErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for SwapRouter02ExecutorErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::CallerNotWhitelisted(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::MsgSenderNotReactor(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::NativeTransferFailed(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for SwapRouter02ExecutorErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorErrors { - fn from(value: CallerNotWhitelisted) -> Self { - Self::CallerNotWhitelisted(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorErrors { - fn from(value: MsgSenderNotReactor) -> Self { - Self::MsgSenderNotReactor(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorErrors { - fn from(value: NativeTransferFailed) -> Self { - Self::NativeTransferFailed(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes),bytes)` and selector `0xd0f2d8ac` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes),bytes)")] - pub struct ExecuteCall { - pub order: SignedOrder, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((bytes,bytes)[],bytes)` and selector `0xe5135ec6` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((bytes,bytes)[],bytes)")] - pub struct ExecuteBatchCall { - pub orders: ::std::vec::Vec, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `multicall` function with signature `multicall(address[],bytes[])` and selector `0x63fb0b96` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "multicall", abi = "multicall(address[],bytes[])")] - pub struct MulticallCall { - pub tokens_to_approve: ::std::vec::Vec<::ethers::core::types::Address>, - pub multicall_data: ::std::vec::Vec<::ethers::core::types::Bytes>, - } - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `reactor` function with signature `reactor()` and selector `0xab572650` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "reactor", abi = "reactor()")] - pub struct ReactorCall; - ///Container type for all input parameters for the `reactorCallback` function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "reactorCallback", - abi = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)" - )] - pub struct ReactorCallbackCall { - pub p0: ::std::vec::Vec, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `swapRouter02` function with signature `swapRouter02()` and selector `0x7eaf1116` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "swapRouter02", abi = "swapRouter02()")] - pub struct SwapRouter02Call; - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `unwrapWETH` function with signature `unwrapWETH(address)` and selector `0x89a3f136` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "unwrapWETH", abi = "unwrapWETH(address)")] - pub struct UnwrapWETHCall { - pub recipient: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `weth` function with signature `weth()` and selector `0x3fc8cef3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "weth", abi = "weth()")] - pub struct WethCall; - ///Container type for all input parameters for the `whitelistedCaller` function with signature `whitelistedCaller()` and selector `0x8c21b411` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "whitelistedCaller", abi = "whitelistedCaller()")] - pub struct WhitelistedCallerCall; - ///Container type for all input parameters for the `withdrawETH` function with signature `withdrawETH(address)` and selector `0x690d8320` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "withdrawETH", abi = "withdrawETH(address)")] - pub struct WithdrawETHCall { - pub recipient: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum SwapRouter02ExecutorCalls { - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - Multicall(MulticallCall), - Owner(OwnerCall), - Reactor(ReactorCall), - ReactorCallback(ReactorCallbackCall), - SwapRouter02(SwapRouter02Call), - TransferOwnership(TransferOwnershipCall), - UnwrapWETH(UnwrapWETHCall), - Weth(WethCall), - WhitelistedCaller(WhitelistedCallerCall), - WithdrawETH(WithdrawETHCall), - } - impl ::ethers::core::abi::AbiDecode for SwapRouter02ExecutorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Multicall(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Reactor(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ReactorCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SwapRouter02(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::UnwrapWETH(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Weth(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::WhitelistedCaller(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::WithdrawETH(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for SwapRouter02ExecutorCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Multicall(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Reactor(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ReactorCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SwapRouter02(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::UnwrapWETH(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Weth(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::WhitelistedCaller(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::WithdrawETH(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for SwapRouter02ExecutorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::Multicall(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Reactor(element) => ::core::fmt::Display::fmt(element, f), - Self::ReactorCallback(element) => ::core::fmt::Display::fmt(element, f), - Self::SwapRouter02(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - Self::UnwrapWETH(element) => ::core::fmt::Display::fmt(element, f), - Self::Weth(element) => ::core::fmt::Display::fmt(element, f), - Self::WhitelistedCaller(element) => ::core::fmt::Display::fmt(element, f), - Self::WithdrawETH(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for SwapRouter02ExecutorCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorCalls { - fn from(value: MulticallCall) -> Self { - Self::Multicall(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorCalls { - fn from(value: ReactorCall) -> Self { - Self::Reactor(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorCalls { - fn from(value: ReactorCallbackCall) -> Self { - Self::ReactorCallback(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorCalls { - fn from(value: SwapRouter02Call) -> Self { - Self::SwapRouter02(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorCalls { - fn from(value: UnwrapWETHCall) -> Self { - Self::UnwrapWETH(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorCalls { - fn from(value: WethCall) -> Self { - Self::Weth(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorCalls { - fn from(value: WhitelistedCallerCall) -> Self { - Self::WhitelistedCaller(value) - } - } - impl ::core::convert::From for SwapRouter02ExecutorCalls { - fn from(value: WithdrawETHCall) -> Self { - Self::WithdrawETH(value) - } - } - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `reactor` function with signature `reactor()` and selector `0xab572650` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ReactorReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `swapRouter02` function with signature `swapRouter02()` and selector `0x7eaf1116` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SwapRouter02Return(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `weth` function with signature `weth()` and selector `0x3fc8cef3` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct WethReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `whitelistedCaller` function with signature `whitelistedCaller()` and selector `0x8c21b411` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct WhitelistedCallerReturn(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/swaprouter02executor.rs b/crates/bindings-uniswapx/src/swaprouter02executor.rs new file mode 100644 index 0000000..5102956 --- /dev/null +++ b/crates/bindings-uniswapx/src/swaprouter02executor.rs @@ -0,0 +1,3910 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface SwapRouter02Executor { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + struct SignedOrder { + bytes order; + bytes sig; + } + + error CallerNotWhitelisted(); + error MsgSenderNotReactor(); + error NativeTransferFailed(); + + event OwnershipTransferred(address indexed user, address indexed newOwner); + + constructor(address _whitelistedCaller, address _reactor, address _owner, address _swapRouter02); + + receive() external payable; + + function execute(SignedOrder memory order, bytes memory callbackData) external; + function executeBatch(SignedOrder[] memory orders, bytes memory callbackData) external; + function multicall(address[] memory tokensToApprove, bytes[] memory multicallData) external; + function owner() external view returns (address); + function reactorCallback(ResolvedOrder[] memory, bytes memory callbackData) external; + function transferOwnership(address newOwner) external; + function unwrapWETH(address recipient) external; + function withdrawETH(address recipient) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_whitelistedCaller", + "type": "address", + "internalType": "address" + }, + { + "name": "_reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_swapRouter02", + "type": "address", + "internalType": "contract ISwapRouter02" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "multicall", + "inputs": [ + { + "name": "tokensToApprove", + "type": "address[]", + "internalType": "contract ERC20[]" + }, + { + "name": "multicallData", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "reactorCallback", + "inputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct ResolvedOrder[]", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unwrapWETH", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawETH", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "CallerNotWhitelisted", + "inputs": [] + }, + { + "type": "error", + "name": "MsgSenderNotReactor", + "inputs": [] + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod SwapRouter02Executor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6101006040523480156200001257600080fd5b50604051620019ba380380620019ba83398101604081905262000035916200012b565b600080546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0380851660a05283811660c05281166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa158015620000d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fb919062000193565b6001600160a01b031660e05250620001ba92505050565b6001600160a01b03811681146200012857600080fd5b50565b600080600080608085870312156200014257600080fd5b84516200014f8162000112565b6020860151909450620001628162000112565b6040860151909350620001758162000112565b6060860151909250620001888162000112565b939692955090935050565b600060208284031215620001a657600080fd5b8151620001b38162000112565b9392505050565b60805160a05160c05160e05161178762000233600039600081816107e501526108970152600081816101db015281816102f201528181610452015281816109c20152610ad501526000818161092e0152610a410152600081816102590152818161038a0152818161051601526105e001526117876000f3fe60806040526004361061007f5760003560e01c80638da5cb5b1161004e5780638da5cb5b1461010d578063d0f2d8ac14610163578063e5135ec614610183578063f2fde38b146101a357600080fd5b8063585da6281461008b57806363fb0b96146100ad578063690d8320146100cd57806389a3f136146100ed57600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a6366004610eb0565b6101c3565b005b3480156100b957600080fd5b506100ab6100c8366004610f1c565b610480565b3480156100d957600080fd5b506100ab6100e8366004610f9e565b6106a5565b3480156100f957600080fd5b506100ab610108366004610f9e565b610733565b34801561011957600080fd5b5060005461013a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34801561016f57600080fd5b506100ab61017e366004610fc2565b610916565b34801561018f57600080fd5b506100ab61019e366004610eb0565b610a29565b3480156101af57600080fd5b506100ab6101be366004610f9e565b610b48565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610232576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808061024284860186611193565b92509250925060005b83518110156102e0576102d87f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8684815181106102ab576102ab6112c9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610c399092919063ffffffff16565b60010161024b565b5060005b825181101561034c576103447f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8584815181106102ab576102ab6112c9565b6001016102e4565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906103e1907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161131c565b6000604051808303816000875af1158015610400573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261044691908101906113da565b504715610477576104777f000000000000000000000000000000000000000000000000000000000000000047610d0e565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b838110156105a25761059a7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff878785818110610568576105686112c9565b905060200201602081019061057d9190610f9e565b73ffffffffffffffffffffffffffffffffffffffff169190610c39565b600101610509565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610639907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908690600401611574565b6000604051808303816000875af1158015610658573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261069e91908101906113da565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6107308147610dad565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108659190611605565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050506109128247610dad565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610985576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906109fb90869086908690600401611669565b600060405180830381600087803b158015610a1557600080fd5b505af1158015610477573d6000803e3d6000fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a98576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c790610b1090879087908790879060040161168f565b600060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c454400000000000000000000000000000000000060448201526064016104fd565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610d68576040519150601f19603f3d011682016040523d82523d6000602084013e610d6d565b606091505b5050905080610da8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064016104fd565b60008083601f840112610e3457600080fd5b50813567ffffffffffffffff811115610e4c57600080fd5b6020830191508360208260051b8501011115610e6757600080fd5b9250929050565b60008083601f840112610e8057600080fd5b50813567ffffffffffffffff811115610e9857600080fd5b602083019150836020828501011115610e6757600080fd5b60008060008060408587031215610ec657600080fd5b843567ffffffffffffffff80821115610ede57600080fd5b610eea88838901610e22565b90965094506020870135915080821115610f0357600080fd5b50610f1087828801610e6e565b95989497509550505050565b60008060008060408587031215610f3257600080fd5b843567ffffffffffffffff80821115610f4a57600080fd5b610f5688838901610e22565b90965094506020870135915080821115610f6f57600080fd5b50610f1087828801610e22565b73ffffffffffffffffffffffffffffffffffffffff8116811461073057600080fd5b600060208284031215610fb057600080fd5b8135610fbb81610f7c565b9392505050565b600080600060408486031215610fd757600080fd5b833567ffffffffffffffff80821115610fef57600080fd5b908501906040828803121561100357600080fd5b9093506020850135908082111561101957600080fd5b5061102686828701610e6e565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156110a9576110a9611033565b604052919050565b600067ffffffffffffffff8211156110cb576110cb611033565b5060051b60200190565b600082601f8301126110e657600080fd5b813560206110fb6110f6836110b1565b611062565b8083825260208201915060208460051b87010193508684111561111d57600080fd5b602086015b8481101561114257803561113581610f7c565b8352918301918301611122565b509695505050505050565b600067ffffffffffffffff82111561116757611167611033565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806000606084860312156111a857600080fd5b833567ffffffffffffffff808211156111c057600080fd5b6111cc878388016110d5565b94506020915081860135818111156111e357600080fd5b6111ef888289016110d5565b9450506040808701358281111561120557600080fd5b8701601f8101891361121657600080fd5b80356112246110f6826110b1565b81815260059190911b8201850190858101908b83111561124357600080fd5b8684015b838110156112b75780358781111561125f5760008081fd5b8501603f81018e136112715760008081fd5b888101356112816110f68261114d565b8181528f898385010111156112965760008081fd5b818984018c83013760009181018b0191909152845250918701918701611247565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156113135781810151838201526020016112fb565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b828110156113cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261138f81888a018985016112f8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169690960185019550928401929084019060010161134a565b509398975050505050505050565b600060208083850312156113ed57600080fd5b825167ffffffffffffffff8082111561140557600080fd5b818501915085601f83011261141957600080fd5b81516114276110f6826110b1565b81815260059190911b8301840190848101908883111561144657600080fd5b8585015b838110156114ba578051858111156114625760008081fd5b8601603f81018b136114745760008081fd5b8781015160406114866110f68361114d565b8281528d8284860101111561149b5760008081fd5b6114aa838c83018487016112f8565b865250505091860191860161144a565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261154557600080fd5b830160208101925035905067ffffffffffffffff81111561156557600080fd5b803603821315610e6757600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b878110156115f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08786030183526115d8828a611510565b6115e38782846114c7565b96505050918301919083019060010161159f565b509298975050505050505050565b60006020828403121561161757600080fd5b5051919050565b600061162a8283611510565b6040855261163c6040860182846114c7565b91505061164c6020840184611510565b858303602087015261165f8382846114c7565b9695505050505050565b60408152600061167c604083018661161e565b828103602084015261165f8185876114c7565b6040808252810184905260006060600586901b830181019083018783805b8981101561172f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c360301811261170d578283fd5b611719868d830161161e565b95505060209384019392909201916001016116ad565b5050505082810360208401526117468185876114c7565b97965050505050505056fea26469706673582212205640b0557ec4552053567f3573115b9ceb5d4ac286ac0a470e1e07df158e28e864736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\x19\xBA8\x03\x80b\0\x19\xBA\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01+V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x81\x16`\xC0R\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\xD5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xFB\x91\x90b\0\x01\x93V[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xBA\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01(W`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x01BW`\0\x80\xFD[\x84Qb\0\x01O\x81b\0\x01\x12V[` \x86\x01Q\x90\x94Pb\0\x01b\x81b\0\x01\x12V[`@\x86\x01Q\x90\x93Pb\0\x01u\x81b\0\x01\x12V[``\x86\x01Q\x90\x92Pb\0\x01\x88\x81b\0\x01\x12V[\x93\x96\x92\x95P\x90\x93PPV[`\0` \x82\x84\x03\x12\x15b\0\x01\xA6W`\0\x80\xFD[\x81Qb\0\x01\xB3\x81b\0\x01\x12V[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x17\x87b\0\x023`\09`\0\x81\x81a\x07\xE5\x01Ra\x08\x97\x01R`\0\x81\x81a\x01\xDB\x01R\x81\x81a\x02\xF2\x01R\x81\x81a\x04R\x01R\x81\x81a\t\xC2\x01Ra\n\xD5\x01R`\0\x81\x81a\t.\x01Ra\nA\x01R`\0\x81\x81a\x02Y\x01R\x81\x81a\x03\x8A\x01R\x81\x81a\x05\x16\x01Ra\x05\xE0\x01Ra\x17\x87`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x7FW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0NW\x80c\x8D\xA5\xCB[\x14a\x01\rW\x80c\xD0\xF2\xD8\xAC\x14a\x01cW\x80c\xE5\x13^\xC6\x14a\x01\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xA3W`\0\x80\xFD[\x80cX]\xA6(\x14a\0\x8BW\x80cc\xFB\x0B\x96\x14a\0\xADW\x80ci\r\x83 \x14a\0\xCDW\x80c\x89\xA3\xF16\x14a\0\xEDW`\0\x80\xFD[6a\0\x86W\0[`\0\x80\xFD[4\x80\x15a\0\x97W`\0\x80\xFD[Pa\0\xABa\0\xA66`\x04a\x0E\xB0V[a\x01\xC3V[\0[4\x80\x15a\0\xB9W`\0\x80\xFD[Pa\0\xABa\0\xC86`\x04a\x0F\x1CV[a\x04\x80V[4\x80\x15a\0\xD9W`\0\x80\xFD[Pa\0\xABa\0\xE86`\x04a\x0F\x9EV[a\x06\xA5V[4\x80\x15a\0\xF9W`\0\x80\xFD[Pa\0\xABa\x01\x086`\x04a\x0F\x9EV[a\x073V[4\x80\x15a\x01\x19W`\0\x80\xFD[P`\0Ta\x01:\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01oW`\0\x80\xFD[Pa\0\xABa\x01~6`\x04a\x0F\xC2V[a\t\x16V[4\x80\x15a\x01\x8FW`\0\x80\xFD[Pa\0\xABa\x01\x9E6`\x04a\x0E\xB0V[a\n)V[4\x80\x15a\x01\xAFW`\0\x80\xFD[Pa\0\xABa\x01\xBE6`\x04a\x0F\x9EV[a\x0BHV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x022W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02B\x84\x86\x01\x86a\x11\x93V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x02\xE0Wa\x02\xD8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0C9\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02KV[P`\0[\x82Q\x81\x10\x15a\x03LWa\x03D\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[`\x01\x01a\x02\xE4V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x03\xE1\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x13\x1CV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04F\x91\x90\x81\x01\x90a\x13\xDAV[PG\x15a\x04wWa\x04w\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\r\x0EV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a\x05\xA2Wa\x05\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x05hWa\x05ha\x12\xC9V[\x90P` \x02\x01` \x81\x01\x90a\x05}\x91\x90a\x0F\x9EV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C9V[`\x01\x01a\x05\tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x069\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x15tV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x06\x9E\x91\x90\x81\x01\x90a\x13\xDAV[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07&W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[a\x070\x81Ga\r\xADV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\xB4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08e\x91\x90a\x16\x05V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\t\x04W=`\0\x80>=`\0\xFD[PPPPa\t\x12\x82Ga\r\xADV[PPV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x85W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\t\xFB\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x16iV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x15W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04wW=`\0\x80>=`\0\xFD[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\x98W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x0B\x10\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16\x8FV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B*W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B>W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\xC9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\r\x08W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\rhW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\rmV[``\x91P[PP\x90P\x80a\r\xA8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\r\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ELW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E\x80W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x98W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0E\xC6W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xDEW`\0\x80\xFD[a\x0E\xEA\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0F\x03W`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0EnV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0F2W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0FJW`\0\x80\xFD[a\x0FV\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0FoW`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0E\"V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x070W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xB0W`\0\x80\xFD[\x815a\x0F\xBB\x81a\x0F|V[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0F\xD7W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\xEFW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x10\x03W`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x10\x19W`\0\x80\xFD[Pa\x10&\x86\x82\x87\x01a\x0EnV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10\xA9Wa\x10\xA9a\x103V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10\xCBWa\x10\xCBa\x103V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x10\xE6W`\0\x80\xFD[\x815` a\x10\xFBa\x10\xF6\x83a\x10\xB1V[a\x10bV[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x11\x1DW`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x11BW\x805a\x115\x81a\x0F|V[\x83R\x91\x83\x01\x91\x83\x01a\x11\"V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11gWa\x11ga\x103V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\xA8W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xC0W`\0\x80\xFD[a\x11\xCC\x87\x83\x88\x01a\x10\xD5V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\xE3W`\0\x80\xFD[a\x11\xEF\x88\x82\x89\x01a\x10\xD5V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x12\x05W`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x12\x16W`\0\x80\xFD[\x805a\x12$a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x12CW`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12\xB7W\x805\x87\x81\x11\x15a\x12_W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12qW`\0\x80\x81\xFD[\x88\x81\x015a\x12\x81a\x10\xF6\x82a\x11MV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12\x96W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x12GV[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x13\x13W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\xFBV[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x13\xCCW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13\x8F\x81\x88\x8A\x01\x89\x85\x01a\x12\xF8V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x13JV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x13\xEDW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\x05W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x14\x19W`\0\x80\xFD[\x81Qa\x14'a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x14FW`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14\xBAW\x80Q\x85\x81\x11\x15a\x14bW`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x14tW`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x14\x86a\x10\xF6\x83a\x11MV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14\x9BW`\0\x80\x81\xFD[a\x14\xAA\x83\x8C\x83\x01\x84\x87\x01a\x12\xF8V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x14JV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x15EW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15eW`\0\x80\xFD[\x806\x03\x82\x13\x15a\x0EgW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x15\xF7W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15\xD8\x82\x8Aa\x15\x10V[a\x15\xE3\x87\x82\x84a\x14\xC7V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15\x9FV[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x16\x17W`\0\x80\xFD[PQ\x91\x90PV[`\0a\x16*\x82\x83a\x15\x10V[`@\x85Ra\x16<`@\x86\x01\x82\x84a\x14\xC7V[\x91PPa\x16L` \x84\x01\x84a\x15\x10V[\x85\x83\x03` \x87\x01Ra\x16_\x83\x82\x84a\x14\xC7V[\x96\x95PPPPPPV[`@\x81R`\0a\x16|`@\x83\x01\x86a\x16\x1EV[\x82\x81\x03` \x84\x01Ra\x16_\x81\x85\x87a\x14\xC7V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x17/W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x17\rW\x82\x83\xFD[a\x17\x19\x86\x8D\x83\x01a\x16\x1EV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x16\xADV[PPPP\x82\x81\x03` \x84\x01Ra\x17F\x81\x85\x87a\x14\xC7V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 V@\xB0U~\xC4U SV\x7F5s\x11[\x9C\xEB]J\xC2\x86\xAC\nG\x0E\x1E\x07\xDF\x15\x8E(\xE8dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361061007f5760003560e01c80638da5cb5b1161004e5780638da5cb5b1461010d578063d0f2d8ac14610163578063e5135ec614610183578063f2fde38b146101a357600080fd5b8063585da6281461008b57806363fb0b96146100ad578063690d8320146100cd57806389a3f136146100ed57600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a6366004610eb0565b6101c3565b005b3480156100b957600080fd5b506100ab6100c8366004610f1c565b610480565b3480156100d957600080fd5b506100ab6100e8366004610f9e565b6106a5565b3480156100f957600080fd5b506100ab610108366004610f9e565b610733565b34801561011957600080fd5b5060005461013a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34801561016f57600080fd5b506100ab61017e366004610fc2565b610916565b34801561018f57600080fd5b506100ab61019e366004610eb0565b610a29565b3480156101af57600080fd5b506100ab6101be366004610f9e565b610b48565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610232576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808061024284860186611193565b92509250925060005b83518110156102e0576102d87f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8684815181106102ab576102ab6112c9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610c399092919063ffffffff16565b60010161024b565b5060005b825181101561034c576103447f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8584815181106102ab576102ab6112c9565b6001016102e4565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906103e1907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161131c565b6000604051808303816000875af1158015610400573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261044691908101906113da565b504715610477576104777f000000000000000000000000000000000000000000000000000000000000000047610d0e565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b838110156105a25761059a7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff878785818110610568576105686112c9565b905060200201602081019061057d9190610f9e565b73ffffffffffffffffffffffffffffffffffffffff169190610c39565b600101610509565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610639907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908690600401611574565b6000604051808303816000875af1158015610658573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261069e91908101906113da565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6107308147610dad565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108659190611605565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050506109128247610dad565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610985576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906109fb90869086908690600401611669565b600060405180830381600087803b158015610a1557600080fd5b505af1158015610477573d6000803e3d6000fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a98576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c790610b1090879087908790879060040161168f565b600060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c454400000000000000000000000000000000000060448201526064016104fd565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610d68576040519150601f19603f3d011682016040523d82523d6000602084013e610d6d565b606091505b5050905080610da8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064016104fd565b60008083601f840112610e3457600080fd5b50813567ffffffffffffffff811115610e4c57600080fd5b6020830191508360208260051b8501011115610e6757600080fd5b9250929050565b60008083601f840112610e8057600080fd5b50813567ffffffffffffffff811115610e9857600080fd5b602083019150836020828501011115610e6757600080fd5b60008060008060408587031215610ec657600080fd5b843567ffffffffffffffff80821115610ede57600080fd5b610eea88838901610e22565b90965094506020870135915080821115610f0357600080fd5b50610f1087828801610e6e565b95989497509550505050565b60008060008060408587031215610f3257600080fd5b843567ffffffffffffffff80821115610f4a57600080fd5b610f5688838901610e22565b90965094506020870135915080821115610f6f57600080fd5b50610f1087828801610e22565b73ffffffffffffffffffffffffffffffffffffffff8116811461073057600080fd5b600060208284031215610fb057600080fd5b8135610fbb81610f7c565b9392505050565b600080600060408486031215610fd757600080fd5b833567ffffffffffffffff80821115610fef57600080fd5b908501906040828803121561100357600080fd5b9093506020850135908082111561101957600080fd5b5061102686828701610e6e565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156110a9576110a9611033565b604052919050565b600067ffffffffffffffff8211156110cb576110cb611033565b5060051b60200190565b600082601f8301126110e657600080fd5b813560206110fb6110f6836110b1565b611062565b8083825260208201915060208460051b87010193508684111561111d57600080fd5b602086015b8481101561114257803561113581610f7c565b8352918301918301611122565b509695505050505050565b600067ffffffffffffffff82111561116757611167611033565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806000606084860312156111a857600080fd5b833567ffffffffffffffff808211156111c057600080fd5b6111cc878388016110d5565b94506020915081860135818111156111e357600080fd5b6111ef888289016110d5565b9450506040808701358281111561120557600080fd5b8701601f8101891361121657600080fd5b80356112246110f6826110b1565b81815260059190911b8201850190858101908b83111561124357600080fd5b8684015b838110156112b75780358781111561125f5760008081fd5b8501603f81018e136112715760008081fd5b888101356112816110f68261114d565b8181528f898385010111156112965760008081fd5b818984018c83013760009181018b0191909152845250918701918701611247565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156113135781810151838201526020016112fb565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b828110156113cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261138f81888a018985016112f8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169690960185019550928401929084019060010161134a565b509398975050505050505050565b600060208083850312156113ed57600080fd5b825167ffffffffffffffff8082111561140557600080fd5b818501915085601f83011261141957600080fd5b81516114276110f6826110b1565b81815260059190911b8301840190848101908883111561144657600080fd5b8585015b838110156114ba578051858111156114625760008081fd5b8601603f81018b136114745760008081fd5b8781015160406114866110f68361114d565b8281528d8284860101111561149b5760008081fd5b6114aa838c83018487016112f8565b865250505091860191860161144a565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261154557600080fd5b830160208101925035905067ffffffffffffffff81111561156557600080fd5b803603821315610e6757600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b878110156115f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08786030183526115d8828a611510565b6115e38782846114c7565b96505050918301919083019060010161159f565b509298975050505050505050565b60006020828403121561161757600080fd5b5051919050565b600061162a8283611510565b6040855261163c6040860182846114c7565b91505061164c6020840184611510565b858303602087015261165f8382846114c7565b9695505050505050565b60408152600061167c604083018661161e565b828103602084015261165f8185876114c7565b6040808252810184905260006060600586901b830181019083018783805b8981101561172f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c360301811261170d578283fd5b611719868d830161161e565b95505060209384019392909201916001016116ad565b5050505082810360208401526117468185876114c7565b97965050505050505056fea26469706673582212205640b0557ec4552053567f3573115b9ceb5d4ac286ac0a470e1e07df158e28e864736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\x7FW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0NW\x80c\x8D\xA5\xCB[\x14a\x01\rW\x80c\xD0\xF2\xD8\xAC\x14a\x01cW\x80c\xE5\x13^\xC6\x14a\x01\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xA3W`\0\x80\xFD[\x80cX]\xA6(\x14a\0\x8BW\x80cc\xFB\x0B\x96\x14a\0\xADW\x80ci\r\x83 \x14a\0\xCDW\x80c\x89\xA3\xF16\x14a\0\xEDW`\0\x80\xFD[6a\0\x86W\0[`\0\x80\xFD[4\x80\x15a\0\x97W`\0\x80\xFD[Pa\0\xABa\0\xA66`\x04a\x0E\xB0V[a\x01\xC3V[\0[4\x80\x15a\0\xB9W`\0\x80\xFD[Pa\0\xABa\0\xC86`\x04a\x0F\x1CV[a\x04\x80V[4\x80\x15a\0\xD9W`\0\x80\xFD[Pa\0\xABa\0\xE86`\x04a\x0F\x9EV[a\x06\xA5V[4\x80\x15a\0\xF9W`\0\x80\xFD[Pa\0\xABa\x01\x086`\x04a\x0F\x9EV[a\x073V[4\x80\x15a\x01\x19W`\0\x80\xFD[P`\0Ta\x01:\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01oW`\0\x80\xFD[Pa\0\xABa\x01~6`\x04a\x0F\xC2V[a\t\x16V[4\x80\x15a\x01\x8FW`\0\x80\xFD[Pa\0\xABa\x01\x9E6`\x04a\x0E\xB0V[a\n)V[4\x80\x15a\x01\xAFW`\0\x80\xFD[Pa\0\xABa\x01\xBE6`\x04a\x0F\x9EV[a\x0BHV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x022W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02B\x84\x86\x01\x86a\x11\x93V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x02\xE0Wa\x02\xD8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0C9\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02KV[P`\0[\x82Q\x81\x10\x15a\x03LWa\x03D\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[`\x01\x01a\x02\xE4V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x03\xE1\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x13\x1CV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04F\x91\x90\x81\x01\x90a\x13\xDAV[PG\x15a\x04wWa\x04w\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\r\x0EV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a\x05\xA2Wa\x05\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x05hWa\x05ha\x12\xC9V[\x90P` \x02\x01` \x81\x01\x90a\x05}\x91\x90a\x0F\x9EV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C9V[`\x01\x01a\x05\tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x069\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x15tV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x06\x9E\x91\x90\x81\x01\x90a\x13\xDAV[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07&W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[a\x070\x81Ga\r\xADV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\xB4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08e\x91\x90a\x16\x05V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\t\x04W=`\0\x80>=`\0\xFD[PPPPa\t\x12\x82Ga\r\xADV[PPV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x85W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\t\xFB\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x16iV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x15W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04wW=`\0\x80>=`\0\xFD[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\x98W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x0B\x10\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16\x8FV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B*W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B>W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\xC9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\r\x08W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\rhW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\rmV[``\x91P[PP\x90P\x80a\r\xA8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\r\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ELW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E\x80W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x98W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0E\xC6W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xDEW`\0\x80\xFD[a\x0E\xEA\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0F\x03W`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0EnV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0F2W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0FJW`\0\x80\xFD[a\x0FV\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0FoW`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0E\"V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x070W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xB0W`\0\x80\xFD[\x815a\x0F\xBB\x81a\x0F|V[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0F\xD7W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\xEFW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x10\x03W`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x10\x19W`\0\x80\xFD[Pa\x10&\x86\x82\x87\x01a\x0EnV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10\xA9Wa\x10\xA9a\x103V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10\xCBWa\x10\xCBa\x103V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x10\xE6W`\0\x80\xFD[\x815` a\x10\xFBa\x10\xF6\x83a\x10\xB1V[a\x10bV[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x11\x1DW`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x11BW\x805a\x115\x81a\x0F|V[\x83R\x91\x83\x01\x91\x83\x01a\x11\"V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11gWa\x11ga\x103V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\xA8W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xC0W`\0\x80\xFD[a\x11\xCC\x87\x83\x88\x01a\x10\xD5V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\xE3W`\0\x80\xFD[a\x11\xEF\x88\x82\x89\x01a\x10\xD5V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x12\x05W`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x12\x16W`\0\x80\xFD[\x805a\x12$a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x12CW`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12\xB7W\x805\x87\x81\x11\x15a\x12_W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12qW`\0\x80\x81\xFD[\x88\x81\x015a\x12\x81a\x10\xF6\x82a\x11MV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12\x96W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x12GV[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x13\x13W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\xFBV[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x13\xCCW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13\x8F\x81\x88\x8A\x01\x89\x85\x01a\x12\xF8V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x13JV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x13\xEDW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\x05W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x14\x19W`\0\x80\xFD[\x81Qa\x14'a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x14FW`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14\xBAW\x80Q\x85\x81\x11\x15a\x14bW`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x14tW`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x14\x86a\x10\xF6\x83a\x11MV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14\x9BW`\0\x80\x81\xFD[a\x14\xAA\x83\x8C\x83\x01\x84\x87\x01a\x12\xF8V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x14JV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x15EW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15eW`\0\x80\xFD[\x806\x03\x82\x13\x15a\x0EgW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x15\xF7W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15\xD8\x82\x8Aa\x15\x10V[a\x15\xE3\x87\x82\x84a\x14\xC7V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15\x9FV[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x16\x17W`\0\x80\xFD[PQ\x91\x90PV[`\0a\x16*\x82\x83a\x15\x10V[`@\x85Ra\x16<`@\x86\x01\x82\x84a\x14\xC7V[\x91PPa\x16L` \x84\x01\x84a\x15\x10V[\x85\x83\x03` \x87\x01Ra\x16_\x83\x82\x84a\x14\xC7V[\x96\x95PPPPPPV[`@\x81R`\0a\x16|`@\x83\x01\x86a\x16\x1EV[\x82\x81\x03` \x84\x01Ra\x16_\x81\x85\x87a\x14\xC7V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x17/W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x17\rW\x82\x83\xFD[a\x17\x19\x86\x8D\x83\x01a\x16\x1EV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x16\xADV[PPPP\x82\x81\x03` \x84\x01Ra\x17F\x81\x85\x87a\x14\xC7V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 V@\xB0U~\xC4U SV\x7F5s\x11[\x9C\xEB]J\xC2\x86\xAC\nG\x0E\x1E\x07\xDF\x15\x8E(\xE8dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub maxAmount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OrderInfo { + pub reactor: alloy::sol_types::private::Address, + pub swapper: alloy::sol_types::private::Address, + pub nonce: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub additionalValidationContract: alloy::sol_types::private::Address, + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct OutputToken { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ResolvedOrder { + pub info: ::RustType, + pub input: ::RustType, + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + pub sig: alloy::sol_types::private::Bytes, + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `CallerNotWhitelisted()` and selector `0x8c6e5d71`. +```solidity +error CallerNotWhitelisted(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct CallerNotWhitelisted {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: CallerNotWhitelisted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for CallerNotWhitelisted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for CallerNotWhitelisted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "CallerNotWhitelisted()"; + const SELECTOR: [u8; 4] = [140u8, 110u8, 93u8, 113u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `MsgSenderNotReactor()` and selector `0x933fe52f`. +```solidity +error MsgSenderNotReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct MsgSenderNotReactor {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MsgSenderNotReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MsgSenderNotReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for MsgSenderNotReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MsgSenderNotReactor()"; + const SELECTOR: [u8; 4] = [147u8, 63u8, 229u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _whitelistedCaller, address _reactor, address _owner, address _swapRouter02); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _whitelistedCaller: alloy::sol_types::private::Address, + pub _reactor: alloy::sol_types::private::Address, + pub _owner: alloy::sol_types::private::Address, + pub _swapRouter02: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + ( + value._whitelistedCaller, + value._reactor, + value._owner, + value._swapRouter02, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _whitelistedCaller: tuple.0, + _reactor: tuple.1, + _owner: tuple.2, + _swapRouter02: tuple.3, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._whitelistedCaller, + ), + ::tokenize( + &self._reactor, + ), + ::tokenize( + &self._owner, + ), + ::tokenize( + &self._swapRouter02, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes),bytes)` and selector `0xd0f2d8ac`. +```solidity +function execute(SignedOrder memory order, bytes memory callbackData) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`execute((bytes,bytes),bytes)`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + SignedOrder, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder, alloy::sol_types::sol_data::Bytes); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes),bytes)"; + const SELECTOR: [u8; 4] = [208u8, 242u8, 216u8, 172u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[],bytes)` and selector `0xe5135ec6`. +```solidity +function executeBatch(SignedOrder[] memory orders, bytes memory callbackData) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[],bytes)`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[],bytes)"; + const SELECTOR: [u8; 4] = [229u8, 19u8, 94u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `multicall(address[],bytes[])` and selector `0x63fb0b96`. +```solidity +function multicall(address[] memory tokensToApprove, bytes[] memory multicallData) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct multicallCall { + pub tokensToApprove: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + pub multicallData: alloy::sol_types::private::Vec< + alloy::sol_types::private::Bytes, + >, + } + ///Container type for the return parameters of the [`multicall(address[],bytes[])`](multicallCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct multicallReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: multicallCall) -> Self { + (value.tokensToApprove, value.multicallData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for multicallCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + tokensToApprove: tuple.0, + multicallData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: multicallReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for multicallReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for multicallCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = multicallReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "multicall(address[],bytes[])"; + const SELECTOR: [u8; 4] = [99u8, 251u8, 11u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.tokensToApprove), + as alloy_sol_types::SolType>::tokenize(&self.multicallData), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628`. +```solidity +function reactorCallback(ResolvedOrder[] memory, bytes memory callbackData) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackCall { + pub _0: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct reactorCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackCall) -> Self { + (value._0, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for reactorCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for reactorCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for reactorCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = reactorCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)"; + const SELECTOR: [u8; 4] = [88u8, 93u8, 166u8, 40u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `unwrapWETH(address)` and selector `0x89a3f136`. +```solidity +function unwrapWETH(address recipient) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unwrapWETHCall { + pub recipient: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`unwrapWETH(address)`](unwrapWETHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct unwrapWETHReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unwrapWETHCall) -> Self { + (value.recipient,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unwrapWETHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { recipient: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: unwrapWETHReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for unwrapWETHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for unwrapWETHCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = unwrapWETHReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "unwrapWETH(address)"; + const SELECTOR: [u8; 4] = [137u8, 163u8, 241u8, 54u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `withdrawETH(address)` and selector `0x690d8320`. +```solidity +function withdrawETH(address recipient) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawETHCall { + pub recipient: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`withdrawETH(address)`](withdrawETHCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawETHReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawETHCall) -> Self { + (value.recipient,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawETHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { recipient: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawETHReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawETHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawETHCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawETHReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdrawETH(address)"; + const SELECTOR: [u8; 4] = [105u8, 13u8, 131u8, 32u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`SwapRouter02Executor`](self) function calls. + pub enum SwapRouter02ExecutorCalls { + execute(executeCall), + executeBatch(executeBatchCall), + multicall(multicallCall), + owner(ownerCall), + reactorCallback(reactorCallbackCall), + transferOwnership(transferOwnershipCall), + unwrapWETH(unwrapWETHCall), + withdrawETH(withdrawETHCall), + } + #[automatically_derived] + impl SwapRouter02ExecutorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [88u8, 93u8, 166u8, 40u8], + [99u8, 251u8, 11u8, 150u8], + [105u8, 13u8, 131u8, 32u8], + [137u8, 163u8, 241u8, 54u8], + [141u8, 165u8, 203u8, 91u8], + [208u8, 242u8, 216u8, 172u8], + [229u8, 19u8, 94u8, 198u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for SwapRouter02ExecutorCalls { + const NAME: &'static str = "SwapRouter02ExecutorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 8usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::multicall(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::reactorCallback(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::unwrapWETH(_) => { + ::SELECTOR + } + Self::withdrawETH(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn reactorCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SwapRouter02ExecutorCalls::reactorCallback) + } + reactorCallback + }, + { + fn multicall( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SwapRouter02ExecutorCalls::multicall) + } + multicall + }, + { + fn withdrawETH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SwapRouter02ExecutorCalls::withdrawETH) + } + withdrawETH + }, + { + fn unwrapWETH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SwapRouter02ExecutorCalls::unwrapWETH) + } + unwrapWETH + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SwapRouter02ExecutorCalls::owner) + } + owner + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SwapRouter02ExecutorCalls::execute) + } + execute + }, + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SwapRouter02ExecutorCalls::executeBatch) + } + executeBatch + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SwapRouter02ExecutorCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::multicall(inner) => { + ::abi_encoded_size(inner) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::reactorCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::unwrapWETH(inner) => { + ::abi_encoded_size(inner) + } + Self::withdrawETH(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::multicall(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::reactorCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::unwrapWETH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawETH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`SwapRouter02Executor`](self) custom errors. + pub enum SwapRouter02ExecutorErrors { + CallerNotWhitelisted(CallerNotWhitelisted), + MsgSenderNotReactor(MsgSenderNotReactor), + NativeTransferFailed(NativeTransferFailed), + } + #[automatically_derived] + impl SwapRouter02ExecutorErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [140u8, 110u8, 93u8, 113u8], + [147u8, 63u8, 229u8, 47u8], + [244u8, 179u8, 177u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for SwapRouter02ExecutorErrors { + const NAME: &'static str = "SwapRouter02ExecutorErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::CallerNotWhitelisted(_) => { + ::SELECTOR + } + Self::MsgSenderNotReactor(_) => { + ::SELECTOR + } + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn CallerNotWhitelisted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SwapRouter02ExecutorErrors::CallerNotWhitelisted) + } + CallerNotWhitelisted + }, + { + fn MsgSenderNotReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SwapRouter02ExecutorErrors::MsgSenderNotReactor) + } + MsgSenderNotReactor + }, + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(SwapRouter02ExecutorErrors::NativeTransferFailed) + } + NativeTransferFailed + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::CallerNotWhitelisted(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::MsgSenderNotReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::CallerNotWhitelisted(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::MsgSenderNotReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`SwapRouter02Executor`](self) events. + pub enum SwapRouter02ExecutorEvents { + OwnershipTransferred(OwnershipTransferred), + } + #[automatically_derived] + impl SwapRouter02ExecutorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for SwapRouter02ExecutorEvents { + const NAME: &'static str = "SwapRouter02ExecutorEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for SwapRouter02ExecutorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`SwapRouter02Executor`](self) contract instance. + +See the [wrapper's documentation](`SwapRouter02ExecutorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> SwapRouter02ExecutorInstance { + SwapRouter02ExecutorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _whitelistedCaller: alloy::sol_types::private::Address, + _reactor: alloy::sol_types::private::Address, + _owner: alloy::sol_types::private::Address, + _swapRouter02: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + SwapRouter02ExecutorInstance::< + T, + P, + N, + >::deploy(provider, _whitelistedCaller, _reactor, _owner, _swapRouter02) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _whitelistedCaller: alloy::sol_types::private::Address, + _reactor: alloy::sol_types::private::Address, + _owner: alloy::sol_types::private::Address, + _swapRouter02: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + SwapRouter02ExecutorInstance::< + T, + P, + N, + >::deploy_builder(provider, _whitelistedCaller, _reactor, _owner, _swapRouter02) + } + /**A [`SwapRouter02Executor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`SwapRouter02Executor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct SwapRouter02ExecutorInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for SwapRouter02ExecutorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("SwapRouter02ExecutorInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SwapRouter02ExecutorInstance { + /**Creates a new wrapper around an on-chain [`SwapRouter02Executor`](self) contract instance. + +See the [wrapper's documentation](`SwapRouter02ExecutorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _whitelistedCaller: alloy::sol_types::private::Address, + _reactor: alloy::sol_types::private::Address, + _owner: alloy::sol_types::private::Address, + _swapRouter02: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _whitelistedCaller, + _reactor, + _owner, + _swapRouter02, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _whitelistedCaller: alloy::sol_types::private::Address, + _reactor: alloy::sol_types::private::Address, + _owner: alloy::sol_types::private::Address, + _swapRouter02: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _whitelistedCaller, + _reactor, + _owner, + _swapRouter02, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl SwapRouter02ExecutorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> SwapRouter02ExecutorInstance { + SwapRouter02ExecutorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SwapRouter02ExecutorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order, callbackData }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeBatchCall { + orders, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`multicall`] function. + pub fn multicall( + &self, + tokensToApprove: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + multicallData: alloy::sol_types::private::Vec< + alloy::sol_types::private::Bytes, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &multicallCall { + tokensToApprove, + multicallData, + }, + ) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`reactorCallback`] function. + pub fn reactorCallback( + &self, + _0: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &reactorCallbackCall { + _0, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`unwrapWETH`] function. + pub fn unwrapWETH( + &self, + recipient: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&unwrapWETHCall { recipient }) + } + ///Creates a new call builder for the [`withdrawETH`] function. + pub fn withdrawETH( + &self, + recipient: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawETHCall { recipient }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > SwapRouter02ExecutorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/uint16arraylibrary.rs b/crates/bindings-uniswapx/src/uint16arraylibrary.rs new file mode 100644 index 0000000..45910eb --- /dev/null +++ b/crates/bindings-uniswapx/src/uint16arraylibrary.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface Uint16ArrayLibrary {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod Uint16ArrayLibrary { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122055ebf86f55f9e61b825564650c84a493cfe2e761edcda7b913ec71c56b5ee4d864736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 U\xEB\xF8oU\xF9\xE6\x1B\x82Ude\x0C\x84\xA4\x93\xCF\xE2\xE7a\xED\xCD\xA7\xB9\x13\xECq\xC5k^\xE4\xD8dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122055ebf86f55f9e61b825564650c84a493cfe2e761edcda7b913ec71c56b5ee4d864736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 U\xEB\xF8oU\xF9\xE6\x1B\x82Ude\x0C\x84\xA4\x93\xCF\xE2\xE7a\xED\xCD\xA7\xB9\x13\xECq\xC5k^\xE4\xD8dsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`Uint16ArrayLibrary`](self) contract instance. + +See the [wrapper's documentation](`Uint16ArrayLibraryInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Uint16ArrayLibraryInstance { + Uint16ArrayLibraryInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + Uint16ArrayLibraryInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + Uint16ArrayLibraryInstance::::deploy_builder(provider) + } + /**A [`Uint16ArrayLibrary`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`Uint16ArrayLibrary`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct Uint16ArrayLibraryInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for Uint16ArrayLibraryInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("Uint16ArrayLibraryInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > Uint16ArrayLibraryInstance { + /**Creates a new wrapper around an on-chain [`Uint16ArrayLibrary`](self) contract instance. + +See the [wrapper's documentation](`Uint16ArrayLibraryInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl Uint16ArrayLibraryInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> Uint16ArrayLibraryInstance { + Uint16ArrayLibraryInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > Uint16ArrayLibraryInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > Uint16ArrayLibraryInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/uint_16_array_library.rs b/crates/bindings-uniswapx/src/uint_16_array_library.rs deleted file mode 100644 index 7e8b2e5..0000000 --- a/crates/bindings-uniswapx/src/uint_16_array_library.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use uint_16_array_library::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod uint_16_array_library { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static UINT16ARRAYLIBRARY_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 W\xF7nOp)j\x18Br\xAFB\x94B\xEA2\xB6@L\xE1\x05f1\xB5\xA0+\xFF\x07\xCF\xE6ydsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static UINT16ARRAYLIBRARY_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 W\xF7nOp)j\x18Br\xAFB\x94B\xEA2\xB6@L\xE1\x05f1\xB5\xA0+\xFF\x07\xCF\xE6ydsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static UINT16ARRAYLIBRARY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct Uint16ArrayLibrary(::ethers::contract::Contract); - impl ::core::clone::Clone for Uint16ArrayLibrary { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for Uint16ArrayLibrary { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for Uint16ArrayLibrary { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for Uint16ArrayLibrary { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Uint16ArrayLibrary)) - .field(&self.address()) - .finish() - } - } - impl Uint16ArrayLibrary { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - UINT16ARRAYLIBRARY_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - UINT16ARRAYLIBRARY_ABI.clone(), - UINT16ARRAYLIBRARY_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for Uint16ArrayLibrary { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/uint_string.rs b/crates/bindings-uniswapx/src/uint_string.rs deleted file mode 100644 index 6e30e3c..0000000 --- a/crates/bindings-uniswapx/src/uint_string.rs +++ /dev/null @@ -1,160 +0,0 @@ -pub use uint_string::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod uint_string { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("InvalidStringNumber"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InvalidStringNumber", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("s"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static UINTSTRING_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x1A\xB2\xA2\x13B1\xD3\xA4\x89\x97|o\xA5\xB8\xDD\x18z\xFF\xCC\xD9V\xD0\x88\x0E\x04ZK\xD6\x03\x1Fo)dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static UINTSTRING_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x1A\xB2\xA2\x13B1\xD3\xA4\x89\x97|o\xA5\xB8\xDD\x18z\xFF\xCC\xD9V\xD0\x88\x0E\x04ZK\xD6\x03\x1Fo)dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static UINTSTRING_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct UintString(::ethers::contract::Contract); - impl ::core::clone::Clone for UintString { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for UintString { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for UintString { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for UintString { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(UintString)).field(&self.address()).finish() - } - } - impl UintString { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - UINTSTRING_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - UINTSTRING_ABI.clone(), - UINTSTRING_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for UintString { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `InvalidStringNumber` with signature `InvalidStringNumber(string)` and selector `0x5fd57f4a` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidStringNumber", abi = "InvalidStringNumber(string)")] - pub struct InvalidStringNumber { - pub s: ::std::string::String, - } -} diff --git a/crates/bindings-uniswapx/src/v2_dutch_order_lib.rs b/crates/bindings-uniswapx/src/v2_dutch_order_lib.rs deleted file mode 100644 index faf6127..0000000 --- a/crates/bindings-uniswapx/src/v2_dutch_order_lib.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use v2_dutch_order_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod v2_dutch_order_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static V2DUTCHORDERLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x0FH\xD1\x1FH\xDD\xE0\xC1!U\x1AW\xE6IV\xD4\xB8)(\xF6\xFF)\xF8m\x97\tu\x03\x14\x1E\xB8\x9DdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static V2DUTCHORDERLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x0FH\xD1\x1FH\xDD\xE0\xC1!U\x1AW\xE6IV\xD4\xB8)(\xF6\xFF)\xF8m\x97\tu\x03\x14\x1E\xB8\x9DdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static V2DUTCHORDERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct V2DutchOrderLib(::ethers::contract::Contract); - impl ::core::clone::Clone for V2DutchOrderLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for V2DutchOrderLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for V2DutchOrderLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for V2DutchOrderLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(V2DutchOrderLib)) - .field(&self.address()) - .finish() - } - } - impl V2DutchOrderLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - V2DUTCHORDERLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - V2DUTCHORDERLIB_ABI.clone(), - V2DUTCHORDERLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for V2DutchOrderLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/v2_dutch_order_reactor.rs b/crates/bindings-uniswapx/src/v2_dutch_order_reactor.rs deleted file mode 100644 index 44ef838..0000000 --- a/crates/bindings-uniswapx/src/v2_dutch_order_reactor.rs +++ /dev/null @@ -1,1773 +0,0 @@ -pub use v2_dutch_order_reactor::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod v2_dutch_order_reactor { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_permit2"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_protocolFeeOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatchWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeBatchWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("feeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeController"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "contract IProtocolFeeController", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit2"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit2"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setProtocolFeeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "setProtocolFeeController", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Fill"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Fill"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("orderHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("swapper"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ProtocolFeeControllerSet"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "ProtocolFeeControllerSet", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("oldFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DeadlineBeforeEndTime"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "DeadlineBeforeEndTime", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("duplicateToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("EndTimeBeforeStartTime"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "EndTimeBeforeStartTime", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("recipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("IncorrectAmounts"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("IncorrectAmounts"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidCosignature"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidCosignature"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidCosignerInput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InvalidCosignerInput", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidCosignerOutput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InvalidCosignerOutput", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("feeToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidReactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidReactor"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NoExclusiveOverride"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NoExclusiveOverride", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static V2DUTCHORDERREACTOR_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x004\xFE8\x03\x80b\x004\xFE\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa3\xEDb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x19\xF9\x01Ra3\xED_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a$_V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a%\x04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a%CV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%\xDBV[a\x06eV[a\0\xB4a\x01e6`\x04a%\xFDV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%\xDBV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a&\\V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x95V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a)\x1AV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0BFV[a\x04\x9F\x81a\x0B\x95V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x95V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga&\\V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0BFV[a\x08d\x81a\x0B\x95V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a)VV[\x81\x01\x90a\nW\x91\x90a-}V[\x90P_a\nc\x82a\x0C\xE0V[\x90Pa\no\x81\x83a\x0F\x10V[a\nx\x82a\x11\tV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xA9\x92\x90\x91\x90a\x12eV[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xCD\x92\x91\x90a\x133V[\x81R` \x01\x85\x80` \x01\x90a\n\xE2\x91\x90a)VV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0B?\x92\x86\x92\x90a\x14\x18V[PP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea&\\V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x14%V[a\x0B\x82\x813a\x19\x02V[a\x0B\x8C\x813a\x19\xF7V[P`\x01\x01a\x0BJV[\x80Q_[\x81\x81\x10\x15a\x0C\xCFW_\x83\x82\x81Q\x81\x10a\x0B\xB4Wa\x0B\xB4a&\\V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C1W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xE8Wa\x0B\xE8a&\\V[` \x02` \x01\x01Q\x90Pa\x0C(\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xFC\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xC9V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CyWa\x0Cya&\\V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xBD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x99V[PG\x15a\x04\xABWa\x04\xAB3Ga\x1DCV[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R_\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a2\xAB` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q` \x01a\x0E_\x93\x92\x91\x90a.rV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\x81\x83_\x01Qa\x1D\xD9V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xA7\x90a\x1ErV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0FWW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0Fq\x91\x90a.\xB4V[\x91P\x91P_\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\x8DWa\x0F\x8Da&\\V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P_`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xB6\x91\x90a.\xD6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\xF2\x92\x91` \x01a/dV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 _\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10kW=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x10\xCAWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11\x01W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11rW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xB9W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x81``\x01QQ\x81\x10\x15a\x04\xABW_\x82``\x01Q\x82\x81Q\x81\x10a\x11\xDFWa\x11\xDFa&\\V[` \x02` \x01\x01Q\x90P_\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12\x04Wa\x12\x04a&\\V[` \x02` \x01\x01Q\x90P\x80_\x14a\x12[W\x81` \x01Q\x81\x10\x15a\x12SW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xBBV[a\x12\x9C`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x12\xDEW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x12\xF3\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13QWa\x13Qa&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xB9W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13oW\x90P[P\x91P_[\x81\x81\x10\x15a\x14\x0FWa\x13\xEA\x86\x82\x81Q\x81\x10a\x13\xDBWa\x13\xDBa&\\V[` \x02` \x01\x01Q\x86\x86a\x1F\x89V[\x83\x82\x81Q\x81\x10a\x13\xFCWa\x13\xFCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBEV[PP\x93\x92PPPV[a\x06_\x84\x84\x84\x84Ba VV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14EWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\x9B\x90\x85\x90`\x04\x01a/\x89V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xB5W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xFA\x91\x90\x81\x01\x90a/\x9BV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\x11\x82\x84a0\x91V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15)Wa\x15)a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\x91W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15GW\x90P[P\x90P_[\x83\x81\x10\x15a\x15\xE1W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xB4Wa\x15\xB4a&\\V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xCEWa\x15\xCEa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\x96V[P_\x80_[\x84\x81\x10\x15a\x18\xF1W_\x87\x82\x81Q\x81\x10a\x16\x01Wa\x16\x01a&\\V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16\xBCW\x88\x81\x81Q\x81\x10a\x16'Wa\x16'a&\\V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\xB4W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\rV[P_\x80[\x88\x81\x10\x15a\x17yW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xDFWa\x16\xDFa&\\V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17pW\x85\x15a\x17ZW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17i\x90\x84a0\x91V[\x92P`\x01\x96P[P`\x01\x01a\x16\xC0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xF2W\x84\x15a\x17\xD9W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xEB\x90\x82a0\x91V[\x90P`\x01\x93P[\x80_\x03a\x18FW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x18T\x81`\x05a'\x10a!\0V[\x82` \x01Q\x11\x15a\x18\xC7W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xDCWa\x18\xDCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xE6V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19SW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xCF\x90\x84\x90\x86\x90`\x04\x01a0\xA4V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xE5W_\x80\xFD[PZ\xFA\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xB6\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1A\xC0\x85\x85a!:V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\xFD`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1Cf\x94\x93\x92\x91` \x01a0\xD2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xD3\x96\x95\x94\x93\x92`\x04\x01a1ZV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xEAW_\x80\xFD[PZ\xF1\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D!Wa\x03L\x82\x82a\x1DCV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\x80V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\x99W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\x9EV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0E\xF3\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\x91Wa\x1E\x91a&/V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xBBW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xFEW_a\x1E\xEC\x85\x83\x81Q\x81\x10a\x1E\xDFWa\x1E\xDFa&\\V[` \x02` \x01\x01Qa\"gV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xC0V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x83\x85\x03a\x1F\x1CWP\x83a\x1F\x81V[\x82\x82\x11a\x1FUW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1FcWP\x82a\x1F\x81V[B\x83\x10a\x1FqWP\x83a\x1F\x81V[a\x1F~\x83\x83B\x88\x88a\"\xDDV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1F\xE7W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xFC\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a a\x84\x84\x83a\"\xF7V[a \xF9W\x81a \x9CW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a \xF6W_\x82\x82\x81Q\x81\x10a \xBFWa \xBFa&\\V[` \x02` \x01\x01Q\x90Pa \xE8\x85a'\x10a \xDA\x91\x90a0\x91V[` \x83\x01Q\x90a'\x10a#AV[` \x90\x91\x01R`\x01\x01a \xA3V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!3W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a \xF9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0E\xF3\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_a\"\xEB\x86\x86\x86\x86\x86a#\x83V[\x90P[\x95\x94PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x1AWP\x82\x82\x11[\x80a\x1F\x81WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#tW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a#\x92WP\x80a\"\xEEV[_a#\x9D\x87\x86a2\x14V[\x90P_a#\xAA\x88\x88a2\x14V[\x90P_\x85\x85\x12\x15a#\xDBWa#\xCB\x83\x83a#\xC4\x88\x8Aa2'V[\x91\x90a!\0V[a#\xD4\x90a2MV[\x90Pa#\xEDV[a#\xEA\x83\x83a#\xC4\x89\x89a2'V[\x90P[a#\xF7\x81\x87a2\x83V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a$\x14W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a$*W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$AW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$XW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a$qW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\x88W_\x80\xFD[a$\x94\x87\x83\x88\x01a$\x04V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\xA9W_\x80\xFD[Pa$\xB6\x86\x82\x87\x01a$\x1AV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$\xD3W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xEAW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$XW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a%\x15W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%+W_\x80\xFD[a%7\x85\x82\x86\x01a$\xC3V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a%VW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%mW_\x80\xFD[a%y\x88\x83\x89\x01a$\xC3V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x91W_\x80\xFD[Pa%\x9E\x87\x82\x88\x01a$\x1AV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a%\xD6\x81a%\xAAV[\x91\x90PV[_` \x82\x84\x03\x12\x15a%\xEBW_\x80\xFD[\x815a%\xF6\x81a%\xAAV[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a&\rW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&#W_\x80\xFD[a\x1F\x81\x84\x82\x85\x01a$\x04V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&\xC2\x81` \x86\x01` \x86\x01a&\x89V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a'RW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x07V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD0a\x01\xA0\x85\x01\x82a&\xABV[\x90P` \x83\x01Qa(\x0E` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(&\x82\x82a&\xF4V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(@\x82\x82a&\xABV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(\xCAW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xB8\x86\x83Qa']V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(~V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)LW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x89W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xA3W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$XW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*mWa*ma&/V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a*\x84W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\x9EWa*\x9Ea&/V[a*\xCF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*&V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xE3W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a+\x0FW_\x80\xFD[a+\x17a)\xB7V[\x90P\x815a+$\x81a%\xAAV[\x81R` \x82\x015a+4\x81a%\xAAV[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a+]\x81a%\xAAV[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+{W_\x80\xFD[a+\x87\x84\x82\x85\x01a*uV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+\xA3W_\x80\xFD[a+\xABa)\xE0V[\x90P\x815a+\xB8\x81a%\xAAV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+\xEFWa+\xEFa&/V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a,\x08W_\x80\xFD[\x815` a,\x1Da,\x18\x83a+\xD6V[a*&V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,;W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\x9EW`\x80\x81\x89\x03\x12\x15a,VW_\x80\xFD[a,^a*\x03V[\x815a,i\x81a%\xAAV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x8C\x81a%\xAAV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,?V[P\x96\x95PPPPPPV[_`\xC0\x82\x84\x03\x12\x15a,\xB9W_\x80\xFD[a,\xC1a)\xB7V[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a,\xDF\x81a%\xAAV[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\x13W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-#W_\x80\xFD[\x805a-1a,\x18\x82a+\xD6V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a-OW_\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a-mW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a-TV[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-\x8DW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-\xA4W_\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a-\xB8W_\x80\xFD[a-\xC0a)\xB7V[\x825\x82\x81\x11\x15a-\xCEW_\x80\xFD[a-\xDA\x87\x82\x86\x01a*\xFFV[\x82RPa-\xE9` \x84\x01a%\xCBV[` \x82\x01Ra-\xFB\x86`@\x85\x01a+\x93V[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\x11W_\x80\xFD[a.\x1D\x87\x82\x86\x01a+\xF9V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.4W_\x80\xFD[a.@\x87\x82\x86\x01a,\xA9V[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a.WW_\x80\xFD[a.c\x87\x82\x86\x01a*uV[`\xA0\x83\x01RP\x95\x94PPPPPV[_\x84Qa.\x83\x81\x84` \x89\x01a&\x89V[\x84Q\x90\x83\x01\x90a.\x97\x81\x83` \x89\x01a&\x89V[\x84Q\x91\x01\x90a.\xAA\x81\x83` \x88\x01a&\x89V[\x01\x95\x94PPPPPV[_\x80`@\x83\x85\x03\x12\x15a.\xC5W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[_` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a,\x9EW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a/DV[\x82\x81R_\x82Qa/{\x81` \x85\x01` \x87\x01a&\x89V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R_a%\xF6` \x83\x01\x84a']V[_` \x80\x83\x85\x03\x12\x15a/\xACW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/\xC2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD2W_\x80\xFD[\x80Qa/\xE0a,\x18\x82a+\xD6V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/\xFEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a0XW\x80\x85\x8A\x03\x12\x15a0\x19W_\x80\xFD[a0!a)\xE0V[\x85Qa0,\x81a%\xAAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa0E\x81a%\xAAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\x03V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a!zWa!za0dV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1F\x81`@\x83\x01\x84a']V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_\x85Qa1\t\x81`\x15\x85\x01` \x8A\x01a&\x89V[\x85Q\x90\x83\x01\x90a1 \x81`\x15\x84\x01` \x8A\x01a&\x89V[\x85Q\x91\x01\x90a16\x81`\x15\x84\x01` \x89\x01a&\x89V[\x84Q\x91\x01\x90a1L\x81`\x15\x84\x01` \x88\x01a&\x89V[\x01`\x15\x01\x96\x95PPPPPPV[_a\x01@a1\x89\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\xCA`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1\xFF\x81\x84\x01\x86a&\xABV[\x90P\x82\x81\x03a\x01 \x84\x01Ra#\xF7\x81\x85a&\xABV[\x81\x81\x03\x81\x81\x11\x15a!zWa!za0dV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a2FWa2Fa0dV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a2}Wa2}a0dV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a2\xA2Wa2\xA2a0dV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x91\xE2f\xE9r\xD65\x18%\x0B\x0E\xD2\x98\xCB\xC1\xE0k\t\n\x93\x98w\t\x84\x04\xDF\xB8@\xD3f^\x1BdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static V2DUTCHORDERREACTOR_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a$_V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a%\x04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a%CV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%\xDBV[a\x06eV[a\0\xB4a\x01e6`\x04a%\xFDV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%\xDBV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a&\\V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x95V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a)\x1AV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0BFV[a\x04\x9F\x81a\x0B\x95V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x95V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga&\\V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0BFV[a\x08d\x81a\x0B\x95V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a)VV[\x81\x01\x90a\nW\x91\x90a-}V[\x90P_a\nc\x82a\x0C\xE0V[\x90Pa\no\x81\x83a\x0F\x10V[a\nx\x82a\x11\tV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xA9\x92\x90\x91\x90a\x12eV[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xCD\x92\x91\x90a\x133V[\x81R` \x01\x85\x80` \x01\x90a\n\xE2\x91\x90a)VV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0B?\x92\x86\x92\x90a\x14\x18V[PP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea&\\V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x14%V[a\x0B\x82\x813a\x19\x02V[a\x0B\x8C\x813a\x19\xF7V[P`\x01\x01a\x0BJV[\x80Q_[\x81\x81\x10\x15a\x0C\xCFW_\x83\x82\x81Q\x81\x10a\x0B\xB4Wa\x0B\xB4a&\\V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C1W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xE8Wa\x0B\xE8a&\\V[` \x02` \x01\x01Q\x90Pa\x0C(\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xFC\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xC9V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CyWa\x0Cya&\\V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xBD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x99V[PG\x15a\x04\xABWa\x04\xAB3Ga\x1DCV[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R_\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a2\xAB` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q` \x01a\x0E_\x93\x92\x91\x90a.rV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\x81\x83_\x01Qa\x1D\xD9V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xA7\x90a\x1ErV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0FWW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0Fq\x91\x90a.\xB4V[\x91P\x91P_\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\x8DWa\x0F\x8Da&\\V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P_`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xB6\x91\x90a.\xD6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\xF2\x92\x91` \x01a/dV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 _\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10kW=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x10\xCAWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11\x01W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11rW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xB9W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x81``\x01QQ\x81\x10\x15a\x04\xABW_\x82``\x01Q\x82\x81Q\x81\x10a\x11\xDFWa\x11\xDFa&\\V[` \x02` \x01\x01Q\x90P_\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12\x04Wa\x12\x04a&\\V[` \x02` \x01\x01Q\x90P\x80_\x14a\x12[W\x81` \x01Q\x81\x10\x15a\x12SW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xBBV[a\x12\x9C`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x12\xDEW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x12\xF3\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13QWa\x13Qa&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xB9W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13oW\x90P[P\x91P_[\x81\x81\x10\x15a\x14\x0FWa\x13\xEA\x86\x82\x81Q\x81\x10a\x13\xDBWa\x13\xDBa&\\V[` \x02` \x01\x01Q\x86\x86a\x1F\x89V[\x83\x82\x81Q\x81\x10a\x13\xFCWa\x13\xFCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBEV[PP\x93\x92PPPV[a\x06_\x84\x84\x84\x84Ba VV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14EWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\x9B\x90\x85\x90`\x04\x01a/\x89V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xB5W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xFA\x91\x90\x81\x01\x90a/\x9BV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\x11\x82\x84a0\x91V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15)Wa\x15)a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\x91W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15GW\x90P[P\x90P_[\x83\x81\x10\x15a\x15\xE1W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xB4Wa\x15\xB4a&\\V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xCEWa\x15\xCEa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\x96V[P_\x80_[\x84\x81\x10\x15a\x18\xF1W_\x87\x82\x81Q\x81\x10a\x16\x01Wa\x16\x01a&\\V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16\xBCW\x88\x81\x81Q\x81\x10a\x16'Wa\x16'a&\\V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\xB4W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\rV[P_\x80[\x88\x81\x10\x15a\x17yW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xDFWa\x16\xDFa&\\V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17pW\x85\x15a\x17ZW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17i\x90\x84a0\x91V[\x92P`\x01\x96P[P`\x01\x01a\x16\xC0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xF2W\x84\x15a\x17\xD9W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xEB\x90\x82a0\x91V[\x90P`\x01\x93P[\x80_\x03a\x18FW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x18T\x81`\x05a'\x10a!\0V[\x82` \x01Q\x11\x15a\x18\xC7W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xDCWa\x18\xDCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xE6V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19SW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xCF\x90\x84\x90\x86\x90`\x04\x01a0\xA4V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xE5W_\x80\xFD[PZ\xFA\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xB6\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1A\xC0\x85\x85a!:V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\xFD`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1Cf\x94\x93\x92\x91` \x01a0\xD2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xD3\x96\x95\x94\x93\x92`\x04\x01a1ZV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xEAW_\x80\xFD[PZ\xF1\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D!Wa\x03L\x82\x82a\x1DCV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\x80V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\x99W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\x9EV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0E\xF3\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\x91Wa\x1E\x91a&/V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xBBW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xFEW_a\x1E\xEC\x85\x83\x81Q\x81\x10a\x1E\xDFWa\x1E\xDFa&\\V[` \x02` \x01\x01Qa\"gV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xC0V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x83\x85\x03a\x1F\x1CWP\x83a\x1F\x81V[\x82\x82\x11a\x1FUW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1FcWP\x82a\x1F\x81V[B\x83\x10a\x1FqWP\x83a\x1F\x81V[a\x1F~\x83\x83B\x88\x88a\"\xDDV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1F\xE7W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xFC\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a a\x84\x84\x83a\"\xF7V[a \xF9W\x81a \x9CW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a \xF6W_\x82\x82\x81Q\x81\x10a \xBFWa \xBFa&\\V[` \x02` \x01\x01Q\x90Pa \xE8\x85a'\x10a \xDA\x91\x90a0\x91V[` \x83\x01Q\x90a'\x10a#AV[` \x90\x91\x01R`\x01\x01a \xA3V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!3W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a \xF9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0E\xF3\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_a\"\xEB\x86\x86\x86\x86\x86a#\x83V[\x90P[\x95\x94PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x1AWP\x82\x82\x11[\x80a\x1F\x81WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#tW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a#\x92WP\x80a\"\xEEV[_a#\x9D\x87\x86a2\x14V[\x90P_a#\xAA\x88\x88a2\x14V[\x90P_\x85\x85\x12\x15a#\xDBWa#\xCB\x83\x83a#\xC4\x88\x8Aa2'V[\x91\x90a!\0V[a#\xD4\x90a2MV[\x90Pa#\xEDV[a#\xEA\x83\x83a#\xC4\x89\x89a2'V[\x90P[a#\xF7\x81\x87a2\x83V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a$\x14W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a$*W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$AW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$XW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a$qW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\x88W_\x80\xFD[a$\x94\x87\x83\x88\x01a$\x04V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\xA9W_\x80\xFD[Pa$\xB6\x86\x82\x87\x01a$\x1AV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$\xD3W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xEAW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$XW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a%\x15W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%+W_\x80\xFD[a%7\x85\x82\x86\x01a$\xC3V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a%VW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%mW_\x80\xFD[a%y\x88\x83\x89\x01a$\xC3V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x91W_\x80\xFD[Pa%\x9E\x87\x82\x88\x01a$\x1AV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a%\xD6\x81a%\xAAV[\x91\x90PV[_` \x82\x84\x03\x12\x15a%\xEBW_\x80\xFD[\x815a%\xF6\x81a%\xAAV[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a&\rW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&#W_\x80\xFD[a\x1F\x81\x84\x82\x85\x01a$\x04V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&\xC2\x81` \x86\x01` \x86\x01a&\x89V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a'RW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x07V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD0a\x01\xA0\x85\x01\x82a&\xABV[\x90P` \x83\x01Qa(\x0E` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(&\x82\x82a&\xF4V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(@\x82\x82a&\xABV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(\xCAW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xB8\x86\x83Qa']V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(~V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)LW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x89W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xA3W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$XW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*mWa*ma&/V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a*\x84W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\x9EWa*\x9Ea&/V[a*\xCF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*&V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xE3W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a+\x0FW_\x80\xFD[a+\x17a)\xB7V[\x90P\x815a+$\x81a%\xAAV[\x81R` \x82\x015a+4\x81a%\xAAV[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a+]\x81a%\xAAV[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+{W_\x80\xFD[a+\x87\x84\x82\x85\x01a*uV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+\xA3W_\x80\xFD[a+\xABa)\xE0V[\x90P\x815a+\xB8\x81a%\xAAV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+\xEFWa+\xEFa&/V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a,\x08W_\x80\xFD[\x815` a,\x1Da,\x18\x83a+\xD6V[a*&V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,;W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\x9EW`\x80\x81\x89\x03\x12\x15a,VW_\x80\xFD[a,^a*\x03V[\x815a,i\x81a%\xAAV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x8C\x81a%\xAAV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,?V[P\x96\x95PPPPPPV[_`\xC0\x82\x84\x03\x12\x15a,\xB9W_\x80\xFD[a,\xC1a)\xB7V[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a,\xDF\x81a%\xAAV[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\x13W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-#W_\x80\xFD[\x805a-1a,\x18\x82a+\xD6V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a-OW_\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a-mW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a-TV[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-\x8DW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-\xA4W_\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a-\xB8W_\x80\xFD[a-\xC0a)\xB7V[\x825\x82\x81\x11\x15a-\xCEW_\x80\xFD[a-\xDA\x87\x82\x86\x01a*\xFFV[\x82RPa-\xE9` \x84\x01a%\xCBV[` \x82\x01Ra-\xFB\x86`@\x85\x01a+\x93V[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\x11W_\x80\xFD[a.\x1D\x87\x82\x86\x01a+\xF9V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.4W_\x80\xFD[a.@\x87\x82\x86\x01a,\xA9V[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a.WW_\x80\xFD[a.c\x87\x82\x86\x01a*uV[`\xA0\x83\x01RP\x95\x94PPPPPV[_\x84Qa.\x83\x81\x84` \x89\x01a&\x89V[\x84Q\x90\x83\x01\x90a.\x97\x81\x83` \x89\x01a&\x89V[\x84Q\x91\x01\x90a.\xAA\x81\x83` \x88\x01a&\x89V[\x01\x95\x94PPPPPV[_\x80`@\x83\x85\x03\x12\x15a.\xC5W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[_` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a,\x9EW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a/DV[\x82\x81R_\x82Qa/{\x81` \x85\x01` \x87\x01a&\x89V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R_a%\xF6` \x83\x01\x84a']V[_` \x80\x83\x85\x03\x12\x15a/\xACW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/\xC2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD2W_\x80\xFD[\x80Qa/\xE0a,\x18\x82a+\xD6V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/\xFEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a0XW\x80\x85\x8A\x03\x12\x15a0\x19W_\x80\xFD[a0!a)\xE0V[\x85Qa0,\x81a%\xAAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa0E\x81a%\xAAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\x03V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a!zWa!za0dV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1F\x81`@\x83\x01\x84a']V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_\x85Qa1\t\x81`\x15\x85\x01` \x8A\x01a&\x89V[\x85Q\x90\x83\x01\x90a1 \x81`\x15\x84\x01` \x8A\x01a&\x89V[\x85Q\x91\x01\x90a16\x81`\x15\x84\x01` \x89\x01a&\x89V[\x84Q\x91\x01\x90a1L\x81`\x15\x84\x01` \x88\x01a&\x89V[\x01`\x15\x01\x96\x95PPPPPPV[_a\x01@a1\x89\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\xCA`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1\xFF\x81\x84\x01\x86a&\xABV[\x90P\x82\x81\x03a\x01 \x84\x01Ra#\xF7\x81\x85a&\xABV[\x81\x81\x03\x81\x81\x11\x15a!zWa!za0dV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a2FWa2Fa0dV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a2}Wa2}a0dV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a2\xA2Wa2\xA2a0dV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x91\xE2f\xE9r\xD65\x18%\x0B\x0E\xD2\x98\xCB\xC1\xE0k\t\n\x93\x98w\t\x84\x04\xDF\xB8@\xD3f^\x1BdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static V2DUTCHORDERREACTOR_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct V2DutchOrderReactor(::ethers::contract::Contract); - impl ::core::clone::Clone for V2DutchOrderReactor { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for V2DutchOrderReactor { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for V2DutchOrderReactor { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for V2DutchOrderReactor { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(V2DutchOrderReactor)) - .field(&self.address()) - .finish() - } - } - impl V2DutchOrderReactor { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - V2DUTCHORDERREACTOR_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - V2DUTCHORDERREACTOR_ABI.clone(), - V2DUTCHORDERREACTOR_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `execute` (0x3f62192e) function - pub fn execute( - &self, - order: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 98, 25, 46], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x0d7a16c3) function - pub fn execute_batch( - &self, - orders: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 122, 22, 195], orders) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatchWithCallback` (0x13fb72c7) function - pub fn execute_batch_with_callback( - &self, - orders: ::std::vec::Vec, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([19, 251, 114, 199], (orders, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeWithCallback` (0x0d335884) function - pub fn execute_with_callback( - &self, - order: SignedOrder, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 51, 88, 132], (order, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `feeController` (0x6999b377) function - pub fn fee_controller( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([105, 153, 179, 119], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit2` (0x12261ee7) function - pub fn permit_2( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([18, 38, 30, 231], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setProtocolFeeController` (0x2d771389) function - pub fn set_protocol_fee_controller( - &self, - new_fee_controller: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([45, 119, 19, 137], new_fee_controller) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Fill` event - pub fn fill_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, FillFilter> { - self.0.event() - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - ///Gets the contract's `ProtocolFeeControllerSet` event - pub fn protocol_fee_controller_set_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ProtocolFeeControllerSetFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - V2DutchOrderReactorEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for V2DutchOrderReactor { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `DeadlineBeforeEndTime` with signature `DeadlineBeforeEndTime()` and selector `0x773a6187` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DeadlineBeforeEndTime", abi = "DeadlineBeforeEndTime()")] - pub struct DeadlineBeforeEndTime; - ///Custom Error type `DuplicateFeeOutput` with signature `DuplicateFeeOutput(address)` and selector `0xfff08303` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DuplicateFeeOutput", abi = "DuplicateFeeOutput(address)")] - pub struct DuplicateFeeOutput { - pub duplicate_token: ::ethers::core::types::Address, - } - ///Custom Error type `EndTimeBeforeStartTime` with signature `EndTimeBeforeStartTime()` and selector `0x43133453` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "EndTimeBeforeStartTime", abi = "EndTimeBeforeStartTime()")] - pub struct EndTimeBeforeStartTime; - ///Custom Error type `FeeTooLarge` with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "FeeTooLarge", abi = "FeeTooLarge(address,uint256,address)")] - pub struct FeeTooLarge { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub recipient: ::ethers::core::types::Address, - } - ///Custom Error type `IncorrectAmounts` with signature `IncorrectAmounts()` and selector `0x7c1f8113` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "IncorrectAmounts", abi = "IncorrectAmounts()")] - pub struct IncorrectAmounts; - ///Custom Error type `InputAndOutputFees` with signature `InputAndOutputFees()` and selector `0xedc7e2e4` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputFees", abi = "InputAndOutputFees()")] - pub struct InputAndOutputFees; - ///Custom Error type `InvalidCosignature` with signature `InvalidCosignature()` and selector `0xd7815be1` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidCosignature", abi = "InvalidCosignature()")] - pub struct InvalidCosignature; - ///Custom Error type `InvalidCosignerInput` with signature `InvalidCosignerInput()` and selector `0xac9143e7` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidCosignerInput", abi = "InvalidCosignerInput()")] - pub struct InvalidCosignerInput; - ///Custom Error type `InvalidCosignerOutput` with signature `InvalidCosignerOutput()` and selector `0xa305df82` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidCosignerOutput", abi = "InvalidCosignerOutput()")] - pub struct InvalidCosignerOutput; - ///Custom Error type `InvalidFeeToken` with signature `InvalidFeeToken(address)` and selector `0xeddf07f5` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidFeeToken", abi = "InvalidFeeToken(address)")] - pub struct InvalidFeeToken { - pub fee_token: ::ethers::core::types::Address, - } - ///Custom Error type `InvalidReactor` with signature `InvalidReactor()` and selector `0x4ddf4a64` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidReactor", abi = "InvalidReactor()")] - pub struct InvalidReactor; - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; - ///Custom Error type `NoExclusiveOverride` with signature `NoExclusiveOverride()` and selector `0xb9ec1e96` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NoExclusiveOverride", abi = "NoExclusiveOverride()")] - pub struct NoExclusiveOverride; - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum V2DutchOrderReactorErrors { - DeadlineBeforeEndTime(DeadlineBeforeEndTime), - DuplicateFeeOutput(DuplicateFeeOutput), - EndTimeBeforeStartTime(EndTimeBeforeStartTime), - FeeTooLarge(FeeTooLarge), - IncorrectAmounts(IncorrectAmounts), - InputAndOutputFees(InputAndOutputFees), - InvalidCosignature(InvalidCosignature), - InvalidCosignerInput(InvalidCosignerInput), - InvalidCosignerOutput(InvalidCosignerOutput), - InvalidFeeToken(InvalidFeeToken), - InvalidReactor(InvalidReactor), - NativeTransferFailed(NativeTransferFailed), - NoExclusiveOverride(NoExclusiveOverride), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for V2DutchOrderReactorErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DeadlineBeforeEndTime(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DuplicateFeeOutput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::EndTimeBeforeStartTime(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeTooLarge(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IncorrectAmounts(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputFees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidCosignature(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidCosignerInput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidCosignerOutput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidFeeToken(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidReactor(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NativeTransferFailed(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NoExclusiveOverride(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for V2DutchOrderReactorErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::DeadlineBeforeEndTime(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::DuplicateFeeOutput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::EndTimeBeforeStartTime(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeTooLarge(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IncorrectAmounts(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputFees(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidCosignature(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidCosignerInput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidCosignerOutput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidFeeToken(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidReactor(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NativeTransferFailed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NoExclusiveOverride(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for V2DutchOrderReactorErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for V2DutchOrderReactorErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DeadlineBeforeEndTime(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::DuplicateFeeOutput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::EndTimeBeforeStartTime(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeTooLarge(element) => ::core::fmt::Display::fmt(element, f), - Self::IncorrectAmounts(element) => ::core::fmt::Display::fmt(element, f), - Self::InputAndOutputFees(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidCosignature(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidCosignerInput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidCosignerOutput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidFeeToken(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidReactor(element) => ::core::fmt::Display::fmt(element, f), - Self::NativeTransferFailed(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::NoExclusiveOverride(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for V2DutchOrderReactorErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: DeadlineBeforeEndTime) -> Self { - Self::DeadlineBeforeEndTime(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: DuplicateFeeOutput) -> Self { - Self::DuplicateFeeOutput(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: EndTimeBeforeStartTime) -> Self { - Self::EndTimeBeforeStartTime(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: FeeTooLarge) -> Self { - Self::FeeTooLarge(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: IncorrectAmounts) -> Self { - Self::IncorrectAmounts(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: InputAndOutputFees) -> Self { - Self::InputAndOutputFees(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: InvalidCosignature) -> Self { - Self::InvalidCosignature(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: InvalidCosignerInput) -> Self { - Self::InvalidCosignerInput(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: InvalidCosignerOutput) -> Self { - Self::InvalidCosignerOutput(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: InvalidFeeToken) -> Self { - Self::InvalidFeeToken(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: InvalidReactor) -> Self { - Self::InvalidReactor(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: NativeTransferFailed) -> Self { - Self::NativeTransferFailed(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorErrors { - fn from(value: NoExclusiveOverride) -> Self { - Self::NoExclusiveOverride(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Fill", abi = "Fill(bytes32,address,address,uint256)")] - pub struct FillFilter { - #[ethevent(indexed)] - pub order_hash: [u8; 32], - #[ethevent(indexed)] - pub filler: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub swapper: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "ProtocolFeeControllerSet", - abi = "ProtocolFeeControllerSet(address,address)" - )] - pub struct ProtocolFeeControllerSetFilter { - pub old_fee_controller: ::ethers::core::types::Address, - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum V2DutchOrderReactorEvents { - FillFilter(FillFilter), - OwnershipTransferredFilter(OwnershipTransferredFilter), - ProtocolFeeControllerSetFilter(ProtocolFeeControllerSetFilter), - } - impl ::ethers::contract::EthLogDecode for V2DutchOrderReactorEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = FillFilter::decode_log(log) { - return Ok(V2DutchOrderReactorEvents::FillFilter(decoded)); - } - if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) { - return Ok( - V2DutchOrderReactorEvents::OwnershipTransferredFilter(decoded), - ); - } - if let Ok(decoded) = ProtocolFeeControllerSetFilter::decode_log(log) { - return Ok( - V2DutchOrderReactorEvents::ProtocolFeeControllerSetFilter(decoded), - ); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for V2DutchOrderReactorEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FillFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ProtocolFeeControllerSetFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for V2DutchOrderReactorEvents { - fn from(value: FillFilter) -> Self { - Self::FillFilter(value) - } - } - impl ::core::convert::From - for V2DutchOrderReactorEvents { - fn from(value: OwnershipTransferredFilter) -> Self { - Self::OwnershipTransferredFilter(value) - } - } - impl ::core::convert::From - for V2DutchOrderReactorEvents { - fn from(value: ProtocolFeeControllerSetFilter) -> Self { - Self::ProtocolFeeControllerSetFilter(value) - } - } - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes))` and selector `0x3f62192e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes))")] - pub struct ExecuteCall { - pub order: SignedOrder, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((bytes,bytes)[])")] - pub struct ExecuteBatchCall { - pub orders: ::std::vec::Vec, - } - ///Container type for all input parameters for the `executeBatchWithCallback` function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeBatchWithCallback", - abi = "executeBatchWithCallback((bytes,bytes)[],bytes)" - )] - pub struct ExecuteBatchWithCallbackCall { - pub orders: ::std::vec::Vec, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `executeWithCallback` function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeWithCallback", - abi = "executeWithCallback((bytes,bytes),bytes)" - )] - pub struct ExecuteWithCallbackCall { - pub order: SignedOrder, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeController", abi = "feeController()")] - pub struct FeeControllerCall; - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "permit2", abi = "permit2()")] - pub struct Permit2Call; - ///Container type for all input parameters for the `setProtocolFeeController` function with signature `setProtocolFeeController(address)` and selector `0x2d771389` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "setProtocolFeeController", - abi = "setProtocolFeeController(address)" - )] - pub struct SetProtocolFeeControllerCall { - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum V2DutchOrderReactorCalls { - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ExecuteBatchWithCallback(ExecuteBatchWithCallbackCall), - ExecuteWithCallback(ExecuteWithCallbackCall), - FeeController(FeeControllerCall), - Owner(OwnerCall), - Permit2(Permit2Call), - SetProtocolFeeController(SetProtocolFeeControllerCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for V2DutchOrderReactorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatchWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Permit2(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetProtocolFeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for V2DutchOrderReactorCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteBatchWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Permit2(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetProtocolFeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for V2DutchOrderReactorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatchWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ExecuteWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeController(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit2(element) => ::core::fmt::Display::fmt(element, f), - Self::SetProtocolFeeController(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for V2DutchOrderReactorCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From - for V2DutchOrderReactorCalls { - fn from(value: ExecuteBatchWithCallbackCall) -> Self { - Self::ExecuteBatchWithCallback(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorCalls { - fn from(value: ExecuteWithCallbackCall) -> Self { - Self::ExecuteWithCallback(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorCalls { - fn from(value: FeeControllerCall) -> Self { - Self::FeeController(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorCalls { - fn from(value: Permit2Call) -> Self { - Self::Permit2(value) - } - } - impl ::core::convert::From - for V2DutchOrderReactorCalls { - fn from(value: SetProtocolFeeControllerCall) -> Self { - Self::SetProtocolFeeController(value) - } - } - impl ::core::convert::From for V2DutchOrderReactorCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeControllerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct Permit2Return(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/v2dutchorderlib.rs b/crates/bindings-uniswapx/src/v2dutchorderlib.rs new file mode 100644 index 0000000..63dabc2 --- /dev/null +++ b/crates/bindings-uniswapx/src/v2dutchorderlib.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface V2DutchOrderLib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod V2DutchOrderLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206cf6da8f394d53af91521d7e4891950fc2ce501ad001d471d779209e8470c50464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 l\xF6\xDA\x8F9MS\xAF\x91R\x1D~H\x91\x95\x0F\xC2\xCEP\x1A\xD0\x01\xD4q\xD7y \x9E\x84p\xC5\x04dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206cf6da8f394d53af91521d7e4891950fc2ce501ad001d471d779209e8470c50464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 l\xF6\xDA\x8F9MS\xAF\x91R\x1D~H\x91\x95\x0F\xC2\xCEP\x1A\xD0\x01\xD4q\xD7y \x9E\x84p\xC5\x04dsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`V2DutchOrderLib`](self) contract instance. + +See the [wrapper's documentation](`V2DutchOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> V2DutchOrderLibInstance { + V2DutchOrderLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + V2DutchOrderLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + V2DutchOrderLibInstance::::deploy_builder(provider) + } + /**A [`V2DutchOrderLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`V2DutchOrderLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct V2DutchOrderLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for V2DutchOrderLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("V2DutchOrderLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > V2DutchOrderLibInstance { + /**Creates a new wrapper around an on-chain [`V2DutchOrderLib`](self) contract instance. + +See the [wrapper's documentation](`V2DutchOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl V2DutchOrderLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> V2DutchOrderLibInstance { + V2DutchOrderLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > V2DutchOrderLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > V2DutchOrderLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/v2dutchorderreactor.rs b/crates/bindings-uniswapx/src/v2dutchorderreactor.rs new file mode 100644 index 0000000..270e0c1 --- /dev/null +++ b/crates/bindings-uniswapx/src/v2dutchorderreactor.rs @@ -0,0 +1,4249 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface V2DutchOrderReactor { + struct SignedOrder { + bytes order; + bytes sig; + } + + error DeadlineBeforeEndTime(); + error DuplicateFeeOutput(address duplicateToken); + error EndTimeBeforeStartTime(); + error FeeTooLarge(address token, uint256 amount, address recipient); + error IncorrectAmounts(); + error InputAndOutputFees(); + error InvalidCosignature(); + error InvalidCosignerInput(); + error InvalidCosignerOutput(); + error InvalidFeeToken(address feeToken); + error InvalidReactor(); + error NativeTransferFailed(); + error NoExclusiveOverride(); + + event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); + event OwnershipTransferred(address indexed user, address indexed newOwner); + event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); + + constructor(address _permit2, address _protocolFeeOwner); + + receive() external payable; + + function execute(SignedOrder memory order) external payable; + function executeBatch(SignedOrder[] memory orders) external payable; + function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; + function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; + function feeController() external view returns (address); + function owner() external view returns (address); + function permit2() external view returns (address); + function setProtocolFeeController(address _newFeeController) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_permit2", + "type": "address", + "internalType": "contract IPermit2" + }, + { + "name": "_protocolFeeOwner", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatchWithCallback", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeWithCallback", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "feeController", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IProtocolFeeController" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit2", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPermit2" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setProtocolFeeController", + "inputs": [ + { + "name": "_newFeeController", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Fill", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "filler", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "swapper", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProtocolFeeControllerSet", + "inputs": [ + { + "name": "oldFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "DeadlineBeforeEndTime", + "inputs": [] + }, + { + "type": "error", + "name": "DuplicateFeeOutput", + "inputs": [ + { + "name": "duplicateToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "EndTimeBeforeStartTime", + "inputs": [] + }, + { + "type": "error", + "name": "FeeTooLarge", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "IncorrectAmounts", + "inputs": [] + }, + { + "type": "error", + "name": "InputAndOutputFees", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidCosignature", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidCosignerInput", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidCosignerOutput", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidFeeToken", + "inputs": [ + { + "name": "feeToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InvalidReactor", + "inputs": [] + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + }, + { + "type": "error", + "name": "NoExclusiveOverride", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod V2DutchOrderReactor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60a06040523480156200001157600080fd5b50604051620035e8380380620035e88339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b6080516134cf620001196000396000818160e00152611a5301526134cf6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046124e4565b6101eb565b005b6100b96100c9366004612592565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96101393660046125d4565b6104c5565b34801561014a57600080fd5b506100b9610159366004612672565b610683565b6100b961016c366004612696565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612672565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56126fa565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016128fd565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff811115610388576103886126cb565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666126fa565b905060200281019061047891906129c3565b6109f6565b82828151811061048f5761048f6126fa565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e96126cb565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666126fa565b8282815181106105d9576105d96126fa565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016128fd565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696126fa565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612a01565b810190610a7c9190612e40565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b089190612a01565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e6126fa565b60200260200101519050610ba181611468565b610bab8133611958565b610bb58133611a51565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf6126fa565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c166126fa565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d5d9092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca96126fa565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611da4565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061338d60208301396040518060c00160405280608d815260200161340d608d9139604051602001610e9193929190612f3d565b60405160208183030381529060405280519060200120610eb48360000151611e3e565b6020808501516040808701518051938101519101516060880151929392610eda90611ed8565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612f80565b9150915060008360a00151604081518110610fc257610fc26126fa565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612fa4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001613034565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a6126fa565b602002602001015190506000836080015160a001518381518110611240576112406126fa565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686611f76565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611392576113926126cb565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e6126fa565b60200260200101518686611ff3565b83828151811061143f5761143f6126fa565b6020908102919091010152600101611401565b50509392505050565b61067d84848484426120c3565b60015473ffffffffffffffffffffffffffffffffffffffff166114885750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906114df90859060040161305a565b600060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611542919081019061306d565b604083015151815191925090600061155a828461316c565b67ffffffffffffffff811115611572576115726126cb565b6040519080825280602002602001820160405280156115db57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115905790505b50905060005b8381101561162c57856040015181815181106115ff576115ff6126fa565b6020026020010151828281518110611619576116196126fa565b60209081029190910101526001016115e1565b5060008060005b8481101561194757600087828151811061164f5761164f6126fa565b6020026020010151905060005b8281101561170d57888181518110611676576116766126fa565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117055781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161165c565b506000805b888110156117ce5760008b604001518281518110611732576117326126fa565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036117c55785156117af576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117be908461316c565b9250600196505b50600101611712565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361184757841561182e576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b01510151611840908261316c565b9050600193505b8060000361189c5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6118aa81600561271061216f565b8260200151111561191d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611932576119326126fa565b60209081029190910101525050600101611633565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146119a9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611a25908490869060040161317f565b60006040518083038186803b158015611a3d57600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611b11846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b611b1b85856121ab565b856000015160200151866080015160405180608001604052806052815260200161338d605291396040518060c00160405280608d815260200161340d608d91396040518060600160405280602e81526020016133df602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611cc2949392916020016131ae565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611d2f9695949392600401613237565b600060405180830381600087803b158015611d4957600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d825761035f8282611da4565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846121f2565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dfe576040519150601f19603f3d011682016040523d82523d6000602084013e611e03565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d815260200161340d608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ef857611ef86126cb565b6040519080825280601f01601f191660200182016040528015611f22576020820181803683370190505b50905060005b8351811015611f67576000611f55858381518110611f4857611f486126fa565b60200260200101516122dd565b60208381028501015250600101611f28565b50805160209091012092915050565b6000838503611f86575083611feb565b828211611fbf576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611fcd575082611feb565b428310611fdb575083611feb565b611fe88383428888612354565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612052576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612068856020015186604001518686611f76565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b6120ce84848361236f565b6121685781612109576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561216557600082828151811061212e5761212e6126fa565b6020026020010151905061215785612710612149919061316c565b6020830151906127106123ba565b602090910152600101612111565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026121a457600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b600060405180608001604052806052815260200161338d60529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600061236386868686866123fe565b90505b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416158061239357508282115b80611feb575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123ef57600080fd5b50910281810615159190040190565b600084841061240e575080612366565b600061241a87866132f2565b9050600061242888886132f2565b905060008585121561245a5761244a8383612443888a613305565b919061216f565b6124539061332c565b905061246c565b61246983836124438989613305565b90505b6124768187613364565b9998505050505050505050565b60006040828403121561249557600080fd5b50919050565b60008083601f8401126124ad57600080fd5b50813567ffffffffffffffff8111156124c557600080fd5b6020830191508360208285010111156124dd57600080fd5b9250929050565b6000806000604084860312156124f957600080fd5b833567ffffffffffffffff8082111561251157600080fd5b61251d87838801612483565b9450602086013591508082111561253357600080fd5b506125408682870161249b565b9497909650939450505050565b60008083601f84011261255f57600080fd5b50813567ffffffffffffffff81111561257757600080fd5b6020830191508360208260051b85010111156124dd57600080fd5b600080602083850312156125a557600080fd5b823567ffffffffffffffff8111156125bc57600080fd5b6125c88582860161254d565b90969095509350505050565b600080600080604085870312156125ea57600080fd5b843567ffffffffffffffff8082111561260257600080fd5b61260e8883890161254d565b9096509450602087013591508082111561262757600080fd5b506126348782880161249b565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b803561266d81612640565b919050565b60006020828403121561268457600080fd5b813561268f81612640565b9392505050565b6000602082840312156126a857600080fd5b813567ffffffffffffffff8111156126bf57600080fd5b611feb84828501612483565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561274457818101518382015260200161272c565b50506000910152565b60008151808452612765816020860160208601612729565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156127f7578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016127ac565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526128766101a085018261274d565b905060208301516128b46020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128cc8282612797565b915050606083015184820360a08601526128e6828261274d565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612960868351612802565b95509382019390820190600101612926565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126129f757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a3657600080fd5b83018035915067ffffffffffffffff821115612a5157600080fd5b6020019150368190038213156124dd57600080fd5b60405160c0810167ffffffffffffffff81118282101715612a8957612a896126cb565b60405290565b6040516060810167ffffffffffffffff81118282101715612a8957612a896126cb565b6040516080810167ffffffffffffffff81118282101715612a8957612a896126cb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b1c57612b1c6126cb565b604052919050565b600082601f830112612b3557600080fd5b813567ffffffffffffffff811115612b4f57612b4f6126cb565b612b8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ad5565b818152846020838601011115612b9557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612bc457600080fd5b612bcc612a66565b90508135612bd981612640565b81526020820135612be981612640565b8060208301525060408201356040820152606082013560608201526080820135612c1281612640565b608082015260a082013567ffffffffffffffff811115612c3157600080fd5b612c3d84828501612b24565b60a08301525092915050565b600060608284031215612c5b57600080fd5b612c63612a8f565b90508135612c7081612640565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612ca857612ca86126cb565b5060051b60200190565b600082601f830112612cc357600080fd5b81356020612cd8612cd383612c8e565b612ad5565b82815260079290921b84018101918181019086841115612cf757600080fd5b8286015b84811015612d5c5760808189031215612d145760008081fd5b612d1c612ab2565b8135612d2781612640565b8152818501358582015260408083013590820152606080830135612d4a81612640565b90820152835291830191608001612cfb565b509695505050505050565b600060c08284031215612d7957600080fd5b612d81612a66565b905081358152602080830135818301526040830135612d9f81612640565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612dd457600080fd5b8301601f81018513612de557600080fd5b8035612df3612cd382612c8e565b81815260059190911b82018301908381019087831115612e1257600080fd5b928401925b82841015612e3057833582529284019290840190612e17565b60a0860152509295945050505050565b600060208284031215612e5257600080fd5b813567ffffffffffffffff80821115612e6a57600080fd5b908301906101008286031215612e7f57600080fd5b612e87612a66565b823582811115612e9657600080fd5b612ea287828601612bb2565b825250612eb160208401612662565b6020820152612ec38660408501612c49565b604082015260a083013582811115612eda57600080fd5b612ee687828601612cb2565b60608301525060c083013582811115612efe57600080fd5b612f0a87828601612d67565b60808301525060e083013582811115612f2257600080fd5b612f2e87828601612b24565b60a08301525095945050505050565b60008451612f4f818460208901612729565b845190830190612f63818360208901612729565b8451910190612f76818360208801612729565b0195945050505050565b60008060408385031215612f9357600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612d5c5783518252928401926001929092019190840190613014565b8281526000825161304c816020850160208701612729565b919091016020019392505050565b60208152600061268f6020830184612802565b6000602080838503121561308057600080fd5b825167ffffffffffffffff81111561309757600080fd5b8301601f810185136130a857600080fd5b80516130b6612cd382612c8e565b818152606091820283018401918482019190888411156130d557600080fd5b938501935b838510156131315780858a0312156130f25760008081fd5b6130fa612a8f565b855161310581612640565b8152858701518782015260408087015161311e81612640565b90820152835293840193918501916130da565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156121ec576121ec61313d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611feb6040830184612802565b7f563244757463684f72646572207769746e6573732900000000000000000000008152600085516131e6816015850160208a01612729565b8551908301906131fd816015840160208a01612729565b8551910190613213816015840160208901612729565b8451910190613229816015840160208801612729565b016015019695505050505050565b6000610140613267838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526132a86080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526132dd8184018661274d565b9050828103610120840152612476818561274d565b818103818111156121ec576121ec61313d565b81810360008312801583831316838312821617156133255761332561313d565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361335d5761335d61313d565b5060000390565b80820182811260008312801582168215821617156133845761338461313d565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212201b7d41a288872094e2643d8efd2d7d2fa97b6432325500b0029b8b9a405d2e4464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x005\xE88\x03\x80b\x005\xE8\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa4\xCFb\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x1AS\x01Ra4\xCF`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$\xE4V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a%\x92V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%\xD4V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a&rV[a\x06\x83V[a\0\xB9a\x01l6`\x04a&\x96V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a&rV[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&\xFAV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xBEV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\xC3V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BmV[a\x04\xB5\x81a\x0B\xBEV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xBEV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&\xFAV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BmV[a\x08\x86\x81a\x0B\xBEV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a*\x01V[\x81\x01\x90a\n|\x91\x90a.@V[\x90P`\0a\n\x89\x82a\r\x11V[\x90Pa\n\x95\x81\x83a\x0FCV[a\n\x9E\x82a\x11BV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xCF\x92\x90\x91\x90a\x12\xA2V[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xF3\x92\x91\x90a\x13tV[\x81R` \x01\x85\x80` \x01\x90a\x0B\x08\x91\x90a*\x01V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0Bf\x92\x86\x92\x90a\x14[V[PP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x8EWa\x0B\x8Ea&\xFAV[` \x02` \x01\x01Q\x90Pa\x0B\xA1\x81a\x14hV[a\x0B\xAB\x813a\x19XV[a\x0B\xB5\x813a\x1AQV[P`\x01\x01a\x0BrV[\x80Q`\0[\x81\x81\x10\x15a\r\0W`\0\x83\x82\x81Q\x81\x10a\x0B\xDFWa\x0B\xDFa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C`W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x16Wa\x0C\x16a&\xFAV[` \x02` \x01\x01Q\x90Pa\x0CW\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D]\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xF6V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\xA9Wa\x0C\xA9a&\xFAV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xEE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xC3V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1D\xA4V[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\0\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a3\x8D` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q` \x01a\x0E\x91\x93\x92\x91\x90a/=V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\xB4\x83`\0\x01Qa\x1E>V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xDA\x90a\x1E\xD8V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0F\x8AW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0F\xA5\x91\x90a/\x80V[\x91P\x91P`\0\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\xC2Wa\x0F\xC2a&\xFAV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P`\0`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xEC\x91\x90a/\xA4V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10(\x92\x91` \x01a04V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10\xA4W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x11\x03WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11:W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11\xABW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11\x99W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xF2W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0[\x81``\x01QQ\x81\x10\x15a\x04\xC1W`\0\x82``\x01Q\x82\x81Q\x81\x10a\x12\x1AWa\x12\x1Aa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12@Wa\x12@a&\xFAV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12\x98W\x81` \x01Q\x81\x10\x15a\x12\x90W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xF5V[a\x12\xDC`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x13\x1EW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x134\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x92Wa\x13\x92a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB0W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x14RWa\x14-\x86\x82\x81Q\x81\x10a\x14\x1EWa\x14\x1Ea&\xFAV[` \x02` \x01\x01Q\x86\x86a\x1F\xF3V[\x83\x82\x81Q\x81\x10a\x14?Wa\x14?a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x01V[PP\x93\x92PPPV[a\x06}\x84\x84\x84\x84Ba \xC3V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14\x88WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\xDF\x90\x85\x90`\x04\x01a0ZV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xFCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a0mV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x15Z\x82\x84a1lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15rWa\x15ra&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\xDBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15\x90W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x16,W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xFFWa\x15\xFFa&\xFAV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x19Wa\x16\x19a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\xE1V[P`\0\x80`\0[\x84\x81\x10\x15a\x19GW`\0\x87\x82\x81Q\x81\x10a\x16OWa\x16Oa&\xFAV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\rW\x88\x81\x81Q\x81\x10a\x16vWa\x16va&\xFAV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x05W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x16\\V[P`\0\x80[\x88\x81\x10\x15a\x17\xCEW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x172Wa\x172a&\xFAV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xC5W\x85\x15a\x17\xAFW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17\xBE\x90\x84a1lV[\x92P`\x01\x96P[P`\x01\x01a\x17\x12V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18GW\x84\x15a\x18.W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18@\x90\x82a1lV[\x90P`\x01\x93P[\x80`\0\x03a\x18\x9CW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18\xAA\x81`\x05a'\x10a!oV[\x82` \x01Q\x11\x15a\x19\x1DW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x192Wa\x192a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x163V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19\xA9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A%\x90\x84\x90\x86\x90`\x04\x01a1\x7FV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A=W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x11\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1B\x1B\x85\x85a!\xABV[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a3\xDF`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xC2\x94\x93\x92\x91` \x01a1\xAEV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1D/\x96\x95\x94\x93\x92`\x04\x01a27V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1DIW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D\x82Wa\x03_\x82\x82a\x1D\xA4V[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xF2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1E\x03V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0F&\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xF8Wa\x1E\xF8a&\xCBV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1F\"W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1FgW`\0a\x1FU\x85\x83\x81Q\x81\x10a\x1FHWa\x1FHa&\xFAV[` \x02` \x01\x01Qa\"\xDDV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1F(V[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x83\x85\x03a\x1F\x86WP\x83a\x1F\xEBV[\x82\x82\x11a\x1F\xBFW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1F\xCDWP\x82a\x1F\xEBV[B\x83\x10a\x1F\xDBWP\x83a\x1F\xEBV[a\x1F\xE8\x83\x83B\x88\x88a#TV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a RW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a h\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a \xCE\x84\x84\x83a#oV[a!hW\x81a!\tW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a!eW`\0\x82\x82\x81Q\x81\x10a!.Wa!.a&\xFAV[` \x02` \x01\x01Q\x90Pa!W\x85a'\x10a!I\x91\x90a1lV[` \x83\x01Q\x90a'\x10a#\xBAV[` \x90\x91\x01R`\x01\x01a!\x11V[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xA4W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a!hW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0F&\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0a#c\x86\x86\x86\x86\x86a#\xFEV[\x90P[\x95\x94PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x93WP\x82\x82\x11[\x80a\x1F\xEBWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xEFW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a$\x0EWP\x80a#fV[`\0a$\x1A\x87\x86a2\xF2V[\x90P`\0a$(\x88\x88a2\xF2V[\x90P`\0\x85\x85\x12\x15a$ZWa$J\x83\x83a$C\x88\x8Aa3\x05V[\x91\x90a!oV[a$S\x90a3,V[\x90Pa$lV[a$i\x83\x83a$C\x89\x89a3\x05V[\x90P[a$v\x81\x87a3dV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a$\x95W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\xADW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xC5W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$\xF9W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%\x11W`\0\x80\xFD[a%\x1D\x87\x83\x88\x01a$\x83V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a%3W`\0\x80\xFD[Pa%@\x86\x82\x87\x01a$\x9BV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a%_W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%wW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\xA5W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xBCW`\0\x80\xFD[a%\xC8\x85\x82\x86\x01a%MV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%\xEAW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a&\x02W`\0\x80\xFD[a&\x0E\x88\x83\x89\x01a%MV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a&'W`\0\x80\xFD[Pa&4\x87\x82\x88\x01a$\x9BV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a&m\x81a&@V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a&\x84W`\0\x80\xFD[\x815a&\x8F\x81a&@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a&\xA8W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\xBFW`\0\x80\xFD[a\x1F\xEB\x84\x82\x85\x01a$\x83V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a'DW\x81\x81\x01Q\x83\x82\x01R` \x01a',V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra'e\x81` \x86\x01` \x86\x01a')V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'\xF7W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\xACV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra(va\x01\xA0\x85\x01\x82a'MV[\x90P` \x83\x01Qa(\xB4` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(\xCC\x82\x82a'\x97V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(\xE6\x82\x82a'MV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a)rW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra)`\x86\x83Qa(\x02V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a)&V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)\xF7W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a*6W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*QW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$\xDDW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a+\x1CWa+\x1Ca&\xCBV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a+5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+OWa+Oa&\xCBV[a+\x80` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*\xD5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a+\x95W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+\xC4W`\0\x80\xFD[a+\xCCa*fV[\x90P\x815a+\xD9\x81a&@V[\x81R` \x82\x015a+\xE9\x81a&@V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a,\x12\x81a&@V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,1W`\0\x80\xFD[a,=\x84\x82\x85\x01a+$V[`\xA0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a,[W`\0\x80\xFD[a,ca*\x8FV[\x90P\x815a,p\x81a&@V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xA8Wa,\xA8a&\xCBV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,\xC3W`\0\x80\xFD[\x815` a,\xD8a,\xD3\x83a,\x8EV[a*\xD5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\xF7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a-\\W`\x80\x81\x89\x03\x12\x15a-\x14W`\0\x80\x81\xFD[a-\x1Ca*\xB2V[\x815a-'\x81a&@V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a-J\x81a&@V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,\xFBV[P\x96\x95PPPPPPV[`\0`\xC0\x82\x84\x03\x12\x15a-yW`\0\x80\xFD[a-\x81a*fV[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a-\x9F\x81a&@V[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\xD4W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-\xE5W`\0\x80\xFD[\x805a-\xF3a,\xD3\x82a,\x8EV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a.\x12W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a.0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a.\x17V[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.RW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a.jW`\0\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a.\x7FW`\0\x80\xFD[a.\x87a*fV[\x825\x82\x81\x11\x15a.\x96W`\0\x80\xFD[a.\xA2\x87\x82\x86\x01a+\xB2V[\x82RPa.\xB1` \x84\x01a&bV[` \x82\x01Ra.\xC3\x86`@\x85\x01a,IV[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\xDAW`\0\x80\xFD[a.\xE6\x87\x82\x86\x01a,\xB2V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.\xFEW`\0\x80\xFD[a/\n\x87\x82\x86\x01a-gV[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a/\"W`\0\x80\xFD[a/.\x87\x82\x86\x01a+$V[`\xA0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa/O\x81\x84` \x89\x01a')V[\x84Q\x90\x83\x01\x90a/c\x81\x83` \x89\x01a')V[\x84Q\x91\x01\x90a/v\x81\x83` \x88\x01a')V[\x01\x95\x94PPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a/\x93W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a-\\W\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a0\x14V[\x82\x81R`\0\x82Qa0L\x81` \x85\x01` \x87\x01a')V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R`\0a&\x8F` \x83\x01\x84a(\x02V[`\0` \x80\x83\x85\x03\x12\x15a0\x80W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\x97W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a0\xA8W`\0\x80\xFD[\x80Qa0\xB6a,\xD3\x82a,\x8EV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a0\xD5W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a11W\x80\x85\x8A\x03\x12\x15a0\xF2W`\0\x80\x81\xFD[a0\xFAa*\x8FV[\x85Qa1\x05\x81a&@V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa1\x1E\x81a&@V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\xDAV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a!\xECWa!\xECa1=V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1F\xEB`@\x83\x01\x84a(\x02V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x85Qa1\xE6\x81`\x15\x85\x01` \x8A\x01a')V[\x85Q\x90\x83\x01\x90a1\xFD\x81`\x15\x84\x01` \x8A\x01a')V[\x85Q\x91\x01\x90a2\x13\x81`\x15\x84\x01` \x89\x01a')V[\x84Q\x91\x01\x90a2)\x81`\x15\x84\x01` \x88\x01a')V[\x01`\x15\x01\x96\x95PPPPPPV[`\0a\x01@a2g\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra2\xA8`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra2\xDD\x81\x84\x01\x86a'MV[\x90P\x82\x81\x03a\x01 \x84\x01Ra$v\x81\x85a'MV[\x81\x81\x03\x81\x81\x11\x15a!\xECWa!\xECa1=V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a3%Wa3%a1=V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a3]Wa3]a1=V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a3\x84Wa3\x84a1=V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x1B}A\xA2\x88\x87 \x94\xE2d=\x8E\xFD-}/\xA9{d22U\0\xB0\x02\x9B\x8B\x9A@].DdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046124e4565b6101eb565b005b6100b96100c9366004612592565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96101393660046125d4565b6104c5565b34801561014a57600080fd5b506100b9610159366004612672565b610683565b6100b961016c366004612696565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612672565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56126fa565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016128fd565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff811115610388576103886126cb565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666126fa565b905060200281019061047891906129c3565b6109f6565b82828151811061048f5761048f6126fa565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e96126cb565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666126fa565b8282815181106105d9576105d96126fa565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016128fd565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696126fa565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612a01565b810190610a7c9190612e40565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b089190612a01565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e6126fa565b60200260200101519050610ba181611468565b610bab8133611958565b610bb58133611a51565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf6126fa565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c166126fa565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d5d9092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca96126fa565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611da4565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061338d60208301396040518060c00160405280608d815260200161340d608d9139604051602001610e9193929190612f3d565b60405160208183030381529060405280519060200120610eb48360000151611e3e565b6020808501516040808701518051938101519101516060880151929392610eda90611ed8565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612f80565b9150915060008360a00151604081518110610fc257610fc26126fa565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612fa4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001613034565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a6126fa565b602002602001015190506000836080015160a001518381518110611240576112406126fa565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686611f76565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611392576113926126cb565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e6126fa565b60200260200101518686611ff3565b83828151811061143f5761143f6126fa565b6020908102919091010152600101611401565b50509392505050565b61067d84848484426120c3565b60015473ffffffffffffffffffffffffffffffffffffffff166114885750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906114df90859060040161305a565b600060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611542919081019061306d565b604083015151815191925090600061155a828461316c565b67ffffffffffffffff811115611572576115726126cb565b6040519080825280602002602001820160405280156115db57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115905790505b50905060005b8381101561162c57856040015181815181106115ff576115ff6126fa565b6020026020010151828281518110611619576116196126fa565b60209081029190910101526001016115e1565b5060008060005b8481101561194757600087828151811061164f5761164f6126fa565b6020026020010151905060005b8281101561170d57888181518110611676576116766126fa565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117055781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161165c565b506000805b888110156117ce5760008b604001518281518110611732576117326126fa565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036117c55785156117af576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117be908461316c565b9250600196505b50600101611712565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361184757841561182e576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b01510151611840908261316c565b9050600193505b8060000361189c5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6118aa81600561271061216f565b8260200151111561191d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611932576119326126fa565b60209081029190910101525050600101611633565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146119a9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611a25908490869060040161317f565b60006040518083038186803b158015611a3d57600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611b11846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b611b1b85856121ab565b856000015160200151866080015160405180608001604052806052815260200161338d605291396040518060c00160405280608d815260200161340d608d91396040518060600160405280602e81526020016133df602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611cc2949392916020016131ae565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611d2f9695949392600401613237565b600060405180830381600087803b158015611d4957600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d825761035f8282611da4565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846121f2565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dfe576040519150601f19603f3d011682016040523d82523d6000602084013e611e03565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d815260200161340d608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ef857611ef86126cb565b6040519080825280601f01601f191660200182016040528015611f22576020820181803683370190505b50905060005b8351811015611f67576000611f55858381518110611f4857611f486126fa565b60200260200101516122dd565b60208381028501015250600101611f28565b50805160209091012092915050565b6000838503611f86575083611feb565b828211611fbf576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611fcd575082611feb565b428310611fdb575083611feb565b611fe88383428888612354565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612052576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612068856020015186604001518686611f76565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b6120ce84848361236f565b6121685781612109576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561216557600082828151811061212e5761212e6126fa565b6020026020010151905061215785612710612149919061316c565b6020830151906127106123ba565b602090910152600101612111565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026121a457600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b600060405180608001604052806052815260200161338d60529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600061236386868686866123fe565b90505b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416158061239357508282115b80611feb575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123ef57600080fd5b50910281810615159190040190565b600084841061240e575080612366565b600061241a87866132f2565b9050600061242888886132f2565b905060008585121561245a5761244a8383612443888a613305565b919061216f565b6124539061332c565b905061246c565b61246983836124438989613305565b90505b6124768187613364565b9998505050505050505050565b60006040828403121561249557600080fd5b50919050565b60008083601f8401126124ad57600080fd5b50813567ffffffffffffffff8111156124c557600080fd5b6020830191508360208285010111156124dd57600080fd5b9250929050565b6000806000604084860312156124f957600080fd5b833567ffffffffffffffff8082111561251157600080fd5b61251d87838801612483565b9450602086013591508082111561253357600080fd5b506125408682870161249b565b9497909650939450505050565b60008083601f84011261255f57600080fd5b50813567ffffffffffffffff81111561257757600080fd5b6020830191508360208260051b85010111156124dd57600080fd5b600080602083850312156125a557600080fd5b823567ffffffffffffffff8111156125bc57600080fd5b6125c88582860161254d565b90969095509350505050565b600080600080604085870312156125ea57600080fd5b843567ffffffffffffffff8082111561260257600080fd5b61260e8883890161254d565b9096509450602087013591508082111561262757600080fd5b506126348782880161249b565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b803561266d81612640565b919050565b60006020828403121561268457600080fd5b813561268f81612640565b9392505050565b6000602082840312156126a857600080fd5b813567ffffffffffffffff8111156126bf57600080fd5b611feb84828501612483565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561274457818101518382015260200161272c565b50506000910152565b60008151808452612765816020860160208601612729565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156127f7578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016127ac565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526128766101a085018261274d565b905060208301516128b46020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128cc8282612797565b915050606083015184820360a08601526128e6828261274d565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612960868351612802565b95509382019390820190600101612926565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126129f757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a3657600080fd5b83018035915067ffffffffffffffff821115612a5157600080fd5b6020019150368190038213156124dd57600080fd5b60405160c0810167ffffffffffffffff81118282101715612a8957612a896126cb565b60405290565b6040516060810167ffffffffffffffff81118282101715612a8957612a896126cb565b6040516080810167ffffffffffffffff81118282101715612a8957612a896126cb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b1c57612b1c6126cb565b604052919050565b600082601f830112612b3557600080fd5b813567ffffffffffffffff811115612b4f57612b4f6126cb565b612b8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ad5565b818152846020838601011115612b9557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612bc457600080fd5b612bcc612a66565b90508135612bd981612640565b81526020820135612be981612640565b8060208301525060408201356040820152606082013560608201526080820135612c1281612640565b608082015260a082013567ffffffffffffffff811115612c3157600080fd5b612c3d84828501612b24565b60a08301525092915050565b600060608284031215612c5b57600080fd5b612c63612a8f565b90508135612c7081612640565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612ca857612ca86126cb565b5060051b60200190565b600082601f830112612cc357600080fd5b81356020612cd8612cd383612c8e565b612ad5565b82815260079290921b84018101918181019086841115612cf757600080fd5b8286015b84811015612d5c5760808189031215612d145760008081fd5b612d1c612ab2565b8135612d2781612640565b8152818501358582015260408083013590820152606080830135612d4a81612640565b90820152835291830191608001612cfb565b509695505050505050565b600060c08284031215612d7957600080fd5b612d81612a66565b905081358152602080830135818301526040830135612d9f81612640565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612dd457600080fd5b8301601f81018513612de557600080fd5b8035612df3612cd382612c8e565b81815260059190911b82018301908381019087831115612e1257600080fd5b928401925b82841015612e3057833582529284019290840190612e17565b60a0860152509295945050505050565b600060208284031215612e5257600080fd5b813567ffffffffffffffff80821115612e6a57600080fd5b908301906101008286031215612e7f57600080fd5b612e87612a66565b823582811115612e9657600080fd5b612ea287828601612bb2565b825250612eb160208401612662565b6020820152612ec38660408501612c49565b604082015260a083013582811115612eda57600080fd5b612ee687828601612cb2565b60608301525060c083013582811115612efe57600080fd5b612f0a87828601612d67565b60808301525060e083013582811115612f2257600080fd5b612f2e87828601612b24565b60a08301525095945050505050565b60008451612f4f818460208901612729565b845190830190612f63818360208901612729565b8451910190612f76818360208801612729565b0195945050505050565b60008060408385031215612f9357600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612d5c5783518252928401926001929092019190840190613014565b8281526000825161304c816020850160208701612729565b919091016020019392505050565b60208152600061268f6020830184612802565b6000602080838503121561308057600080fd5b825167ffffffffffffffff81111561309757600080fd5b8301601f810185136130a857600080fd5b80516130b6612cd382612c8e565b818152606091820283018401918482019190888411156130d557600080fd5b938501935b838510156131315780858a0312156130f25760008081fd5b6130fa612a8f565b855161310581612640565b8152858701518782015260408087015161311e81612640565b90820152835293840193918501916130da565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156121ec576121ec61313d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611feb6040830184612802565b7f563244757463684f72646572207769746e6573732900000000000000000000008152600085516131e6816015850160208a01612729565b8551908301906131fd816015840160208a01612729565b8551910190613213816015840160208901612729565b8451910190613229816015840160208801612729565b016015019695505050505050565b6000610140613267838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526132a86080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526132dd8184018661274d565b9050828103610120840152612476818561274d565b818103818111156121ec576121ec61313d565b81810360008312801583831316838312821617156133255761332561313d565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361335d5761335d61313d565b5060000390565b80820182811260008312801582168215821617156133845761338461313d565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212201b7d41a288872094e2643d8efd2d7d2fa97b6432325500b0029b8b9a405d2e4464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$\xE4V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a%\x92V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%\xD4V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a&rV[a\x06\x83V[a\0\xB9a\x01l6`\x04a&\x96V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a&rV[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&\xFAV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xBEV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\xC3V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BmV[a\x04\xB5\x81a\x0B\xBEV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xBEV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&\xFAV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BmV[a\x08\x86\x81a\x0B\xBEV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a*\x01V[\x81\x01\x90a\n|\x91\x90a.@V[\x90P`\0a\n\x89\x82a\r\x11V[\x90Pa\n\x95\x81\x83a\x0FCV[a\n\x9E\x82a\x11BV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xCF\x92\x90\x91\x90a\x12\xA2V[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xF3\x92\x91\x90a\x13tV[\x81R` \x01\x85\x80` \x01\x90a\x0B\x08\x91\x90a*\x01V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0Bf\x92\x86\x92\x90a\x14[V[PP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x8EWa\x0B\x8Ea&\xFAV[` \x02` \x01\x01Q\x90Pa\x0B\xA1\x81a\x14hV[a\x0B\xAB\x813a\x19XV[a\x0B\xB5\x813a\x1AQV[P`\x01\x01a\x0BrV[\x80Q`\0[\x81\x81\x10\x15a\r\0W`\0\x83\x82\x81Q\x81\x10a\x0B\xDFWa\x0B\xDFa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C`W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x16Wa\x0C\x16a&\xFAV[` \x02` \x01\x01Q\x90Pa\x0CW\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D]\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xF6V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\xA9Wa\x0C\xA9a&\xFAV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xEE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xC3V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1D\xA4V[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\0\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a3\x8D` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q` \x01a\x0E\x91\x93\x92\x91\x90a/=V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\xB4\x83`\0\x01Qa\x1E>V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xDA\x90a\x1E\xD8V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0F\x8AW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0F\xA5\x91\x90a/\x80V[\x91P\x91P`\0\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\xC2Wa\x0F\xC2a&\xFAV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P`\0`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xEC\x91\x90a/\xA4V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10(\x92\x91` \x01a04V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10\xA4W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x11\x03WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11:W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11\xABW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11\x99W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xF2W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0[\x81``\x01QQ\x81\x10\x15a\x04\xC1W`\0\x82``\x01Q\x82\x81Q\x81\x10a\x12\x1AWa\x12\x1Aa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12@Wa\x12@a&\xFAV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12\x98W\x81` \x01Q\x81\x10\x15a\x12\x90W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xF5V[a\x12\xDC`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x13\x1EW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x134\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x92Wa\x13\x92a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB0W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x14RWa\x14-\x86\x82\x81Q\x81\x10a\x14\x1EWa\x14\x1Ea&\xFAV[` \x02` \x01\x01Q\x86\x86a\x1F\xF3V[\x83\x82\x81Q\x81\x10a\x14?Wa\x14?a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x01V[PP\x93\x92PPPV[a\x06}\x84\x84\x84\x84Ba \xC3V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14\x88WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\xDF\x90\x85\x90`\x04\x01a0ZV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xFCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a0mV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x15Z\x82\x84a1lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15rWa\x15ra&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\xDBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15\x90W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x16,W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xFFWa\x15\xFFa&\xFAV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x19Wa\x16\x19a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\xE1V[P`\0\x80`\0[\x84\x81\x10\x15a\x19GW`\0\x87\x82\x81Q\x81\x10a\x16OWa\x16Oa&\xFAV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\rW\x88\x81\x81Q\x81\x10a\x16vWa\x16va&\xFAV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x05W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x16\\V[P`\0\x80[\x88\x81\x10\x15a\x17\xCEW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x172Wa\x172a&\xFAV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xC5W\x85\x15a\x17\xAFW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17\xBE\x90\x84a1lV[\x92P`\x01\x96P[P`\x01\x01a\x17\x12V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18GW\x84\x15a\x18.W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18@\x90\x82a1lV[\x90P`\x01\x93P[\x80`\0\x03a\x18\x9CW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18\xAA\x81`\x05a'\x10a!oV[\x82` \x01Q\x11\x15a\x19\x1DW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x192Wa\x192a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x163V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19\xA9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A%\x90\x84\x90\x86\x90`\x04\x01a1\x7FV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A=W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x11\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1B\x1B\x85\x85a!\xABV[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a3\xDF`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xC2\x94\x93\x92\x91` \x01a1\xAEV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1D/\x96\x95\x94\x93\x92`\x04\x01a27V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1DIW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D\x82Wa\x03_\x82\x82a\x1D\xA4V[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xF2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1E\x03V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0F&\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xF8Wa\x1E\xF8a&\xCBV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1F\"W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1FgW`\0a\x1FU\x85\x83\x81Q\x81\x10a\x1FHWa\x1FHa&\xFAV[` \x02` \x01\x01Qa\"\xDDV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1F(V[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x83\x85\x03a\x1F\x86WP\x83a\x1F\xEBV[\x82\x82\x11a\x1F\xBFW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1F\xCDWP\x82a\x1F\xEBV[B\x83\x10a\x1F\xDBWP\x83a\x1F\xEBV[a\x1F\xE8\x83\x83B\x88\x88a#TV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a RW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a h\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a \xCE\x84\x84\x83a#oV[a!hW\x81a!\tW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a!eW`\0\x82\x82\x81Q\x81\x10a!.Wa!.a&\xFAV[` \x02` \x01\x01Q\x90Pa!W\x85a'\x10a!I\x91\x90a1lV[` \x83\x01Q\x90a'\x10a#\xBAV[` \x90\x91\x01R`\x01\x01a!\x11V[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xA4W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a!hW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0F&\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0a#c\x86\x86\x86\x86\x86a#\xFEV[\x90P[\x95\x94PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x93WP\x82\x82\x11[\x80a\x1F\xEBWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xEFW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a$\x0EWP\x80a#fV[`\0a$\x1A\x87\x86a2\xF2V[\x90P`\0a$(\x88\x88a2\xF2V[\x90P`\0\x85\x85\x12\x15a$ZWa$J\x83\x83a$C\x88\x8Aa3\x05V[\x91\x90a!oV[a$S\x90a3,V[\x90Pa$lV[a$i\x83\x83a$C\x89\x89a3\x05V[\x90P[a$v\x81\x87a3dV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a$\x95W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\xADW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xC5W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$\xF9W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%\x11W`\0\x80\xFD[a%\x1D\x87\x83\x88\x01a$\x83V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a%3W`\0\x80\xFD[Pa%@\x86\x82\x87\x01a$\x9BV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a%_W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%wW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\xA5W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xBCW`\0\x80\xFD[a%\xC8\x85\x82\x86\x01a%MV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%\xEAW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a&\x02W`\0\x80\xFD[a&\x0E\x88\x83\x89\x01a%MV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a&'W`\0\x80\xFD[Pa&4\x87\x82\x88\x01a$\x9BV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a&m\x81a&@V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a&\x84W`\0\x80\xFD[\x815a&\x8F\x81a&@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a&\xA8W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\xBFW`\0\x80\xFD[a\x1F\xEB\x84\x82\x85\x01a$\x83V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a'DW\x81\x81\x01Q\x83\x82\x01R` \x01a',V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra'e\x81` \x86\x01` \x86\x01a')V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'\xF7W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\xACV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra(va\x01\xA0\x85\x01\x82a'MV[\x90P` \x83\x01Qa(\xB4` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(\xCC\x82\x82a'\x97V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(\xE6\x82\x82a'MV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a)rW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra)`\x86\x83Qa(\x02V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a)&V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)\xF7W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a*6W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*QW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$\xDDW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a+\x1CWa+\x1Ca&\xCBV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a+5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+OWa+Oa&\xCBV[a+\x80` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*\xD5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a+\x95W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+\xC4W`\0\x80\xFD[a+\xCCa*fV[\x90P\x815a+\xD9\x81a&@V[\x81R` \x82\x015a+\xE9\x81a&@V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a,\x12\x81a&@V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,1W`\0\x80\xFD[a,=\x84\x82\x85\x01a+$V[`\xA0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a,[W`\0\x80\xFD[a,ca*\x8FV[\x90P\x815a,p\x81a&@V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xA8Wa,\xA8a&\xCBV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,\xC3W`\0\x80\xFD[\x815` a,\xD8a,\xD3\x83a,\x8EV[a*\xD5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\xF7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a-\\W`\x80\x81\x89\x03\x12\x15a-\x14W`\0\x80\x81\xFD[a-\x1Ca*\xB2V[\x815a-'\x81a&@V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a-J\x81a&@V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,\xFBV[P\x96\x95PPPPPPV[`\0`\xC0\x82\x84\x03\x12\x15a-yW`\0\x80\xFD[a-\x81a*fV[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a-\x9F\x81a&@V[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\xD4W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-\xE5W`\0\x80\xFD[\x805a-\xF3a,\xD3\x82a,\x8EV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a.\x12W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a.0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a.\x17V[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.RW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a.jW`\0\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a.\x7FW`\0\x80\xFD[a.\x87a*fV[\x825\x82\x81\x11\x15a.\x96W`\0\x80\xFD[a.\xA2\x87\x82\x86\x01a+\xB2V[\x82RPa.\xB1` \x84\x01a&bV[` \x82\x01Ra.\xC3\x86`@\x85\x01a,IV[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\xDAW`\0\x80\xFD[a.\xE6\x87\x82\x86\x01a,\xB2V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.\xFEW`\0\x80\xFD[a/\n\x87\x82\x86\x01a-gV[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a/\"W`\0\x80\xFD[a/.\x87\x82\x86\x01a+$V[`\xA0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa/O\x81\x84` \x89\x01a')V[\x84Q\x90\x83\x01\x90a/c\x81\x83` \x89\x01a')V[\x84Q\x91\x01\x90a/v\x81\x83` \x88\x01a')V[\x01\x95\x94PPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a/\x93W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a-\\W\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a0\x14V[\x82\x81R`\0\x82Qa0L\x81` \x85\x01` \x87\x01a')V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R`\0a&\x8F` \x83\x01\x84a(\x02V[`\0` \x80\x83\x85\x03\x12\x15a0\x80W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\x97W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a0\xA8W`\0\x80\xFD[\x80Qa0\xB6a,\xD3\x82a,\x8EV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a0\xD5W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a11W\x80\x85\x8A\x03\x12\x15a0\xF2W`\0\x80\x81\xFD[a0\xFAa*\x8FV[\x85Qa1\x05\x81a&@V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa1\x1E\x81a&@V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\xDAV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a!\xECWa!\xECa1=V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1F\xEB`@\x83\x01\x84a(\x02V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x85Qa1\xE6\x81`\x15\x85\x01` \x8A\x01a')V[\x85Q\x90\x83\x01\x90a1\xFD\x81`\x15\x84\x01` \x8A\x01a')V[\x85Q\x91\x01\x90a2\x13\x81`\x15\x84\x01` \x89\x01a')V[\x84Q\x91\x01\x90a2)\x81`\x15\x84\x01` \x88\x01a')V[\x01`\x15\x01\x96\x95PPPPPPV[`\0a\x01@a2g\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra2\xA8`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra2\xDD\x81\x84\x01\x86a'MV[\x90P\x82\x81\x03a\x01 \x84\x01Ra$v\x81\x85a'MV[\x81\x81\x03\x81\x81\x11\x15a!\xECWa!\xECa1=V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a3%Wa3%a1=V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a3]Wa3]a1=V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a3\x84Wa3\x84a1=V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x1B}A\xA2\x88\x87 \x94\xE2d=\x8E\xFD-}/\xA9{d22U\0\xB0\x02\x9B\x8B\x9A@].DdsolcC\0\x08\x18\x003", + ); + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `DeadlineBeforeEndTime()` and selector `0x773a6187`. +```solidity +error DeadlineBeforeEndTime(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DeadlineBeforeEndTime {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DeadlineBeforeEndTime) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DeadlineBeforeEndTime { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DeadlineBeforeEndTime { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DeadlineBeforeEndTime()"; + const SELECTOR: [u8; 4] = [119u8, 58u8, 97u8, 135u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `DuplicateFeeOutput(address)` and selector `0xfff08303`. +```solidity +error DuplicateFeeOutput(address duplicateToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DuplicateFeeOutput { + pub duplicateToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DuplicateFeeOutput) -> Self { + (value.duplicateToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DuplicateFeeOutput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { duplicateToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DuplicateFeeOutput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DuplicateFeeOutput(address)"; + const SELECTOR: [u8; 4] = [255u8, 240u8, 131u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.duplicateToken, + ), + ) + } + } + }; + /**Custom error with signature `EndTimeBeforeStartTime()` and selector `0x43133453`. +```solidity +error EndTimeBeforeStartTime(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct EndTimeBeforeStartTime {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: EndTimeBeforeStartTime) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for EndTimeBeforeStartTime { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for EndTimeBeforeStartTime { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "EndTimeBeforeStartTime()"; + const SELECTOR: [u8; 4] = [67u8, 19u8, 52u8, 83u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656`. +```solidity +error FeeTooLarge(address token, uint256 amount, address recipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FeeTooLarge { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FeeTooLarge) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FeeTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for FeeTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "FeeTooLarge(address,uint256,address)"; + const SELECTOR: [u8; 4] = [130u8, 231u8, 86u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + } + }; + /**Custom error with signature `IncorrectAmounts()` and selector `0x7c1f8113`. +```solidity +error IncorrectAmounts(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IncorrectAmounts {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IncorrectAmounts) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IncorrectAmounts { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for IncorrectAmounts { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IncorrectAmounts()"; + const SELECTOR: [u8; 4] = [124u8, 31u8, 129u8, 19u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputAndOutputFees()` and selector `0xedc7e2e4`. +```solidity +error InputAndOutputFees(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputFees {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputFees) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputFees { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputFees { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputFees()"; + const SELECTOR: [u8; 4] = [237u8, 199u8, 226u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidCosignature()` and selector `0xd7815be1`. +```solidity +error InvalidCosignature(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidCosignature {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidCosignature) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidCosignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidCosignature { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidCosignature()"; + const SELECTOR: [u8; 4] = [215u8, 129u8, 91u8, 225u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidCosignerInput()` and selector `0xac9143e7`. +```solidity +error InvalidCosignerInput(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidCosignerInput {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidCosignerInput) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidCosignerInput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidCosignerInput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidCosignerInput()"; + const SELECTOR: [u8; 4] = [172u8, 145u8, 67u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidCosignerOutput()` and selector `0xa305df82`. +```solidity +error InvalidCosignerOutput(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidCosignerOutput {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidCosignerOutput) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidCosignerOutput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidCosignerOutput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidCosignerOutput()"; + const SELECTOR: [u8; 4] = [163u8, 5u8, 223u8, 130u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidFeeToken(address)` and selector `0xeddf07f5`. +```solidity +error InvalidFeeToken(address feeToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidFeeToken { + pub feeToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidFeeToken) -> Self { + (value.feeToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidFeeToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { feeToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidFeeToken { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidFeeToken(address)"; + const SELECTOR: [u8; 4] = [237u8, 223u8, 7u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.feeToken, + ), + ) + } + } + }; + /**Custom error with signature `InvalidReactor()` and selector `0x4ddf4a64`. +```solidity +error InvalidReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReactor {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReactor()"; + const SELECTOR: [u8; 4] = [77u8, 223u8, 74u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NoExclusiveOverride()` and selector `0xb9ec1e96`. +```solidity +error NoExclusiveOverride(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NoExclusiveOverride {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NoExclusiveOverride) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NoExclusiveOverride { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NoExclusiveOverride { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NoExclusiveOverride()"; + const SELECTOR: [u8; 4] = [185u8, 236u8, 30u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Fill(bytes32,address,address,uint256)` and selector `0x78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66`. +```solidity +event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Fill { + #[allow(missing_docs)] + pub orderHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub filler: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub swapper: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Fill { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Fill(bytes32,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + orderHash: topics.1, + filler: topics.2, + swapper: topics.3, + nonce: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.orderHash.clone(), + self.filler.clone(), + self.swapper.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.orderHash); + out[2usize] = ::encode_topic( + &self.filler, + ); + out[3usize] = ::encode_topic( + &self.swapper, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Fill { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Fill> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Fill) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ProtocolFeeControllerSet(address,address)` and selector `0xb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0`. +```solidity +event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ProtocolFeeControllerSet { + #[allow(missing_docs)] + pub oldFeeController: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newFeeController: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProtocolFeeControllerSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ProtocolFeeControllerSet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldFeeController: data.0, + newFeeController: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldFeeController, + ), + ::tokenize( + &self.newFeeController, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ProtocolFeeControllerSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProtocolFeeControllerSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &ProtocolFeeControllerSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _permit2, address _protocolFeeOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _permit2: alloy::sol_types::private::Address, + pub _protocolFeeOwner: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._permit2, value._protocolFeeOwner) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _permit2: tuple.0, + _protocolFeeOwner: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._permit2, + ), + ::tokenize( + &self._protocolFeeOwner, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes))` and selector `0x3f62192e`. +```solidity +function execute(SignedOrder memory order) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes))"; + const SELECTOR: [u8; 4] = [63u8, 98u8, 25u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3`. +```solidity +function executeBatch(SignedOrder[] memory orders) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { orders: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[])"; + const SELECTOR: [u8; 4] = [13u8, 122u8, 22u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7`. +```solidity +function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackCall) -> Self { + (value.orders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchWithCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatchWithCallback((bytes,bytes)[],bytes)"; + const SELECTOR: [u8; 4] = [19u8, 251u8, 114u8, 199u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884`. +```solidity +function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackCall { + pub order: ::RustType, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + SignedOrder, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackCall) -> Self { + (value.order, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeWithCallbackCall { + type Parameters<'a> = (SignedOrder, alloy::sol_types::sol_data::Bytes); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeWithCallback((bytes,bytes),bytes)"; + const SELECTOR: [u8; 4] = [13u8, 51u8, 88u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `feeController()` and selector `0x6999b377`. +```solidity +function feeController() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerCall {} + ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeControllerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeControllerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeController()"; + const SELECTOR: [u8; 4] = [105u8, 153u8, 179u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit2()` and selector `0x12261ee7`. +```solidity +function permit2() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Call {} + ///Container type for the return parameters of the [`permit2()`](permit2Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Return { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit2Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit2Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit2()"; + const SELECTOR: [u8; 4] = [18u8, 38u8, 30u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setProtocolFeeController(address)` and selector `0x2d771389`. +```solidity +function setProtocolFeeController(address _newFeeController) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerCall { + pub _newFeeController: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerCall) -> Self { + (value._newFeeController,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _newFeeController: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProtocolFeeControllerCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProtocolFeeControllerReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProtocolFeeController(address)"; + const SELECTOR: [u8; 4] = [45u8, 119u8, 19u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newFeeController, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`V2DutchOrderReactor`](self) function calls. + pub enum V2DutchOrderReactorCalls { + execute(executeCall), + executeBatch(executeBatchCall), + executeBatchWithCallback(executeBatchWithCallbackCall), + executeWithCallback(executeWithCallbackCall), + feeController(feeControllerCall), + owner(ownerCall), + permit2(permit2Call), + setProtocolFeeController(setProtocolFeeControllerCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl V2DutchOrderReactorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 51u8, 88u8, 132u8], + [13u8, 122u8, 22u8, 195u8], + [18u8, 38u8, 30u8, 231u8], + [19u8, 251u8, 114u8, 199u8], + [45u8, 119u8, 19u8, 137u8], + [63u8, 98u8, 25u8, 46u8], + [105u8, 153u8, 179u8, 119u8], + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for V2DutchOrderReactorCalls { + const NAME: &'static str = "V2DutchOrderReactorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::executeBatchWithCallback(_) => { + ::SELECTOR + } + Self::executeWithCallback(_) => { + ::SELECTOR + } + Self::feeController(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::permit2(_) => ::SELECTOR, + Self::setProtocolFeeController(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn executeWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorCalls::executeWithCallback) + } + executeWithCallback + }, + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorCalls::executeBatch) + } + executeBatch + }, + { + fn permit2( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorCalls::permit2) + } + permit2 + }, + { + fn executeBatchWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorCalls::executeBatchWithCallback) + } + executeBatchWithCallback + }, + { + fn setProtocolFeeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorCalls::setProtocolFeeController) + } + setProtocolFeeController + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorCalls::execute) + } + execute + }, + { + fn feeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorCalls::feeController) + } + feeController + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::feeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::permit2(inner) => { + ::abi_encoded_size(inner) + } + Self::setProtocolFeeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::feeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit2(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setProtocolFeeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`V2DutchOrderReactor`](self) custom errors. + pub enum V2DutchOrderReactorErrors { + DeadlineBeforeEndTime(DeadlineBeforeEndTime), + DuplicateFeeOutput(DuplicateFeeOutput), + EndTimeBeforeStartTime(EndTimeBeforeStartTime), + FeeTooLarge(FeeTooLarge), + IncorrectAmounts(IncorrectAmounts), + InputAndOutputFees(InputAndOutputFees), + InvalidCosignature(InvalidCosignature), + InvalidCosignerInput(InvalidCosignerInput), + InvalidCosignerOutput(InvalidCosignerOutput), + InvalidFeeToken(InvalidFeeToken), + InvalidReactor(InvalidReactor), + NativeTransferFailed(NativeTransferFailed), + NoExclusiveOverride(NoExclusiveOverride), + } + #[automatically_derived] + impl V2DutchOrderReactorErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [67u8, 19u8, 52u8, 83u8], + [77u8, 223u8, 74u8, 100u8], + [119u8, 58u8, 97u8, 135u8], + [124u8, 31u8, 129u8, 19u8], + [130u8, 231u8, 86u8, 86u8], + [163u8, 5u8, 223u8, 130u8], + [172u8, 145u8, 67u8, 231u8], + [185u8, 236u8, 30u8, 150u8], + [215u8, 129u8, 91u8, 225u8], + [237u8, 199u8, 226u8, 228u8], + [237u8, 223u8, 7u8, 245u8], + [244u8, 179u8, 177u8, 188u8], + [255u8, 240u8, 131u8, 3u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for V2DutchOrderReactorErrors { + const NAME: &'static str = "V2DutchOrderReactorErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DeadlineBeforeEndTime(_) => { + ::SELECTOR + } + Self::DuplicateFeeOutput(_) => { + ::SELECTOR + } + Self::EndTimeBeforeStartTime(_) => { + ::SELECTOR + } + Self::FeeTooLarge(_) => { + ::SELECTOR + } + Self::IncorrectAmounts(_) => { + ::SELECTOR + } + Self::InputAndOutputFees(_) => { + ::SELECTOR + } + Self::InvalidCosignature(_) => { + ::SELECTOR + } + Self::InvalidCosignerInput(_) => { + ::SELECTOR + } + Self::InvalidCosignerOutput(_) => { + ::SELECTOR + } + Self::InvalidFeeToken(_) => { + ::SELECTOR + } + Self::InvalidReactor(_) => { + ::SELECTOR + } + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + Self::NoExclusiveOverride(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn EndTimeBeforeStartTime( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::EndTimeBeforeStartTime) + } + EndTimeBeforeStartTime + }, + { + fn InvalidReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::InvalidReactor) + } + InvalidReactor + }, + { + fn DeadlineBeforeEndTime( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::DeadlineBeforeEndTime) + } + DeadlineBeforeEndTime + }, + { + fn IncorrectAmounts( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::IncorrectAmounts) + } + IncorrectAmounts + }, + { + fn FeeTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::FeeTooLarge) + } + FeeTooLarge + }, + { + fn InvalidCosignerOutput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::InvalidCosignerOutput) + } + InvalidCosignerOutput + }, + { + fn InvalidCosignerInput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::InvalidCosignerInput) + } + InvalidCosignerInput + }, + { + fn NoExclusiveOverride( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::NoExclusiveOverride) + } + NoExclusiveOverride + }, + { + fn InvalidCosignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::InvalidCosignature) + } + InvalidCosignature + }, + { + fn InputAndOutputFees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::InputAndOutputFees) + } + InputAndOutputFees + }, + { + fn InvalidFeeToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::InvalidFeeToken) + } + InvalidFeeToken + }, + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::NativeTransferFailed) + } + NativeTransferFailed + }, + { + fn DuplicateFeeOutput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V2DutchOrderReactorErrors::DuplicateFeeOutput) + } + DuplicateFeeOutput + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DeadlineBeforeEndTime(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::DuplicateFeeOutput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::EndTimeBeforeStartTime(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encoded_size(inner) + } + Self::IncorrectAmounts(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidCosignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidCosignerInput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidCosignerOutput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NoExclusiveOverride(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DeadlineBeforeEndTime(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::DuplicateFeeOutput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::EndTimeBeforeStartTime(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::IncorrectAmounts(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidCosignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidCosignerInput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidCosignerOutput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NoExclusiveOverride(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`V2DutchOrderReactor`](self) events. + pub enum V2DutchOrderReactorEvents { + Fill(Fill), + OwnershipTransferred(OwnershipTransferred), + ProtocolFeeControllerSet(ProtocolFeeControllerSet), + } + #[automatically_derived] + impl V2DutchOrderReactorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ], + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + [ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for V2DutchOrderReactorEvents { + const NAME: &'static str = "V2DutchOrderReactorEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Fill) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ProtocolFeeControllerSet) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for V2DutchOrderReactorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`V2DutchOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`V2DutchOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> V2DutchOrderReactorInstance { + V2DutchOrderReactorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + V2DutchOrderReactorInstance::< + T, + P, + N, + >::deploy(provider, _permit2, _protocolFeeOwner) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + V2DutchOrderReactorInstance::< + T, + P, + N, + >::deploy_builder(provider, _permit2, _protocolFeeOwner) + } + /**A [`V2DutchOrderReactor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`V2DutchOrderReactor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct V2DutchOrderReactorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for V2DutchOrderReactorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("V2DutchOrderReactorInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > V2DutchOrderReactorInstance { + /**Creates a new wrapper around an on-chain [`V2DutchOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`V2DutchOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _permit2, + _protocolFeeOwner, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _permit2, + _protocolFeeOwner, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl V2DutchOrderReactorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> V2DutchOrderReactorInstance { + V2DutchOrderReactorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > V2DutchOrderReactorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeBatchCall { orders }) + } + ///Creates a new call builder for the [`executeBatchWithCallback`] function. + pub fn executeBatchWithCallback( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeBatchWithCallbackCall { + orders, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`executeWithCallback`] function. + pub fn executeWithCallback( + &self, + order: ::RustType, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeWithCallbackCall { + order, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`feeController`] function. + pub fn feeController( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeControllerCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`permit2`] function. + pub fn permit2(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&permit2Call {}) + } + ///Creates a new call builder for the [`setProtocolFeeController`] function. + pub fn setProtocolFeeController( + &self, + _newFeeController: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setProtocolFeeControllerCall { + _newFeeController, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > V2DutchOrderReactorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Fill`] event. + pub fn Fill_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ProtocolFeeControllerSet`] event. + pub fn ProtocolFeeControllerSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/v3_dutch_order_lib.rs b/crates/bindings-uniswapx/src/v3_dutch_order_lib.rs deleted file mode 100644 index bcdd0b1..0000000 --- a/crates/bindings-uniswapx/src/v3_dutch_order_lib.rs +++ /dev/null @@ -1,125 +0,0 @@ -pub use v3_dutch_order_lib::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod v3_dutch_order_lib { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static V3DUTCHORDERLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 7q+\x9D[\x05Z\xFD0xOI\xF7[l\x98\xBD\x9E\xC4\xA9\xCE\xE7\xCD\x8D>\xB5\xF4\xED\xFB*i\xEFdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static V3DUTCHORDERLIB_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 7q+\x9D[\x05Z\xFD0xOI\xF7[l\x98\xBD\x9E\xC4\xA9\xCE\xE7\xCD\x8D>\xB5\xF4\xED\xFB*i\xEFdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static V3DUTCHORDERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct V3DutchOrderLib(::ethers::contract::Contract); - impl ::core::clone::Clone for V3DutchOrderLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for V3DutchOrderLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for V3DutchOrderLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for V3DutchOrderLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(V3DutchOrderLib)) - .field(&self.address()) - .finish() - } - } - impl V3DutchOrderLib { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - V3DUTCHORDERLIB_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - V3DUTCHORDERLIB_ABI.clone(), - V3DUTCHORDERLIB_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - } - impl From<::ethers::contract::Contract> - for V3DutchOrderLib { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/crates/bindings-uniswapx/src/v3_dutch_order_reactor.rs b/crates/bindings-uniswapx/src/v3_dutch_order_reactor.rs deleted file mode 100644 index e24f104..0000000 --- a/crates/bindings-uniswapx/src/v3_dutch_order_reactor.rs +++ /dev/null @@ -1,1765 +0,0 @@ -pub use v3_dutch_order_reactor::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod v3_dutch_order_reactor { - pub use super::super::shared_types::*; - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_permit2"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_protocolFeeOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("execute"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatchWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeBatchWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("orders"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeWithCallback"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "executeWithCallback", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("order"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct SignedOrder"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("callbackData"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("feeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("feeController"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "contract IProtocolFeeController", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("owner"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("owner"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit2"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit2"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract IPermit2"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("setProtocolFeeController"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "setProtocolFeeController", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Fill"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Fill"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("orderHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("filler"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("swapper"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ProtocolFeeControllerSet"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "ProtocolFeeControllerSet", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("oldFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newFeeController"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DeadlineReached"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("DeadlineReached"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("DuplicateFeeOutput"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("duplicateToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("FeeTooLarge"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("recipient"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("IndexOutOfBounds"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("IndexOutOfBounds"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InputAndOutputFees"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidCosignature"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidCosignature"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidCosignerInput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InvalidCosignerInput", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidCosignerOutput"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InvalidCosignerOutput", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidDecayCurve"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidDecayCurve"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidFeeToken"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("feeToken"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidReactor"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidReactor"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NativeTransferFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NativeTransferFailed", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NoExclusiveOverride"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NoExclusiveOverride", - ), - inputs: ::std::vec![], - }, - ], - ), - ]), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static V3DUTCHORDERREACTOR_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xC0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0E\x8F8\x03\x80b\0E\x8F\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01dV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\xA4\xB0\x19F\x01b\0\0\xBDW`\x01`\x01`@\x1B\x03b\0\tab\0\0\xDE` \x1B\x17\x16`\xA0Rb\0\0\xD6V[`\x01`\x01`@\x1B\x03b\0\t\xD5b\0\x01H` \x1B\x17\x16`\xA0R[PPb\0\x01\xB9V[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\x1DW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01C\x91\x90b\0\x01\xA1V[\x90P\x90V[C\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01aW_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\x01vW_\x80\xFD[\x82Qb\0\x01\x83\x81b\0\x01LV[` \x84\x01Q\x90\x92Pb\0\x01\x96\x81b\0\x01LV[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15b\0\x01\xB2W_\x80\xFD[PQ\x91\x90PV[`\x80Q`\xA0QaC\xAEb\0\x01\xE1_9_a\n\xFF\x01R_\x81\x81`\xDA\x01Ra\x1A\xCE\x01RaC\xAE_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a/\x8FV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a0sV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a1\x0BV[a\x06eV[a\0\xB4a\x01e6`\x04a1&V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a1\x0BV[a\x08rV[a\x01\xE8a\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\nJV[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a1\x85V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0CDV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\t\xD9V[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a4CV[a\nJV[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\xF5V[a\x04\x9F\x81a\x0CDV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\t\xD9V[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0CDV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\nJV[\x81_\x81Q\x81\x10a\x08GWa\x08Ga1\x85V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\xF5V[a\x08d\x81a\x0CDV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xACW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xD0\x91\x90a4\x7FV[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xC2\x83\x80a4\x96V[\x81\x01\x90a\n\xCF\x91\x90a:BV[\x90P_a\n\xDB\x82a\r\x8FV[\x90Pa\n\xE7\x81\x83a\x10sV[a\n\xF0\x82a\x10\xCFV[a\n\xF9\x82a\x12/V[_a\x0B&\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\x0B\\\x85`\xA0\x01Q_\x01Q\x84\x87``\x01Qa\x134\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0By\x91\x85a\x13\xF9V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x8E\x91\x90a4\x96V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0B\xED\x92\x87\x92\x90\x85a\x14\xDEV[PPP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0C\x14Wa\x0C\x14a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C'\x81a\x14\xF2V[a\x0C1\x813a\x19\xCFV[a\x0C;\x813a\x1A\xCCV[P`\x01\x01a\x0B\xF9V[\x80Q_[\x81\x81\x10\x15a\r~W_\x83\x82\x81Q\x81\x10a\x0CcWa\x0Cca1\x85V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\xE0W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x97Wa\x0C\x97a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C\xD7\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1E\xC6\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0CxV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r(Wa\r(a1\x85V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\rl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CHV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1F\rV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R_\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q` \x01a\x0Fq\x90a;QV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\x8F\x90a\x03V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x82W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15\xC7\x91\x90\x81\x01\x90a>\x15V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\xDE\x82\x84a?\x0BV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\xF6Wa\x15\xF6a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16\x14W\x90P[P\x90P_[\x83\x81\x10\x15a\x16\xAEW\x85`@\x01Q\x81\x81Q\x81\x10a\x16\x81Wa\x16\x81a1\x85V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x9BWa\x16\x9Ba1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16cV[P_\x80_[\x84\x81\x10\x15a\x19\xBEW_\x87\x82\x81Q\x81\x10a\x16\xCEWa\x16\xCEa1\x85V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x17\x89W\x88\x81\x81Q\x81\x10a\x16\xF4Wa\x16\xF4a1\x85V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x81W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\xDAV[P_\x80[\x88\x81\x10\x15a\x18FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x17\xACWa\x17\xACa1\x85V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18=W\x85\x15a\x18'W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x186\x90\x84a?\x0BV[\x92P`\x01\x96P[P`\x01\x01a\x17\x8DV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18\xBFW\x84\x15a\x18\xA6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18\xB8\x90\x82a?\x0BV[\x90P`\x01\x93P[\x80_\x03a\x19\x13W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x19!\x81`\x05a'\x10a'\xF2V[\x82` \x01Q\x11\x15a\x19\x94W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x19\xA9Wa\x19\xA9a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x16\xB3V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\x9C\x90\x84\x90\x86\x90`\x04\x01a?\x1EV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A\xB2W_\x80\xFD[PZ\xFA\x15\x80\x15a\x1A\xC4W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x8B\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1CV\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aB\xBE`.\x919`@Q` \x01a\x1C\xC0\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1D\xF0\x90`\xB8\x01a=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1E\xEBWa\x03L\x82\x82a\x1F\rV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(,V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1FcW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1FhV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aB\xEC`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10V\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q` \x01a L\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!\x0C\x92\x90\x91\x90`\x84\x01a@\xB8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Qa!8\x85`@\x01Qa)\x13V[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10VV[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xAAWa!\xAAa1XV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a!\xD4W` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P_[\x81\x81\x10\x15a\"\x19W_a\"\x07\x86\x83\x81Q\x81\x10a!\xFAWa!\xFAa1\x85V[` \x02` \x01\x01Qa*\x0FV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a!\xDCV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xA0\x01Q`@Q` \x01a\"A\x91\x90a@\xE6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"~\x93\x92\x91` \x01aAiV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\"\xB3\x91\x90aA\x95V[\x91P\x91P_\x83`@\x81Q\x81\x10a\"\xCBWa\"\xCBa1\x85V[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#%W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\x80WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a#\xB7W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x81\x83\x10\x15a#\xECWa#\xDBa#\xD6\x84\x84aA\xB7V[a+qV[a#\xE5\x90_aA\xCAV[\x90Pa\"\x97V[a#\xE5a#\xD6\x83\x85aA\xB7V[_\x80\x82\x12a$\x10Wa#\xE5\x83\x83c;\x9A\xCA\0a'\xF2V[a$(a$\x1C\x83aA\xF0V[\x84\x90c;\x9A\xCA\0a,&V[a#\xE5\x90aA\xF0V[_a$G\x85a$@\x86\x84aA\xCAV[\x85\x85a$PV[\x95\x94PPPPPV[_\x80\x84\x12\x15a$\xB1W_a$c\x85aA\xF0V[\x90P\x85a$\x90\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaA\xB7V[\x10\x15a$\x9FW\x82\x91PPa$\xD8V[a$\xA9\x81\x87a?\x0BV[\x91PPa$\xCDV[\x83\x85\x10\x15a$\xC0WP\x81a$\xD8V[a$\xCA\x84\x86aA\xB7V[\x90P[a$G\x81\x84\x84a,hV[\x94\x93PPPPV[_\x84\x84\x10a$\xEFWP\x80a$GV[_a$\xFA\x87\x86aA\xB7V[\x90P_a%\x07\x88\x88aA\xB7V[\x90P_\x85\x85\x12\x15a%8Wa%(\x83\x83a%!\x88\x8AaA\xCAV[\x91\x90a'\xF2V[a%1\x90aA\xF0V[\x90Pa%QV[a%N\x83\x83a%G\x89\x89aA\xCAV[\x91\x90a,&V[\x90P[a%[\x81\x87aB&V[\x99\x98PPPPPPPPPV[_`\x10\x82_\x01Q` \x01QQ\x11\x15a%\xACW`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a%\xC7WP\x81Q` \x01QQ\x15[\x15a%\xE6W`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa\"\x97\x92\x90\x91a,hV[_a&\x06\x83`@\x01Q\x84``\x01Qa%\xFE\x91\x90aA\xB7V[a\xFF\xFFa,xV[\x90P_\x80_\x80a&\x19\x87_\x01Q\x86a,\x8FV[\x93P\x93P\x93P\x93P_a&C\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&a\x92\x91\x84\x91a$PV[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.H\x81RP\x90P_a&\xF7\x82a%hV[\x90P`@Q\x80``\x01`@R\x80\x87_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a']\x84\x84\x83a.\x98V[a\x14\xEBW\x81a'\x98W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a#\xB7W_\x82\x82\x81Q\x81\x10a'\xBBWa'\xBBa1\x85V[` \x02` \x01\x01Q\x90Pa'\xE4\x85a'\x10a'\xD6\x91\x90a?\x0BV[` \x83\x01Q\x90a'\x10a,&V[` \x90\x91\x01R`\x01\x01a'\x9FV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(%W_\x80\xFD[P\x91\x02\x04\x90V[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x14\xEBW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R_\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Q`@Q` \x01a)\xBC\x91\x90aBMV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10VV[_`@Q` \x01a*\x1F\x90a&W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a>LW_\x80\xFD[\x80Qa>Za7\x92\x82a7\x19V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a>xW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a>\xD2W\x80\x85\x8A\x03\x12\x15a>\x93W_\x80\xFD[a>\x9Ba5\x89V[\x85Qa>\xA6\x81a0\xDAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa>\xBF\x81a0\xDAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a>}V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\"\x97Wa\"\x97a>\xDEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a$\xD8`@\x83\x01\x84a2\x86V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_`\x15\x88Q` a?\x85\x82\x84\x87\x01\x83\x8E\x01a1\xB2V[\x89Q\x91\x85\x01\x91a?\x9A\x81\x85\x85\x01\x84\x8E\x01a1\xB2V[\x89Q\x92\x01\x91a?\xAE\x81\x85\x85\x01\x84\x8D\x01a1\xB2V[\x88Q\x92\x01\x91a?\xC2\x81\x85\x85\x01\x84\x8C\x01a1\xB2V[\x87Q\x92\x01\x91a?\xD6\x81\x85\x85\x01\x84\x8B\x01a1\xB2V[\x86Q\x92\x01\x91a?\xEA\x81\x85\x85\x01\x84\x8A\x01a1\xB2V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[_a\x01@a@-\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra@n`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra@\xA3\x81\x84\x01\x86a1\xD4V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%[\x81\x85a1\xD4V[_\x83Qa@\xC9\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xDD\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[_` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a9mW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aAIV[\x83\x81R\x82` \x82\x01R_\x82QaA\x86\x81`@\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[_\x80`@\x83\x85\x03\x12\x15aA\xA6W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a\"\x97Wa\"\x97a>\xDEV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aA\xE9WaA\xE9a>\xDEV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aB WaB a>\xDEV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aBEWaBEa>\xDEV[PP\x92\x91PPV[\x81Q_\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aBvW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aBZV[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aA\xE9WaA\xE9a>\xDEV[_a\xFF\xFF\x80\x83\x16\x81\x81\x03aB\xB3WaB\xB3a>\xDEV[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 uyp,x\xB4\x1D=j!\n\x95w\xB1(\xD7/\xB7\x90\xC9Cg\xB3\x8EY\x8E-G\x15\xEB\xA2\xE9dsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static V3DUTCHORDERREACTOR_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a/\x8FV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a0sV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a1\x0BV[a\x06eV[a\0\xB4a\x01e6`\x04a1&V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a1\x0BV[a\x08rV[a\x01\xE8a\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\nJV[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a1\x85V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0CDV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\t\xD9V[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a4CV[a\nJV[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\xF5V[a\x04\x9F\x81a\x0CDV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\t\xD9V[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0CDV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\nJV[\x81_\x81Q\x81\x10a\x08GWa\x08Ga1\x85V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\xF5V[a\x08d\x81a\x0CDV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xACW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xD0\x91\x90a4\x7FV[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xC2\x83\x80a4\x96V[\x81\x01\x90a\n\xCF\x91\x90a:BV[\x90P_a\n\xDB\x82a\r\x8FV[\x90Pa\n\xE7\x81\x83a\x10sV[a\n\xF0\x82a\x10\xCFV[a\n\xF9\x82a\x12/V[_a\x0B&\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\x0B\\\x85`\xA0\x01Q_\x01Q\x84\x87``\x01Qa\x134\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0By\x91\x85a\x13\xF9V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x8E\x91\x90a4\x96V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0B\xED\x92\x87\x92\x90\x85a\x14\xDEV[PPP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0C\x14Wa\x0C\x14a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C'\x81a\x14\xF2V[a\x0C1\x813a\x19\xCFV[a\x0C;\x813a\x1A\xCCV[P`\x01\x01a\x0B\xF9V[\x80Q_[\x81\x81\x10\x15a\r~W_\x83\x82\x81Q\x81\x10a\x0CcWa\x0Cca1\x85V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\xE0W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x97Wa\x0C\x97a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C\xD7\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1E\xC6\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0CxV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r(Wa\r(a1\x85V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\rl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CHV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1F\rV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R_\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q` \x01a\x0Fq\x90a;QV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\x8F\x90a\x03V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x82W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15\xC7\x91\x90\x81\x01\x90a>\x15V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\xDE\x82\x84a?\x0BV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\xF6Wa\x15\xF6a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16\x14W\x90P[P\x90P_[\x83\x81\x10\x15a\x16\xAEW\x85`@\x01Q\x81\x81Q\x81\x10a\x16\x81Wa\x16\x81a1\x85V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x9BWa\x16\x9Ba1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16cV[P_\x80_[\x84\x81\x10\x15a\x19\xBEW_\x87\x82\x81Q\x81\x10a\x16\xCEWa\x16\xCEa1\x85V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x17\x89W\x88\x81\x81Q\x81\x10a\x16\xF4Wa\x16\xF4a1\x85V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x81W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\xDAV[P_\x80[\x88\x81\x10\x15a\x18FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x17\xACWa\x17\xACa1\x85V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18=W\x85\x15a\x18'W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x186\x90\x84a?\x0BV[\x92P`\x01\x96P[P`\x01\x01a\x17\x8DV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18\xBFW\x84\x15a\x18\xA6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18\xB8\x90\x82a?\x0BV[\x90P`\x01\x93P[\x80_\x03a\x19\x13W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x19!\x81`\x05a'\x10a'\xF2V[\x82` \x01Q\x11\x15a\x19\x94W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x19\xA9Wa\x19\xA9a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x16\xB3V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\x9C\x90\x84\x90\x86\x90`\x04\x01a?\x1EV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A\xB2W_\x80\xFD[PZ\xFA\x15\x80\x15a\x1A\xC4W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x8B\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1CV\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aB\xBE`.\x919`@Q` \x01a\x1C\xC0\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1D\xF0\x90`\xB8\x01a=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1E\xEBWa\x03L\x82\x82a\x1F\rV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(,V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1FcW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1FhV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aB\xEC`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10V\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q` \x01a L\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!\x0C\x92\x90\x91\x90`\x84\x01a@\xB8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Qa!8\x85`@\x01Qa)\x13V[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10VV[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xAAWa!\xAAa1XV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a!\xD4W` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P_[\x81\x81\x10\x15a\"\x19W_a\"\x07\x86\x83\x81Q\x81\x10a!\xFAWa!\xFAa1\x85V[` \x02` \x01\x01Qa*\x0FV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a!\xDCV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xA0\x01Q`@Q` \x01a\"A\x91\x90a@\xE6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"~\x93\x92\x91` \x01aAiV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\"\xB3\x91\x90aA\x95V[\x91P\x91P_\x83`@\x81Q\x81\x10a\"\xCBWa\"\xCBa1\x85V[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#%W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\x80WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a#\xB7W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x81\x83\x10\x15a#\xECWa#\xDBa#\xD6\x84\x84aA\xB7V[a+qV[a#\xE5\x90_aA\xCAV[\x90Pa\"\x97V[a#\xE5a#\xD6\x83\x85aA\xB7V[_\x80\x82\x12a$\x10Wa#\xE5\x83\x83c;\x9A\xCA\0a'\xF2V[a$(a$\x1C\x83aA\xF0V[\x84\x90c;\x9A\xCA\0a,&V[a#\xE5\x90aA\xF0V[_a$G\x85a$@\x86\x84aA\xCAV[\x85\x85a$PV[\x95\x94PPPPPV[_\x80\x84\x12\x15a$\xB1W_a$c\x85aA\xF0V[\x90P\x85a$\x90\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaA\xB7V[\x10\x15a$\x9FW\x82\x91PPa$\xD8V[a$\xA9\x81\x87a?\x0BV[\x91PPa$\xCDV[\x83\x85\x10\x15a$\xC0WP\x81a$\xD8V[a$\xCA\x84\x86aA\xB7V[\x90P[a$G\x81\x84\x84a,hV[\x94\x93PPPPV[_\x84\x84\x10a$\xEFWP\x80a$GV[_a$\xFA\x87\x86aA\xB7V[\x90P_a%\x07\x88\x88aA\xB7V[\x90P_\x85\x85\x12\x15a%8Wa%(\x83\x83a%!\x88\x8AaA\xCAV[\x91\x90a'\xF2V[a%1\x90aA\xF0V[\x90Pa%QV[a%N\x83\x83a%G\x89\x89aA\xCAV[\x91\x90a,&V[\x90P[a%[\x81\x87aB&V[\x99\x98PPPPPPPPPV[_`\x10\x82_\x01Q` \x01QQ\x11\x15a%\xACW`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a%\xC7WP\x81Q` \x01QQ\x15[\x15a%\xE6W`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa\"\x97\x92\x90\x91a,hV[_a&\x06\x83`@\x01Q\x84``\x01Qa%\xFE\x91\x90aA\xB7V[a\xFF\xFFa,xV[\x90P_\x80_\x80a&\x19\x87_\x01Q\x86a,\x8FV[\x93P\x93P\x93P\x93P_a&C\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&a\x92\x91\x84\x91a$PV[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.H\x81RP\x90P_a&\xF7\x82a%hV[\x90P`@Q\x80``\x01`@R\x80\x87_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a']\x84\x84\x83a.\x98V[a\x14\xEBW\x81a'\x98W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a#\xB7W_\x82\x82\x81Q\x81\x10a'\xBBWa'\xBBa1\x85V[` \x02` \x01\x01Q\x90Pa'\xE4\x85a'\x10a'\xD6\x91\x90a?\x0BV[` \x83\x01Q\x90a'\x10a,&V[` \x90\x91\x01R`\x01\x01a'\x9FV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(%W_\x80\xFD[P\x91\x02\x04\x90V[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x14\xEBW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R_\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Q`@Q` \x01a)\xBC\x91\x90aBMV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10VV[_`@Q` \x01a*\x1F\x90a&W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a>LW_\x80\xFD[\x80Qa>Za7\x92\x82a7\x19V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a>xW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a>\xD2W\x80\x85\x8A\x03\x12\x15a>\x93W_\x80\xFD[a>\x9Ba5\x89V[\x85Qa>\xA6\x81a0\xDAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa>\xBF\x81a0\xDAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a>}V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\"\x97Wa\"\x97a>\xDEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a$\xD8`@\x83\x01\x84a2\x86V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_`\x15\x88Q` a?\x85\x82\x84\x87\x01\x83\x8E\x01a1\xB2V[\x89Q\x91\x85\x01\x91a?\x9A\x81\x85\x85\x01\x84\x8E\x01a1\xB2V[\x89Q\x92\x01\x91a?\xAE\x81\x85\x85\x01\x84\x8D\x01a1\xB2V[\x88Q\x92\x01\x91a?\xC2\x81\x85\x85\x01\x84\x8C\x01a1\xB2V[\x87Q\x92\x01\x91a?\xD6\x81\x85\x85\x01\x84\x8B\x01a1\xB2V[\x86Q\x92\x01\x91a?\xEA\x81\x85\x85\x01\x84\x8A\x01a1\xB2V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[_a\x01@a@-\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra@n`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra@\xA3\x81\x84\x01\x86a1\xD4V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%[\x81\x85a1\xD4V[_\x83Qa@\xC9\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xDD\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[_` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a9mW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aAIV[\x83\x81R\x82` \x82\x01R_\x82QaA\x86\x81`@\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[_\x80`@\x83\x85\x03\x12\x15aA\xA6W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a\"\x97Wa\"\x97a>\xDEV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aA\xE9WaA\xE9a>\xDEV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aB WaB a>\xDEV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aBEWaBEa>\xDEV[PP\x92\x91PPV[\x81Q_\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aBvW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aBZV[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aA\xE9WaA\xE9a>\xDEV[_a\xFF\xFF\x80\x83\x16\x81\x81\x03aB\xB3WaB\xB3a>\xDEV[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 uyp,x\xB4\x1D=j!\n\x95w\xB1(\xD7/\xB7\x90\xC9Cg\xB3\x8EY\x8E-G\x15\xEB\xA2\xE9dsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static V3DUTCHORDERREACTOR_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct V3DutchOrderReactor(::ethers::contract::Contract); - impl ::core::clone::Clone for V3DutchOrderReactor { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for V3DutchOrderReactor { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for V3DutchOrderReactor { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for V3DutchOrderReactor { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(V3DutchOrderReactor)) - .field(&self.address()) - .finish() - } - } - impl V3DutchOrderReactor { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - V3DUTCHORDERREACTOR_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - V3DUTCHORDERREACTOR_ABI.clone(), - V3DUTCHORDERREACTOR_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `execute` (0x3f62192e) function - pub fn execute( - &self, - order: SignedOrder, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 98, 25, 46], (order,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x0d7a16c3) function - pub fn execute_batch( - &self, - orders: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 122, 22, 195], orders) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatchWithCallback` (0x13fb72c7) function - pub fn execute_batch_with_callback( - &self, - orders: ::std::vec::Vec, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([19, 251, 114, 199], (orders, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeWithCallback` (0x0d335884) function - pub fn execute_with_callback( - &self, - order: SignedOrder, - callback_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([13, 51, 88, 132], (order, callback_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `feeController` (0x6999b377) function - pub fn fee_controller( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([105, 153, 179, 119], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `owner` (0x8da5cb5b) function - pub fn owner( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([141, 165, 203, 91], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `permit2` (0x12261ee7) function - pub fn permit_2( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::ethers::core::types::Address, - > { - self.0 - .method_hash([18, 38, 30, 231], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setProtocolFeeController` (0x2d771389) function - pub fn set_protocol_fee_controller( - &self, - new_fee_controller: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([45, 119, 19, 137], new_fee_controller) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferOwnership` (0xf2fde38b) function - pub fn transfer_ownership( - &self, - new_owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([242, 253, 227, 139], new_owner) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Fill` event - pub fn fill_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, FillFilter> { - self.0.event() - } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - OwnershipTransferredFilter, - > { - self.0.event() - } - ///Gets the contract's `ProtocolFeeControllerSet` event - pub fn protocol_fee_controller_set_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ProtocolFeeControllerSetFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - V3DutchOrderReactorEvents, - > { - self.0.event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for V3DutchOrderReactor { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `DeadlineReached` with signature `DeadlineReached()` and selector `0xb08ce5b3` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DeadlineReached", abi = "DeadlineReached()")] - pub struct DeadlineReached; - ///Custom Error type `DuplicateFeeOutput` with signature `DuplicateFeeOutput(address)` and selector `0xfff08303` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "DuplicateFeeOutput", abi = "DuplicateFeeOutput(address)")] - pub struct DuplicateFeeOutput { - pub duplicate_token: ::ethers::core::types::Address, - } - ///Custom Error type `FeeTooLarge` with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "FeeTooLarge", abi = "FeeTooLarge(address,uint256,address)")] - pub struct FeeTooLarge { - pub token: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - pub recipient: ::ethers::core::types::Address, - } - ///Custom Error type `IndexOutOfBounds` with signature `IndexOutOfBounds()` and selector `0x4e23d035` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "IndexOutOfBounds", abi = "IndexOutOfBounds()")] - pub struct IndexOutOfBounds; - ///Custom Error type `InputAndOutputFees` with signature `InputAndOutputFees()` and selector `0xedc7e2e4` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InputAndOutputFees", abi = "InputAndOutputFees()")] - pub struct InputAndOutputFees; - ///Custom Error type `InvalidCosignature` with signature `InvalidCosignature()` and selector `0xd7815be1` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidCosignature", abi = "InvalidCosignature()")] - pub struct InvalidCosignature; - ///Custom Error type `InvalidCosignerInput` with signature `InvalidCosignerInput()` and selector `0xac9143e7` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidCosignerInput", abi = "InvalidCosignerInput()")] - pub struct InvalidCosignerInput; - ///Custom Error type `InvalidCosignerOutput` with signature `InvalidCosignerOutput()` and selector `0xa305df82` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidCosignerOutput", abi = "InvalidCosignerOutput()")] - pub struct InvalidCosignerOutput; - ///Custom Error type `InvalidDecayCurve` with signature `InvalidDecayCurve()` and selector `0x0e996766` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidDecayCurve", abi = "InvalidDecayCurve()")] - pub struct InvalidDecayCurve; - ///Custom Error type `InvalidFeeToken` with signature `InvalidFeeToken(address)` and selector `0xeddf07f5` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidFeeToken", abi = "InvalidFeeToken(address)")] - pub struct InvalidFeeToken { - pub fee_token: ::ethers::core::types::Address, - } - ///Custom Error type `InvalidReactor` with signature `InvalidReactor()` and selector `0x4ddf4a64` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "InvalidReactor", abi = "InvalidReactor()")] - pub struct InvalidReactor; - ///Custom Error type `NativeTransferFailed` with signature `NativeTransferFailed()` and selector `0xf4b3b1bc` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NativeTransferFailed", abi = "NativeTransferFailed()")] - pub struct NativeTransferFailed; - ///Custom Error type `NoExclusiveOverride` with signature `NoExclusiveOverride()` and selector `0xb9ec1e96` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[etherror(name = "NoExclusiveOverride", abi = "NoExclusiveOverride()")] - pub struct NoExclusiveOverride; - ///Container type for all of the contract's custom errors - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum V3DutchOrderReactorErrors { - DeadlineReached(DeadlineReached), - DuplicateFeeOutput(DuplicateFeeOutput), - FeeTooLarge(FeeTooLarge), - IndexOutOfBounds(IndexOutOfBounds), - InputAndOutputFees(InputAndOutputFees), - InvalidCosignature(InvalidCosignature), - InvalidCosignerInput(InvalidCosignerInput), - InvalidCosignerOutput(InvalidCosignerOutput), - InvalidDecayCurve(InvalidDecayCurve), - InvalidFeeToken(InvalidFeeToken), - InvalidReactor(InvalidReactor), - NativeTransferFailed(NativeTransferFailed), - NoExclusiveOverride(NoExclusiveOverride), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for V3DutchOrderReactorErrors { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = <::std::string::String as ::ethers::core::abi::AbiDecode>::decode( - data, - ) { - return Ok(Self::RevertString(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DeadlineReached(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::DuplicateFeeOutput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeTooLarge(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::IndexOutOfBounds(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InputAndOutputFees(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidCosignature(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidCosignerInput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidCosignerOutput(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidDecayCurve(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidFeeToken(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::InvalidReactor(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NativeTransferFailed(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::NoExclusiveOverride(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for V3DutchOrderReactorErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::DeadlineReached(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::DuplicateFeeOutput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeTooLarge(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::IndexOutOfBounds(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InputAndOutputFees(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidCosignature(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidCosignerInput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidCosignerOutput(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidDecayCurve(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidFeeToken(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidReactor(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NativeTransferFailed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NoExclusiveOverride(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for V3DutchOrderReactorErrors { - fn valid_selector(selector: [u8; 4]) -> bool { - match selector { - [0x08, 0xc3, 0x79, 0xa0] => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => true, - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ if selector - == ::selector() => { - true - } - _ => false, - } - } - } - impl ::core::fmt::Display for V3DutchOrderReactorErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DeadlineReached(element) => ::core::fmt::Display::fmt(element, f), - Self::DuplicateFeeOutput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeTooLarge(element) => ::core::fmt::Display::fmt(element, f), - Self::IndexOutOfBounds(element) => ::core::fmt::Display::fmt(element, f), - Self::InputAndOutputFees(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidCosignature(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidCosignerInput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidCosignerOutput(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::InvalidDecayCurve(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidFeeToken(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidReactor(element) => ::core::fmt::Display::fmt(element, f), - Self::NativeTransferFailed(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::NoExclusiveOverride(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for V3DutchOrderReactorErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: DeadlineReached) -> Self { - Self::DeadlineReached(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: DuplicateFeeOutput) -> Self { - Self::DuplicateFeeOutput(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: FeeTooLarge) -> Self { - Self::FeeTooLarge(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: IndexOutOfBounds) -> Self { - Self::IndexOutOfBounds(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: InputAndOutputFees) -> Self { - Self::InputAndOutputFees(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: InvalidCosignature) -> Self { - Self::InvalidCosignature(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: InvalidCosignerInput) -> Self { - Self::InvalidCosignerInput(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: InvalidCosignerOutput) -> Self { - Self::InvalidCosignerOutput(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: InvalidDecayCurve) -> Self { - Self::InvalidDecayCurve(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: InvalidFeeToken) -> Self { - Self::InvalidFeeToken(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: InvalidReactor) -> Self { - Self::InvalidReactor(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: NativeTransferFailed) -> Self { - Self::NativeTransferFailed(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorErrors { - fn from(value: NoExclusiveOverride) -> Self { - Self::NoExclusiveOverride(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Fill", abi = "Fill(bytes32,address,address,uint256)")] - pub struct FillFilter { - #[ethevent(indexed)] - pub order_hash: [u8; 32], - #[ethevent(indexed)] - pub filler: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub swapper: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" - )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub user: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent( - name = "ProtocolFeeControllerSet", - abi = "ProtocolFeeControllerSet(address,address)" - )] - pub struct ProtocolFeeControllerSetFilter { - pub old_fee_controller: ::ethers::core::types::Address, - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum V3DutchOrderReactorEvents { - FillFilter(FillFilter), - OwnershipTransferredFilter(OwnershipTransferredFilter), - ProtocolFeeControllerSetFilter(ProtocolFeeControllerSetFilter), - } - impl ::ethers::contract::EthLogDecode for V3DutchOrderReactorEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = FillFilter::decode_log(log) { - return Ok(V3DutchOrderReactorEvents::FillFilter(decoded)); - } - if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) { - return Ok( - V3DutchOrderReactorEvents::OwnershipTransferredFilter(decoded), - ); - } - if let Ok(decoded) = ProtocolFeeControllerSetFilter::decode_log(log) { - return Ok( - V3DutchOrderReactorEvents::ProtocolFeeControllerSetFilter(decoded), - ); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for V3DutchOrderReactorEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::FillFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnershipTransferredFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ProtocolFeeControllerSetFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - } - } - } - impl ::core::convert::From for V3DutchOrderReactorEvents { - fn from(value: FillFilter) -> Self { - Self::FillFilter(value) - } - } - impl ::core::convert::From - for V3DutchOrderReactorEvents { - fn from(value: OwnershipTransferredFilter) -> Self { - Self::OwnershipTransferredFilter(value) - } - } - impl ::core::convert::From - for V3DutchOrderReactorEvents { - fn from(value: ProtocolFeeControllerSetFilter) -> Self { - Self::ProtocolFeeControllerSetFilter(value) - } - } - ///Container type for all input parameters for the `execute` function with signature `execute((bytes,bytes))` and selector `0x3f62192e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "execute", abi = "execute((bytes,bytes))")] - pub struct ExecuteCall { - pub order: SignedOrder, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((bytes,bytes)[])")] - pub struct ExecuteBatchCall { - pub orders: ::std::vec::Vec, - } - ///Container type for all input parameters for the `executeBatchWithCallback` function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeBatchWithCallback", - abi = "executeBatchWithCallback((bytes,bytes)[],bytes)" - )] - pub struct ExecuteBatchWithCallbackCall { - pub orders: ::std::vec::Vec, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `executeWithCallback` function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "executeWithCallback", - abi = "executeWithCallback((bytes,bytes),bytes)" - )] - pub struct ExecuteWithCallbackCall { - pub order: SignedOrder, - pub callback_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "feeController", abi = "feeController()")] - pub struct FeeControllerCall; - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "permit2", abi = "permit2()")] - pub struct Permit2Call; - ///Container type for all input parameters for the `setProtocolFeeController` function with signature `setProtocolFeeController(address)` and selector `0x2d771389` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "setProtocolFeeController", - abi = "setProtocolFeeController(address)" - )] - pub struct SetProtocolFeeControllerCall { - pub new_fee_controller: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")] - pub struct TransferOwnershipCall { - pub new_owner: ::ethers::core::types::Address, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum V3DutchOrderReactorCalls { - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ExecuteBatchWithCallback(ExecuteBatchWithCallbackCall), - ExecuteWithCallback(ExecuteWithCallbackCall), - FeeController(FeeControllerCall), - Owner(OwnerCall), - Permit2(Permit2Call), - SetProtocolFeeController(SetProtocolFeeControllerCall), - TransferOwnership(TransferOwnershipCall), - } - impl ::ethers::core::abi::AbiDecode for V3DutchOrderReactorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteBatchWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::ExecuteWithCallback(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::FeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Owner(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Permit2(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::SetProtocolFeeController(decoded)); - } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TransferOwnership(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for V3DutchOrderReactorCalls { - fn encode(self) -> Vec { - match self { - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteBatchWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteWithCallback(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::FeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Permit2(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SetProtocolFeeController(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TransferOwnership(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for V3DutchOrderReactorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatchWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::ExecuteWithCallback(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::FeeController(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit2(element) => ::core::fmt::Display::fmt(element, f), - Self::SetProtocolFeeController(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for V3DutchOrderReactorCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From - for V3DutchOrderReactorCalls { - fn from(value: ExecuteBatchWithCallbackCall) -> Self { - Self::ExecuteBatchWithCallback(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorCalls { - fn from(value: ExecuteWithCallbackCall) -> Self { - Self::ExecuteWithCallback(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorCalls { - fn from(value: FeeControllerCall) -> Self { - Self::FeeController(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorCalls { - fn from(value: OwnerCall) -> Self { - Self::Owner(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorCalls { - fn from(value: Permit2Call) -> Self { - Self::Permit2(value) - } - } - impl ::core::convert::From - for V3DutchOrderReactorCalls { - fn from(value: SetProtocolFeeControllerCall) -> Self { - Self::SetProtocolFeeController(value) - } - } - impl ::core::convert::From for V3DutchOrderReactorCalls { - fn from(value: TransferOwnershipCall) -> Self { - Self::TransferOwnership(value) - } - } - ///Container type for all return fields from the `feeController` function with signature `feeController()` and selector `0x6999b377` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct FeeControllerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `permit2` function with signature `permit2()` and selector `0x12261ee7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct Permit2Return(pub ::ethers::core::types::Address); -} diff --git a/crates/bindings-uniswapx/src/v3dutchorderlib.rs b/crates/bindings-uniswapx/src/v3dutchorderlib.rs new file mode 100644 index 0000000..4ab4856 --- /dev/null +++ b/crates/bindings-uniswapx/src/v3dutchorderlib.rs @@ -0,0 +1,218 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface V3DutchOrderLib {} +``` + +...which was generated by the following JSON ABI: +```json +[] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod V3DutchOrderLib { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208af5a7eaf8aa6ba3ce825e90ec76f247e17fa03ddc057b8cb5897ebce11babed64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x8A\xF5\xA7\xEA\xF8\xAAk\xA3\xCE\x82^\x90\xECv\xF2G\xE1\x7F\xA0=\xDC\x05{\x8C\xB5\x89~\xBC\xE1\x1B\xAB\xEDdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208af5a7eaf8aa6ba3ce825e90ec76f247e17fa03ddc057b8cb5897ebce11babed64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x8A\xF5\xA7\xEA\xF8\xAAk\xA3\xCE\x82^\x90\xECv\xF2G\xE1\x7F\xA0=\xDC\x05{\x8C\xB5\x89~\xBC\xE1\x1B\xAB\xEDdsolcC\0\x08\x18\x003", + ); + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`V3DutchOrderLib`](self) contract instance. + +See the [wrapper's documentation](`V3DutchOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> V3DutchOrderLibInstance { + V3DutchOrderLibInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + V3DutchOrderLibInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + V3DutchOrderLibInstance::::deploy_builder(provider) + } + /**A [`V3DutchOrderLib`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`V3DutchOrderLib`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct V3DutchOrderLibInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for V3DutchOrderLibInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("V3DutchOrderLibInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > V3DutchOrderLibInstance { + /**Creates a new wrapper around an on-chain [`V3DutchOrderLib`](self) contract instance. + +See the [wrapper's documentation](`V3DutchOrderLibInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl V3DutchOrderLibInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> V3DutchOrderLibInstance { + V3DutchOrderLibInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > V3DutchOrderLibInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > V3DutchOrderLibInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/v3dutchorderreactor.rs b/crates/bindings-uniswapx/src/v3dutchorderreactor.rs new file mode 100644 index 0000000..adf9fff --- /dev/null +++ b/crates/bindings-uniswapx/src/v3dutchorderreactor.rs @@ -0,0 +1,4249 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface V3DutchOrderReactor { + struct SignedOrder { + bytes order; + bytes sig; + } + + error DeadlineReached(); + error DuplicateFeeOutput(address duplicateToken); + error FeeTooLarge(address token, uint256 amount, address recipient); + error IndexOutOfBounds(); + error InputAndOutputFees(); + error InvalidCosignature(); + error InvalidCosignerInput(); + error InvalidCosignerOutput(); + error InvalidDecayCurve(); + error InvalidFeeToken(address feeToken); + error InvalidReactor(); + error NativeTransferFailed(); + error NoExclusiveOverride(); + + event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); + event OwnershipTransferred(address indexed user, address indexed newOwner); + event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); + + constructor(address _permit2, address _protocolFeeOwner); + + receive() external payable; + + function execute(SignedOrder memory order) external payable; + function executeBatch(SignedOrder[] memory orders) external payable; + function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; + function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; + function feeController() external view returns (address); + function owner() external view returns (address); + function permit2() external view returns (address); + function setProtocolFeeController(address _newFeeController) external; + function transferOwnership(address newOwner) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_permit2", + "type": "address", + "internalType": "contract IPermit2" + }, + { + "name": "_protocolFeeOwner", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeBatchWithCallback", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeWithCallback", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "feeController", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IProtocolFeeController" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit2", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPermit2" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setProtocolFeeController", + "inputs": [ + { + "name": "_newFeeController", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Fill", + "inputs": [ + { + "name": "orderHash", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "filler", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "swapper", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ProtocolFeeControllerSet", + "inputs": [ + { + "name": "oldFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "newFeeController", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "DeadlineReached", + "inputs": [] + }, + { + "type": "error", + "name": "DuplicateFeeOutput", + "inputs": [ + { + "name": "duplicateToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "FeeTooLarge", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "IndexOutOfBounds", + "inputs": [] + }, + { + "type": "error", + "name": "InputAndOutputFees", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidCosignature", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidCosignerInput", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidCosignerOutput", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidDecayCurve", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidFeeToken", + "inputs": [ + { + "name": "feeToken", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "InvalidReactor", + "inputs": [] + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + }, + { + "type": "error", + "name": "NoExclusiveOverride", + "inputs": [] + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod V3DutchOrderReactor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60c06040523480156200001157600080fd5b50604051620046c4380380620046c483398101604081905262000034916200016a565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805261a4b0194601620000bf576001600160401b0362000985620000e060201b171660a052620000d8565b6001600160401b03620009fc6200014d60201b171660a0525b5050620001c3565b600060646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001489190620001a9565b905090565b4390565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b600060208284031215620001bc57600080fd5b5051919050565b60805160a0516144d5620001ef6000396000610b2901526000818160e00152611b3201526144d56000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004613047565b6101eb565b005b6100b96100c93660046130f5565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004613137565b6104c5565b34801561014a57600080fd5b506100b96101593660046131d5565b610683565b6100b961016c3660046131f2565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046131d5565b610894565b6101f3610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b284610a71565b816000815181106102c5576102c5613256565b60200260200101819052506102d981610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401613459565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610c73565b5061035f6001600255565b505050565b61036c610a00565b8060008167ffffffffffffffff81111561038857610388613227565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466613256565b9050602002810190610478919061351f565b610a71565b82828151811061048f5761048f613256565b6020908102919091010152600101610449565b506104ac81610c22565b6104b581610c73565b50506104c16001600255565b5050565b6104cd610a00565b8260008167ffffffffffffffff8111156104e9576104e9613227565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466613256565b8282815181106105d9576105d9613256565b60209081029190910101526001016105aa565b506105f681610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401613459565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610c73565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae57905050905061085682610a71565b8160008151811061086957610869613256565b602002602001018190525061087d81610c22565b61088681610c73565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f7919061355d565b905090565b4390565b6002805403610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610aea8380613576565b810190610af79190613b44565b90506000610b0482610dc6565b9050610b1081836110ac565b610b1982611108565b610b228261126c565b6000610b507f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b90506040518060a0016040528084600001518152602001610b888560a00151600001518487606001516113799092919063ffffffff16565b815260a0850151516080860151602090920191610ba59185611444565b8152602001868060200190610bba9190613576565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602090810184905260a0850151908101518151604090920151929650610c1a928792908561152b565b505050919050565b805160005b8181101561035f576000838281518110610c4357610c43613256565b60200260200101519050610c568161153f565b610c608133611a2f565b610c6a8133611b30565b50600101610c27565b805160005b81811015610db5576000838281518110610c9457610c94613256565b602002602001015190506000816040015151905060005b81811015610d1557600083604001518281518110610ccb57610ccb613256565b60200260200101519050610d0c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611f329092919063ffffffff16565b50600101610cab565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610d5e57610d5e613256565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610da391815260200190565b60405180910390a45050600101610c78565b5047156104c1576104c13347611f79565b6040517f563344757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8201527f56334475746368496e7075742062617365496e7075742c00000000000000000060658201527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c820152600090609801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208301527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348301527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b83015290606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906144136020830139604051602001610fa990613c5c565b604051602081830303815290604052604051602001610fc790613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110069594939291602001613ea6565b604051602081830303815290604052805190602001206110298360000151612013565b8360200151846040015161104086606001516120ad565b61104d87608001516121fe565b60408051602081019790975286019490945273ffffffffffffffffffffffffffffffffffffffff9092166060850152608084015260a083015260c082015260e0015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110eb576040517fb08ce5b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516104c1906110fe838561229f565b8360c00151612314565b60a08101516060015115611174578060600151602001518160a00151606001511115611160576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160609081015190820151602001525b8060800151518160a001516080015151146111bb576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808101515160005b8181101561035f576000836080015182815181106111e4576111e4613256565b6020026020010151905060008460a0015160800151838151811061120a5761120a613256565b602002602001015190508060001461126257816020015181101561125a576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111c4565b600061128582604001514861243c90919063ffffffff16565b90508160600151608001516000146112e05760006112ab83606001516080015183612477565b90506112d58160008560600151606001518660600151602001516124b0909392919063ffffffff16565b606084015160200152505b60808201515160005b8181101561067d5760008460800151828151811061130957611309613256565b602002602001015190508060a0015160001461137057600061132f8260a0015186612477565b60808301516020840151919250611369919083907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6124d0565b6020830152505b506001016112e9565b6113b36040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001600081526020018660600151815260200161256281525090506000611404826125ee565b6040805160608082018352895173ffffffffffffffffffffffffffffffffffffffff16825260208201939093529790910151908701525093949350505050565b82516060908067ffffffffffffffff81111561146257611462613227565b6040519080825280602002602001820160405280156114cb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114805790505b50915060005b81811015611522576114fd8682815181106114ee576114ee613256565b602002602001015186866126fa565b83828151811061150f5761150f613256565b60209081029190910101526001016114d1565b50509392505050565b61153885858585856127e3565b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661155f5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906115b6908590600401613f11565b600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116199190810190613f24565b60408301515181519192509060006116318284614023565b67ffffffffffffffff81111561164957611649613227565b6040519080825280602002602001820160405280156116b257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116675790505b50905060005b8381101561170357856040015181815181106116d6576116d6613256565b60200260200101518282815181106116f0576116f0613256565b60209081029190910101526001016116b8565b5060008060005b84811015611a1e57600087828151811061172657611726613256565b6020026020010151905060005b828110156117e45788818151811061174d5761174d613256565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117dc5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b600101611733565b506000805b888110156118a55760008b60400151828151811061180957611809613256565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361189c578515611886576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118959084614023565b9250600196505b506001016117e9565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361191e578415611905576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516119179082614023565b9050600193505b806000036119735781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611981816005612710612885565b826020015111156119f4578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611a0957611a09613256565b6020908102919091010152505060010161170a565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a80576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611afc9084908690600401614036565b60006040518083038186803b158015611b1457600080fd5b505afa158015611b28573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611bf0846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051602001611cbd907f4e6f6e6c696e656172447574636844656361792800000000000000000000000081527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060148201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000602b82015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061441360208301396040518060600160405280602e81526020016143e5602e9139604051602001611d2790613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f563344757463684f72646572280000000000000000000000000000000000000060208401527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8401527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8401527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8401527f56334475746368496e7075742062617365496e7075742c00000000000000000060658401527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c840152815160788185030181526098840190925291611e579060b801613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e97969594939291602001614065565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611f049695949392600401614118565b600060405180830381600087803b158015611f1e57600080fd5b505af1158015611b28573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611f575761035f8282611f79565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846128c1565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611fd3576040519150601f19603f3d011682016040523d82523d6000602084013e611fd8565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001614413608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161108f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040516020016120be90613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b840152815160448185030181526064840190925261217e929091906084016141d3565b60405160208183030381529060405280519060200120826000015183602001516121ab85604001516129ac565b60608087015160808089015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff909716968801969096529186019390935284015260a083015260c082015260e00161108f565b600080825160200267ffffffffffffffff81111561221e5761221e613227565b6040519080825280601f01601f191660200182016040528015612248576020820181803683370190505b50835190915060005b8181101561228f57600061227d86838151811061227057612270613256565b6020026020010151612aaa565b60208381028601015250600101612251565b5050805160209091012092915050565b600081468460a001516040516020016122b89190614202565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526122f5939291602001614287565b6040516020818303038152906040528051906020012090505b92915050565b6000808280602001905181019061232b91906142b4565b9150915060008360408151811061234457612344613256565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156123a1573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415806123fc575073ffffffffffffffffffffffffffffffffffffffff8116155b15612433576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b60008183101561246a5761245861245384846142d8565b612c0e565b6124639060006142eb565b905061230e565b61246361245383856142d8565b600080821261248f576124638383633b9aca00612885565b6124a761249b83614312565b8490633b9aca00612cc4565b61246390614312565b60006124c7856124c086846142eb565b85856124d0565b95945050505050565b6000808412156125335760006124e585614312565b905085612512827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6142d8565b1015612521578291505061255a565b61252b8187614023565b91505061254f565b8385101561254257508161255a565b61254c84866142d8565b90505b6124c7818484612d08565b949350505050565b60008484106125725750806124c7565b600061257e87866142d8565b9050600061258c88886142d8565b90506000858512156125be576125ae83836125a7888a6142eb565b9190612885565b6125b790614312565b90506125d7565b6125d483836125cd89896142eb565b9190612cc4565b90505b6125e1818761434a565b9998505050505050505050565b60006010826000015160200151511115612634576040517f0e99676600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160600151826040015110158061264f575081516020015151155b1561266e57608082015160a0830151602084015161230e929091612d08565b600061268f8360400151846060015161268791906142d8565b61ffff612d19565b90506000806000806126a5876000015186612d31565b935093509350935060006126d08561ffff168561ffff168861ffff1686868d60c0015163ffffffff16565b608089015160a08a015160208b01519293506126ee929184916124d0565b98975050505050505050565b604080516060810182526000808252602082018190529181019190915260006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001866080015181526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001612ef381525090506000612787826125ee565b90506040518060600160405280876000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001876060015173ffffffffffffffffffffffffffffffffffffffff16815250925050509392505050565b6127ee848483612f47565b6115385781612829576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561243357600082828151811061284e5761284e613256565b60200260200101519050612877856127106128699190614023565b602083015190612710612cc4565b602090910152600101612831565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026128ba57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b6040517f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208201527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8201526000906064016040516020818303038152906040528051906020012082600001518360200151604051602001612a579190614372565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830194909452810191909152606081019190915260800161108f565b6000604051602001612abb90613d6e565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8401528151604481850301815260648401909252612b7b929091906084016141d3565b6040516020818303038152906040528051906020012082600001518360200151612ba885604001516129ac565b60608087015160808089015160a0808b015160408051602081019b909b5273ffffffffffffffffffffffffffffffffffffffff998a16908b01529489019690965290870193909352939093169184019190915260c083015260e08201526101000161108f565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401610700565b5090565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612cf957600080fd5b50910281810615159190040190565b600061255a612d178585612f93565b835b6000818310612d285781612d2a565b825b9392505050565b6000806000806000612d44876000015190565b905061ffff8616612d56826000612fa2565b61ffff1610612d9a576000612d6b8282612fa2565b60008960200151600081518110612d8457612d84613256565b6020026020010151945094509450945050612eea565b60006001886020015151612dae91906143a8565b905060015b8161ffff168161ffff1611612e7e578761ffff16612dde8261ffff1685612fa290919063ffffffff16565b61ffff1610612e6c57612e00612df56001836143a8565b849061ffff16612fa2565b612e0e8461ffff8416612fa2565b60208b0151612e1e6001856143a8565b61ffff1681518110612e3257612e32613256565b60200260200101518b602001518461ffff1681518110612e5457612e54613256565b60200260200101519650965096509650505050612eea565b80612e76816143c3565b915050612db3565b50612e8d8261ffff8316612fa2565b612e9b8361ffff8416612fa2565b89602001518361ffff1681518110612eb557612eb5613256565b60200260200101518a602001518461ffff1681518110612ed757612ed7613256565b6020026020010151955095509550955050505b92959194509250565b6000848410612f035750806124c7565b6000612f0f87866142d8565b90506000612f1d88886142d8565b9050600085851215612f38576125ae83836125cd888a6142eb565b6125d483836125a789896142eb565b600073ffffffffffffffffffffffffffffffffffffffff84161580612f6b57508282115b8061255a575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b6000818311612d285781612d2a565b600060108210612fde576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506010021c90565b600060408284031215612ff857600080fd5b50919050565b60008083601f84011261301057600080fd5b50813567ffffffffffffffff81111561302857600080fd5b60208301915083602082850101111561304057600080fd5b9250929050565b60008060006040848603121561305c57600080fd5b833567ffffffffffffffff8082111561307457600080fd5b61308087838801612fe6565b9450602086013591508082111561309657600080fd5b506130a386828701612ffe565b9497909650939450505050565b60008083601f8401126130c257600080fd5b50813567ffffffffffffffff8111156130da57600080fd5b6020830191508360208260051b850101111561304057600080fd5b6000806020838503121561310857600080fd5b823567ffffffffffffffff81111561311f57600080fd5b61312b858286016130b0565b90969095509350505050565b6000806000806040858703121561314d57600080fd5b843567ffffffffffffffff8082111561316557600080fd5b613171888389016130b0565b9096509450602087013591508082111561318a57600080fd5b5061319787828801612ffe565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356131d0816131a3565b919050565b6000602082840312156131e757600080fd5b8135612d2a816131a3565b60006020828403121561320457600080fd5b813567ffffffffffffffff81111561321b57600080fd5b61255a84828501612fe6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156132a0578181015183820152602001613288565b50506000910152565b600081518084526132c1816020860160208601613285565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015613353578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101613308565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526133d26101a08501826132a9565b905060208301516134106020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261342882826132f3565b915050606083015184820360a086015261344282826132a9565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156134ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526134bc86835161335e565b95509382019390820190600101613482565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261355357600080fd5b9190910192915050565b60006020828403121561356f57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135ab57600080fd5b83018035915067ffffffffffffffff8211156135c657600080fd5b60200191503681900382131561304057600080fd5b60405160c0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405290565b6040805190810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160a0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160e0810167ffffffffffffffff811182821017156135fe576135fe613227565b6040516060810167ffffffffffffffff811182821017156135fe576135fe613227565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156136d7576136d7613227565b604052919050565b600082601f8301126136f057600080fd5b813567ffffffffffffffff81111561370a5761370a613227565b61373b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613690565b81815284602083860101111561375057600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561377f57600080fd5b6137876135db565b90508135613794816131a3565b815260208201356137a4816131a3565b80602083015250604082013560408201526060820135606082015260808201356137cd816131a3565b608082015260a082013567ffffffffffffffff8111156137ec57600080fd5b6137f8848285016136df565b60a08301525092915050565b600067ffffffffffffffff82111561381e5761381e613227565b5060051b60200190565b60006040828403121561383a57600080fd5b613842613604565b90508135815260208083013567ffffffffffffffff81111561386357600080fd5b8301601f8101851361387457600080fd5b803561388761388282613804565b613690565b81815260059190911b820183019083810190878311156138a657600080fd5b928401925b828410156138c4578335825292840192908401906138ab565b8085870152505050505092915050565b600060a082840312156138e657600080fd5b6138ee613627565b905081356138fb816131a3565b815260208281013590820152604082013567ffffffffffffffff81111561392157600080fd5b61392d84828501613828565b604083015250606082013560608201526080820135608082015292915050565b600082601f83011261395e57600080fd5b8135602061396e61388283613804565b82815260059290921b8401810191818101908684111561398d57600080fd5b8286015b84811015613a6a57803567ffffffffffffffff808211156139b25760008081fd5b818901915060c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156139eb5760008081fd5b6139f36135db565b87840135613a00816131a3565b81526040848101358983015260608086013585811115613a205760008081fd5b613a2e8f8c838a0101613828565b838501525060809450848601359150613a46826131a3565b82015260a08481013593820193909352920135908201528352918301918301613991565b509695505050505050565b600060a08284031215613a8757600080fd5b613a8f613627565b905081358152602080830135613aa4816131a3565b8082840152506040830135604083015260608301356060830152608083013567ffffffffffffffff811115613ad857600080fd5b8301601f81018513613ae957600080fd5b8035613af761388282613804565b81815260059190911b82018301908381019087831115613b1657600080fd5b928401925b82841015613b3457833582529284019290840190613b1b565b6080860152509295945050505050565b600060208284031215613b5657600080fd5b813567ffffffffffffffff80821115613b6e57600080fd5b9083019060e08286031215613b8257600080fd5b613b8a61364a565b823582811115613b9957600080fd5b613ba58782860161376d565b825250613bb4602084016131c5565b602082015260408301356040820152606083013582811115613bd557600080fd5b613be1878286016138d4565b606083015250608083013582811115613bf957600080fd5b613c058782860161394d565b60808301525060a083013582811115613c1d57600080fd5b613c2987828601613a75565b60a08301525060c083013582811115613c4157600080fd5b613c4d878286016136df565b60c08301525095945050505050565b7f56334475746368496e707574280000000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600d8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601b8201527f4e6f6e6c696e656172447574636844656361792063757276652c000000000000602f8201527f75696e74323536206d6178416d6f756e742c000000000000000000000000000060498201527f75696e743235362061646a7573746d656e745065724777656942617365466565605b8201527f2900000000000000000000000000000000000000000000000000000000000000607b8201526000607c820161230e565b7f563344757463684f75747075742800000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600e8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601c8201527f4e6f6e6c696e656172447574636844656361792063757276652c00000000000060308201527f6164647265737320726563697069656e742c0000000000000000000000000000604a8201527f75696e74323536206d696e416d6f756e742c0000000000000000000000000000605c8201527f75696e743235362061646a7573746d656e745065724777656942617365466565606e8201527f2900000000000000000000000000000000000000000000000000000000000000608e8201526000608f820161230e565b60008651613eb8818460208b01613285565b865190830190613ecc818360208b01613285565b8651910190613edf818360208a01613285565b8551910190613ef2818360208901613285565b8451910190613f05818360208801613285565b01979650505050505050565b602081526000612d2a602083018461335e565b60006020808385031215613f3757600080fd5b825167ffffffffffffffff811115613f4e57600080fd5b8301601f81018513613f5f57600080fd5b8051613f6d61388282613804565b81815260609182028301840191848201919088841115613f8c57600080fd5b938501935b83851015613fe85780858a031215613fa95760008081fd5b613fb161366d565b8551613fbc816131a3565b81528587015187820152604080870151613fd5816131a3565b9082015283529384019391850191613f91565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561230e5761230e613ff4565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061255a604083018461335e565b7f563344757463684f72646572207769746e6573732900000000000000000000008152600060158851602061409f82848701838e01613285565b8951918501916140b481858501848e01613285565b89519201916140c881858501848d01613285565b88519201916140dc81858501848c01613285565b87519201916140f081858501848b01613285565b865192019161410481858501848a01613285565b919091019091019998505050505050505050565b6000610140614148838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526141896080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526141be818401866132a9565b90508281036101208401526125e181856132a9565b600083516141e5818460208801613285565b8351908301906141f9818360208801613285565b01949350505050565b6000602080835260c0830184518285015273ffffffffffffffffffffffffffffffffffffffff828601511660408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e0870191508483019350600092505b80831015613a6a5783518252928401926001929092019190840190614267565b838152826020820152600082516142a5816040850160208701613285565b91909101604001949350505050565b600080604083850312156142c757600080fd5b505080516020909101519092909150565b8181038181111561230e5761230e613ff4565b818103600083128015838313168383128216171561430b5761430b613ff4565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361434357614343613ff4565b5060000390565b808201828112600083128015821682158216171561436a5761436a613ff4565b505092915050565b815160009082906020808601845b8381101561439c57815185529382019390820190600101614380565b50929695505050505050565b61ffff82811682821603908082111561430b5761430b613ff4565b600061ffff8083168181036143da576143da613ff4565b600101939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220a83088cf8ce7734a1a4fd473e15da5dd40de922f9f237cdcd5a3258bdb21af8564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0F\xC48\x03\x80b\0F\xC4\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01jV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\xA4\xB0\x19F\x01b\0\0\xBFW`\x01`\x01`@\x1B\x03b\0\t\x85b\0\0\xE0` \x1B\x17\x16`\xA0Rb\0\0\xD8V[`\x01`\x01`@\x1B\x03b\0\t\xFCb\0\x01M` \x1B\x17\x16`\xA0R[PPb\0\x01\xC3V[`\0`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01H\x91\x90b\0\x01\xA9V[\x90P\x90V[C\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01gW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\x01~W`\0\x80\xFD[\x82Qb\0\x01\x8B\x81b\0\x01QV[` \x84\x01Q\x90\x92Pb\0\x01\x9E\x81b\0\x01QV[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15b\0\x01\xBCW`\0\x80\xFD[PQ\x91\x90PV[`\x80Q`\xA0QaD\xD5b\0\x01\xEF`\09`\0a\x0B)\x01R`\0\x81\x81`\xE0\x01Ra\x1B2\x01RaD\xD5`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a0GV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a0\xF5V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a17V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a1\xD5V[a\x06\x83V[a\0\xB9a\x01l6`\x04a1\xF2V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a1\xD5V[a\x08\x94V[a\x01\xF3a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\nqV[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a2VV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0CsV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\n\0V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a5\x1FV[a\nqV[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0C\"V[a\x04\xB5\x81a\x0CsV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\n\0V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0CsV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\nqV[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia2VV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0C\"V[a\x08\x86\x81a\x0CsV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF7\x91\x90a5]V[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nkW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xEA\x83\x80a5vV[\x81\x01\x90a\n\xF7\x91\x90a;DV[\x90P`\0a\x0B\x04\x82a\r\xC6V[\x90Pa\x0B\x10\x81\x83a\x10\xACV[a\x0B\x19\x82a\x11\x08V[a\x0B\"\x82a\x12lV[`\0a\x0BP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\x0B\x88\x85`\xA0\x01Q`\0\x01Q\x84\x87``\x01Qa\x13y\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0B\xA5\x91\x85a\x14DV[\x81R` \x01\x86\x80` \x01\x90a\x0B\xBA\x91\x90a5vV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0C\x1A\x92\x87\x92\x90\x85a\x15+V[PPP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0CCWa\x0CCa2VV[` \x02` \x01\x01Q\x90Pa\x0CV\x81a\x15?V[a\x0C`\x813a\x1A/V[a\x0Cj\x813a\x1B0V[P`\x01\x01a\x0C'V[\x80Q`\0[\x81\x81\x10\x15a\r\xB5W`\0\x83\x82\x81Q\x81\x10a\x0C\x94Wa\x0C\x94a2VV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\r\x15W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\xCBWa\x0C\xCBa2VV[` \x02` \x01\x01Q\x90Pa\r\x0C\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1F2\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0C\xABV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r^Wa\r^a2VV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\r\xA3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CxV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1FyV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R`\0\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q` \x01a\x0F\xA9\x90a<\\V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\xC7\x90a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10\x06\x95\x94\x93\x92\x91` \x01a>\xA6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x10)\x83`\0\x01Qa \x13V[\x83` \x01Q\x84`@\x01Qa\x10@\x86``\x01Qa \xADV[a\x10M\x87`\x80\x01Qa!\xFEV[`@\x80Q` \x81\x01\x97\x90\x97R\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16``\x85\x01R`\x80\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xEBW`@Q\x7F\xB0\x8C\xE5\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x04\xC1\x90a\x10\xFE\x83\x85a\"\x9FV[\x83`\xC0\x01Qa#\x14V[`\xA0\x81\x01Q``\x01Q\x15a\x11tW\x80``\x01Q` \x01Q\x81`\xA0\x01Q``\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q``\x90\x81\x01Q\x90\x82\x01Q` \x01R[\x80`\x80\x01QQ\x81`\xA0\x01Q`\x80\x01QQ\x14a\x11\xBBW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x81\x01QQ`\0[\x81\x81\x10\x15a\x03_W`\0\x83`\x80\x01Q\x82\x81Q\x81\x10a\x11\xE4Wa\x11\xE4a2VV[` \x02` \x01\x01Q\x90P`\0\x84`\xA0\x01Q`\x80\x01Q\x83\x81Q\x81\x10a\x12\nWa\x12\na2VV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12bW\x81` \x01Q\x81\x10\x15a\x12ZW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xC4V[`\0a\x12\x85\x82`@\x01QHa$<\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x81``\x01Q`\x80\x01Q`\0\x14a\x12\xE0W`\0a\x12\xAB\x83``\x01Q`\x80\x01Q\x83a$wV[\x90Pa\x12\xD5\x81`\0\x85``\x01Q``\x01Q\x86``\x01Q` \x01Qa$\xB0\x90\x93\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[``\x84\x01Q` \x01RP[`\x80\x82\x01QQ`\0[\x81\x81\x10\x15a\x06}W`\0\x84`\x80\x01Q\x82\x81Q\x81\x10a\x13\tWa\x13\ta2VV[` \x02` \x01\x01Q\x90P\x80`\xA0\x01Q`\0\x14a\x13pW`\0a\x13/\x82`\xA0\x01Q\x86a$wV[`\x80\x83\x01Q` \x84\x01Q\x91\x92Pa\x13i\x91\x90\x83\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa$\xD0V[` \x83\x01RP[P`\x01\x01a\x12\xE9V[a\x13\xB3`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01`\0\x81R` \x01\x86``\x01Q\x81R` \x01a%b\x81RP\x90P`\0a\x14\x04\x82a%\xEEV[`@\x80Q``\x80\x82\x01\x83R\x89Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x82\x01\x93\x90\x93R\x97\x90\x91\x01Q\x90\x87\x01RP\x93\x94\x93PPPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14bWa\x14ba2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x14\xCBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\x80W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x15\"Wa\x14\xFD\x86\x82\x81Q\x81\x10a\x14\xEEWa\x14\xEEa2VV[` \x02` \x01\x01Q\x86\x86a&\xFAV[\x83\x82\x81Q\x81\x10a\x15\x0FWa\x15\x0Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\xD1V[PP\x93\x92PPPV[a\x158\x85\x85\x85\x85\x85a'\xE3V[PPPPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15_WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x15\xB6\x90\x85\x90`\x04\x01a?\x11V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x16\x19\x91\x90\x81\x01\x90a?$V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x161\x82\x84a@#V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16IWa\x16Ia2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16\xB2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16gW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x17\x03W\x85`@\x01Q\x81\x81Q\x81\x10a\x16\xD6Wa\x16\xD6a2VV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\xF0Wa\x16\xF0a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16\xB8V[P`\0\x80`\0[\x84\x81\x10\x15a\x1A\x1EW`\0\x87\x82\x81Q\x81\x10a\x17&Wa\x17&a2VV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\xE4W\x88\x81\x81Q\x81\x10a\x17MWa\x17Ma2VV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xDCW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x173V[P`\0\x80[\x88\x81\x10\x15a\x18\xA5W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x18\tWa\x18\ta2VV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18\x9CW\x85\x15a\x18\x86W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x18\x95\x90\x84a@#V[\x92P`\x01\x96P[P`\x01\x01a\x17\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x19\x1EW\x84\x15a\x19\x05W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x19\x17\x90\x82a@#V[\x90P`\x01\x93P[\x80`\0\x03a\x19sW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x19\x81\x81`\x05a'\x10a(\x85V[\x82` \x01Q\x11\x15a\x19\xF4W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x1A\tWa\x1A\ta2VV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x17\nV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A\x80W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\xFC\x90\x84\x90\x86\x90`\x04\x01a@6V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1B\x14W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\xF0\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1C\xBD\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aC\xE5`.\x919`@Q` \x01a\x1D'\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1EW\x90`\xB8\x01a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x97\x96\x95\x94\x93\x92\x91` \x01a@eV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1F\x04\x96\x95\x94\x93\x92`\x04\x01aA\x18V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x1EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1FWWa\x03_\x82\x82a\x1FyV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(\xC1V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1F\xD3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xD8V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aD\x13`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x8F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q` \x01a \xBE\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!~\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa!\xAB\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10\x8FV[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x1EWa\"\x1Ea2'V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\"HW` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P`\0[\x81\x81\x10\x15a\"\x8FW`\0a\"}\x86\x83\x81Q\x81\x10a\"pWa\"pa2VV[` \x02` \x01\x01Qa*\xAAV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a\"QV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xA0\x01Q`@Q` \x01a\"\xB8\x91\x90aB\x02V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xF5\x93\x92\x91` \x01aB\x87V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a#+\x91\x90aB\xB4V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a#DWa#Da2VV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#\xA1W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\xFCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a$3W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x81\x83\x10\x15a$jWa$Xa$S\x84\x84aB\xD8V[a,\x0EV[a$c\x90`\0aB\xEBV[\x90Pa#\x0EV[a$ca$S\x83\x85aB\xD8V[`\0\x80\x82\x12a$\x8FWa$c\x83\x83c;\x9A\xCA\0a(\x85V[a$\xA7a$\x9B\x83aC\x12V[\x84\x90c;\x9A\xCA\0a,\xC4V[a$c\x90aC\x12V[`\0a$\xC7\x85a$\xC0\x86\x84aB\xEBV[\x85\x85a$\xD0V[\x95\x94PPPPPV[`\0\x80\x84\x12\x15a%3W`\0a$\xE5\x85aC\x12V[\x90P\x85a%\x12\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaB\xD8V[\x10\x15a%!W\x82\x91PPa%ZV[a%+\x81\x87a@#V[\x91PPa%OV[\x83\x85\x10\x15a%BWP\x81a%ZV[a%L\x84\x86aB\xD8V[\x90P[a$\xC7\x81\x84\x84a-\x08V[\x94\x93PPPPV[`\0\x84\x84\x10a%rWP\x80a$\xC7V[`\0a%~\x87\x86aB\xD8V[\x90P`\0a%\x8C\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a%\xBEWa%\xAE\x83\x83a%\xA7\x88\x8AaB\xEBV[\x91\x90a(\x85V[a%\xB7\x90aC\x12V[\x90Pa%\xD7V[a%\xD4\x83\x83a%\xCD\x89\x89aB\xEBV[\x91\x90a,\xC4V[\x90P[a%\xE1\x81\x87aCJV[\x99\x98PPPPPPPPPV[`\0`\x10\x82`\0\x01Q` \x01QQ\x11\x15a&4W`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a&OWP\x81Q` \x01QQ\x15[\x15a&nW`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa#\x0E\x92\x90\x91a-\x08V[`\0a&\x8F\x83`@\x01Q\x84``\x01Qa&\x87\x91\x90aB\xD8V[a\xFF\xFFa-\x19V[\x90P`\0\x80`\0\x80a&\xA5\x87`\0\x01Q\x86a-1V[\x93P\x93P\x93P\x93P`\0a&\xD0\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&\xEE\x92\x91\x84\x91a$\xD0V[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.\xF3\x81RP\x90P`\0a'\x87\x82a%\xEEV[\x90P`@Q\x80``\x01`@R\x80\x87`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a'\xEE\x84\x84\x83a/GV[a\x158W\x81a()W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a$3W`\0\x82\x82\x81Q\x81\x10a(NWa(Na2VV[` \x02` \x01\x01Q\x90Pa(w\x85a'\x10a(i\x91\x90a@#V[` \x83\x01Q\x90a'\x10a,\xC4V[` \x90\x91\x01R`\x01\x01a(1V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(\xBAW`\0\x80\xFD[P\x91\x02\x04\x90V[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x158W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R`\0\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Q`@Q` \x01a*W\x91\x90aCrV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10\x8FV[`\0`@Q` \x01a*\xBB\x90a=nV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra+{\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa+\xA8\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`\xA0\x80\x8B\x01Q`@\x80Q` \x81\x01\x9B\x90\x9BRs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\x8A\x16\x90\x8B\x01R\x94\x89\x01\x96\x90\x96R\x90\x87\x01\x93\x90\x93R\x93\x90\x93\x16\x91\x84\x01\x91\x90\x91R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01a\x10\x8FV[`\0\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xC0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FSafeCast: value doesn't fit in a`D\x82\x01R\x7Fn int256\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x07\0V[P\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a,\xF9W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0a%Za-\x17\x85\x85a/\x93V[\x83[`\0\x81\x83\x10a-(W\x81a-*V[\x82[\x93\x92PPPV[`\0\x80`\0\x80`\0a-D\x87`\0\x01Q\x90V[\x90Pa\xFF\xFF\x86\x16a-V\x82`\0a/\xA2V[a\xFF\xFF\x16\x10a-\x9AW`\0a-k\x82\x82a/\xA2V[`\0\x89` \x01Q`\0\x81Q\x81\x10a-\x84Wa-\x84a2VV[` \x02` \x01\x01Q\x94P\x94P\x94P\x94PPa.\xEAV[`\0`\x01\x88` \x01QQa-\xAE\x91\x90aC\xA8V[\x90P`\x01[\x81a\xFF\xFF\x16\x81a\xFF\xFF\x16\x11a.~W\x87a\xFF\xFF\x16a-\xDE\x82a\xFF\xFF\x16\x85a/\xA2\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[a\xFF\xFF\x16\x10a.lWa.\0a-\xF5`\x01\x83aC\xA8V[\x84\x90a\xFF\xFF\x16a/\xA2V[a.\x0E\x84a\xFF\xFF\x84\x16a/\xA2V[` \x8B\x01Qa.\x1E`\x01\x85aC\xA8V[a\xFF\xFF\x16\x81Q\x81\x10a.2Wa.2a2VV[` \x02` \x01\x01Q\x8B` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.TWa.Ta2VV[` \x02` \x01\x01Q\x96P\x96P\x96P\x96PPPPa.\xEAV[\x80a.v\x81aC\xC3V[\x91PPa-\xB3V[Pa.\x8D\x82a\xFF\xFF\x83\x16a/\xA2V[a.\x9B\x83a\xFF\xFF\x84\x16a/\xA2V[\x89` \x01Q\x83a\xFF\xFF\x16\x81Q\x81\x10a.\xB5Wa.\xB5a2VV[` \x02` \x01\x01Q\x8A` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.\xD7Wa.\xD7a2VV[` \x02` \x01\x01Q\x95P\x95P\x95P\x95PPP[\x92\x95\x91\x94P\x92PV[`\0\x84\x84\x10a/\x03WP\x80a$\xC7V[`\0a/\x0F\x87\x86aB\xD8V[\x90P`\0a/\x1D\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a/8Wa%\xAE\x83\x83a%\xCD\x88\x8AaB\xEBV[a%\xD4\x83\x83a%\xA7\x89\x89aB\xEBV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a/kWP\x82\x82\x11[\x80a%ZWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[`\0\x81\x83\x11a-(W\x81a-*V[`\0`\x10\x82\x10a/\xDEW`@Q\x7FN#\xD05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x10\x02\x1C\x90V[`\0`@\x82\x84\x03\x12\x15a/\xF8W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a0\x10W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0(W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\\W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a0tW`\0\x80\xFD[a0\x80\x87\x83\x88\x01a/\xE6V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a0\x96W`\0\x80\xFD[Pa0\xA3\x86\x82\x87\x01a/\xFEV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a0\xC2W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\xDAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a1\x08W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\x1FW`\0\x80\xFD[a1+\x85\x82\x86\x01a0\xB0V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a1MW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a1eW`\0\x80\xFD[a1q\x88\x83\x89\x01a0\xB0V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a1\x8AW`\0\x80\xFD[Pa1\x97\x87\x82\x88\x01a/\xFEV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a1\xD0\x81a1\xA3V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a1\xE7W`\0\x80\xFD[\x815a-*\x81a1\xA3V[`\0` \x82\x84\x03\x12\x15a2\x04W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a2\x1BW`\0\x80\xFD[a%Z\x84\x82\x85\x01a/\xE6V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a2\xA0W\x81\x81\x01Q\x83\x82\x01R` \x01a2\x88V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra2\xC1\x81` \x86\x01` \x86\x01a2\x85V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a3SW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a3\x08V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra3\xD2a\x01\xA0\x85\x01\x82a2\xA9V[\x90P` \x83\x01Qa4\x10` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra4(\x82\x82a2\xF3V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra4B\x82\x82a2\xA9V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a4\xCEW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra4\xBC\x86\x83Qa3^V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a4\x82V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a5SW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a5oW`\0\x80\xFD[PQ\x91\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a5\xABW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a5\xC6W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a0@W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@R\x90V[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a6\xD7Wa6\xD7a2'V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a6\xF0W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\nWa7\na2'V[a7;` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a6\x90V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a7PW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a7\x7FW`\0\x80\xFD[a7\x87a5\xDBV[\x90P\x815a7\x94\x81a1\xA3V[\x81R` \x82\x015a7\xA4\x81a1\xA3V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a7\xCD\x81a1\xA3V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\xECW`\0\x80\xFD[a7\xF8\x84\x82\x85\x01a6\xDFV[`\xA0\x83\x01RP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a8\x1EWa8\x1Ea2'V[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15a8:W`\0\x80\xFD[a8Ba6\x04V[\x90P\x815\x81R` \x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a8cW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a8tW`\0\x80\xFD[\x805a8\x87a8\x82\x82a8\x04V[a6\x90V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a8\xA6W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a8\xC4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a8\xABV[\x80\x85\x87\x01RPPPPP\x92\x91PPV[`\0`\xA0\x82\x84\x03\x12\x15a8\xE6W`\0\x80\xFD[a8\xEEa6'V[\x90P\x815a8\xFB\x81a1\xA3V[\x81R` \x82\x81\x015\x90\x82\x01R`@\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a9!W`\0\x80\xFD[a9-\x84\x82\x85\x01a8(V[`@\x83\x01RP``\x82\x015``\x82\x01R`\x80\x82\x015`\x80\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a9^W`\0\x80\xFD[\x815` a9na8\x82\x83a8\x04V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a9\x8DW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a:jW\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a9\xB2W`\0\x80\x81\xFD[\x81\x89\x01\x91P`\xC0\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x84\x8D\x03\x01\x12\x15a9\xEBW`\0\x80\x81\xFD[a9\xF3a5\xDBV[\x87\x84\x015a:\0\x81a1\xA3V[\x81R`@\x84\x81\x015\x89\x83\x01R``\x80\x86\x015\x85\x81\x11\x15a: W`\0\x80\x81\xFD[a:.\x8F\x8C\x83\x8A\x01\x01a8(V[\x83\x85\x01RP`\x80\x94P\x84\x86\x015\x91Pa:F\x82a1\xA3V[\x82\x01R`\xA0\x84\x81\x015\x93\x82\x01\x93\x90\x93R\x92\x015\x90\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a9\x91V[P\x96\x95PPPPPPV[`\0`\xA0\x82\x84\x03\x12\x15a:\x87W`\0\x80\xFD[a:\x8Fa6'V[\x90P\x815\x81R` \x80\x83\x015a:\xA4\x81a1\xA3V[\x80\x82\x84\x01RP`@\x83\x015`@\x83\x01R``\x83\x015``\x83\x01R`\x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a:\xD8W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a:\xE9W`\0\x80\xFD[\x805a:\xF7a8\x82\x82a8\x04V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a;\x16W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a;4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a;\x1BV[`\x80\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a;VW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a;nW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a;\x82W`\0\x80\xFD[a;\x8Aa6JV[\x825\x82\x81\x11\x15a;\x99W`\0\x80\xFD[a;\xA5\x87\x82\x86\x01a7mV[\x82RPa;\xB4` \x84\x01a1\xC5V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015\x82\x81\x11\x15a;\xD5W`\0\x80\xFD[a;\xE1\x87\x82\x86\x01a8\xD4V[``\x83\x01RP`\x80\x83\x015\x82\x81\x11\x15a;\xF9W`\0\x80\xFD[a<\x05\x87\x82\x86\x01a9MV[`\x80\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a<\x1DW`\0\x80\xFD[a<)\x87\x82\x86\x01a:uV[`\xA0\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a\xB8\x81\x84` \x8B\x01a2\x85V[\x86Q\x90\x83\x01\x90a>\xCC\x81\x83` \x8B\x01a2\x85V[\x86Q\x91\x01\x90a>\xDF\x81\x83` \x8A\x01a2\x85V[\x85Q\x91\x01\x90a>\xF2\x81\x83` \x89\x01a2\x85V[\x84Q\x91\x01\x90a?\x05\x81\x83` \x88\x01a2\x85V[\x01\x97\x96PPPPPPPV[` \x81R`\0a-*` \x83\x01\x84a3^V[`\0` \x80\x83\x85\x03\x12\x15a?7W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a?NW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a?_W`\0\x80\xFD[\x80Qa?ma8\x82\x82a8\x04V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a?\x8CW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a?\xE8W\x80\x85\x8A\x03\x12\x15a?\xA9W`\0\x80\x81\xFD[a?\xB1a6mV[\x85Qa?\xBC\x81a1\xA3V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa?\xD5\x81a1\xA3V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a?\x91V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a#\x0EWa#\x0Ea?\xF4V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a%Z`@\x83\x01\x84a3^V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x15\x88Q` a@\x9F\x82\x84\x87\x01\x83\x8E\x01a2\x85V[\x89Q\x91\x85\x01\x91a@\xB4\x81\x85\x85\x01\x84\x8E\x01a2\x85V[\x89Q\x92\x01\x91a@\xC8\x81\x85\x85\x01\x84\x8D\x01a2\x85V[\x88Q\x92\x01\x91a@\xDC\x81\x85\x85\x01\x84\x8C\x01a2\x85V[\x87Q\x92\x01\x91a@\xF0\x81\x85\x85\x01\x84\x8B\x01a2\x85V[\x86Q\x92\x01\x91aA\x04\x81\x85\x85\x01\x84\x8A\x01a2\x85V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[`\0a\x01@aAH\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01RaA\x89`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01RaA\xBE\x81\x84\x01\x86a2\xA9V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%\xE1\x81\x85a2\xA9V[`\0\x83QaA\xE5\x81\x84` \x88\x01a2\x85V[\x83Q\x90\x83\x01\x90aA\xF9\x81\x83` \x88\x01a2\x85V[\x01\x94\x93PPPPV[`\0` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a:jW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aBgV[\x83\x81R\x82` \x82\x01R`\0\x82QaB\xA5\x81`@\x85\x01` \x87\x01a2\x85V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15aB\xC7W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a#\x0EWa#\x0Ea?\xF4V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aC\x0BWaC\x0Ba?\xF4V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aCCWaCCa?\xF4V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aCjWaCja?\xF4V[PP\x92\x91PPV[\x81Q`\0\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aC\x9CW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aC\x80V[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aC\x0BWaC\x0Ba?\xF4V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x03aC\xDAWaC\xDAa?\xF4V[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xA80\x88\xCF\x8C\xE7sJ\x1AO\xD4s\xE1]\xA5\xDD@\xDE\x92/\x9F#|\xDC\xD5\xA3%\x8B\xDB!\xAF\x85dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004613047565b6101eb565b005b6100b96100c93660046130f5565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004613137565b6104c5565b34801561014a57600080fd5b506100b96101593660046131d5565b610683565b6100b961016c3660046131f2565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046131d5565b610894565b6101f3610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b284610a71565b816000815181106102c5576102c5613256565b60200260200101819052506102d981610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401613459565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610c73565b5061035f6001600255565b505050565b61036c610a00565b8060008167ffffffffffffffff81111561038857610388613227565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466613256565b9050602002810190610478919061351f565b610a71565b82828151811061048f5761048f613256565b6020908102919091010152600101610449565b506104ac81610c22565b6104b581610c73565b50506104c16001600255565b5050565b6104cd610a00565b8260008167ffffffffffffffff8111156104e9576104e9613227565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466613256565b8282815181106105d9576105d9613256565b60209081029190910101526001016105aa565b506105f681610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401613459565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610c73565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae57905050905061085682610a71565b8160008151811061086957610869613256565b602002602001018190525061087d81610c22565b61088681610c73565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f7919061355d565b905090565b4390565b6002805403610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610aea8380613576565b810190610af79190613b44565b90506000610b0482610dc6565b9050610b1081836110ac565b610b1982611108565b610b228261126c565b6000610b507f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b90506040518060a0016040528084600001518152602001610b888560a00151600001518487606001516113799092919063ffffffff16565b815260a0850151516080860151602090920191610ba59185611444565b8152602001868060200190610bba9190613576565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602090810184905260a0850151908101518151604090920151929650610c1a928792908561152b565b505050919050565b805160005b8181101561035f576000838281518110610c4357610c43613256565b60200260200101519050610c568161153f565b610c608133611a2f565b610c6a8133611b30565b50600101610c27565b805160005b81811015610db5576000838281518110610c9457610c94613256565b602002602001015190506000816040015151905060005b81811015610d1557600083604001518281518110610ccb57610ccb613256565b60200260200101519050610d0c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611f329092919063ffffffff16565b50600101610cab565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610d5e57610d5e613256565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610da391815260200190565b60405180910390a45050600101610c78565b5047156104c1576104c13347611f79565b6040517f563344757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8201527f56334475746368496e7075742062617365496e7075742c00000000000000000060658201527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c820152600090609801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208301527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348301527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b83015290606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906144136020830139604051602001610fa990613c5c565b604051602081830303815290604052604051602001610fc790613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110069594939291602001613ea6565b604051602081830303815290604052805190602001206110298360000151612013565b8360200151846040015161104086606001516120ad565b61104d87608001516121fe565b60408051602081019790975286019490945273ffffffffffffffffffffffffffffffffffffffff9092166060850152608084015260a083015260c082015260e0015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110eb576040517fb08ce5b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516104c1906110fe838561229f565b8360c00151612314565b60a08101516060015115611174578060600151602001518160a00151606001511115611160576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160609081015190820151602001525b8060800151518160a001516080015151146111bb576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808101515160005b8181101561035f576000836080015182815181106111e4576111e4613256565b6020026020010151905060008460a0015160800151838151811061120a5761120a613256565b602002602001015190508060001461126257816020015181101561125a576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111c4565b600061128582604001514861243c90919063ffffffff16565b90508160600151608001516000146112e05760006112ab83606001516080015183612477565b90506112d58160008560600151606001518660600151602001516124b0909392919063ffffffff16565b606084015160200152505b60808201515160005b8181101561067d5760008460800151828151811061130957611309613256565b602002602001015190508060a0015160001461137057600061132f8260a0015186612477565b60808301516020840151919250611369919083907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6124d0565b6020830152505b506001016112e9565b6113b36040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001600081526020018660600151815260200161256281525090506000611404826125ee565b6040805160608082018352895173ffffffffffffffffffffffffffffffffffffffff16825260208201939093529790910151908701525093949350505050565b82516060908067ffffffffffffffff81111561146257611462613227565b6040519080825280602002602001820160405280156114cb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114805790505b50915060005b81811015611522576114fd8682815181106114ee576114ee613256565b602002602001015186866126fa565b83828151811061150f5761150f613256565b60209081029190910101526001016114d1565b50509392505050565b61153885858585856127e3565b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661155f5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906115b6908590600401613f11565b600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116199190810190613f24565b60408301515181519192509060006116318284614023565b67ffffffffffffffff81111561164957611649613227565b6040519080825280602002602001820160405280156116b257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116675790505b50905060005b8381101561170357856040015181815181106116d6576116d6613256565b60200260200101518282815181106116f0576116f0613256565b60209081029190910101526001016116b8565b5060008060005b84811015611a1e57600087828151811061172657611726613256565b6020026020010151905060005b828110156117e45788818151811061174d5761174d613256565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117dc5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b600101611733565b506000805b888110156118a55760008b60400151828151811061180957611809613256565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361189c578515611886576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118959084614023565b9250600196505b506001016117e9565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361191e578415611905576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516119179082614023565b9050600193505b806000036119735781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611981816005612710612885565b826020015111156119f4578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611a0957611a09613256565b6020908102919091010152505060010161170a565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a80576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611afc9084908690600401614036565b60006040518083038186803b158015611b1457600080fd5b505afa158015611b28573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611bf0846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051602001611cbd907f4e6f6e6c696e656172447574636844656361792800000000000000000000000081527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060148201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000602b82015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061441360208301396040518060600160405280602e81526020016143e5602e9139604051602001611d2790613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f563344757463684f72646572280000000000000000000000000000000000000060208401527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8401527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8401527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8401527f56334475746368496e7075742062617365496e7075742c00000000000000000060658401527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c840152815160788185030181526098840190925291611e579060b801613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e97969594939291602001614065565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611f049695949392600401614118565b600060405180830381600087803b158015611f1e57600080fd5b505af1158015611b28573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611f575761035f8282611f79565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846128c1565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611fd3576040519150601f19603f3d011682016040523d82523d6000602084013e611fd8565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001614413608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161108f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040516020016120be90613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b840152815160448185030181526064840190925261217e929091906084016141d3565b60405160208183030381529060405280519060200120826000015183602001516121ab85604001516129ac565b60608087015160808089015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff909716968801969096529186019390935284015260a083015260c082015260e00161108f565b600080825160200267ffffffffffffffff81111561221e5761221e613227565b6040519080825280601f01601f191660200182016040528015612248576020820181803683370190505b50835190915060005b8181101561228f57600061227d86838151811061227057612270613256565b6020026020010151612aaa565b60208381028601015250600101612251565b5050805160209091012092915050565b600081468460a001516040516020016122b89190614202565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526122f5939291602001614287565b6040516020818303038152906040528051906020012090505b92915050565b6000808280602001905181019061232b91906142b4565b9150915060008360408151811061234457612344613256565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156123a1573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415806123fc575073ffffffffffffffffffffffffffffffffffffffff8116155b15612433576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b60008183101561246a5761245861245384846142d8565b612c0e565b6124639060006142eb565b905061230e565b61246361245383856142d8565b600080821261248f576124638383633b9aca00612885565b6124a761249b83614312565b8490633b9aca00612cc4565b61246390614312565b60006124c7856124c086846142eb565b85856124d0565b95945050505050565b6000808412156125335760006124e585614312565b905085612512827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6142d8565b1015612521578291505061255a565b61252b8187614023565b91505061254f565b8385101561254257508161255a565b61254c84866142d8565b90505b6124c7818484612d08565b949350505050565b60008484106125725750806124c7565b600061257e87866142d8565b9050600061258c88886142d8565b90506000858512156125be576125ae83836125a7888a6142eb565b9190612885565b6125b790614312565b90506125d7565b6125d483836125cd89896142eb565b9190612cc4565b90505b6125e1818761434a565b9998505050505050505050565b60006010826000015160200151511115612634576040517f0e99676600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160600151826040015110158061264f575081516020015151155b1561266e57608082015160a0830151602084015161230e929091612d08565b600061268f8360400151846060015161268791906142d8565b61ffff612d19565b90506000806000806126a5876000015186612d31565b935093509350935060006126d08561ffff168561ffff168861ffff1686868d60c0015163ffffffff16565b608089015160a08a015160208b01519293506126ee929184916124d0565b98975050505050505050565b604080516060810182526000808252602082018190529181019190915260006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001866080015181526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001612ef381525090506000612787826125ee565b90506040518060600160405280876000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001876060015173ffffffffffffffffffffffffffffffffffffffff16815250925050509392505050565b6127ee848483612f47565b6115385781612829576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561243357600082828151811061284e5761284e613256565b60200260200101519050612877856127106128699190614023565b602083015190612710612cc4565b602090910152600101612831565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026128ba57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b6040517f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208201527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8201526000906064016040516020818303038152906040528051906020012082600001518360200151604051602001612a579190614372565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830194909452810191909152606081019190915260800161108f565b6000604051602001612abb90613d6e565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8401528151604481850301815260648401909252612b7b929091906084016141d3565b6040516020818303038152906040528051906020012082600001518360200151612ba885604001516129ac565b60608087015160808089015160a0808b015160408051602081019b909b5273ffffffffffffffffffffffffffffffffffffffff998a16908b01529489019690965290870193909352939093169184019190915260c083015260e08201526101000161108f565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401610700565b5090565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612cf957600080fd5b50910281810615159190040190565b600061255a612d178585612f93565b835b6000818310612d285781612d2a565b825b9392505050565b6000806000806000612d44876000015190565b905061ffff8616612d56826000612fa2565b61ffff1610612d9a576000612d6b8282612fa2565b60008960200151600081518110612d8457612d84613256565b6020026020010151945094509450945050612eea565b60006001886020015151612dae91906143a8565b905060015b8161ffff168161ffff1611612e7e578761ffff16612dde8261ffff1685612fa290919063ffffffff16565b61ffff1610612e6c57612e00612df56001836143a8565b849061ffff16612fa2565b612e0e8461ffff8416612fa2565b60208b0151612e1e6001856143a8565b61ffff1681518110612e3257612e32613256565b60200260200101518b602001518461ffff1681518110612e5457612e54613256565b60200260200101519650965096509650505050612eea565b80612e76816143c3565b915050612db3565b50612e8d8261ffff8316612fa2565b612e9b8361ffff8416612fa2565b89602001518361ffff1681518110612eb557612eb5613256565b60200260200101518a602001518461ffff1681518110612ed757612ed7613256565b6020026020010151955095509550955050505b92959194509250565b6000848410612f035750806124c7565b6000612f0f87866142d8565b90506000612f1d88886142d8565b9050600085851215612f38576125ae83836125cd888a6142eb565b6125d483836125a789896142eb565b600073ffffffffffffffffffffffffffffffffffffffff84161580612f6b57508282115b8061255a575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b6000818311612d285781612d2a565b600060108210612fde576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506010021c90565b600060408284031215612ff857600080fd5b50919050565b60008083601f84011261301057600080fd5b50813567ffffffffffffffff81111561302857600080fd5b60208301915083602082850101111561304057600080fd5b9250929050565b60008060006040848603121561305c57600080fd5b833567ffffffffffffffff8082111561307457600080fd5b61308087838801612fe6565b9450602086013591508082111561309657600080fd5b506130a386828701612ffe565b9497909650939450505050565b60008083601f8401126130c257600080fd5b50813567ffffffffffffffff8111156130da57600080fd5b6020830191508360208260051b850101111561304057600080fd5b6000806020838503121561310857600080fd5b823567ffffffffffffffff81111561311f57600080fd5b61312b858286016130b0565b90969095509350505050565b6000806000806040858703121561314d57600080fd5b843567ffffffffffffffff8082111561316557600080fd5b613171888389016130b0565b9096509450602087013591508082111561318a57600080fd5b5061319787828801612ffe565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356131d0816131a3565b919050565b6000602082840312156131e757600080fd5b8135612d2a816131a3565b60006020828403121561320457600080fd5b813567ffffffffffffffff81111561321b57600080fd5b61255a84828501612fe6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156132a0578181015183820152602001613288565b50506000910152565b600081518084526132c1816020860160208601613285565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015613353578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101613308565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526133d26101a08501826132a9565b905060208301516134106020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261342882826132f3565b915050606083015184820360a086015261344282826132a9565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156134ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526134bc86835161335e565b95509382019390820190600101613482565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261355357600080fd5b9190910192915050565b60006020828403121561356f57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135ab57600080fd5b83018035915067ffffffffffffffff8211156135c657600080fd5b60200191503681900382131561304057600080fd5b60405160c0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405290565b6040805190810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160a0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160e0810167ffffffffffffffff811182821017156135fe576135fe613227565b6040516060810167ffffffffffffffff811182821017156135fe576135fe613227565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156136d7576136d7613227565b604052919050565b600082601f8301126136f057600080fd5b813567ffffffffffffffff81111561370a5761370a613227565b61373b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613690565b81815284602083860101111561375057600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561377f57600080fd5b6137876135db565b90508135613794816131a3565b815260208201356137a4816131a3565b80602083015250604082013560408201526060820135606082015260808201356137cd816131a3565b608082015260a082013567ffffffffffffffff8111156137ec57600080fd5b6137f8848285016136df565b60a08301525092915050565b600067ffffffffffffffff82111561381e5761381e613227565b5060051b60200190565b60006040828403121561383a57600080fd5b613842613604565b90508135815260208083013567ffffffffffffffff81111561386357600080fd5b8301601f8101851361387457600080fd5b803561388761388282613804565b613690565b81815260059190911b820183019083810190878311156138a657600080fd5b928401925b828410156138c4578335825292840192908401906138ab565b8085870152505050505092915050565b600060a082840312156138e657600080fd5b6138ee613627565b905081356138fb816131a3565b815260208281013590820152604082013567ffffffffffffffff81111561392157600080fd5b61392d84828501613828565b604083015250606082013560608201526080820135608082015292915050565b600082601f83011261395e57600080fd5b8135602061396e61388283613804565b82815260059290921b8401810191818101908684111561398d57600080fd5b8286015b84811015613a6a57803567ffffffffffffffff808211156139b25760008081fd5b818901915060c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156139eb5760008081fd5b6139f36135db565b87840135613a00816131a3565b81526040848101358983015260608086013585811115613a205760008081fd5b613a2e8f8c838a0101613828565b838501525060809450848601359150613a46826131a3565b82015260a08481013593820193909352920135908201528352918301918301613991565b509695505050505050565b600060a08284031215613a8757600080fd5b613a8f613627565b905081358152602080830135613aa4816131a3565b8082840152506040830135604083015260608301356060830152608083013567ffffffffffffffff811115613ad857600080fd5b8301601f81018513613ae957600080fd5b8035613af761388282613804565b81815260059190911b82018301908381019087831115613b1657600080fd5b928401925b82841015613b3457833582529284019290840190613b1b565b6080860152509295945050505050565b600060208284031215613b5657600080fd5b813567ffffffffffffffff80821115613b6e57600080fd5b9083019060e08286031215613b8257600080fd5b613b8a61364a565b823582811115613b9957600080fd5b613ba58782860161376d565b825250613bb4602084016131c5565b602082015260408301356040820152606083013582811115613bd557600080fd5b613be1878286016138d4565b606083015250608083013582811115613bf957600080fd5b613c058782860161394d565b60808301525060a083013582811115613c1d57600080fd5b613c2987828601613a75565b60a08301525060c083013582811115613c4157600080fd5b613c4d878286016136df565b60c08301525095945050505050565b7f56334475746368496e707574280000000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600d8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601b8201527f4e6f6e6c696e656172447574636844656361792063757276652c000000000000602f8201527f75696e74323536206d6178416d6f756e742c000000000000000000000000000060498201527f75696e743235362061646a7573746d656e745065724777656942617365466565605b8201527f2900000000000000000000000000000000000000000000000000000000000000607b8201526000607c820161230e565b7f563344757463684f75747075742800000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600e8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601c8201527f4e6f6e6c696e656172447574636844656361792063757276652c00000000000060308201527f6164647265737320726563697069656e742c0000000000000000000000000000604a8201527f75696e74323536206d696e416d6f756e742c0000000000000000000000000000605c8201527f75696e743235362061646a7573746d656e745065724777656942617365466565606e8201527f2900000000000000000000000000000000000000000000000000000000000000608e8201526000608f820161230e565b60008651613eb8818460208b01613285565b865190830190613ecc818360208b01613285565b8651910190613edf818360208a01613285565b8551910190613ef2818360208901613285565b8451910190613f05818360208801613285565b01979650505050505050565b602081526000612d2a602083018461335e565b60006020808385031215613f3757600080fd5b825167ffffffffffffffff811115613f4e57600080fd5b8301601f81018513613f5f57600080fd5b8051613f6d61388282613804565b81815260609182028301840191848201919088841115613f8c57600080fd5b938501935b83851015613fe85780858a031215613fa95760008081fd5b613fb161366d565b8551613fbc816131a3565b81528587015187820152604080870151613fd5816131a3565b9082015283529384019391850191613f91565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561230e5761230e613ff4565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061255a604083018461335e565b7f563344757463684f72646572207769746e6573732900000000000000000000008152600060158851602061409f82848701838e01613285565b8951918501916140b481858501848e01613285565b89519201916140c881858501848d01613285565b88519201916140dc81858501848c01613285565b87519201916140f081858501848b01613285565b865192019161410481858501848a01613285565b919091019091019998505050505050505050565b6000610140614148838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526141896080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526141be818401866132a9565b90508281036101208401526125e181856132a9565b600083516141e5818460208801613285565b8351908301906141f9818360208801613285565b01949350505050565b6000602080835260c0830184518285015273ffffffffffffffffffffffffffffffffffffffff828601511660408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e0870191508483019350600092505b80831015613a6a5783518252928401926001929092019190840190614267565b838152826020820152600082516142a5816040850160208701613285565b91909101604001949350505050565b600080604083850312156142c757600080fd5b505080516020909101519092909150565b8181038181111561230e5761230e613ff4565b818103600083128015838313168383128216171561430b5761430b613ff4565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361434357614343613ff4565b5060000390565b808201828112600083128015821682158216171561436a5761436a613ff4565b505092915050565b815160009082906020808601845b8381101561439c57815185529382019390820190600101614380565b50929695505050505050565b61ffff82811682821603908082111561430b5761430b613ff4565b600061ffff8083168181036143da576143da613ff4565b600101939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220a83088cf8ce7734a1a4fd473e15da5dd40de922f9f237cdcd5a3258bdb21af8564736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a0GV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a0\xF5V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a17V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a1\xD5V[a\x06\x83V[a\0\xB9a\x01l6`\x04a1\xF2V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a1\xD5V[a\x08\x94V[a\x01\xF3a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\nqV[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a2VV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0CsV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\n\0V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a5\x1FV[a\nqV[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0C\"V[a\x04\xB5\x81a\x0CsV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\n\0V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0CsV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\nqV[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia2VV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0C\"V[a\x08\x86\x81a\x0CsV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF7\x91\x90a5]V[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nkW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xEA\x83\x80a5vV[\x81\x01\x90a\n\xF7\x91\x90a;DV[\x90P`\0a\x0B\x04\x82a\r\xC6V[\x90Pa\x0B\x10\x81\x83a\x10\xACV[a\x0B\x19\x82a\x11\x08V[a\x0B\"\x82a\x12lV[`\0a\x0BP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\x0B\x88\x85`\xA0\x01Q`\0\x01Q\x84\x87``\x01Qa\x13y\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0B\xA5\x91\x85a\x14DV[\x81R` \x01\x86\x80` \x01\x90a\x0B\xBA\x91\x90a5vV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0C\x1A\x92\x87\x92\x90\x85a\x15+V[PPP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0CCWa\x0CCa2VV[` \x02` \x01\x01Q\x90Pa\x0CV\x81a\x15?V[a\x0C`\x813a\x1A/V[a\x0Cj\x813a\x1B0V[P`\x01\x01a\x0C'V[\x80Q`\0[\x81\x81\x10\x15a\r\xB5W`\0\x83\x82\x81Q\x81\x10a\x0C\x94Wa\x0C\x94a2VV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\r\x15W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\xCBWa\x0C\xCBa2VV[` \x02` \x01\x01Q\x90Pa\r\x0C\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1F2\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0C\xABV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r^Wa\r^a2VV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\r\xA3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CxV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1FyV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R`\0\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q` \x01a\x0F\xA9\x90a<\\V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\xC7\x90a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10\x06\x95\x94\x93\x92\x91` \x01a>\xA6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x10)\x83`\0\x01Qa \x13V[\x83` \x01Q\x84`@\x01Qa\x10@\x86``\x01Qa \xADV[a\x10M\x87`\x80\x01Qa!\xFEV[`@\x80Q` \x81\x01\x97\x90\x97R\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16``\x85\x01R`\x80\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xEBW`@Q\x7F\xB0\x8C\xE5\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x04\xC1\x90a\x10\xFE\x83\x85a\"\x9FV[\x83`\xC0\x01Qa#\x14V[`\xA0\x81\x01Q``\x01Q\x15a\x11tW\x80``\x01Q` \x01Q\x81`\xA0\x01Q``\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q``\x90\x81\x01Q\x90\x82\x01Q` \x01R[\x80`\x80\x01QQ\x81`\xA0\x01Q`\x80\x01QQ\x14a\x11\xBBW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x81\x01QQ`\0[\x81\x81\x10\x15a\x03_W`\0\x83`\x80\x01Q\x82\x81Q\x81\x10a\x11\xE4Wa\x11\xE4a2VV[` \x02` \x01\x01Q\x90P`\0\x84`\xA0\x01Q`\x80\x01Q\x83\x81Q\x81\x10a\x12\nWa\x12\na2VV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12bW\x81` \x01Q\x81\x10\x15a\x12ZW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xC4V[`\0a\x12\x85\x82`@\x01QHa$<\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x81``\x01Q`\x80\x01Q`\0\x14a\x12\xE0W`\0a\x12\xAB\x83``\x01Q`\x80\x01Q\x83a$wV[\x90Pa\x12\xD5\x81`\0\x85``\x01Q``\x01Q\x86``\x01Q` \x01Qa$\xB0\x90\x93\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[``\x84\x01Q` \x01RP[`\x80\x82\x01QQ`\0[\x81\x81\x10\x15a\x06}W`\0\x84`\x80\x01Q\x82\x81Q\x81\x10a\x13\tWa\x13\ta2VV[` \x02` \x01\x01Q\x90P\x80`\xA0\x01Q`\0\x14a\x13pW`\0a\x13/\x82`\xA0\x01Q\x86a$wV[`\x80\x83\x01Q` \x84\x01Q\x91\x92Pa\x13i\x91\x90\x83\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa$\xD0V[` \x83\x01RP[P`\x01\x01a\x12\xE9V[a\x13\xB3`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01`\0\x81R` \x01\x86``\x01Q\x81R` \x01a%b\x81RP\x90P`\0a\x14\x04\x82a%\xEEV[`@\x80Q``\x80\x82\x01\x83R\x89Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x82\x01\x93\x90\x93R\x97\x90\x91\x01Q\x90\x87\x01RP\x93\x94\x93PPPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14bWa\x14ba2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x14\xCBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\x80W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x15\"Wa\x14\xFD\x86\x82\x81Q\x81\x10a\x14\xEEWa\x14\xEEa2VV[` \x02` \x01\x01Q\x86\x86a&\xFAV[\x83\x82\x81Q\x81\x10a\x15\x0FWa\x15\x0Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\xD1V[PP\x93\x92PPPV[a\x158\x85\x85\x85\x85\x85a'\xE3V[PPPPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15_WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x15\xB6\x90\x85\x90`\x04\x01a?\x11V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x16\x19\x91\x90\x81\x01\x90a?$V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x161\x82\x84a@#V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16IWa\x16Ia2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16\xB2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16gW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x17\x03W\x85`@\x01Q\x81\x81Q\x81\x10a\x16\xD6Wa\x16\xD6a2VV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\xF0Wa\x16\xF0a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16\xB8V[P`\0\x80`\0[\x84\x81\x10\x15a\x1A\x1EW`\0\x87\x82\x81Q\x81\x10a\x17&Wa\x17&a2VV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\xE4W\x88\x81\x81Q\x81\x10a\x17MWa\x17Ma2VV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xDCW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x173V[P`\0\x80[\x88\x81\x10\x15a\x18\xA5W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x18\tWa\x18\ta2VV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18\x9CW\x85\x15a\x18\x86W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x18\x95\x90\x84a@#V[\x92P`\x01\x96P[P`\x01\x01a\x17\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x19\x1EW\x84\x15a\x19\x05W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x19\x17\x90\x82a@#V[\x90P`\x01\x93P[\x80`\0\x03a\x19sW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x19\x81\x81`\x05a'\x10a(\x85V[\x82` \x01Q\x11\x15a\x19\xF4W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x1A\tWa\x1A\ta2VV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x17\nV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A\x80W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\xFC\x90\x84\x90\x86\x90`\x04\x01a@6V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1B\x14W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\xF0\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1C\xBD\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aC\xE5`.\x919`@Q` \x01a\x1D'\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1EW\x90`\xB8\x01a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x97\x96\x95\x94\x93\x92\x91` \x01a@eV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1F\x04\x96\x95\x94\x93\x92`\x04\x01aA\x18V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x1EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1FWWa\x03_\x82\x82a\x1FyV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(\xC1V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1F\xD3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xD8V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aD\x13`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x8F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q` \x01a \xBE\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!~\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa!\xAB\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10\x8FV[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x1EWa\"\x1Ea2'V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\"HW` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P`\0[\x81\x81\x10\x15a\"\x8FW`\0a\"}\x86\x83\x81Q\x81\x10a\"pWa\"pa2VV[` \x02` \x01\x01Qa*\xAAV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a\"QV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xA0\x01Q`@Q` \x01a\"\xB8\x91\x90aB\x02V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xF5\x93\x92\x91` \x01aB\x87V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a#+\x91\x90aB\xB4V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a#DWa#Da2VV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#\xA1W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\xFCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a$3W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x81\x83\x10\x15a$jWa$Xa$S\x84\x84aB\xD8V[a,\x0EV[a$c\x90`\0aB\xEBV[\x90Pa#\x0EV[a$ca$S\x83\x85aB\xD8V[`\0\x80\x82\x12a$\x8FWa$c\x83\x83c;\x9A\xCA\0a(\x85V[a$\xA7a$\x9B\x83aC\x12V[\x84\x90c;\x9A\xCA\0a,\xC4V[a$c\x90aC\x12V[`\0a$\xC7\x85a$\xC0\x86\x84aB\xEBV[\x85\x85a$\xD0V[\x95\x94PPPPPV[`\0\x80\x84\x12\x15a%3W`\0a$\xE5\x85aC\x12V[\x90P\x85a%\x12\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaB\xD8V[\x10\x15a%!W\x82\x91PPa%ZV[a%+\x81\x87a@#V[\x91PPa%OV[\x83\x85\x10\x15a%BWP\x81a%ZV[a%L\x84\x86aB\xD8V[\x90P[a$\xC7\x81\x84\x84a-\x08V[\x94\x93PPPPV[`\0\x84\x84\x10a%rWP\x80a$\xC7V[`\0a%~\x87\x86aB\xD8V[\x90P`\0a%\x8C\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a%\xBEWa%\xAE\x83\x83a%\xA7\x88\x8AaB\xEBV[\x91\x90a(\x85V[a%\xB7\x90aC\x12V[\x90Pa%\xD7V[a%\xD4\x83\x83a%\xCD\x89\x89aB\xEBV[\x91\x90a,\xC4V[\x90P[a%\xE1\x81\x87aCJV[\x99\x98PPPPPPPPPV[`\0`\x10\x82`\0\x01Q` \x01QQ\x11\x15a&4W`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a&OWP\x81Q` \x01QQ\x15[\x15a&nW`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa#\x0E\x92\x90\x91a-\x08V[`\0a&\x8F\x83`@\x01Q\x84``\x01Qa&\x87\x91\x90aB\xD8V[a\xFF\xFFa-\x19V[\x90P`\0\x80`\0\x80a&\xA5\x87`\0\x01Q\x86a-1V[\x93P\x93P\x93P\x93P`\0a&\xD0\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&\xEE\x92\x91\x84\x91a$\xD0V[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.\xF3\x81RP\x90P`\0a'\x87\x82a%\xEEV[\x90P`@Q\x80``\x01`@R\x80\x87`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a'\xEE\x84\x84\x83a/GV[a\x158W\x81a()W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a$3W`\0\x82\x82\x81Q\x81\x10a(NWa(Na2VV[` \x02` \x01\x01Q\x90Pa(w\x85a'\x10a(i\x91\x90a@#V[` \x83\x01Q\x90a'\x10a,\xC4V[` \x90\x91\x01R`\x01\x01a(1V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(\xBAW`\0\x80\xFD[P\x91\x02\x04\x90V[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x158W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R`\0\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Q`@Q` \x01a*W\x91\x90aCrV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10\x8FV[`\0`@Q` \x01a*\xBB\x90a=nV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra+{\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa+\xA8\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`\xA0\x80\x8B\x01Q`@\x80Q` \x81\x01\x9B\x90\x9BRs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\x8A\x16\x90\x8B\x01R\x94\x89\x01\x96\x90\x96R\x90\x87\x01\x93\x90\x93R\x93\x90\x93\x16\x91\x84\x01\x91\x90\x91R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01a\x10\x8FV[`\0\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xC0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FSafeCast: value doesn't fit in a`D\x82\x01R\x7Fn int256\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x07\0V[P\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a,\xF9W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0a%Za-\x17\x85\x85a/\x93V[\x83[`\0\x81\x83\x10a-(W\x81a-*V[\x82[\x93\x92PPPV[`\0\x80`\0\x80`\0a-D\x87`\0\x01Q\x90V[\x90Pa\xFF\xFF\x86\x16a-V\x82`\0a/\xA2V[a\xFF\xFF\x16\x10a-\x9AW`\0a-k\x82\x82a/\xA2V[`\0\x89` \x01Q`\0\x81Q\x81\x10a-\x84Wa-\x84a2VV[` \x02` \x01\x01Q\x94P\x94P\x94P\x94PPa.\xEAV[`\0`\x01\x88` \x01QQa-\xAE\x91\x90aC\xA8V[\x90P`\x01[\x81a\xFF\xFF\x16\x81a\xFF\xFF\x16\x11a.~W\x87a\xFF\xFF\x16a-\xDE\x82a\xFF\xFF\x16\x85a/\xA2\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[a\xFF\xFF\x16\x10a.lWa.\0a-\xF5`\x01\x83aC\xA8V[\x84\x90a\xFF\xFF\x16a/\xA2V[a.\x0E\x84a\xFF\xFF\x84\x16a/\xA2V[` \x8B\x01Qa.\x1E`\x01\x85aC\xA8V[a\xFF\xFF\x16\x81Q\x81\x10a.2Wa.2a2VV[` \x02` \x01\x01Q\x8B` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.TWa.Ta2VV[` \x02` \x01\x01Q\x96P\x96P\x96P\x96PPPPa.\xEAV[\x80a.v\x81aC\xC3V[\x91PPa-\xB3V[Pa.\x8D\x82a\xFF\xFF\x83\x16a/\xA2V[a.\x9B\x83a\xFF\xFF\x84\x16a/\xA2V[\x89` \x01Q\x83a\xFF\xFF\x16\x81Q\x81\x10a.\xB5Wa.\xB5a2VV[` \x02` \x01\x01Q\x8A` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.\xD7Wa.\xD7a2VV[` \x02` \x01\x01Q\x95P\x95P\x95P\x95PPP[\x92\x95\x91\x94P\x92PV[`\0\x84\x84\x10a/\x03WP\x80a$\xC7V[`\0a/\x0F\x87\x86aB\xD8V[\x90P`\0a/\x1D\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a/8Wa%\xAE\x83\x83a%\xCD\x88\x8AaB\xEBV[a%\xD4\x83\x83a%\xA7\x89\x89aB\xEBV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a/kWP\x82\x82\x11[\x80a%ZWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[`\0\x81\x83\x11a-(W\x81a-*V[`\0`\x10\x82\x10a/\xDEW`@Q\x7FN#\xD05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x10\x02\x1C\x90V[`\0`@\x82\x84\x03\x12\x15a/\xF8W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a0\x10W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0(W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\\W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a0tW`\0\x80\xFD[a0\x80\x87\x83\x88\x01a/\xE6V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a0\x96W`\0\x80\xFD[Pa0\xA3\x86\x82\x87\x01a/\xFEV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a0\xC2W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\xDAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a1\x08W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\x1FW`\0\x80\xFD[a1+\x85\x82\x86\x01a0\xB0V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a1MW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a1eW`\0\x80\xFD[a1q\x88\x83\x89\x01a0\xB0V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a1\x8AW`\0\x80\xFD[Pa1\x97\x87\x82\x88\x01a/\xFEV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a1\xD0\x81a1\xA3V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a1\xE7W`\0\x80\xFD[\x815a-*\x81a1\xA3V[`\0` \x82\x84\x03\x12\x15a2\x04W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a2\x1BW`\0\x80\xFD[a%Z\x84\x82\x85\x01a/\xE6V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a2\xA0W\x81\x81\x01Q\x83\x82\x01R` \x01a2\x88V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra2\xC1\x81` \x86\x01` \x86\x01a2\x85V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a3SW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a3\x08V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra3\xD2a\x01\xA0\x85\x01\x82a2\xA9V[\x90P` \x83\x01Qa4\x10` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra4(\x82\x82a2\xF3V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra4B\x82\x82a2\xA9V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a4\xCEW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra4\xBC\x86\x83Qa3^V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a4\x82V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a5SW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a5oW`\0\x80\xFD[PQ\x91\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a5\xABW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a5\xC6W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a0@W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@R\x90V[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a6\xD7Wa6\xD7a2'V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a6\xF0W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\nWa7\na2'V[a7;` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a6\x90V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a7PW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a7\x7FW`\0\x80\xFD[a7\x87a5\xDBV[\x90P\x815a7\x94\x81a1\xA3V[\x81R` \x82\x015a7\xA4\x81a1\xA3V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a7\xCD\x81a1\xA3V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\xECW`\0\x80\xFD[a7\xF8\x84\x82\x85\x01a6\xDFV[`\xA0\x83\x01RP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a8\x1EWa8\x1Ea2'V[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15a8:W`\0\x80\xFD[a8Ba6\x04V[\x90P\x815\x81R` \x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a8cW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a8tW`\0\x80\xFD[\x805a8\x87a8\x82\x82a8\x04V[a6\x90V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a8\xA6W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a8\xC4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a8\xABV[\x80\x85\x87\x01RPPPPP\x92\x91PPV[`\0`\xA0\x82\x84\x03\x12\x15a8\xE6W`\0\x80\xFD[a8\xEEa6'V[\x90P\x815a8\xFB\x81a1\xA3V[\x81R` \x82\x81\x015\x90\x82\x01R`@\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a9!W`\0\x80\xFD[a9-\x84\x82\x85\x01a8(V[`@\x83\x01RP``\x82\x015``\x82\x01R`\x80\x82\x015`\x80\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a9^W`\0\x80\xFD[\x815` a9na8\x82\x83a8\x04V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a9\x8DW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a:jW\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a9\xB2W`\0\x80\x81\xFD[\x81\x89\x01\x91P`\xC0\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x84\x8D\x03\x01\x12\x15a9\xEBW`\0\x80\x81\xFD[a9\xF3a5\xDBV[\x87\x84\x015a:\0\x81a1\xA3V[\x81R`@\x84\x81\x015\x89\x83\x01R``\x80\x86\x015\x85\x81\x11\x15a: W`\0\x80\x81\xFD[a:.\x8F\x8C\x83\x8A\x01\x01a8(V[\x83\x85\x01RP`\x80\x94P\x84\x86\x015\x91Pa:F\x82a1\xA3V[\x82\x01R`\xA0\x84\x81\x015\x93\x82\x01\x93\x90\x93R\x92\x015\x90\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a9\x91V[P\x96\x95PPPPPPV[`\0`\xA0\x82\x84\x03\x12\x15a:\x87W`\0\x80\xFD[a:\x8Fa6'V[\x90P\x815\x81R` \x80\x83\x015a:\xA4\x81a1\xA3V[\x80\x82\x84\x01RP`@\x83\x015`@\x83\x01R``\x83\x015``\x83\x01R`\x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a:\xD8W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a:\xE9W`\0\x80\xFD[\x805a:\xF7a8\x82\x82a8\x04V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a;\x16W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a;4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a;\x1BV[`\x80\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a;VW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a;nW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a;\x82W`\0\x80\xFD[a;\x8Aa6JV[\x825\x82\x81\x11\x15a;\x99W`\0\x80\xFD[a;\xA5\x87\x82\x86\x01a7mV[\x82RPa;\xB4` \x84\x01a1\xC5V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015\x82\x81\x11\x15a;\xD5W`\0\x80\xFD[a;\xE1\x87\x82\x86\x01a8\xD4V[``\x83\x01RP`\x80\x83\x015\x82\x81\x11\x15a;\xF9W`\0\x80\xFD[a<\x05\x87\x82\x86\x01a9MV[`\x80\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a<\x1DW`\0\x80\xFD[a<)\x87\x82\x86\x01a:uV[`\xA0\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a\xB8\x81\x84` \x8B\x01a2\x85V[\x86Q\x90\x83\x01\x90a>\xCC\x81\x83` \x8B\x01a2\x85V[\x86Q\x91\x01\x90a>\xDF\x81\x83` \x8A\x01a2\x85V[\x85Q\x91\x01\x90a>\xF2\x81\x83` \x89\x01a2\x85V[\x84Q\x91\x01\x90a?\x05\x81\x83` \x88\x01a2\x85V[\x01\x97\x96PPPPPPPV[` \x81R`\0a-*` \x83\x01\x84a3^V[`\0` \x80\x83\x85\x03\x12\x15a?7W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a?NW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a?_W`\0\x80\xFD[\x80Qa?ma8\x82\x82a8\x04V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a?\x8CW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a?\xE8W\x80\x85\x8A\x03\x12\x15a?\xA9W`\0\x80\x81\xFD[a?\xB1a6mV[\x85Qa?\xBC\x81a1\xA3V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa?\xD5\x81a1\xA3V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a?\x91V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a#\x0EWa#\x0Ea?\xF4V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a%Z`@\x83\x01\x84a3^V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x15\x88Q` a@\x9F\x82\x84\x87\x01\x83\x8E\x01a2\x85V[\x89Q\x91\x85\x01\x91a@\xB4\x81\x85\x85\x01\x84\x8E\x01a2\x85V[\x89Q\x92\x01\x91a@\xC8\x81\x85\x85\x01\x84\x8D\x01a2\x85V[\x88Q\x92\x01\x91a@\xDC\x81\x85\x85\x01\x84\x8C\x01a2\x85V[\x87Q\x92\x01\x91a@\xF0\x81\x85\x85\x01\x84\x8B\x01a2\x85V[\x86Q\x92\x01\x91aA\x04\x81\x85\x85\x01\x84\x8A\x01a2\x85V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[`\0a\x01@aAH\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01RaA\x89`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01RaA\xBE\x81\x84\x01\x86a2\xA9V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%\xE1\x81\x85a2\xA9V[`\0\x83QaA\xE5\x81\x84` \x88\x01a2\x85V[\x83Q\x90\x83\x01\x90aA\xF9\x81\x83` \x88\x01a2\x85V[\x01\x94\x93PPPPV[`\0` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a:jW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aBgV[\x83\x81R\x82` \x82\x01R`\0\x82QaB\xA5\x81`@\x85\x01` \x87\x01a2\x85V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15aB\xC7W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a#\x0EWa#\x0Ea?\xF4V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aC\x0BWaC\x0Ba?\xF4V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aCCWaCCa?\xF4V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aCjWaCja?\xF4V[PP\x92\x91PPV[\x81Q`\0\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aC\x9CW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aC\x80V[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aC\x0BWaC\x0Ba?\xF4V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x03aC\xDAWaC\xDAa?\xF4V[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xA80\x88\xCF\x8C\xE7sJ\x1AO\xD4s\xE1]\xA5\xDD@\xDE\x92/\x9F#|\xDC\xD5\xA3%\x8B\xDB!\xAF\x85dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct SignedOrder { + pub order: alloy::sol_types::private::Bytes, + pub sig: alloy::sol_types::private::Bytes, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `DeadlineReached()` and selector `0xb08ce5b3`. +```solidity +error DeadlineReached(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DeadlineReached {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DeadlineReached) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DeadlineReached { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DeadlineReached { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DeadlineReached()"; + const SELECTOR: [u8; 4] = [176u8, 140u8, 229u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `DuplicateFeeOutput(address)` and selector `0xfff08303`. +```solidity +error DuplicateFeeOutput(address duplicateToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DuplicateFeeOutput { + pub duplicateToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: DuplicateFeeOutput) -> Self { + (value.duplicateToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for DuplicateFeeOutput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { duplicateToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for DuplicateFeeOutput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DuplicateFeeOutput(address)"; + const SELECTOR: [u8; 4] = [255u8, 240u8, 131u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.duplicateToken, + ), + ) + } + } + }; + /**Custom error with signature `FeeTooLarge(address,uint256,address)` and selector `0x82e75656`. +```solidity +error FeeTooLarge(address token, uint256 amount, address recipient); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct FeeTooLarge { + pub token: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + pub recipient: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FeeTooLarge) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FeeTooLarge { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for FeeTooLarge { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "FeeTooLarge(address,uint256,address)"; + const SELECTOR: [u8; 4] = [130u8, 231u8, 86u8, 86u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + } + }; + /**Custom error with signature `IndexOutOfBounds()` and selector `0x4e23d035`. +```solidity +error IndexOutOfBounds(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct IndexOutOfBounds {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IndexOutOfBounds) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IndexOutOfBounds { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for IndexOutOfBounds { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IndexOutOfBounds()"; + const SELECTOR: [u8; 4] = [78u8, 35u8, 208u8, 53u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InputAndOutputFees()` and selector `0xedc7e2e4`. +```solidity +error InputAndOutputFees(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InputAndOutputFees {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputAndOutputFees) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputAndOutputFees { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InputAndOutputFees { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InputAndOutputFees()"; + const SELECTOR: [u8; 4] = [237u8, 199u8, 226u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidCosignature()` and selector `0xd7815be1`. +```solidity +error InvalidCosignature(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidCosignature {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidCosignature) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidCosignature { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidCosignature { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidCosignature()"; + const SELECTOR: [u8; 4] = [215u8, 129u8, 91u8, 225u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidCosignerInput()` and selector `0xac9143e7`. +```solidity +error InvalidCosignerInput(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidCosignerInput {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidCosignerInput) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidCosignerInput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidCosignerInput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidCosignerInput()"; + const SELECTOR: [u8; 4] = [172u8, 145u8, 67u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidCosignerOutput()` and selector `0xa305df82`. +```solidity +error InvalidCosignerOutput(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidCosignerOutput {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidCosignerOutput) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidCosignerOutput { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidCosignerOutput { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidCosignerOutput()"; + const SELECTOR: [u8; 4] = [163u8, 5u8, 223u8, 130u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidDecayCurve()` and selector `0x0e996766`. +```solidity +error InvalidDecayCurve(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidDecayCurve {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidDecayCurve) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidDecayCurve { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidDecayCurve { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidDecayCurve()"; + const SELECTOR: [u8; 4] = [14u8, 153u8, 103u8, 102u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `InvalidFeeToken(address)` and selector `0xeddf07f5`. +```solidity +error InvalidFeeToken(address feeToken); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidFeeToken { + pub feeToken: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidFeeToken) -> Self { + (value.feeToken,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidFeeToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { feeToken: tuple.0 } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidFeeToken { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidFeeToken(address)"; + const SELECTOR: [u8; 4] = [237u8, 223u8, 7u8, 245u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.feeToken, + ), + ) + } + } + }; + /**Custom error with signature `InvalidReactor()` and selector `0x4ddf4a64`. +```solidity +error InvalidReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct InvalidReactor {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidReactor()"; + const SELECTOR: [u8; 4] = [77u8, 223u8, 74u8, 100u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NoExclusiveOverride()` and selector `0xb9ec1e96`. +```solidity +error NoExclusiveOverride(); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct NoExclusiveOverride {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NoExclusiveOverride) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NoExclusiveOverride { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NoExclusiveOverride { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NoExclusiveOverride()"; + const SELECTOR: [u8; 4] = [185u8, 236u8, 30u8, 150u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `Fill(bytes32,address,address,uint256)` and selector `0x78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66`. +```solidity +event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Fill { + #[allow(missing_docs)] + pub orderHash: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] + pub filler: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub swapper: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Fill { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Fill(bytes32,address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + orderHash: topics.1, + filler: topics.2, + swapper: topics.3, + nonce: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.nonce), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + ( + Self::SIGNATURE_HASH.into(), + self.orderHash.clone(), + self.filler.clone(), + self.swapper.clone(), + ) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = as alloy_sol_types::EventTopic>::encode_topic(&self.orderHash); + out[2usize] = ::encode_topic( + &self.filler, + ); + out[3usize] = ::encode_topic( + &self.swapper, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Fill { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Fill> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Fill) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `ProtocolFeeControllerSet(address,address)` and selector `0xb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0`. +```solidity +event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct ProtocolFeeControllerSet { + #[allow(missing_docs)] + pub oldFeeController: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newFeeController: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for ProtocolFeeControllerSet { + type DataTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,); + const SIGNATURE: &'static str = "ProtocolFeeControllerSet(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + oldFeeController: data.0, + newFeeController: data.1, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + ( + ::tokenize( + &self.oldFeeController, + ), + ::tokenize( + &self.newFeeController, + ), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(),) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for ProtocolFeeControllerSet { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&ProtocolFeeControllerSet> for alloy_sol_types::private::LogData { + #[inline] + fn from( + this: &ProtocolFeeControllerSet, + ) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address _permit2, address _protocolFeeOwner); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct constructorCall { + pub _permit2: alloy::sol_types::private::Address, + pub _protocolFeeOwner: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + (value._permit2, value._protocolFeeOwner) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _permit2: tuple.0, + _protocolFeeOwner: tuple.1, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._permit2, + ), + ::tokenize( + &self._protocolFeeOwner, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes))` and selector `0x3f62192e`. +```solidity +function execute(SignedOrder memory order) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeCall { + pub order: ::RustType, + } + ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (SignedOrder,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { order: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes))"; + const SELECTOR: [u8; 4] = [63u8, 98u8, 25u8, 46u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + (::tokenize(&self.order),) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[])` and selector `0x0d7a16c3`. +```solidity +function executeBatch(SignedOrder[] memory orders) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { orders: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[])"; + const SELECTOR: [u8; 4] = [13u8, 122u8, 22u8, 195u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatchWithCallback((bytes,bytes)[],bytes)` and selector `0x13fb72c7`. +```solidity +function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackCall { + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeBatchWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackCall) -> Self { + (value.orders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeBatchWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeBatchWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchWithCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatchWithCallback((bytes,bytes)[],bytes)"; + const SELECTOR: [u8; 4] = [19u8, 251u8, 114u8, 199u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeWithCallback((bytes,bytes),bytes)` and selector `0x0d335884`. +```solidity +function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackCall { + pub order: ::RustType, + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct executeWithCallbackReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + SignedOrder, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackCall) -> Self { + (value.order, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: executeWithCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for executeWithCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeWithCallbackCall { + type Parameters<'a> = (SignedOrder, alloy::sol_types::sol_data::Bytes); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeWithCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeWithCallback((bytes,bytes),bytes)"; + const SELECTOR: [u8; 4] = [13u8, 51u8, 88u8, 132u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `feeController()` and selector `0x6999b377`. +```solidity +function feeController() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerCall {} + ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct feeControllerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: feeControllerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for feeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for feeControllerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = feeControllerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "feeController()"; + const SELECTOR: [u8; 4] = [105u8, 153u8, 179u8, 119u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct ownerReturn { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit2()` and selector `0x12261ee7`. +```solidity +function permit2() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Call {} + ///Container type for the return parameters of the [`permit2()`](permit2Call) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permit2Return { + pub _0: alloy::sol_types::private::Address, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit2Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit2Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit2()"; + const SELECTOR: [u8; 4] = [18u8, 38u8, 30u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setProtocolFeeController(address)` and selector `0x2d771389`. +```solidity +function setProtocolFeeController(address _newFeeController) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerCall { + pub _newFeeController: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct setProtocolFeeControllerReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerCall) -> Self { + (value._newFeeController,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _newFeeController: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: setProtocolFeeControllerReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for setProtocolFeeControllerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setProtocolFeeControllerCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setProtocolFeeControllerReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setProtocolFeeController(address)"; + const SELECTOR: [u8; 4] = [45u8, 119u8, 19u8, 137u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._newFeeController, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipCall { + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`V3DutchOrderReactor`](self) function calls. + pub enum V3DutchOrderReactorCalls { + execute(executeCall), + executeBatch(executeBatchCall), + executeBatchWithCallback(executeBatchWithCallbackCall), + executeWithCallback(executeWithCallbackCall), + feeController(feeControllerCall), + owner(ownerCall), + permit2(permit2Call), + setProtocolFeeController(setProtocolFeeControllerCall), + transferOwnership(transferOwnershipCall), + } + #[automatically_derived] + impl V3DutchOrderReactorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [13u8, 51u8, 88u8, 132u8], + [13u8, 122u8, 22u8, 195u8], + [18u8, 38u8, 30u8, 231u8], + [19u8, 251u8, 114u8, 199u8], + [45u8, 119u8, 19u8, 137u8], + [63u8, 98u8, 25u8, 46u8], + [105u8, 153u8, 179u8, 119u8], + [141u8, 165u8, 203u8, 91u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for V3DutchOrderReactorCalls { + const NAME: &'static str = "V3DutchOrderReactorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 9usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::executeBatchWithCallback(_) => { + ::SELECTOR + } + Self::executeWithCallback(_) => { + ::SELECTOR + } + Self::feeController(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::permit2(_) => ::SELECTOR, + Self::setProtocolFeeController(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn executeWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorCalls::executeWithCallback) + } + executeWithCallback + }, + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorCalls::executeBatch) + } + executeBatch + }, + { + fn permit2( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorCalls::permit2) + } + permit2 + }, + { + fn executeBatchWithCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorCalls::executeBatchWithCallback) + } + executeBatchWithCallback + }, + { + fn setProtocolFeeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorCalls::setProtocolFeeController) + } + setProtocolFeeController + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorCalls::execute) + } + execute + }, + { + fn feeController( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorCalls::feeController) + } + feeController + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorCalls::owner) + } + owner + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::feeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::permit2(inner) => { + ::abi_encoded_size(inner) + } + Self::setProtocolFeeController(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeBatchWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::executeWithCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::feeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit2(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setProtocolFeeController(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`V3DutchOrderReactor`](self) custom errors. + pub enum V3DutchOrderReactorErrors { + DeadlineReached(DeadlineReached), + DuplicateFeeOutput(DuplicateFeeOutput), + FeeTooLarge(FeeTooLarge), + IndexOutOfBounds(IndexOutOfBounds), + InputAndOutputFees(InputAndOutputFees), + InvalidCosignature(InvalidCosignature), + InvalidCosignerInput(InvalidCosignerInput), + InvalidCosignerOutput(InvalidCosignerOutput), + InvalidDecayCurve(InvalidDecayCurve), + InvalidFeeToken(InvalidFeeToken), + InvalidReactor(InvalidReactor), + NativeTransferFailed(NativeTransferFailed), + NoExclusiveOverride(NoExclusiveOverride), + } + #[automatically_derived] + impl V3DutchOrderReactorErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [14u8, 153u8, 103u8, 102u8], + [77u8, 223u8, 74u8, 100u8], + [78u8, 35u8, 208u8, 53u8], + [130u8, 231u8, 86u8, 86u8], + [163u8, 5u8, 223u8, 130u8], + [172u8, 145u8, 67u8, 231u8], + [176u8, 140u8, 229u8, 179u8], + [185u8, 236u8, 30u8, 150u8], + [215u8, 129u8, 91u8, 225u8], + [237u8, 199u8, 226u8, 228u8], + [237u8, 223u8, 7u8, 245u8], + [244u8, 179u8, 177u8, 188u8], + [255u8, 240u8, 131u8, 3u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for V3DutchOrderReactorErrors { + const NAME: &'static str = "V3DutchOrderReactorErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 13usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DeadlineReached(_) => { + ::SELECTOR + } + Self::DuplicateFeeOutput(_) => { + ::SELECTOR + } + Self::FeeTooLarge(_) => { + ::SELECTOR + } + Self::IndexOutOfBounds(_) => { + ::SELECTOR + } + Self::InputAndOutputFees(_) => { + ::SELECTOR + } + Self::InvalidCosignature(_) => { + ::SELECTOR + } + Self::InvalidCosignerInput(_) => { + ::SELECTOR + } + Self::InvalidCosignerOutput(_) => { + ::SELECTOR + } + Self::InvalidDecayCurve(_) => { + ::SELECTOR + } + Self::InvalidFeeToken(_) => { + ::SELECTOR + } + Self::InvalidReactor(_) => { + ::SELECTOR + } + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + Self::NoExclusiveOverride(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn InvalidDecayCurve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::InvalidDecayCurve) + } + InvalidDecayCurve + }, + { + fn InvalidReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::InvalidReactor) + } + InvalidReactor + }, + { + fn IndexOutOfBounds( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::IndexOutOfBounds) + } + IndexOutOfBounds + }, + { + fn FeeTooLarge( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::FeeTooLarge) + } + FeeTooLarge + }, + { + fn InvalidCosignerOutput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::InvalidCosignerOutput) + } + InvalidCosignerOutput + }, + { + fn InvalidCosignerInput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::InvalidCosignerInput) + } + InvalidCosignerInput + }, + { + fn DeadlineReached( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::DeadlineReached) + } + DeadlineReached + }, + { + fn NoExclusiveOverride( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::NoExclusiveOverride) + } + NoExclusiveOverride + }, + { + fn InvalidCosignature( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::InvalidCosignature) + } + InvalidCosignature + }, + { + fn InputAndOutputFees( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::InputAndOutputFees) + } + InputAndOutputFees + }, + { + fn InvalidFeeToken( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::InvalidFeeToken) + } + InvalidFeeToken + }, + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::NativeTransferFailed) + } + NativeTransferFailed + }, + { + fn DuplicateFeeOutput( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(V3DutchOrderReactorErrors::DuplicateFeeOutput) + } + DuplicateFeeOutput + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::DeadlineReached(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::DuplicateFeeOutput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encoded_size(inner) + } + Self::IndexOutOfBounds(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidCosignature(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidCosignerInput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidCosignerOutput(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidDecayCurve(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NoExclusiveOverride(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::DeadlineReached(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::DuplicateFeeOutput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::FeeTooLarge(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::IndexOutOfBounds(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InputAndOutputFees(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidCosignature(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidCosignerInput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidCosignerOutput(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidDecayCurve(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidFeeToken(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NoExclusiveOverride(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`V3DutchOrderReactor`](self) events. + pub enum V3DutchOrderReactorEvents { + Fill(Fill), + OwnershipTransferred(OwnershipTransferred), + ProtocolFeeControllerSet(ProtocolFeeControllerSet), + } + #[automatically_derived] + impl V3DutchOrderReactorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 120u8, + 173u8, + 126u8, + 192u8, + 233u8, + 248u8, + 158u8, + 116u8, + 1u8, + 42u8, + 250u8, + 88u8, + 115u8, + 139u8, + 107u8, + 102u8, + 28u8, + 2u8, + 76u8, + 176u8, + 253u8, + 24u8, + 94u8, + 226u8, + 246u8, + 22u8, + 192u8, + 162u8, + 137u8, + 36u8, + 189u8, + 102u8, + ], + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + [ + 185u8, + 4u8, + 174u8, + 149u8, + 41u8, + 227u8, + 115u8, + 228u8, + 139u8, + 200u8, + 45u8, + 244u8, + 50u8, + 108u8, + 206u8, + 175u8, + 27u8, + 76u8, + 71u8, + 43u8, + 171u8, + 243u8, + 127u8, + 91u8, + 125u8, + 236u8, + 70u8, + 254u8, + 204u8, + 107u8, + 83u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for V3DutchOrderReactorEvents { + const NAME: &'static str = "V3DutchOrderReactorEvents"; + const COUNT: usize = 3usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Fill) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::ProtocolFeeControllerSet) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for V3DutchOrderReactorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Fill(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::ProtocolFeeControllerSet(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`V3DutchOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`V3DutchOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> V3DutchOrderReactorInstance { + V3DutchOrderReactorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + V3DutchOrderReactorInstance::< + T, + P, + N, + >::deploy(provider, _permit2, _protocolFeeOwner) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + V3DutchOrderReactorInstance::< + T, + P, + N, + >::deploy_builder(provider, _permit2, _protocolFeeOwner) + } + /**A [`V3DutchOrderReactor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`V3DutchOrderReactor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct V3DutchOrderReactorInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for V3DutchOrderReactorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("V3DutchOrderReactorInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > V3DutchOrderReactorInstance { + /**Creates a new wrapper around an on-chain [`V3DutchOrderReactor`](self) contract instance. + +See the [wrapper's documentation](`V3DutchOrderReactorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _permit2, + _protocolFeeOwner, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _permit2: alloy::sol_types::private::Address, + _protocolFeeOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _permit2, + _protocolFeeOwner, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl V3DutchOrderReactorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> V3DutchOrderReactorInstance { + V3DutchOrderReactorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > V3DutchOrderReactorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeBatchCall { orders }) + } + ///Creates a new call builder for the [`executeBatchWithCallback`] function. + pub fn executeBatchWithCallback( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeBatchWithCallbackCall { + orders, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`executeWithCallback`] function. + pub fn executeWithCallback( + &self, + order: ::RustType, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeWithCallbackCall { + order, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`feeController`] function. + pub fn feeController( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&feeControllerCall {}) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`permit2`] function. + pub fn permit2(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&permit2Call {}) + } + ///Creates a new call builder for the [`setProtocolFeeController`] function. + pub fn setProtocolFeeController( + &self, + _newFeeController: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &setProtocolFeeControllerCall { + _newFeeController, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > V3DutchOrderReactorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Fill`] event. + pub fn Fill_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`ProtocolFeeControllerSet`] event. + pub fn ProtocolFeeControllerSet_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} diff --git a/crates/bindings-uniswapx/src/weth.rs b/crates/bindings-uniswapx/src/weth.rs index 3ae38dc..4bf64e3 100644 --- a/crates/bindings-uniswapx/src/weth.rs +++ b/crates/bindings-uniswapx/src/weth.rs @@ -1,1585 +1,3631 @@ -pub use weth::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod weth { - #[allow(deprecated)] - fn __abi() -> ::ethers::core::abi::Abi { - ::ethers::core::abi::ethabi::Contract { - constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("DOMAIN_SEPARATOR"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("allowance"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("allowance"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("approve"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("approve"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("balanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("balanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("decimals"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("decimals"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("deposit"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("deposit"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("name"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("name"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("nonces"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("nonces"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("permit"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("permit"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("value"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("deadline"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("v"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("r"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("s"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("symbol"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("symbol"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("totalSupply"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("totalSupply"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("transferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("withdraw"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("withdraw"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ]), - events: ::core::convert::From::from([ +/** + +Generated by the following Solidity interface... +```solidity +interface WETH { + event Approval(address indexed owner, address indexed spender, uint256 amount); + event Deposit(address indexed from, uint256 amount); + event Transfer(address indexed from, address indexed to, uint256 amount); + event Withdrawal(address indexed to, uint256 amount); + + receive() external payable; + + function DOMAIN_SEPARATOR() external view returns (bytes32); + function allowance(address, address) external view returns (uint256); + function approve(address spender, uint256 amount) external returns (bool); + function balanceOf(address) external view returns (uint256); + function decimals() external view returns (uint8); + function deposit() external payable; + function name() external view returns (string memory); + function nonces(address) external view returns (uint256); + function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; + function symbol() external view returns (string memory); + function totalSupply() external view returns (uint256); + function transfer(address to, uint256 amount) external returns (bool); + function transferFrom(address from, address to, uint256 amount) external returns (bool); + function withdraw(uint256 amount) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "balanceOf", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "decimals", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint8", + "internalType": "uint8" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "deposit", + "inputs": [], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nonces", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "v", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "r", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "s", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "symbol", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "totalSupply", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transfer", + "inputs": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdraw", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Deposit", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Transfer", + "inputs": [ + { + "name": "from", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Withdrawal", + "inputs": [ + { + "name": "to", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + } +] +```*/ +#[allow(non_camel_case_types, non_snake_case, clippy::style)] +pub mod WETH { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60e06040523480156200001157600080fd5b506040518060400160405280600d81526020016c2bb930b83832b21022ba3432b960991b815250604051806040016040528060048152602001630ae8aa8960e31b81525060128260009081620000689190620001dd565b506001620000778382620001dd565b5060ff81166080524660a0526200008d6200009a565b60c0525062000327915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000ce9190620002a9565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200016157607f821691505b6020821081036200018257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001d8576000816000526020600020601f850160051c81016020861015620001b35750805b601f850160051c820191505b81811015620001d457828155600101620001bf565b5050505b505050565b81516001600160401b03811115620001f957620001f962000136565b62000211816200020a84546200014c565b8462000188565b602080601f831160018114620002495760008415620002305750858301515b600019600386901b1c1916600185901b178555620001d4565b600085815260208120601f198616915b828110156200027a5788860151825594840194600190910190840162000259565b5085821015620002995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620002b9816200014c565b60018281168015620002d45760018114620002ea576200031b565b60ff19841687528215158302870194506200031b565b8760005260208060002060005b85811015620003125781548a820152908401908201620002f7565b50505082870194505b50929695505050505050565b60805160a05160c051610f96620003576000396000610610015260006105db015260006101c60152610f966000f3fe6080604052600436106100e15760003560e01c806370a082311161007f578063a9059cbb11610059578063a9059cbb1461027e578063d0e30db01461029e578063d505accf146102a6578063dd62ed3e146102c657600080fd5b806370a082311461020f5780637ecebe001461023c57806395d89b411461026957600080fd5b806323b872dd116100bb57806323b872dd146101745780632e1a7d4d14610194578063313ce567146101b45780633644e515146101fa57600080fd5b806306fdde03146100f5578063095ea7b31461012057806318160ddd1461015057600080fd5b366100f0576100ee6102fe565b005b600080fd5b34801561010157600080fd5b5061010a61033f565b6040516101179190610c03565b60405180910390f35b34801561012c57600080fd5b5061014061013b366004610c99565b6103cd565b6040519015158152602001610117565b34801561015c57600080fd5b5061016660025481565b604051908152602001610117565b34801561018057600080fd5b5061014061018f366004610cc3565b610447565b3480156101a057600080fd5b506100ee6101af366004610cff565b61058b565b3480156101c057600080fd5b506101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610117565b34801561020657600080fd5b506101666105d7565b34801561021b57600080fd5b5061016661022a366004610d18565b60036020526000908152604090205481565b34801561024857600080fd5b50610166610257366004610d18565b60056020526000908152604090205481565b34801561027557600080fd5b5061010a610632565b34801561028a57600080fd5b50610140610299366004610c99565b61063f565b6100ee6102fe565b3480156102b257600080fd5b506100ee6102c1366004610d3a565b6106c4565b3480156102d257600080fd5b506101666102e1366004610dad565b600460209081526000928352604080842090915290825290205481565b61030833346109e8565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b6000805461034c90610de0565b80601f016020809104026020016040519081016040528092919081815260200182805461037890610de0565b80156103c55780601f1061039a576101008083540402835291602001916103c5565b820191906000526020600020905b8154815290600101906020018083116103a857829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104359086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104db576104a98382610e62565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff851660009081526003602052604081208054859290610510908490610e62565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105789087815260200190565b60405180910390a3506001949350505050565b6105953382610a61565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a26105d43382610aef565b50565b60007f0000000000000000000000000000000000000000000000000000000000000000461461060d57610608610b69565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461034c90610de0565b33600090815260036020526040812080548391908390610660908490610e62565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104359086815260200190565b42841015610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161073f6105d7565b73ffffffffffffffffffffffffffffffffffffffff8a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610891573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061090c57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e4552000000000000000000000000000000000000604482015260640161072a565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b80600260008282546109fa9190610e75565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054839290610a96908490610e62565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a55565b600080600080600085875af1905080610b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161072a565b505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610b9b9190610e88565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006020808352835180602085015260005b81811015610c3157858101830151858201604001528201610c15565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c9457600080fd5b919050565b60008060408385031215610cac57600080fd5b610cb583610c70565b946020939093013593505050565b600080600060608486031215610cd857600080fd5b610ce184610c70565b9250610cef60208501610c70565b9150604084013590509250925092565b600060208284031215610d1157600080fd5b5035919050565b600060208284031215610d2a57600080fd5b610d3382610c70565b9392505050565b600080600080600080600060e0888a031215610d5557600080fd5b610d5e88610c70565b9650610d6c60208901610c70565b95506040880135945060608801359350608088013560ff81168114610d9057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610dc057600080fd5b610dc983610c70565b9150610dd760208401610c70565b90509250929050565b600181811c90821680610df457607f821691505b602082108103610e2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561044157610441610e33565b8082018082111561044157610441610e33565b60008083548160018260011c91506001831680610ea657607f831692505b60208084108203610ede577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015610ef25760018114610f2557610f52565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610f52565b60008a81526020902060005b86811015610f4a5781548b820152908501908301610f31565b505084890196505b50949897505050505050505056fea264697066735822122041f3d9f7e8c5f845f976ad0a536b2c8f53dbbbdf694d76046e07adc9bc14b6bc64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Q\x80`@\x01`@R\x80`\r\x81R` \x01l+\xB90\xB882\xB2\x10\"\xBA42\xB9`\x99\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01c\n\xE8\xAA\x89`\xE3\x1B\x81RP`\x12\x82`\0\x90\x81b\0\0h\x91\x90b\0\x01\xDDV[P`\x01b\0\0w\x83\x82b\0\x01\xDDV[P`\xFF\x81\x16`\x80RF`\xA0Rb\0\0\x8Db\0\0\x9AV[`\xC0RPb\0\x03'\x91PPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qb\0\0\xCE\x91\x90b\0\x02\xA9V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x01aW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x01\x82WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01\xD8W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x01\xB3WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x01\xD4W\x82\x81U`\x01\x01b\0\x01\xBFV[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x01\xF9Wb\0\x01\xF9b\0\x016V[b\0\x02\x11\x81b\0\x02\n\x84Tb\0\x01LV[\x84b\0\x01\x88V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x02IW`\0\x84\x15b\0\x020WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x01\xD4V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x02zW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x02YV[P\x85\x82\x10\x15b\0\x02\x99W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\0\x80\x83Tb\0\x02\xB9\x81b\0\x01LV[`\x01\x82\x81\x16\x80\x15b\0\x02\xD4W`\x01\x81\x14b\0\x02\xEAWb\0\x03\x1BV[`\xFF\x19\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pb\0\x03\x1BV[\x87`\0R` \x80`\0 `\0[\x85\x81\x10\x15b\0\x03\x12W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01b\0\x02\xF7V[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[`\x80Q`\xA0Q`\xC0Qa\x0F\x96b\0\x03W`\09`\0a\x06\x10\x01R`\0a\x05\xDB\x01R`\0a\x01\xC6\x01Ra\x0F\x96`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xE1W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0\x7FW\x80c\xA9\x05\x9C\xBB\x11a\0YW\x80c\xA9\x05\x9C\xBB\x14a\x02~W\x80c\xD0\xE3\r\xB0\x14a\x02\x9EW\x80c\xD5\x05\xAC\xCF\x14a\x02\xA6W\x80c\xDDb\xED>\x14a\x02\xC6W`\0\x80\xFD[\x80cp\xA0\x821\x14a\x02\x0FW\x80c~\xCE\xBE\0\x14a\x02=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\t\x0CWP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\trW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07*V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[\x80`\x02`\0\x82\x82Ta\t\xFA\x91\x90a\x0EuV[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01[`@Q\x80\x91\x03\x90\xA3PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x83\x92\x90a\n\x96\x90\x84\x90a\x0EbV[\x90\x91UPP`\x02\x80T\x82\x90\x03\x90U`@Q\x81\x81R`\0\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90` \x01a\nUV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x0BdW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07*V[PPPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\x0B\x9B\x91\x90a\x0E\x88V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\x0C1W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0C\x15V[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x94W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xACW`\0\x80\xFD[a\x0C\xB5\x83a\x0CpV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xD8W`\0\x80\xFD[a\x0C\xE1\x84a\x0CpV[\x92Pa\x0C\xEF` \x85\x01a\x0CpV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\r\x11W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\r*W`\0\x80\xFD[a\r3\x82a\x0CpV[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\rUW`\0\x80\xFD[a\r^\x88a\x0CpV[\x96Pa\rl` \x89\x01a\x0CpV[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\r\x90W`\0\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\r\xC0W`\0\x80\xFD[a\r\xC9\x83a\x0CpV[\x91Pa\r\xD7` \x84\x01a\x0CpV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\r\xF4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0E-W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x04AWa\x04Aa\x0E3V[\x80\x82\x01\x80\x82\x11\x15a\x04AWa\x04Aa\x0E3V[`\0\x80\x83T\x81`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0E\xA6W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0E\xDEW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\"`\x04R`$\x86\xFD[\x81\x80\x15a\x0E\xF2W`\x01\x81\x14a\x0F%Wa\x0FRV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\x0FRV[`\0\x8A\x81R` \x90 `\0[\x86\x81\x10\x15a\x0FJW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\x0F1V[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV\xFE\xA2dipfsX\"\x12 A\xF3\xD9\xF7\xE8\xC5\xF8E\xF9v\xAD\nSk,\x8FS\xDB\xBB\xDFiMv\x04n\x07\xAD\xC9\xBC\x14\xB6\xBCdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052600436106100e15760003560e01c806370a082311161007f578063a9059cbb11610059578063a9059cbb1461027e578063d0e30db01461029e578063d505accf146102a6578063dd62ed3e146102c657600080fd5b806370a082311461020f5780637ecebe001461023c57806395d89b411461026957600080fd5b806323b872dd116100bb57806323b872dd146101745780632e1a7d4d14610194578063313ce567146101b45780633644e515146101fa57600080fd5b806306fdde03146100f5578063095ea7b31461012057806318160ddd1461015057600080fd5b366100f0576100ee6102fe565b005b600080fd5b34801561010157600080fd5b5061010a61033f565b6040516101179190610c03565b60405180910390f35b34801561012c57600080fd5b5061014061013b366004610c99565b6103cd565b6040519015158152602001610117565b34801561015c57600080fd5b5061016660025481565b604051908152602001610117565b34801561018057600080fd5b5061014061018f366004610cc3565b610447565b3480156101a057600080fd5b506100ee6101af366004610cff565b61058b565b3480156101c057600080fd5b506101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610117565b34801561020657600080fd5b506101666105d7565b34801561021b57600080fd5b5061016661022a366004610d18565b60036020526000908152604090205481565b34801561024857600080fd5b50610166610257366004610d18565b60056020526000908152604090205481565b34801561027557600080fd5b5061010a610632565b34801561028a57600080fd5b50610140610299366004610c99565b61063f565b6100ee6102fe565b3480156102b257600080fd5b506100ee6102c1366004610d3a565b6106c4565b3480156102d257600080fd5b506101666102e1366004610dad565b600460209081526000928352604080842090915290825290205481565b61030833346109e8565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b6000805461034c90610de0565b80601f016020809104026020016040519081016040528092919081815260200182805461037890610de0565b80156103c55780601f1061039a576101008083540402835291602001916103c5565b820191906000526020600020905b8154815290600101906020018083116103a857829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104359086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104db576104a98382610e62565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff851660009081526003602052604081208054859290610510908490610e62565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105789087815260200190565b60405180910390a3506001949350505050565b6105953382610a61565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a26105d43382610aef565b50565b60007f0000000000000000000000000000000000000000000000000000000000000000461461060d57610608610b69565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461034c90610de0565b33600090815260036020526040812080548391908390610660908490610e62565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104359086815260200190565b42841015610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161073f6105d7565b73ffffffffffffffffffffffffffffffffffffffff8a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610891573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061090c57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e4552000000000000000000000000000000000000604482015260640161072a565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b80600260008282546109fa9190610e75565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054839290610a96908490610e62565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a55565b600080600080600085875af1905080610b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161072a565b505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610b9b9190610e88565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006020808352835180602085015260005b81811015610c3157858101830151858201604001528201610c15565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c9457600080fd5b919050565b60008060408385031215610cac57600080fd5b610cb583610c70565b946020939093013593505050565b600080600060608486031215610cd857600080fd5b610ce184610c70565b9250610cef60208501610c70565b9150604084013590509250925092565b600060208284031215610d1157600080fd5b5035919050565b600060208284031215610d2a57600080fd5b610d3382610c70565b9392505050565b600080600080600080600060e0888a031215610d5557600080fd5b610d5e88610c70565b9650610d6c60208901610c70565b95506040880135945060608801359350608088013560ff81168114610d9057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610dc057600080fd5b610dc983610c70565b9150610dd760208401610c70565b90509250929050565b600181811c90821680610df457607f821691505b602082108103610e2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561044157610441610e33565b8082018082111561044157610441610e33565b60008083548160018260011c91506001831680610ea657607f831692505b60208084108203610ede577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015610ef25760018114610f2557610f52565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610f52565b60008a81526020902060005b86811015610f4a5781548b820152908501908301610f31565b505084890196505b50949897505050505050505056fea264697066735822122041f3d9f7e8c5f845f976ad0a536b2c8f53dbbbdf694d76046e07adc9bc14b6bc64736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\xE1W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0\x7FW\x80c\xA9\x05\x9C\xBB\x11a\0YW\x80c\xA9\x05\x9C\xBB\x14a\x02~W\x80c\xD0\xE3\r\xB0\x14a\x02\x9EW\x80c\xD5\x05\xAC\xCF\x14a\x02\xA6W\x80c\xDDb\xED>\x14a\x02\xC6W`\0\x80\xFD[\x80cp\xA0\x821\x14a\x02\x0FW\x80c~\xCE\xBE\0\x14a\x02=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\t\x0CWP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\trW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07*V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[\x80`\x02`\0\x82\x82Ta\t\xFA\x91\x90a\x0EuV[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01[`@Q\x80\x91\x03\x90\xA3PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x83\x92\x90a\n\x96\x90\x84\x90a\x0EbV[\x90\x91UPP`\x02\x80T\x82\x90\x03\x90U`@Q\x81\x81R`\0\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90` \x01a\nUV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x0BdW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07*V[PPPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\x0B\x9B\x91\x90a\x0E\x88V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\x0C1W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0C\x15V[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x94W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xACW`\0\x80\xFD[a\x0C\xB5\x83a\x0CpV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xD8W`\0\x80\xFD[a\x0C\xE1\x84a\x0CpV[\x92Pa\x0C\xEF` \x85\x01a\x0CpV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\r\x11W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\r*W`\0\x80\xFD[a\r3\x82a\x0CpV[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\rUW`\0\x80\xFD[a\r^\x88a\x0CpV[\x96Pa\rl` \x89\x01a\x0CpV[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\r\x90W`\0\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\r\xC0W`\0\x80\xFD[a\r\xC9\x83a\x0CpV[\x91Pa\r\xD7` \x84\x01a\x0CpV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\r\xF4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0E-W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x04AWa\x04Aa\x0E3V[\x80\x82\x01\x80\x82\x11\x15a\x04AWa\x04Aa\x0E3V[`\0\x80\x83T\x81`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0E\xA6W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0E\xDEW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\"`\x04R`$\x86\xFD[\x81\x80\x15a\x0E\xF2W`\x01\x81\x14a\x0F%Wa\x0FRV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\x0FRV[`\0\x8A\x81R` \x90 `\0[\x86\x81\x10\x15a\x0FJW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\x0F1V[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV\xFE\xA2dipfsX\"\x12 A\xF3\xD9\xF7\xE8\xC5\xF8E\xF9v\xAD\nSk,\x8FS\xDB\xBB\xDFiMv\x04n\x07\xAD\xC9\xBC\x14\xB6\xBCdsolcC\0\x08\x18\x003", + ); + /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. +```solidity +event Approval(address indexed owner, address indexed spender, uint256 amount); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Approval { + #[allow(missing_docs)] + pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Approval { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Approval(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + owner: topics.1, + spender: topics.2, + amount: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { ( - ::std::borrow::ToOwned::to_owned("Approval"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("spender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.owner.clone(), self.spender.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.owner, + ); + out[2usize] = ::encode_topic( + &self.spender, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Approval { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Approval> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Approval) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Deposit(address,uint256)` and selector `0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c`. +```solidity +event Deposit(address indexed from, uint256 amount); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Deposit { + #[allow(missing_docs)] + pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Deposit { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Deposit(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 225u8, + 255u8, + 252u8, + 196u8, + 146u8, + 61u8, + 4u8, + 181u8, + 89u8, + 244u8, + 210u8, + 154u8, + 139u8, + 252u8, + 108u8, + 218u8, + 4u8, + 235u8, + 91u8, + 13u8, + 60u8, + 70u8, + 7u8, + 81u8, + 194u8, + 64u8, + 44u8, + 92u8, + 92u8, + 201u8, + 16u8, + 156u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + from: topics.1, + amount: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { ( - ::std::borrow::ToOwned::to_owned("Deposit"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Deposit"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.from.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.from, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Deposit { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Deposit> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Deposit) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Transfer(address,address,uint256)` and selector `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef`. +```solidity +event Transfer(address indexed from, address indexed to, uint256 amount); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Transfer { + #[allow(missing_docs)] + pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Transfer { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Transfer(address,address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + from: topics.1, + to: topics.2, + amount: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { ( - ::std::borrow::ToOwned::to_owned("Transfer"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Transfer"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.from.clone(), self.to.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.from, + ); + out[2usize] = ::encode_topic( + &self.to, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Transfer { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Transfer> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Transfer) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Event with signature `Withdrawal(address,uint256)` and selector `0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65`. +```solidity +event Withdrawal(address indexed to, uint256 amount); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[derive(Clone)] + pub struct Withdrawal { + #[allow(missing_docs)] + pub to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for Withdrawal { + type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "Withdrawal(address,uint256)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 127u8, + 207u8, + 83u8, + 44u8, + 21u8, + 240u8, + 166u8, + 219u8, + 11u8, + 214u8, + 208u8, + 224u8, + 56u8, + 190u8, + 167u8, + 29u8, + 48u8, + 216u8, + 8u8, + 199u8, + 217u8, + 140u8, + 179u8, + 191u8, + 114u8, + 104u8, + 169u8, + 91u8, + 245u8, + 8u8, + 27u8, + 101u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + to: topics.1, + amount: data.0, + } + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { ( - ::std::borrow::ToOwned::to_owned("Withdrawal"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Withdrawal"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: true, - fallback: false, + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.to.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.to, + ); + Ok(()) + } } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for Withdrawal { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&Withdrawal> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &Withdrawal) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`. +```solidity +function DOMAIN_SEPARATOR() external view returns (bytes32); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORCall {} + ///Container type for the return parameters of the [`DOMAIN_SEPARATOR()`](DOMAIN_SEPARATORCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct DOMAIN_SEPARATORReturn { + pub _0: alloy::sol_types::private::FixedBytes<32>, } - ///The parsed JSON ABI of the contract. - pub static WETH_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xE0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Q\x80`@\x01`@R\x80`\r\x81R` \x01l+\xB90\xB882\xB2\x10\"\xBA42\xB9`\x99\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01c\n\xE8\xAA\x89`\xE3\x1B\x81RP`\x12\x82_\x90\x81b\0\0f\x91\x90b\0\x01\xD0V[P`\x01b\0\0u\x83\x82b\0\x01\xD0V[P`\xFF\x81\x16`\x80RF`\xA0Rb\0\0\x8Bb\0\0\x98V[`\xC0RPb\0\x03\x16\x91PPV[_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F_`@Qb\0\0\xCA\x91\x90b\0\x02\x9CV[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x01[W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x01zWcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01\xCBW\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15b\0\x01\xA7WP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x01\xC8W_\x81U`\x01\x01b\0\x01\xB3V[PP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x01\xECWb\0\x01\xECb\0\x012V[b\0\x02\x04\x81b\0\x01\xFD\x84Tb\0\x01FV[\x84b\0\x01\x80V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x02:W_\x84\x15b\0\x02\"WP\x85\x83\x01Q[_\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x02\x94V[_\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x02jW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x02IV[P\x85\x82\x10\x15b\0\x02\x88W\x87\x85\x01Q_\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PP`\x01\x84`\x01\x1B\x01\x85U[PPPPPPV[_\x80\x83Tb\0\x02\xAB\x81b\0\x01FV[`\x01\x82\x81\x16\x80\x15b\0\x02\xC6W`\x01\x81\x14b\0\x02\xDCWb\0\x03\nV[`\xFF\x19\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pb\0\x03\nV[\x87_R` \x80_ _[\x85\x81\x10\x15b\0\x03\x01W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01b\0\x02\xE6V[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[`\x80Q`\xA0Q`\xC0Qa\x0FJb\0\x03A_9_a\x05\xF1\x01R_a\x05\xBC\x01R_a\x01\xBA\x01Ra\x0FJ_\xF3\xFE`\x80`@R`\x046\x10a\0\xDCW_5`\xE0\x1C\x80cp\xA0\x821\x11a\0|W\x80c\xA9\x05\x9C\xBB\x11a\0WW\x80c\xA9\x05\x9C\xBB\x14a\x02lW\x80c\xD0\xE3\r\xB0\x14a\x02\x8BW\x80c\xD5\x05\xAC\xCF\x14a\x02\x93W\x80c\xDDb\xED>\x14a\x02\xB2W_\x80\xFD[\x80cp\xA0\x821\x14a\x02\x02W\x80c~\xCE\xBE\0\x14a\x02-W\x80c\x95\xD8\x9BA\x14a\x02XW_\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xB7W\x80c#\xB8r\xDD\x14a\x01kW\x80c.\x1A}M\x14a\x01\x8AW\x80c1<\xE5g\x14a\x01\xA9W\x80c6D\xE5\x15\x14a\x01\xEEW_\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\x19W\x80c\x18\x16\r\xDD\x14a\x01HW_\x80\xFD[6a\0\xEBWa\0\xE9a\x02\xE8V[\0[_\x80\xFD[4\x80\x15a\0\xFAW_\x80\xFD[Pa\x01\x03a\x03)V[`@Qa\x01\x10\x91\x90a\x0B\xD3V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01$W_\x80\xFD[Pa\x018a\x0136`\x04a\x0CeV[a\x03\xB4V[`@Q\x90\x15\x15\x81R` \x01a\x01\x10V[4\x80\x15a\x01SW_\x80\xFD[Pa\x01]`\x02T\x81V[`@Q\x90\x81R` \x01a\x01\x10V[4\x80\x15a\x01vW_\x80\xFD[Pa\x018a\x01\x856`\x04a\x0C\x8DV[a\x04-V[4\x80\x15a\x01\x95W_\x80\xFD[Pa\0\xE9a\x01\xA46`\x04a\x0C\xC6V[a\x05mV[4\x80\x15a\x01\xB4W_\x80\xFD[Pa\x01\xDC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x01\x10V[4\x80\x15a\x01\xF9W_\x80\xFD[Pa\x01]a\x05\xB9V[4\x80\x15a\x02\rW_\x80\xFD[Pa\x01]a\x02\x1C6`\x04a\x0C\xDDV[`\x03` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x028W_\x80\xFD[Pa\x01]a\x02G6`\x04a\x0C\xDDV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x02cW_\x80\xFD[Pa\x01\x03a\x06\x13V[4\x80\x15a\x02wW_\x80\xFD[Pa\x018a\x02\x866`\x04a\x0CeV[a\x06 V[a\0\xE9a\x02\xE8V[4\x80\x15a\x02\x9EW_\x80\xFD[Pa\0\xE9a\x02\xAD6`\x04a\x0C\xFDV[a\x06\xA3V[4\x80\x15a\x02\xBDW_\x80\xFD[Pa\x01]a\x02\xCC6`\x04a\rjV[`\x04` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x02\xF234a\t\xC1V[`@Q4\x81R3\x90\x7F\xE1\xFF\xFC\xC4\x92=\x04\xB5Y\xF4\xD2\x9A\x8B\xFCl\xDA\x04\xEB[\r=_\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\x08\xE6WP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\tLW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\tV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[\x80`\x02_\x82\x82Ta\t\xD2\x91\x90a\x0E,V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01[`@Q\x80\x91\x03\x90\xA3PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x90\x81R`\x03` R`@\x81 \x80T\x83\x92\x90a\nl\x90\x84\x90a\x0E\x19V[\x90\x91UPP`\x02\x80T\x82\x90\x03\x90U`@Q\x81\x81R_\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90` \x01a\n,V[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\x0B6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\tV[PPPV[_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F_`@Qa\x0Bk\x91\x90a\x0E?V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[_` \x80\x83R\x83Q\x80` \x85\x01R_[\x81\x81\x10\x15a\x0B\xFFW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0B\xE3V[P_`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C`W_\x80\xFD[\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x0CvW_\x80\xFD[a\x0C\x7F\x83a\x0C=V[\x94` \x93\x90\x93\x015\x93PPPV[_\x80_``\x84\x86\x03\x12\x15a\x0C\x9FW_\x80\xFD[a\x0C\xA8\x84a\x0C=V[\x92Pa\x0C\xB6` \x85\x01a\x0C=V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x0C\xD6W_\x80\xFD[P5\x91\x90PV[_` \x82\x84\x03\x12\x15a\x0C\xEDW_\x80\xFD[a\x0C\xF6\x82a\x0C=V[\x93\x92PPPV[_\x80_\x80_\x80_`\xE0\x88\x8A\x03\x12\x15a\r\x13W_\x80\xFD[a\r\x1C\x88a\x0C=V[\x96Pa\r*` \x89\x01a\x0C=V[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\rMW_\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[_\x80`@\x83\x85\x03\x12\x15a\r{W_\x80\xFD[a\r\x84\x83a\x0C=V[\x91Pa\r\x92` \x84\x01a\x0C=V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\r\xAFW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r\xE6W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x04'Wa\x04'a\r\xECV[\x80\x82\x01\x80\x82\x11\x15a\x04'Wa\x04'a\r\xECV[_\x80\x83T_`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0E\\W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0E\x94W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[\x81\x80\x15a\x0E\xA8W`\x01\x81\x14a\x0E\xDBWa\x0F\x06V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\x0F\x06V[_\x8A\x81R` \x90 _[\x86\x81\x10\x15a\x0E\xFEW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\x0E\xE5V[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV\xFE\xA2dipfsX\"\x12 \x18\x1E\xD0\xDB\x94*\x95\xCF\x93\xFC?a\xCB\xC3\xFD\xE5\xF53\\s\x99<\xFB{\xC8\xC1m\x13R9[\xFCdsolcC\0\x08\x18\x003"; - /// The bytecode of the contract. - pub static WETH_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0\xDCW_5`\xE0\x1C\x80cp\xA0\x821\x11a\0|W\x80c\xA9\x05\x9C\xBB\x11a\0WW\x80c\xA9\x05\x9C\xBB\x14a\x02lW\x80c\xD0\xE3\r\xB0\x14a\x02\x8BW\x80c\xD5\x05\xAC\xCF\x14a\x02\x93W\x80c\xDDb\xED>\x14a\x02\xB2W_\x80\xFD[\x80cp\xA0\x821\x14a\x02\x02W\x80c~\xCE\xBE\0\x14a\x02-W\x80c\x95\xD8\x9BA\x14a\x02XW_\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xB7W\x80c#\xB8r\xDD\x14a\x01kW\x80c.\x1A}M\x14a\x01\x8AW\x80c1<\xE5g\x14a\x01\xA9W\x80c6D\xE5\x15\x14a\x01\xEEW_\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\x19W\x80c\x18\x16\r\xDD\x14a\x01HW_\x80\xFD[6a\0\xEBWa\0\xE9a\x02\xE8V[\0[_\x80\xFD[4\x80\x15a\0\xFAW_\x80\xFD[Pa\x01\x03a\x03)V[`@Qa\x01\x10\x91\x90a\x0B\xD3V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01$W_\x80\xFD[Pa\x018a\x0136`\x04a\x0CeV[a\x03\xB4V[`@Q\x90\x15\x15\x81R` \x01a\x01\x10V[4\x80\x15a\x01SW_\x80\xFD[Pa\x01]`\x02T\x81V[`@Q\x90\x81R` \x01a\x01\x10V[4\x80\x15a\x01vW_\x80\xFD[Pa\x018a\x01\x856`\x04a\x0C\x8DV[a\x04-V[4\x80\x15a\x01\x95W_\x80\xFD[Pa\0\xE9a\x01\xA46`\x04a\x0C\xC6V[a\x05mV[4\x80\x15a\x01\xB4W_\x80\xFD[Pa\x01\xDC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x01\x10V[4\x80\x15a\x01\xF9W_\x80\xFD[Pa\x01]a\x05\xB9V[4\x80\x15a\x02\rW_\x80\xFD[Pa\x01]a\x02\x1C6`\x04a\x0C\xDDV[`\x03` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x028W_\x80\xFD[Pa\x01]a\x02G6`\x04a\x0C\xDDV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x02cW_\x80\xFD[Pa\x01\x03a\x06\x13V[4\x80\x15a\x02wW_\x80\xFD[Pa\x018a\x02\x866`\x04a\x0CeV[a\x06 V[a\0\xE9a\x02\xE8V[4\x80\x15a\x02\x9EW_\x80\xFD[Pa\0\xE9a\x02\xAD6`\x04a\x0C\xFDV[a\x06\xA3V[4\x80\x15a\x02\xBDW_\x80\xFD[Pa\x01]a\x02\xCC6`\x04a\rjV[`\x04` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x02\xF234a\t\xC1V[`@Q4\x81R3\x90\x7F\xE1\xFF\xFC\xC4\x92=\x04\xB5Y\xF4\xD2\x9A\x8B\xFCl\xDA\x04\xEB[\r=_\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\x08\xE6WP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\tLW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\tV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[\x80`\x02_\x82\x82Ta\t\xD2\x91\x90a\x0E,V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01[`@Q\x80\x91\x03\x90\xA3PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x90\x81R`\x03` R`@\x81 \x80T\x83\x92\x90a\nl\x90\x84\x90a\x0E\x19V[\x90\x91UPP`\x02\x80T\x82\x90\x03\x90U`@Q\x81\x81R_\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90` \x01a\n,V[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\x0B6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\tV[PPPV[_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F_`@Qa\x0Bk\x91\x90a\x0E?V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[_` \x80\x83R\x83Q\x80` \x85\x01R_[\x81\x81\x10\x15a\x0B\xFFW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0B\xE3V[P_`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C`W_\x80\xFD[\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x0CvW_\x80\xFD[a\x0C\x7F\x83a\x0C=V[\x94` \x93\x90\x93\x015\x93PPPV[_\x80_``\x84\x86\x03\x12\x15a\x0C\x9FW_\x80\xFD[a\x0C\xA8\x84a\x0C=V[\x92Pa\x0C\xB6` \x85\x01a\x0C=V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x0C\xD6W_\x80\xFD[P5\x91\x90PV[_` \x82\x84\x03\x12\x15a\x0C\xEDW_\x80\xFD[a\x0C\xF6\x82a\x0C=V[\x93\x92PPPV[_\x80_\x80_\x80_`\xE0\x88\x8A\x03\x12\x15a\r\x13W_\x80\xFD[a\r\x1C\x88a\x0C=V[\x96Pa\r*` \x89\x01a\x0C=V[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\rMW_\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[_\x80`@\x83\x85\x03\x12\x15a\r{W_\x80\xFD[a\r\x84\x83a\x0C=V[\x91Pa\r\x92` \x84\x01a\x0C=V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\r\xAFW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r\xE6W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x04'Wa\x04'a\r\xECV[\x80\x82\x01\x80\x82\x11\x15a\x04'Wa\x04'a\r\xECV[_\x80\x83T_`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0E\\W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0E\x94W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[\x81\x80\x15a\x0E\xA8W`\x01\x81\x14a\x0E\xDBWa\x0F\x06V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\x0F\x06V[_\x8A\x81R` \x90 _[\x86\x81\x10\x15a\x0E\xFEW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\x0E\xE5V[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV\xFE\xA2dipfsX\"\x12 \x18\x1E\xD0\xDB\x94*\x95\xCF\x93\xFC?a\xCB\xC3\xFD\xE5\xF53\\s\x99<\xFB{\xC8\xC1m\x13R9[\xFCdsolcC\0\x08\x18\x003"; - /// The deployed bytecode of the contract. - pub static WETH_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct WETH(::ethers::contract::Contract); - impl ::core::clone::Clone for WETH { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: DOMAIN_SEPARATORReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for DOMAIN_SEPARATORReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for DOMAIN_SEPARATORCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = DOMAIN_SEPARATORReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "DOMAIN_SEPARATOR()"; + const SELECTOR: [u8; 4] = [54u8, 68u8, 229u8, 21u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `allowance(address,address)` and selector `0xdd62ed3e`. +```solidity +function allowance(address, address) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceCall { + pub _0: alloy::sol_types::private::Address, + pub _1: alloy::sol_types::private::Address, } - impl ::core::ops::Deref for WETH { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 + ///Container type for the return parameters of the [`allowance(address,address)`](allowanceCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct allowanceReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceCall) -> Self { + (value._0, value._1) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0, _1: tuple.1 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: allowanceReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for allowanceReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for allowanceCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = allowanceReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "allowance(address,address)"; + const SELECTOR: [u8; 4] = [221u8, 98u8, 237u8, 62u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ::tokenize( + &self._1, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + /**Function with signature `approve(address,uint256)` and selector `0x095ea7b3`. +```solidity +function approve(address spender, uint256 amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveCall { + pub spender: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct approveReturn { + pub _0: bool, } - impl ::core::ops::DerefMut for WETH { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveCall) -> Self { + (value.spender, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + spender: tuple.0, + amount: tuple.1, + } + } + } } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: approveReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for approveReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for approveCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = approveReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "approve(address,uint256)"; + const SELECTOR: [u8; 4] = [9u8, 94u8, 167u8, 179u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `balanceOf(address)` and selector `0x70a08231`. +```solidity +function balanceOf(address) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfCall { + pub _0: alloy::sol_types::private::Address, } - impl ::core::fmt::Debug for WETH { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(WETH)).field(&self.address()).finish() + ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct balanceOfReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: balanceOfReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for balanceOfReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for balanceOfCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = balanceOfReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "balanceOf(address)"; + const SELECTOR: [u8; 4] = [112u8, 160u8, 130u8, 49u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + /**Function with signature `decimals()` and selector `0x313ce567`. +```solidity +function decimals() external view returns (uint8); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsCall {} + ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct decimalsReturn { + pub _0: u8, } - impl WETH { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - WETH_ABI.clone(), - client, - ), - ) + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - WETH_ABI.clone(), - WETH_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (u8,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: decimalsReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for decimalsReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } } - ///Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function - pub fn domain_separator( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([54, 68, 229, 21], ()) - .expect("method not found (this should never happen)") + #[automatically_derived] + impl alloy_sol_types::SolCall for decimalsCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = decimalsReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "decimals()"; + const SELECTOR: [u8; 4] = [49u8, 60u8, 229u8, 103u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } - ///Calls the contract's `allowance` (0xdd62ed3e) function - pub fn allowance( - &self, - p0: ::ethers::core::types::Address, - p1: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([221, 98, 237, 62], (p0, p1)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `approve` (0x095ea7b3) function - pub fn approve( - &self, - spender: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (spender, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) function - pub fn balance_of( - &self, - p0: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 160, 130, 49], p0) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `decimals` (0x313ce567) function - pub fn decimals(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([49, 60, 229, 103], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `deposit` (0xd0e30db0) function - pub fn deposit(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([208, 227, 13, 176], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `name` (0x06fdde03) function - pub fn name( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([6, 253, 222, 3], ()) - .expect("method not found (this should never happen)") + }; + /**Function with signature `deposit()` and selector `0xd0e30db0`. +```solidity +function deposit() external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositCall {} + ///Container type for the return parameters of the [`deposit()`](depositCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct depositReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } } - ///Calls the contract's `nonces` (0x7ecebe00) function - pub fn nonces( - &self, - p0: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([126, 206, 190, 0], p0) - .expect("method not found (this should never happen)") + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: depositReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for depositReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } } - ///Calls the contract's `permit` (0xd505accf) function - pub fn permit( - &self, - owner: ::ethers::core::types::Address, - spender: ::ethers::core::types::Address, - value: ::ethers::core::types::U256, - deadline: ::ethers::core::types::U256, - v: u8, - r: [u8; 32], - s: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [213, 5, 172, 207], - (owner, spender, value, deadline, v, r, s), + #[automatically_derived] + impl alloy_sol_types::SolCall for depositCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = depositReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "deposit()"; + const SELECTOR: [u8; 4] = [208u8, 227u8, 13u8, 176u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `name()` and selector `0x06fdde03`. +```solidity +function name() external view returns (string memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameCall {} + ///Container type for the return parameters of the [`name()`](nameCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct nameReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: nameReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for nameReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for nameCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = nameReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "name()"; + const SELECTOR: [u8; 4] = [6u8, 253u8, 222u8, 3u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `nonces(address)` and selector `0x7ecebe00`. +```solidity +function nonces(address) external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct noncesCall { + pub _0: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`nonces(address)`](noncesCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct noncesReturn { + pub _0: alloy::sol_types::private::U256, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: noncesCall) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for noncesCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: noncesReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for noncesReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for noncesCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = noncesReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "nonces(address)"; + const SELECTOR: [u8; 4] = [126u8, 206u8, 190u8, 0u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self._0, + ), ) - .expect("method not found (this should never happen)") + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)` and selector `0xd505accf`. +```solidity +function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitCall { + pub owner: alloy::sol_types::private::Address, + pub spender: alloy::sol_types::private::Address, + pub value: alloy::sol_types::private::U256, + pub deadline: alloy::sol_types::private::U256, + pub v: u8, + pub r: alloy::sol_types::private::FixedBytes<32>, + pub s: alloy::sol_types::private::FixedBytes<32>, + } + ///Container type for the return parameters of the [`permit(address,address,uint256,uint256,uint8,bytes32,bytes32)`](permitCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct permitReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + alloy::sol_types::private::U256, + u8, + alloy::sol_types::private::FixedBytes<32>, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitCall) -> Self { + ( + value.owner, + value.spender, + value.value, + value.deadline, + value.v, + value.r, + value.s, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + owner: tuple.0, + spender: tuple.1, + value: tuple.2, + deadline: tuple.3, + v: tuple.4, + r: tuple.5, + s: tuple.6, + } + } + } } - ///Calls the contract's `symbol` (0x95d89b41) function - pub fn symbol( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([149, 216, 155, 65], ()) - .expect("method not found (this should never happen)") + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permitReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permitReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } } - ///Calls the contract's `totalSupply` (0x18160ddd) function - pub fn total_supply( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([24, 22, 13, 221], ()) - .expect("method not found (this should never happen)") + #[automatically_derived] + impl alloy_sol_types::SolCall for permitCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<8>, + alloy::sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permitReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"; + const SELECTOR: [u8; 4] = [213u8, 5u8, 172u8, 207u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.owner, + ), + ::tokenize( + &self.spender, + ), + as alloy_sol_types::SolType>::tokenize(&self.value), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + as alloy_sol_types::SolType>::tokenize(&self.v), + as alloy_sol_types::SolType>::tokenize(&self.r), + as alloy_sol_types::SolType>::tokenize(&self.s), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } - ///Calls the contract's `transfer` (0xa9059cbb) function - pub fn transfer( - &self, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([169, 5, 156, 187], (to, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `transferFrom` (0x23b872dd) function - pub fn transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, amount)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `withdraw` (0x2e1a7d4d) function - pub fn withdraw( - &self, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([46, 26, 125, 77], amount) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Approval` event - pub fn approval_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - ApprovalFilter, - > { - self.0.event() - } - ///Gets the contract's `Deposit` event - pub fn deposit_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DepositFilter> { - self.0.event() + }; + /**Function with signature `symbol()` and selector `0x95d89b41`. +```solidity +function symbol() external view returns (string memory); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolCall {} + ///Container type for the return parameters of the [`symbol()`](symbolCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct symbolReturn { + pub _0: alloy::sol_types::private::String, + } + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - TransferFilter, - > { - self.0.event() - } - ///Gets the contract's `Withdrawal` event - pub fn withdrawal_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - WithdrawalFilter, - > { - self.0.event() - } - /// Returns an `Event` builder for all the events of this contract. - pub fn events( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, WETHEvents> { - self.0.event_with_filter(::core::default::Default::default()) + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: symbolReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for symbolReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } } - } - impl From<::ethers::contract::Contract> - for WETH { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) + #[automatically_derived] + impl alloy_sol_types::SolCall for symbolCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = symbolReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "symbol()"; + const SELECTOR: [u8; 4] = [149u8, 216u8, 155u8, 65u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + /**Function with signature `totalSupply()` and selector `0x18160ddd`. +```solidity +function totalSupply() external view returns (uint256); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyCall {} + ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct totalSupplyReturn { + pub _0: alloy::sol_types::private::U256, } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Deposit", abi = "Deposit(address,uint256)")] - pub struct DepositFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethevent(name = "Withdrawal", abi = "Withdrawal(address,uint256)")] - pub struct WithdrawalFilter { - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all of the contract's events - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum WETHEvents { - ApprovalFilter(ApprovalFilter), - DepositFilter(DepositFilter), - TransferFilter(TransferFilter), - WithdrawalFilter(WithdrawalFilter), - } - impl ::ethers::contract::EthLogDecode for WETHEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(WETHEvents::ApprovalFilter(decoded)); + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } } - if let Ok(decoded) = DepositFilter::decode_log(log) { - return Ok(WETHEvents::DepositFilter(decoded)); + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(WETHEvents::TransferFilter(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: totalSupplyReturn) -> Self { + (value._0,) + } } - if let Ok(decoded) = WithdrawalFilter::decode_log(log) { - return Ok(WETHEvents::WithdrawalFilter(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for totalSupplyReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } } - Err(::ethers::core::abi::Error::InvalidData) } - } - impl ::core::fmt::Display for WETHEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::DepositFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::WithdrawalFilter(element) => ::core::fmt::Display::fmt(element, f), + #[automatically_derived] + impl alloy_sol_types::SolCall for totalSupplyCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = totalSupplyReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "totalSupply()"; + const SELECTOR: [u8; 4] = [24u8, 22u8, 13u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) } } + }; + /**Function with signature `transfer(address,uint256)` and selector `0xa9059cbb`. +```solidity +function transfer(address to, uint256 amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferCall { + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, } - impl ::core::convert::From for WETHEvents { - fn from(value: ApprovalFilter) -> Self { - Self::ApprovalFilter(value) - } + ///Container type for the return parameters of the [`transfer(address,uint256)`](transferCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferReturn { + pub _0: bool, } - impl ::core::convert::From for WETHEvents { - fn from(value: DepositFilter) -> Self { - Self::DepositFilter(value) + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferCall) -> Self { + (value.to, value.amount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + to: tuple.0, + amount: tuple.1, + } + } + } } - } - impl ::core::convert::From for WETHEvents { - fn from(value: TransferFilter) -> Self { - Self::TransferFilter(value) + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } } - } - impl ::core::convert::From for WETHEvents { - fn from(value: WithdrawalFilter) -> Self { - Self::WithdrawalFilter(value) + #[automatically_derived] + impl alloy_sol_types::SolCall for transferCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transfer(address,uint256)"; + const SELECTOR: [u8; 4] = [169u8, 5u8, 156u8, 187u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } } + }; + /**Function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`. +```solidity +function transferFrom(address from, address to, uint256 amount) external returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromCall { + pub from: alloy::sol_types::private::Address, + pub to: alloy::sol_types::private::Address, + pub amount: alloy::sol_types::private::U256, } - ///Container type for all input parameters for the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")] - pub struct DomainSeparatorCall; - ///Container type for all input parameters for the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "allowance", abi = "allowance(address,address)")] - pub struct AllowanceCall( - pub ::ethers::core::types::Address, - pub ::ethers::core::types::Address, - ); - ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub spender: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall(pub ::ethers::core::types::Address); - ///Container type for all input parameters for the `decimals` function with signature `decimals()` and selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "decimals", abi = "decimals()")] - pub struct DecimalsCall; - ///Container type for all input parameters for the `deposit` function with signature `deposit()` and selector `0xd0e30db0` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "deposit", abi = "deposit()")] - pub struct DepositCall; - ///Container type for all input parameters for the `name` function with signature `name()` and selector `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "name", abi = "name()")] - pub struct NameCall; - ///Container type for all input parameters for the `nonces` function with signature `nonces(address)` and selector `0x7ecebe00` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "nonces", abi = "nonces(address)")] - pub struct NoncesCall(pub ::ethers::core::types::Address); - ///Container type for all input parameters for the `permit` function with signature `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)` and selector `0xd505accf` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "permit", - abi = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)" - )] - pub struct PermitCall { - pub owner: ::ethers::core::types::Address, - pub spender: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - pub deadline: ::ethers::core::types::U256, - pub v: u8, - pub r: [u8; 32], - pub s: [u8; 32], - } - ///Container type for all input parameters for the `symbol` function with signature `symbol()` and selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "symbol", abi = "symbol()")] - pub struct SymbolCall; - ///Container type for all input parameters for the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "totalSupply", abi = "totalSupply()")] - pub struct TotalSupplyCall; - ///Container type for all input parameters for the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transfer", abi = "transfer(address,uint256)")] - pub struct TransferCall { - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] - pub struct TransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, + ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct transferFromReturn { + pub _0: bool, } - ///Container type for all input parameters for the `withdraw` function with signature `withdraw(uint256)` and selector `0x2e1a7d4d` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "withdraw", abi = "withdraw(uint256)")] - pub struct WithdrawCall { - pub amount: ::ethers::core::types::U256, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash - )] - pub enum WETHCalls { - DomainSeparator(DomainSeparatorCall), - Allowance(AllowanceCall), - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - Decimals(DecimalsCall), - Deposit(DepositCall), - Name(NameCall), - Nonces(NoncesCall), - Permit(PermitCall), - Symbol(SymbolCall), - TotalSupply(TotalSupplyCall), - Transfer(TransferCall), - TransferFrom(TransferFromCall), - Withdraw(WithdrawCall), - } - impl ::ethers::core::abi::AbiDecode for WETHCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode( - data, + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::DomainSeparator(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Allowance(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromCall) -> Self { + (value.from, value.to, value.amount) + } } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Approve(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + from: tuple.0, + to: tuple.1, + amount: tuple.2, + } + } } - if let Ok(decoded) = ::decode( - data, + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::BalanceOf(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Decimals(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: transferFromReturn) -> Self { + (value._0,) + } } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Deposit(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for transferFromReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Name(decoded)); + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferFromCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferFromReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferFrom(address,address,uint256)"; + const SELECTOR: [u8; 4] = [35u8, 184u8, 114u8, 221u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Nonces(decoded)); + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.from, + ), + ::tokenize( + &self.to, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Permit(decoded)); + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) } - if let Ok(decoded) = ::decode( - data, + } + }; + /**Function with signature `withdraw(uint256)` and selector `0x2e1a7d4d`. +```solidity +function withdraw(uint256 amount) external; +```*/ + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawCall { + pub amount: alloy::sol_types::private::U256, + } + ///Container type for the return parameters of the [`withdraw(uint256)`](withdrawCall) function. + #[allow(non_camel_case_types, non_snake_case)] + #[derive(Clone)] + pub struct withdrawReturn {} + #[allow(non_camel_case_types, non_snake_case, clippy::style)] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::Symbol(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::TotalSupply(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawCall) -> Self { + (value.amount,) + } } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Transfer(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { amount: tuple.0 } + } } - if let Ok(decoded) = ::decode( - data, + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, ) { - return Ok(Self::TransferFrom(decoded)); + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } } - if let Ok(decoded) = ::decode( - data, - ) { - return Ok(Self::Withdraw(decoded)); + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdraw(uint256)"; + const SELECTOR: [u8; 4] = [46u8, 26u8, 125u8, 77u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.amount), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) } - Err(::ethers::core::abi::Error::InvalidData.into()) } + }; + ///Container for all the [`WETH`](self) function calls. + pub enum WETHCalls { + DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + allowance(allowanceCall), + approve(approveCall), + balanceOf(balanceOfCall), + decimals(decimalsCall), + deposit(depositCall), + name(nameCall), + nonces(noncesCall), + permit(permitCall), + symbol(symbolCall), + totalSupply(totalSupplyCall), + transfer(transferCall), + transferFrom(transferFromCall), + withdraw(withdrawCall), + } + #[automatically_derived] + impl WETHCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [6u8, 253u8, 222u8, 3u8], + [9u8, 94u8, 167u8, 179u8], + [24u8, 22u8, 13u8, 221u8], + [35u8, 184u8, 114u8, 221u8], + [46u8, 26u8, 125u8, 77u8], + [49u8, 60u8, 229u8, 103u8], + [54u8, 68u8, 229u8, 21u8], + [112u8, 160u8, 130u8, 49u8], + [126u8, 206u8, 190u8, 0u8], + [149u8, 216u8, 155u8, 65u8], + [169u8, 5u8, 156u8, 187u8], + [208u8, 227u8, 13u8, 176u8], + [213u8, 5u8, 172u8, 207u8], + [221u8, 98u8, 237u8, 62u8], + ]; } - impl ::ethers::core::abi::AbiEncode for WETHCalls { - fn encode(self) -> Vec { + #[automatically_derived] + impl alloy_sol_types::SolInterface for WETHCalls { + const NAME: &'static str = "WETHCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 14usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::DOMAIN_SEPARATOR(_) => { + ::SELECTOR + } + Self::allowance(_) => { + ::SELECTOR + } + Self::approve(_) => ::SELECTOR, + Self::balanceOf(_) => { + ::SELECTOR + } + Self::decimals(_) => ::SELECTOR, + Self::deposit(_) => ::SELECTOR, + Self::name(_) => ::SELECTOR, + Self::nonces(_) => ::SELECTOR, + Self::permit(_) => ::SELECTOR, + Self::symbol(_) => ::SELECTOR, + Self::totalSupply(_) => { + ::SELECTOR + } + Self::transfer(_) => ::SELECTOR, + Self::transferFrom(_) => { + ::SELECTOR + } + Self::withdraw(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(unsafe_code, non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn name( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::name) + } + name + }, + { + fn approve( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::approve) + } + approve + }, + { + fn totalSupply( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::totalSupply) + } + totalSupply + }, + { + fn transferFrom( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::transferFrom) + } + transferFrom + }, + { + fn withdraw( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::withdraw) + } + withdraw + }, + { + fn decimals( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::decimals) + } + decimals + }, + { + fn DOMAIN_SEPARATOR( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::DOMAIN_SEPARATOR) + } + DOMAIN_SEPARATOR + }, + { + fn balanceOf( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::balanceOf) + } + balanceOf + }, + { + fn nonces( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::nonces) + } + nonces + }, + { + fn symbol( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::symbol) + } + symbol + }, + { + fn transfer( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::transfer) + } + transfer + }, + { + fn deposit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::deposit) + } + deposit + }, + { + fn permit( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::permit) + } + permit + }, + { + fn allowance( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(WETHCalls::allowance) + } + allowance + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { match self { - Self::DomainSeparator(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::allowance(inner) => { + ::abi_encoded_size(inner) + } + Self::approve(inner) => { + ::abi_encoded_size(inner) + } + Self::balanceOf(inner) => { + ::abi_encoded_size(inner) } - Self::Allowance(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::decimals(inner) => { + ::abi_encoded_size(inner) } - Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::BalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::deposit(inner) => { + ::abi_encoded_size(inner) } - Self::Decimals(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::name(inner) => { + ::abi_encoded_size(inner) } - Self::Deposit(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Nonces(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Permit(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TotalSupply(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::nonces(inner) => { + ::abi_encoded_size(inner) } - Self::Transfer(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::permit(inner) => { + ::abi_encoded_size(inner) } - Self::TransferFrom(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::symbol(inner) => { + ::abi_encoded_size(inner) } - Self::Withdraw(element) => { - ::ethers::core::abi::AbiEncode::encode(element) + Self::totalSupply(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transfer(inner) => { + ::abi_encoded_size(inner) + } + Self::transferFrom(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::withdraw(inner) => { + ::abi_encoded_size(inner) } } } - } - impl ::core::fmt::Display for WETHCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { match self { - Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), - Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), - Self::Decimals(element) => ::core::fmt::Display::fmt(element, f), - Self::Deposit(element) => ::core::fmt::Display::fmt(element, f), - Self::Name(element) => ::core::fmt::Display::fmt(element, f), - Self::Nonces(element) => ::core::fmt::Display::fmt(element, f), - Self::Permit(element) => ::core::fmt::Display::fmt(element, f), - Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), - Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), - Self::Transfer(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), - Self::Withdraw(element) => ::core::fmt::Display::fmt(element, f), + Self::DOMAIN_SEPARATOR(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::allowance(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::approve(inner) => { + ::abi_encode_raw(inner, out) + } + Self::balanceOf(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::decimals(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::deposit(inner) => { + ::abi_encode_raw(inner, out) + } + Self::name(inner) => { + ::abi_encode_raw(inner, out) + } + Self::nonces(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit(inner) => { + ::abi_encode_raw(inner, out) + } + Self::symbol(inner) => { + ::abi_encode_raw(inner, out) + } + Self::totalSupply(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transfer(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferFrom(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdraw(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } } } } - impl ::core::convert::From for WETHCalls { - fn from(value: DomainSeparatorCall) -> Self { - Self::DomainSeparator(value) - } + ///Container for all the [`WETH`](self) events. + pub enum WETHEvents { + Approval(Approval), + Deposit(Deposit), + Transfer(Transfer), + Withdrawal(Withdrawal), } - impl ::core::convert::From for WETHCalls { - fn from(value: AllowanceCall) -> Self { - Self::Allowance(value) - } + #[automatically_derived] + impl WETHEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 127u8, + 207u8, + 83u8, + 44u8, + 21u8, + 240u8, + 166u8, + 219u8, + 11u8, + 214u8, + 208u8, + 224u8, + 56u8, + 190u8, + 167u8, + 29u8, + 48u8, + 216u8, + 8u8, + 199u8, + 217u8, + 140u8, + 179u8, + 191u8, + 114u8, + 104u8, + 169u8, + 91u8, + 245u8, + 8u8, + 27u8, + 101u8, + ], + [ + 140u8, + 91u8, + 225u8, + 229u8, + 235u8, + 236u8, + 125u8, + 91u8, + 209u8, + 79u8, + 113u8, + 66u8, + 125u8, + 30u8, + 132u8, + 243u8, + 221u8, + 3u8, + 20u8, + 192u8, + 247u8, + 178u8, + 41u8, + 30u8, + 91u8, + 32u8, + 10u8, + 200u8, + 199u8, + 195u8, + 185u8, + 37u8, + ], + [ + 221u8, + 242u8, + 82u8, + 173u8, + 27u8, + 226u8, + 200u8, + 155u8, + 105u8, + 194u8, + 176u8, + 104u8, + 252u8, + 55u8, + 141u8, + 170u8, + 149u8, + 43u8, + 167u8, + 241u8, + 99u8, + 196u8, + 161u8, + 22u8, + 40u8, + 245u8, + 90u8, + 77u8, + 245u8, + 35u8, + 179u8, + 239u8, + ], + [ + 225u8, + 255u8, + 252u8, + 196u8, + 146u8, + 61u8, + 4u8, + 181u8, + 89u8, + 244u8, + 210u8, + 154u8, + 139u8, + 252u8, + 108u8, + 218u8, + 4u8, + 235u8, + 91u8, + 13u8, + 60u8, + 70u8, + 7u8, + 81u8, + 194u8, + 64u8, + 44u8, + 92u8, + 92u8, + 201u8, + 16u8, + 156u8, + ], + ]; } - impl ::core::convert::From for WETHCalls { - fn from(value: ApproveCall) -> Self { - Self::Approve(value) + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for WETHEvents { + const NAME: &'static str = "WETHEvents"; + const COUNT: usize = 4usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Approval) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Deposit) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Transfer) + } + Some(::SIGNATURE_HASH) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::Withdrawal) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } } } - impl ::core::convert::From for WETHCalls { - fn from(value: BalanceOfCall) -> Self { - Self::BalanceOf(value) + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for WETHEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Deposit(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + Self::Withdrawal(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } } - } - impl ::core::convert::From for WETHCalls { - fn from(value: DecimalsCall) -> Self { - Self::Decimals(value) + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::Approval(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Deposit(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Transfer(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + Self::Withdrawal(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } } } - impl ::core::convert::From for WETHCalls { - fn from(value: DepositCall) -> Self { - Self::Deposit(value) - } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`WETH`](self) contract instance. + +See the [wrapper's documentation](`WETHInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(address: alloy_sol_types::private::Address, provider: P) -> WETHInstance { + WETHInstance::::new(address, provider) } - impl ::core::convert::From for WETHCalls { - fn from(value: NameCall) -> Self { - Self::Name(value) - } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + WETHInstance::::deploy(provider) } - impl ::core::convert::From for WETHCalls { - fn from(value: NoncesCall) -> Self { - Self::Nonces(value) - } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + WETHInstance::::deploy_builder(provider) } - impl ::core::convert::From for WETHCalls { - fn from(value: PermitCall) -> Self { - Self::Permit(value) - } + /**A [`WETH`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`WETH`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct WETHInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, } - impl ::core::convert::From for WETHCalls { - fn from(value: SymbolCall) -> Self { - Self::Symbol(value) + #[automatically_derived] + impl ::core::fmt::Debug for WETHInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("WETHInstance").field(&self.address).finish() } } - impl ::core::convert::From for WETHCalls { - fn from(value: TotalSupplyCall) -> Self { - Self::TotalSupply(value) + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > WETHInstance { + /**Creates a new wrapper around an on-chain [`WETH`](self) contract instance. + +See the [wrapper's documentation](`WETHInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider } } - impl ::core::convert::From for WETHCalls { - fn from(value: TransferCall) -> Self { - Self::Transfer(value) + impl WETHInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> WETHInstance { + WETHInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } } } - impl ::core::convert::From for WETHCalls { - fn from(value: TransferFromCall) -> Self { - Self::TransferFrom(value) + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > WETHInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`DOMAIN_SEPARATOR`] function. + pub fn DOMAIN_SEPARATOR( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&DOMAIN_SEPARATORCall {}) + } + ///Creates a new call builder for the [`allowance`] function. + pub fn allowance( + &self, + _0: alloy::sol_types::private::Address, + _1: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&allowanceCall { _0, _1 }) + } + ///Creates a new call builder for the [`approve`] function. + pub fn approve( + &self, + spender: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&approveCall { spender, amount }) + } + ///Creates a new call builder for the [`balanceOf`] function. + pub fn balanceOf( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&balanceOfCall { _0 }) + } + ///Creates a new call builder for the [`decimals`] function. + pub fn decimals( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&decimalsCall {}) + } + ///Creates a new call builder for the [`deposit`] function. + pub fn deposit(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&depositCall {}) + } + ///Creates a new call builder for the [`name`] function. + pub fn name(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&nameCall {}) + } + ///Creates a new call builder for the [`nonces`] function. + pub fn nonces( + &self, + _0: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&noncesCall { _0 }) + } + ///Creates a new call builder for the [`permit`] function. + pub fn permit( + &self, + owner: alloy::sol_types::private::Address, + spender: alloy::sol_types::private::Address, + value: alloy::sol_types::private::U256, + deadline: alloy::sol_types::private::U256, + v: u8, + r: alloy::sol_types::private::FixedBytes<32>, + s: alloy::sol_types::private::FixedBytes<32>, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &permitCall { + owner, + spender, + value, + deadline, + v, + r, + s, + }, + ) + } + ///Creates a new call builder for the [`symbol`] function. + pub fn symbol(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&symbolCall {}) + } + ///Creates a new call builder for the [`totalSupply`] function. + pub fn totalSupply( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&totalSupplyCall {}) + } + ///Creates a new call builder for the [`transfer`] function. + pub fn transfer( + &self, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferCall { to, amount }) + } + ///Creates a new call builder for the [`transferFrom`] function. + pub fn transferFrom( + &self, + from: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &transferFromCall { + from, + to, + amount, + }, + ) + } + ///Creates a new call builder for the [`withdraw`] function. + pub fn withdraw( + &self, + amount: alloy::sol_types::private::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawCall { amount }) } } - impl ::core::convert::From for WETHCalls { - fn from(value: WithdrawCall) -> Self { - Self::Withdraw(value) + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > WETHInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`Approval`] event. + pub fn Approval_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Deposit`] event. + pub fn Deposit_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Transfer`] event. + pub fn Transfer_filter(&self) -> alloy_contract::Event { + self.event_filter::() + } + ///Creates a new event filter for the [`Withdrawal`] event. + pub fn Withdrawal_filter(&self) -> alloy_contract::Event { + self.event_filter::() } } - ///Container type for all return fields from the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct DomainSeparatorReturn(pub [u8; 32]); - ///Container type for all return fields from the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct AllowanceReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct ApproveReturn(pub bool); - ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct BalanceOfReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `decimals` function with signature `decimals()` and selector `0x313ce567` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct DecimalsReturn(pub u8); - ///Container type for all return fields from the `name` function with signature `name()` and selector `0x06fdde03` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct NameReturn(pub ::std::string::String); - ///Container type for all return fields from the `nonces` function with signature `nonces(address)` and selector `0x7ecebe00` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct NoncesReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `symbol` function with signature `symbol()` and selector `0x95d89b41` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct SymbolReturn(pub ::std::string::String); - ///Container type for all return fields from the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TransferReturn(pub bool); - ///Container type for all return fields from the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct TransferFromReturn(pub bool); } From 9b52d999e940b4e5572a35631fa47f7c84206d6e Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Fri, 14 Feb 2025 09:22:19 -0500 Subject: [PATCH 02/15] so far --- Cargo.lock | 3689 +++++++------------- Cargo.toml | 8 +- crates/bindings-uniswapx/Cargo.toml | 2 +- crates/uniswapx-rs/Cargo.toml | 7 +- src/aws_utils/cloudwatch_utils.rs | 7 +- src/collectors/block_collector.rs | 73 +- src/collectors/uniswapx_order_collector.rs | 2 +- src/executors/protect_executor.rs | 144 +- src/executors/public_1559_executor.rs | 222 +- src/executors/queued_executor.rs | 37 +- src/strategies/dutchv3_strategy.rs | 79 +- src/strategies/priority_strategy.rs | 79 +- src/strategies/shared.rs | 129 +- src/strategies/uniswapx_strategy.rs | 57 +- 14 files changed, 1751 insertions(+), 2784 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 503fca9..66dc3d8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,16 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - [[package]] name = "addr2line" version = "0.24.2" @@ -28,30 +18,127 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] -name = "aes" -version = "0.8.4" +name = "aho-corasick" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", + "memchr", ] [[package]] -name = "aho-corasick" -version = "1.1.3" +name = "allocator-api2" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "alloy" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d2cc5aeb8dfa1e451a49fac87bc4b86c5de40ebea153ed88e83eb92b8151e74" +dependencies = [ + "alloy-consensus", + "alloy-contract", + "alloy-core", + "alloy-eips", + "alloy-genesis", + "alloy-network", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types", + "alloy-serde", + "alloy-signer", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", +] + +[[package]] +name = "alloy-chains" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a754dbb534198644cb8355b8c23f4aaecf03670fb9409242be1fa1e25897ee9" dependencies = [ - "memchr", + "alloy-primitives", + "num_enum", + "strum", +] + +[[package]] +name = "alloy-consensus" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e32ef5c74bbeb1733c37f4ac7f866f8c8af208b7b4265e21af609dcac5bd5e" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-trie", + "auto_impl", + "c-kzg", + "derive_more", + "k256", + "serde", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa13b7b1e1e3fedc42f0728103bfa3b4d566d3d42b606db449504d88dbdbdcf" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-contract" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6180fb232becdea70fad57c63b6967f01f74ab9595671b870f504116dd29de" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-types-eth", + "alloy-sol-types", + "alloy-transport", + "futures", + "futures-util", + "thiserror 2.0.11", +] + +[[package]] +name = "alloy-core" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "482f377cebceed4bb1fb5e7970f0805e2ab123d06701be9351b67ed6341e74aa" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", ] [[package]] name = "alloy-dyn-abi" -version = "0.8.18" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44e3b98c37b3218924cd1d2a8570666b89662be54e5b182643855f783ea68b33" +checksum = "555896f0b8578adb522b1453b6e6cc6704c3027bd0af20058befdde992cee8e9" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -61,14 +148,83 @@ dependencies = [ "itoa", "serde", "serde_json", - "winnow 0.6.22", + "winnow", +] + +[[package]] +name = "alloy-eip2124" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "675264c957689f0fd75f5993a73123c2cc3b5c235a38f5b9037fe6c826bfb2c0" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "thiserror 2.0.11", +] + +[[package]] +name = "alloy-eip2930" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0069cf0642457f87a01a014f6dc29d5d893cd4fd8fddf0c3cdfad1bb3ebafc41" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cabf647eb4650c91a9d38cb6f972bb320009e7e9d61765fb688a86f1563b33e8" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more", + "k256", + "serde", +] + +[[package]] +name = "alloy-eips" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5591581ca2ab0b3e7226a4047f9a1bfcf431da1d0cce3752fda609fea3c27e37" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "auto_impl", + "c-kzg", + "derive_more", + "once_cell", + "serde", + "sha2", +] + +[[package]] +name = "alloy-genesis" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cded3a2d4bd7173f696458c5d4c98c18a628dfcc9f194385e80a486e412e2e0" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "alloy-trie", + "serde", ] [[package]] name = "alloy-json-abi" -version = "0.8.18" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "731ea743b3d843bc657e120fb1d1e9cc94f5dab8107e35a82125a63e6420a102" +checksum = "4012581681b186ba0882007ed873987cc37f86b1b488fe6b91d5efd0b585dc41" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -76,11 +232,63 @@ dependencies = [ "serde_json", ] +[[package]] +name = "alloy-json-rpc" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "762414662d793d7aaa36ee3af6928b6be23227df1681ce9c039f6f11daadef64" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "serde", + "serde_json", + "thiserror 2.0.11", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be03f2ebc00cf88bd06d3c6caf387dceaa9c7e6b268216779fa68a9bf8ab4e6" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-json-rpc", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-any", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.11", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a00ce618ae2f78369918be0c20f620336381502c83b6ed62c2f7b2db27698b0" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "serde", +] + [[package]] name = "alloy-primitives" -version = "0.8.18" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "788bb18e8f61d5d9340b52143f27771daf7e1dccbaf2741621d2493f9debf52e" +checksum = "478bedf4d24e71ea48428d1bc278553bd7c6ae07c30ca063beb0b09fe58a9e74" dependencies = [ "alloy-rlp", "bytes", @@ -95,132 +303,462 @@ dependencies = [ "keccak-asm", "paste", "proptest", - "rand 0.8.5", + "rand", "ruint", - "rustc-hash 2.1.0", + "rustc-hash", "serde", "sha3", "tiny-keccak", ] [[package]] -name = "alloy-rlp" -version = "0.3.10" +name = "alloy-provider" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" +checksum = "cbe0a2acff0c4bd1669c71251ce10fc455cbffa1b4d0a817d5ea4ba7e5bb3db7" dependencies = [ - "arrayvec", - "bytes", + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types-anvil", + "alloy-rpc-types-debug", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-sol-types", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "futures", + "futures-utils-wasm", + "lru", + "parking_lot", + "pin-project", + "reqwest 0.12.12", + "serde", + "serde_json", + "thiserror 2.0.11", + "tokio", + "tracing", + "url", + "wasmtimer", ] [[package]] -name = "alloy-sol-macro" -version = "0.8.18" +name = "alloy-pubsub" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a07b74d48661ab2e4b50bb5950d74dbff5e61dd8ed03bb822281b706d54ebacb" +checksum = "de3a68996f193f542f9e29c88dfa8ed1369d6ee04fa764c1bf23dc11b2f9e4a2" dependencies = [ - "alloy-sol-macro-expander", - "alloy-sol-macro-input", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.95", + "alloy-json-rpc", + "alloy-primitives", + "alloy-transport", + "bimap", + "futures", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", ] [[package]] -name = "alloy-sol-macro-expander" -version = "0.8.18" +name = "alloy-rlp" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19cc9c7f20b90f9be1a8f71a3d8e283a43745137b0837b1a1cb13159d37cad72" +checksum = "3d6c1d995bff8d011f7cd6c81820d51825e6e06d6db73914c1630ecf544d83d6" dependencies = [ - "alloy-sol-macro-input", - "const-hex", - "heck 0.5.0", - "indexmap", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.95", - "syn-solidity", - "tiny-keccak", + "alloy-rlp-derive", + "arrayvec", + "bytes", ] [[package]] -name = "alloy-sol-macro-input" -version = "0.8.18" +name = "alloy-rlp-derive" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713b7e6dfe1cb2f55c80fb05fd22ed085a1b4e48217611365ed0ae598a74c6ac" +checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943" dependencies = [ - "const-hex", - "dunce", - "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.95", - "syn-solidity", + "syn 2.0.98", ] [[package]] -name = "alloy-sol-type-parser" -version = "0.8.18" +name = "alloy-rpc-client" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eda2711ab2e1fb517fc6e2ffa9728c9a232e296d16810810e6957b781a1b8bc" +checksum = "b37cc3c7883dc41be1b01460127ad7930466d0a4bb6ba15a02ee34d2745e2d7c" dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "alloy-pubsub", + "alloy-transport", + "alloy-transport-http", + "alloy-transport-ipc", + "alloy-transport-ws", + "futures", + "pin-project", + "reqwest 0.12.12", "serde", - "winnow 0.6.22", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", + "url", + "wasmtimer", ] [[package]] -name = "alloy-sol-types" -version = "0.8.18" +name = "alloy-rpc-types" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b478bc9c0c4737a04cd976accde4df7eba0bdc0d90ad6ff43d58bc93cf79c1" +checksum = "6f18e68a3882f372e045ddc89eb455469347767d17878ca492cfbac81e71a111" dependencies = [ - "alloy-json-abi", "alloy-primitives", - "alloy-sol-macro", - "const-hex", + "alloy-rpc-types-anvil", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth", + "alloy-rpc-types-trace", + "alloy-rpc-types-txpool", + "alloy-serde", "serde", ] [[package]] -name = "android-tzdata" -version = "0.1.1" +name = "alloy-rpc-types-anvil" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" +checksum = "10d06300df4a87d960add35909240fc72da355dd2ac926fa6999f9efafbdc5a7" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", +] [[package]] -name = "android_system_properties" -version = "0.1.5" +name = "alloy-rpc-types-any" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "318ae46dd12456df42527c3b94c1ae9001e1ceb707f7afe2c7807ac4e49ebad9" dependencies = [ - "libc", + "alloy-consensus-any", + "alloy-rpc-types-eth", + "alloy-serde", ] [[package]] -name = "anstream" -version = "0.6.18" +name = "alloy-rpc-types-debug" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "2834b7012054cb2f90ee9893b7cc97702edca340ec1ef386c30c42e55e6cd691" dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", + "alloy-primitives", + "serde", ] [[package]] -name = "anstyle" -version = "1.0.10" +name = "alloy-rpc-types-engine" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "e83dde9fcf1ccb9b815cc0c89bba26bbbbaae5150a53ae624ed0fc63cb3676c1" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "derive_more", + "serde", + "strum", +] [[package]] -name = "anstyle-parse" +name = "alloy-rpc-types-eth" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4dbee4d82f8a22dde18c28257bed759afeae7ba73da4a1479a039fd1445d04" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "itertools 0.14.0", + "serde", + "serde_json", + "thiserror 2.0.11", +] + +[[package]] +name = "alloy-rpc-types-trace" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd951155515fa452a2ca4b5434d4b3ab742bcd3d1d1b9a91704bcef5b8d2604" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", + "serde_json", + "thiserror 2.0.11", +] + +[[package]] +name = "alloy-rpc-types-txpool" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21d8dd5bd94993eda3d56a8c4c0d693548183a35462523ffc4385c0b020d3b0c" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-serde" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8732058f5ca28c1d53d241e8504620b997ef670315d7c8afab856b3e3b80d945" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f96b3526fdd779a4bd0f37319cfb4172db52a7ac24cdbb8804b72091c18e1701" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "either", + "elliptic-curve", + "k256", + "thiserror 2.0.11", +] + +[[package]] +name = "alloy-signer-local" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe8f78cd6b7501c7e813a1eb4a087b72d23af51f5bb66d4e948dc840bdd207d8" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "k256", + "rand", + "thiserror 2.0.11", +] + +[[package]] +name = "alloy-sol-macro" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2708e27f58d747423ae21d31b7a6625159bd8d867470ddd0256f396a68efa11" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6b7984d7e085dec382d2c5ef022b533fcdb1fe6129200af30ebf5afddb6a361" +dependencies = [ + "alloy-json-abi", + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.98", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d6a9fc4ed1a3c70bdb2357bec3924551c1a59f24e5a04a74472c755b37f87d" +dependencies = [ + "alloy-json-abi", + "const-hex", + "dunce", + "heck", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.98", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1b3e9a48a6dd7bb052a111c8d93b5afc7956ed5e2cb4177793dc63bb1d2a36" +dependencies = [ + "serde", + "winnow", +] + +[[package]] +name = "alloy-sol-types" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6044800da35c38118fd4b98e18306bd3b91af5dedeb54c1b768cf1b4fb68f549" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "const-hex", + "serde", +] + +[[package]] +name = "alloy-transport" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a8d762eadce3e9b65eac09879430c6f4fce3736cac3cac123f9b1bf435ddd13" +dependencies = [ + "alloy-json-rpc", + "base64 0.22.1", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.11", + "tokio", + "tower", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport-http" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20819c4cb978fb39ce6ac31991ba90f386d595f922f42ef888b4a18be190713e" +dependencies = [ + "alloy-json-rpc", + "alloy-transport", + "reqwest 0.12.12", + "serde_json", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-ipc" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e88304aa8b796204e5e2500dfe235933ed692745e3effd94c3733643db6d218" +dependencies = [ + "alloy-json-rpc", + "alloy-pubsub", + "alloy-transport", + "bytes", + "futures", + "interprocess", + "pin-project", + "serde", + "serde_json", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "alloy-transport-ws" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9653ea9aa06d0e02fcbe2f04f1c47f35a85c378ccefa98e54ae85210bc8bbfa" +dependencies = [ + "alloy-pubsub", + "alloy-transport", + "futures", + "http 1.2.0", + "rustls 0.23.23", + "serde_json", + "tokio", + "tokio-tungstenite 0.26.1", + "tracing", + "ws_stream_wasm", +] + +[[package]] +name = "alloy-trie" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95a94854e420f07e962f7807485856cde359ab99ab6413883e15235ad996e8b" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more", + "nybbles", + "serde", + "smallvec", + "tracing", +] + +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" @@ -239,11 +777,12 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys 0.59.0", ] @@ -364,7 +903,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ "num-traits", - "rand 0.8.5", + "rand", ] [[package]] @@ -374,7 +913,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand 0.8.5", + "rand", ] [[package]] @@ -382,36 +921,25 @@ name = "arrayvec" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] [[package]] name = "artemis-core" -version = "0.1.0" -source = "git+https://github.com/paradigmxyz/artemis?rev=70f3bce3488cf29f34197b9b2c0c02d329b95793#70f3bce3488cf29f34197b9b2c0c02d329b95793" +version = "0.2.0" +source = "git+https://github.com/ConjunctiveNormalForm/minimal-artemis-alloy#8a10fd76f1605e1b0666f5b2a6a137999ec97d94" dependencies = [ + "alloy", "anyhow", "async-trait", - "ethers", - "ethers-flashbots", "futures", - "matchmaker", - "mev-share", - "opensea-stream", - "reqwest", - "thiserror 1.0.69", + "serde_json", "tokio", "tokio-stream", "tracing", ] -[[package]] -name = "ascii-canvas" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" -dependencies = [ - "term", -] - [[package]] name = "assert-json-diff" version = "2.0.2" @@ -422,40 +950,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", -] - -[[package]] -name = "async-lock" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-sse" -version = "5.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e6fa871e4334a622afd6bb2f611635e8083a6f5e2936c0f90f37c7ef9856298" -dependencies = [ - "async-channel", - "futures-lite", - "http-types", - "log", - "memchr", - "pin-project-lite", -] - [[package]] name = "async-stream" version = "0.3.6" @@ -475,18 +969,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] name = "async-trait" -version = "0.1.85" +version = "0.1.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" +checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -508,13 +1002,13 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -525,9 +1019,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-config" -version = "1.5.13" +version = "1.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a50b30228d3af8865ce83376b4e99e1ffa34728220fe2860e4df0bb5278d6" +checksum = "50236e4d60fe8458de90a71c0922c761e41755adf091b1b03de1cef537179915" dependencies = [ "aws-credential-types", "aws-runtime", @@ -542,10 +1036,10 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", - "fastrand 2.3.0", + "fastrand", "hex", "http 0.2.12", - "ring 0.17.8", + "ring", "time", "tokio", "tracing", @@ -567,9 +1061,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.3" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16d1aa50accc11a4b4d5c50f7fb81cc0cf60328259c587d0e6b0f11385bde46" +checksum = "76dd04d39cc12844c0994f2c9c5a6f5184c22e9188ec1ff723de41910a21dcad" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -580,21 +1074,21 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", - "fastrand 2.3.0", + "fastrand", "http 0.2.12", "http-body 0.4.6", "once_cell", "percent-encoding", "pin-project-lite", "tracing", - "uuid 1.11.0", + "uuid", ] [[package]] name = "aws-sdk-cloudwatch" -version = "1.59.0" +version = "1.65.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3de9d4831434c6efcfed2e4213f60100bf252718d10f212cfd727ba3391f005" +checksum = "7cef4f70b04df120e5dfd58be46db59ea5af2f1b1d957749ad41a5ef431b9330" dependencies = [ "aws-credential-types", "aws-runtime", @@ -618,9 +1112,9 @@ dependencies = [ [[package]] name = "aws-sdk-secretsmanager" -version = "1.57.0" +version = "1.62.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac29664d633525cbf4c4de4d0351b0dc0cec7d0d903255ee05d3b0f512a3e97f" +checksum = "ae7e455414ffb482469c0bc8f870ec2d7654ffbe20d133ffad854866d2b2f280" dependencies = [ "aws-credential-types", "aws-runtime", @@ -632,7 +1126,7 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", - "fastrand 2.3.0", + "fastrand", "http 0.2.12", "once_cell", "regex-lite", @@ -641,9 +1135,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.53.0" +version = "1.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1605dc0bf9f0a4b05b451441a17fcb0bda229db384f23bf5cead3adbab0664ac" +checksum = "00a35fc7e74f5be45839eb753568535c074a592185dd0a2d406685018d581c43" dependencies = [ "aws-credential-types", "aws-runtime", @@ -663,9 +1157,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.54.0" +version = "1.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59f3f73466ff24f6ad109095e0f3f2c830bfb4cd6c8b12f744c8e61ebf4d3ba1" +checksum = "f8fa655b4f313124ce272cbc38c5fef13793c832279cec750103e5e6b71a54b8" dependencies = [ "aws-credential-types", "aws-runtime", @@ -685,9 +1179,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.54.0" +version = "1.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "249b2acaa8e02fd4718705a9494e3eb633637139aa4bb09d70965b0448e865db" +checksum = "dc1cfe5e16b90421ea031f4c6348b534ef442e76f6bf4a1b2b592c12cc2c6af9" dependencies = [ "aws-credential-types", "aws-runtime", @@ -708,9 +1202,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.6" +version = "1.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d3820e0c08d0737872ff3c7c1f21ebbb6693d832312d6152bf18ef50a5471c2" +checksum = "9bfe75fad52793ce6dec0dc3d4b1f388f038b5eb866c8d4d7f3a8e21b5ea5051" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -731,9 +1225,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427cb637d15d63d6f9aae26358e1c9a9c09d5aa490d64b09354c8217cfef0f28" +checksum = "fa59d1327d8b5053c54bf2eaae63bf629ba9e904434d0835a28ed3c0ed0a614e" dependencies = [ "futures-util", "pin-project-lite", @@ -759,9 +1253,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.60.11" +version = "0.60.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8bc3e8fdc6b8d07d976e301c02fe553f72a39b7a9fea820e023268467d7ab6" +checksum = "7809c27ad8da6a6a68c454e651d4962479e81472aa19ae99e59f9aba1f9713cc" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", @@ -779,9 +1273,9 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.1" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e69cc50921eb913c6b662f8d909131bb3e6ad6cb6090d3a39b66fc5c52095" +checksum = "623a51127f24c30776c8b374295f2df78d92517386f77ba30773f15a30ce1422" dependencies = [ "aws-smithy-types", ] @@ -798,16 +1292,16 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.7.6" +version = "1.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a05dd41a70fc74051758ee75b5c4db2c0ca070ed9229c3df50e9475cda1cb985" +checksum = "d526a12d9ed61fadefda24abe2e682892ba288c2018bcb38b1b4c111d13f6d92" dependencies = [ "aws-smithy-async", "aws-smithy-http", "aws-smithy-runtime-api", "aws-smithy-types", "bytes", - "fastrand 2.3.0", + "fastrand", "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", @@ -842,9 +1336,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.11" +version = "1.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ddc9bd6c28aeb303477170ddd183760a956a03e083b3902a990238a7e3792d" +checksum = "c7b8a53819e42f10d0821f56da995e1470b199686a1809168db6ca485665f042" dependencies = [ "base64-simd", "bytes", @@ -877,9 +1371,9 @@ dependencies = [ [[package]] name = "aws-types" -version = "1.3.3" +version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5221b91b3e441e6675310829fd8984801b772cb1546ef6c0e54dec9f1ac13fef" +checksum = "dfbd0a668309ec1f66c0f6bda4840dd6d4796ae26d699ebc266d7cc95c6d040f" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -899,7 +1393,7 @@ dependencies = [ "getrandom 0.2.15", "instant", "pin-project-lite", - "rand 0.8.5", + "rand", "tokio", ] @@ -936,6 +1430,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64-simd" version = "0.8.0" @@ -953,26 +1453,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] -name = "bech32" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" - -[[package]] -name = "beef" -version = "0.5.2" +name = "bimap" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" -dependencies = [ - "serde", -] +checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" [[package]] name = "bindings-uniswapx" -version = "0.2.0" +version = "0.1.0" dependencies = [ - "ethers", - "serde", + "alloy", ] [[package]] @@ -998,9 +1488,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" [[package]] name = "bitvec" @@ -1014,15 +1504,6 @@ dependencies = [ "wyz", ] -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -1033,30 +1514,22 @@ dependencies = [ ] [[package]] -name = "bs58" -version = "0.5.1" +name = "blst" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +checksum = "47c79a94619fade3c0b887670333513a67ac28a6a7e653eb260bf0d4103db38d" dependencies = [ - "sha2", - "tinyvec", -] - -[[package]] -name = "bstr" -version = "1.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" -dependencies = [ - "memchr", - "serde", + "cc", + "glob", + "threadpool", + "zeroize", ] [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" @@ -1072,9 +1545,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" dependencies = [ "serde", ] @@ -1090,66 +1563,26 @@ dependencies = [ ] [[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" +name = "c-kzg" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" dependencies = [ + "blst", "cc", + "glob", + "hex", "libc", - "pkg-config", -] - -[[package]] -name = "camino" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver 1.0.24", + "once_cell", "serde", - "serde_json", - "thiserror 1.0.69", ] [[package]] name = "cc" -version = "1.2.7" +version = "1.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" +checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" dependencies = [ - "jobserver", - "libc", "shlex", ] @@ -1159,36 +1592,11 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "chrono" -version = "0.4.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets 0.52.6", -] - -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - [[package]] name = "clap" -version = "4.5.24" +version = "4.5.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9560b07a799281c7e0958b9296854d6fafd4c5f31444a7e5bb1ad6dde5ccf1bd" +checksum = "8acebd8ad879283633b343856142139f2da2317c96b05b4dd6181c61e2480184" dependencies = [ "clap_builder", "clap_derive", @@ -1196,9 +1604,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.24" +version = "4.5.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874e0dd3eb68bf99058751ac9712f622e61e6f393a94f7128fa26e3f02f5c7cd" +checksum = "f6ba32cbda51c7e1dfd49acc1457ba1a7dec5b64fe360e828acb13ca8dc9c2f9" dependencies = [ "anstream", "anstyle", @@ -1208,14 +1616,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -1224,58 +1632,6 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" -[[package]] -name = "coins-bip32" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" -dependencies = [ - "bs58", - "coins-core", - "digest 0.10.7", - "hmac", - "k256", - "serde", - "sha2", - "thiserror 1.0.69", -] - -[[package]] -name = "coins-bip39" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" -dependencies = [ - "bitvec", - "coins-bip32", - "hmac", - "once_cell", - "pbkdf2 0.12.2", - "rand 0.8.5", - "sha2", - "thiserror 1.0.69", -] - -[[package]] -name = "coins-core" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" -dependencies = [ - "base64 0.21.7", - "bech32", - "bs58", - "digest 0.10.7", - "generic-array", - "hex", - "ripemd", - "serde", - "serde_derive", - "sha2", - "sha3", - "thiserror 1.0.69", -] - [[package]] name = "colorchoice" version = "1.0.3" @@ -1292,15 +1648,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "const-hex" version = "1.14.0" @@ -1321,10 +1668,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] -name = "constant_time_eq" -version = "0.1.5" +name = "const_format" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] [[package]] name = "core-foundation" @@ -1344,13 +1705,28 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + [[package]] name = "crc32fast" version = "1.4.2" @@ -1418,9 +1794,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-bigint" @@ -1429,7 +1805,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core 0.6.4", + "rand_core", "subtle", "zeroize", ] @@ -1444,15 +1820,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "ctr" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" -dependencies = [ - "cipher", -] - [[package]] name = "dashmap" version = "6.1.0" @@ -1469,9 +1836,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" [[package]] name = "der" @@ -1507,560 +1874,135 @@ dependencies = [ name = "derive_more" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", - "unicode-xid", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer 0.10.4", - "const-oid", - "crypto-common", - "subtle", -] - -[[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.48.0", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "dotenv" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core 0.6.4", - "sec1", - "subtle", - "zeroize", -] - -[[package]] -name = "ena" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" -dependencies = [ - "log", -] - -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "enr" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" -dependencies = [ - "base64 0.21.7", - "bytes", - "hex", - "k256", - "log", - "rand 0.8.5", - "rlp", - "serde", - "sha3", - "zeroize", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "eth-keystore" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" -dependencies = [ - "aes", - "ctr", - "digest 0.10.7", - "hex", - "hmac", - "pbkdf2 0.11.0", - "rand 0.8.5", - "scrypt", - "serde", - "serde_json", - "sha2", - "sha3", - "thiserror 1.0.69", - "uuid 0.8.2", -] - -[[package]] -name = "ethabi" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" -dependencies = [ - "ethereum-types", - "hex", - "once_cell", - "regex", - "serde", - "serde_json", - "sha3", - "thiserror 1.0.69", - "uint", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "primitive-types", - "scale-info", - "uint", -] - -[[package]] -name = "ethers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" -dependencies = [ - "ethers-addressbook", - "ethers-contract", - "ethers-core", - "ethers-etherscan", - "ethers-middleware", - "ethers-providers", - "ethers-signers", - "ethers-solc", -] - -[[package]] -name = "ethers-addressbook" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" -dependencies = [ - "ethers-core", - "once_cell", - "serde", - "serde_json", -] - -[[package]] -name = "ethers-contract" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" -dependencies = [ - "const-hex", - "ethers-contract-abigen", - "ethers-contract-derive", - "ethers-core", - "ethers-providers", - "futures-util", - "once_cell", - "pin-project", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "ethers-contract-abigen" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" -dependencies = [ - "Inflector", - "const-hex", - "dunce", - "ethers-core", - "ethers-etherscan", - "eyre", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "reqwest", - "serde", - "serde_json", - "syn 2.0.95", - "toml", - "walkdir", +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", ] [[package]] -name = "ethers-contract-derive" -version = "2.0.14" +name = "derive_more-impl" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ - "Inflector", - "const-hex", - "ethers-contract-abigen", - "ethers-core", "proc-macro2", "quote", - "serde_json", - "syn 2.0.95", + "syn 2.0.98", + "unicode-xid", ] [[package]] -name = "ethers-core" -version = "2.0.14" +name = "digest" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "arrayvec", - "bytes", - "cargo_metadata", - "chrono", - "const-hex", - "elliptic-curve", - "ethabi", "generic-array", - "k256", - "num_enum", - "once_cell", - "open-fastrlp", - "rand 0.8.5", - "rlp", - "serde", - "serde_json", - "strum", - "syn 2.0.95", - "tempfile", - "thiserror 1.0.69", - "tiny-keccak", - "unicode-xid", ] [[package]] -name = "ethers-etherscan" -version = "2.0.14" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "chrono", - "ethers-core", - "reqwest", - "semver 1.0.24", - "serde", - "serde_json", - "thiserror 1.0.69", - "tracing", + "block-buffer", + "const-oid", + "crypto-common", + "subtle", ] [[package]] -name = "ethers-flashbots" -version = "0.12.1" -source = "git+https://github.com/FrankieIsLost/ethers-flashbots#bf2ab96be34e190bb39858b0c54d2520bf76ded0" +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "async-trait", - "chrono", - "ethers", - "futures-core", - "futures-util", - "pin-project", - "reqwest", - "serde", - "serde_json", - "thiserror 1.0.69", - "url", + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] -name = "ethers-middleware" -version = "2.0.14" +name = "doctest-file" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" -dependencies = [ - "async-trait", - "auto_impl", - "ethers-contract", - "ethers-core", - "ethers-etherscan", - "ethers-providers", - "ethers-signers", - "futures-channel", - "futures-locks", - "futures-util", - "instant", - "reqwest", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tracing", - "tracing-futures", - "url", -] +checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" [[package]] -name = "ethers-providers" -version = "2.0.14" +name = "dotenv" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" -dependencies = [ - "async-trait", - "auto_impl", - "base64 0.21.7", - "bytes", - "const-hex", - "enr", - "ethers-core", - "futures-channel", - "futures-core", - "futures-timer", - "futures-util", - "hashers", - "http 0.2.12", - "instant", - "jsonwebtoken", - "once_cell", - "pin-project", - "reqwest", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tokio-tungstenite 0.20.1", - "tracing", - "tracing-futures", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "ws_stream_wasm", -] +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] -name = "ethers-signers" -version = "2.0.14" +name = "ecdsa" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ - "async-trait", - "coins-bip32", - "coins-bip39", - "const-hex", + "der", + "digest 0.10.7", "elliptic-curve", - "eth-keystore", - "ethers-core", - "rand 0.8.5", - "sha2", - "thiserror 1.0.69", - "tracing", + "rfc6979", + "signature", + "spki", ] [[package]] -name = "ethers-solc" -version = "2.0.14" +name = "either" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" -dependencies = [ - "cfg-if", - "const-hex", - "dirs", - "dunce", - "ethers-core", - "glob", - "home", - "md-5", - "num_cpus", - "once_cell", - "path-slash", - "rayon", - "regex", - "semver 1.0.24", - "serde", - "serde_json", - "solang-parser", - "svm-rs", - "thiserror 1.0.69", - "tiny-keccak", - "tokio", - "tracing", - "walkdir", - "yansi", -] +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] -name = "event-listener" -version = "2.5.3" +name = "elliptic-curve" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] [[package]] -name = "eyre" -version = "0.6.12" +name = "encoding_rs" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ - "indenter", - "once_cell", + "cfg-if", ] [[package]] -name = "fastrand" -version = "1.9.0" +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ - "instant", + "libc", + "windows-sys 0.59.0", ] [[package]] @@ -2097,7 +2039,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -2108,17 +2050,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand 0.8.5", + "rand", "rustc-hex", "static_assertions", ] -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flate2" version = "1.0.35" @@ -2165,16 +2101,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "funty" version = "2.0.0" @@ -2229,31 +2155,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - -[[package]] -name = "futures-locks" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" -dependencies = [ - "futures-channel", - "futures-task", -] - [[package]] name = "futures-macro" version = "0.3.31" @@ -2262,7 +2163,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -2277,16 +2178,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" -dependencies = [ - "gloo-timers", - "send_wrapper 0.4.0", -] - [[package]] name = "futures-util" version = "0.3.31" @@ -2306,13 +2197,10 @@ dependencies = [ ] [[package]] -name = "fxhash" -version = "0.2.1" +name = "futures-utils-wasm" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" [[package]] name = "generic-array" @@ -2325,97 +2213,40 @@ dependencies = [ "zeroize", ] -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - [[package]] name = "getrandom" version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "gimli" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" - -[[package]] -name = "glob" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" - -[[package]] -name = "globset" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" -dependencies = [ - "aho-corasick", - "bstr", - "log", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "gloo-net" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9902a044653b26b99f7e3693a42f171312d9be8b26b5697bd1e43ad1f8a35e10" -dependencies = [ - "futures-channel", - "futures-core", - "futures-sink", - "gloo-utils", - "js-sys", - "pin-project", - "serde", - "serde_json", - "thiserror 1.0.69", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] -name = "gloo-timers" -version = "0.2.6" +name = "getrandom" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", ] [[package]] -name = "gloo-utils" -version = "0.1.7" +name = "gimli" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e" -dependencies = [ - "js-sys", - "serde", - "serde_json", - "wasm-bindgen", - "web-sys", -] +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "group" @@ -2424,7 +2255,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core 0.6.4", + "rand_core", "subtle", ] @@ -2478,25 +2309,12 @@ version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ + "allocator-api2", + "equivalent", "foldhash", "serde", ] -[[package]] -name = "hashers" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" -dependencies = [ - "fxhash", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -2527,15 +2345,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "http" version = "0.2.12" @@ -2592,37 +2401,11 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "http-range-header" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" - -[[package]] -name = "http-types" -version = "2.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" -dependencies = [ - "anyhow", - "async-channel", - "base64 0.13.1", - "futures-lite", - "infer", - "pin-project-lite", - "rand 0.7.3", - "serde", - "serde_json", - "serde_qs 0.8.5", - "serde_urlencoded", - "url", -] - [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -2656,9 +2439,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", @@ -2672,6 +2455,7 @@ dependencies = [ "pin-project-lite", "smallvec", "tokio", + "want", ] [[package]] @@ -2703,6 +2487,22 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.6.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.10" @@ -2710,35 +2510,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", + "futures-channel", "futures-util", "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.2", + "hyper 1.6.0", "pin-project-lite", + "socket2", "tokio", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", + "tower-service", + "tracing", ] [[package]] @@ -2856,7 +2637,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -2889,24 +2670,6 @@ dependencies = [ "parity-scale-codec", ] -[[package]] -name = "impl-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - -[[package]] -name = "impl-serde" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" -dependencies = [ - "serde", -] - [[package]] name = "impl-trait-for-tuples" version = "0.2.3" @@ -2915,41 +2678,20 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] -[[package]] -name = "indenter" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" - [[package]] name = "indexmap" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", "hashbrown 0.15.2", "serde", ] -[[package]] -name = "infer" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" - -[[package]] -name = "inout" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" -dependencies = [ - "generic-array", -] - [[package]] name = "instant" version = "0.1.13" @@ -2960,228 +2702,64 @@ dependencies = [ ] [[package]] -name = "ipnet" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" - -[[package]] -name = "jobserver" -version = "0.1.32" +name = "interprocess" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "894148491d817cb36b6f778017b8ac46b17408d522dd90f539d677ea938362eb" dependencies = [ + "doctest-file", + "futures-core", "libc", -] - -[[package]] -name = "js-sys" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" -dependencies = [ - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "jsonrpsee" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1822d18e4384a5e79d94dc9e4d1239cfa9fad24e55b44d2efeff5b394c9fece4" -dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-http-client", - "jsonrpsee-proc-macros", - "jsonrpsee-server", - "jsonrpsee-types", - "jsonrpsee-wasm-client", - "jsonrpsee-ws-client", - "tracing", -] - -[[package]] -name = "jsonrpsee-client-transport" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11aa5766d5c430b89cb26a99b88f3245eb91534be8126102cea9e45ee3891b22" -dependencies = [ - "futures-channel", - "futures-util", - "gloo-net", - "http 0.2.12", - "jsonrpsee-core", - "pin-project", - "rustls-native-certs", - "soketto", - "thiserror 1.0.69", + "recvmsg", "tokio", - "tokio-rustls 0.24.1", - "tokio-util", - "tracing", - "webpki-roots 0.23.1", -] - -[[package]] -name = "jsonrpsee-core" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c6832a55f662b5a6ecc844db24b8b9c387453f923de863062c60ce33d62b81" -dependencies = [ - "anyhow", - "async-lock", - "async-trait", - "beef", - "futures-timer", - "futures-util", - "globset", - "hyper 0.14.32", - "jsonrpsee-types", - "parking_lot", - "rand 0.8.5", - "rustc-hash 1.1.0", - "serde", - "serde_json", - "soketto", - "thiserror 1.0.69", - "tokio", - "tokio-stream", - "tracing", - "wasm-bindgen-futures", -] - -[[package]] -name = "jsonrpsee-http-client" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1705c65069729e3dccff6fd91ee431d5d31cabcf00ce68a62a2c6435ac713af9" -dependencies = [ - "async-trait", - "hyper 0.14.32", - "hyper-rustls", - "jsonrpsee-core", - "jsonrpsee-types", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tower", - "tracing", + "widestring", + "windows-sys 0.52.0", ] [[package]] -name = "jsonrpsee-proc-macros" -version = "0.18.2" +name = "ipnet" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6027ac0b197ce9543097d02a290f550ce1d9432bf301524b013053c0b75cc94" -dependencies = [ - "heck 0.4.1", - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] -name = "jsonrpsee-server" -version = "0.18.2" +name = "is_terminal_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f06661d1a6b6e5b85469dc9c29acfbb9b3bb613797a6fd10a3ebb8a70754057" -dependencies = [ - "futures-util", - "hyper 0.14.32", - "jsonrpsee-core", - "jsonrpsee-types", - "serde", - "serde_json", - "soketto", - "tokio", - "tokio-stream", - "tokio-util", - "tower", - "tracing", -] +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] -name = "jsonrpsee-types" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5bf6c75ce2a4217421154adfc65a24d2b46e77286e59bba5d9fa6544ccc8f4" -dependencies = [ - "anyhow", - "beef", - "serde", - "serde_json", - "thiserror 1.0.69", - "tracing", +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", ] [[package]] -name = "jsonrpsee-wasm-client" -version = "0.18.2" +name = "itertools" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34e6ea7c6d862e60f8baebd946c037b70c6808a4e4e31e792a4029184e3ce13a" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", + "either", ] [[package]] -name = "jsonrpsee-ws-client" -version = "0.18.2" +name = "itoa" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64b2589680ba1ad7863f279cd2d5083c1dc0a7c0ea959d22924553050f8ab9f" -dependencies = [ - "http 0.2.12", - "jsonrpsee-client-transport", - "jsonrpsee-core", - "jsonrpsee-types", -] +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] -name = "jsonwebtoken" -version = "8.3.0" +name = "js-sys" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ - "base64 0.21.7", - "pem", - "ring 0.16.20", - "serde", - "serde_json", - "simple_asn1", + "once_cell", + "wasm-bindgen", ] [[package]] @@ -3195,7 +2773,6 @@ dependencies = [ "elliptic-curve", "once_cell", "sha2", - "signature", ] [[package]] @@ -3217,36 +2794,6 @@ dependencies = [ "sha3-asm", ] -[[package]] -name = "lalrpop" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" -dependencies = [ - "ascii-canvas", - "bit-set", - "ena", - "itertools 0.11.0", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "string_cache", - "term", - "tiny-keccak", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" -dependencies = [ - "regex-automata", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -3265,16 +2812,6 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" -[[package]] -name = "libredox" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" -dependencies = [ - "bitflags 2.6.0", - "libc", -] - [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -3299,36 +2836,17 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "matchmaker" -version = "0.1.0" -source = "git+https://github.com/paradigmxyz/artemis?rev=70f3bce3488cf29f34197b9b2c0c02d329b95793#70f3bce3488cf29f34197b9b2c0c02d329b95793" -dependencies = [ - "ethers", - "futures", - "futures-util", - "http 0.2.12", - "hyper 0.14.32", - "jsonrpsee", - "serde", - "serde_json", - "tokio", - "tower", - "tower-http", -] +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] -name = "md-5" -version = "0.10.6" +name = "lru" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" dependencies = [ - "cfg-if", - "digest 0.10.7", + "hashbrown 0.15.2", ] [[package]] @@ -3337,53 +2855,6 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" -[[package]] -name = "mev-share" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fece94bf7e46e4fc8362bda9c1b85bd219c84a64c256c324549bb4270f06749" -dependencies = [ - "mev-share-rpc-api", - "mev-share-sse", -] - -[[package]] -name = "mev-share-rpc-api" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00763a91130b3fa531f22be8ae4e29abaa0b7dba4dd6d9fa3576d6d101772617" -dependencies = [ - "async-trait", - "ethers-core", - "ethers-signers", - "futures-util", - "http 0.2.12", - "hyper 0.14.32", - "jsonrpsee", - "serde", - "tower", -] - -[[package]] -name = "mev-share-sse" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba263a1c478aade75b60835fbeb6f57c0280fb0953742c3d84de45ea51139ae4" -dependencies = [ - "async-sse", - "bytes", - "ethers-core", - "futures-util", - "http-types", - "pin-project-lite", - "reqwest", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tracing", -] - [[package]] name = "mime" version = "0.3.17" @@ -3392,9 +2863,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b" dependencies = [ "adler2", ] @@ -3423,10 +2894,10 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "log", - "rand 0.8.5", + "rand", "regex", "serde_json", "serde_urlencoded", @@ -3436,9 +2907,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" dependencies = [ "libc", "log", @@ -3451,12 +2922,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -3527,79 +2992,46 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] -name = "object" -version = "0.36.7" +name = "nybbles" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" dependencies = [ - "memchr", + "alloy-rlp", + "const-hex", + "proptest", + "serde", + "smallvec", ] [[package]] -name = "once_cell" -version = "1.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" - -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - -[[package]] -name = "open-fastrlp" -version = "0.1.4" +name = "object" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ - "arrayvec", - "auto_impl", - "bytes", - "ethereum-types", - "open-fastrlp-derive", + "memchr", ] [[package]] -name = "open-fastrlp-derive" -version = "0.1.1" +name = "once_cell" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" -dependencies = [ - "bytes", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "opensea-stream" -version = "0.4.0" -source = "git+https://github.com/FrankieIsLost/opensea-stream-rs#b19bc2f91766632b9d046df038908b933e6b82b7" -dependencies = [ - "chrono", - "ethers-core", - "phyllo", - "serde", - "serde_json", - "tokio", - "url", -] +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "foreign-types", "libc", @@ -3616,20 +3048,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" dependencies = [ "cc", "libc", @@ -3637,17 +3069,11 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - [[package]] name = "outref" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" [[package]] name = "overload" @@ -3657,36 +3083,32 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.98", ] -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - [[package]] name = "parking_lot" version = "0.12.3" @@ -3710,60 +3132,12 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "password-hash" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "paste" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" -[[package]] -name = "path-slash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" - -[[package]] -name = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", - "hmac", - "password-hash", - "sha2", -] - -[[package]] -name = "pbkdf2" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest 0.10.7", - "hmac", -] - -[[package]] -name = "pem" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" -dependencies = [ - "base64 0.13.1", -] - [[package]] name = "percent-encoding" version = "2.3.1" @@ -3777,20 +3151,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 2.0.9", + "thiserror 2.0.11", "ucd-trie", ] -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap", -] - [[package]] name = "pharos" version = "0.5.3" @@ -3801,57 +3165,6 @@ dependencies = [ "rustc_version 0.4.1", ] -[[package]] -name = "phf" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" -dependencies = [ - "phf_macros", - "phf_shared 0.11.3", -] - -[[package]] -name = "phf_generator" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" -dependencies = [ - "phf_shared 0.11.3", - "rand 0.8.5", -] - -[[package]] -name = "phf_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" -dependencies = [ - "phf_generator", - "phf_shared 0.11.3", - "proc-macro2", - "quote", - "syn 2.0.95", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher 0.3.11", -] - -[[package]] -name = "phf_shared" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher 1.0.1", -] - [[package]] name = "phyllo" version = "0.3.0" @@ -3872,22 +3185,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -3933,22 +3246,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "prettyplease" -version = "0.2.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "483f8c21f64f3ea09fe0f30f5d48c3e8eefe5dac9129f0075f76593b4c1da705" -dependencies = [ - "proc-macro2", - "syn 2.0.95", -] - [[package]] name = "primitive-types" version = "0.12.2" @@ -3957,29 +3254,16 @@ checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", "uint", ] -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - [[package]] name = "proc-macro-crate" version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.22.22", + "toml_edit", ] [[package]] @@ -4001,14 +3285,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] @@ -4021,11 +3305,11 @@ checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.6.0", + "bitflags 2.8.0", "lazy_static", "num-traits", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand", + "rand_chacha", "rand_xorshift", "regex-syntax", "rusty-fork", @@ -4045,28 +3329,15 @@ version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", + "proc-macro2", ] +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" version = "0.8.5" @@ -4074,21 +3345,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", + "rand_chacha", + "rand_core", "serde", ] -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - [[package]] name = "rand_chacha" version = "0.3.1" @@ -4096,16 +3357,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", + "rand_core", ] [[package]] @@ -4117,43 +3369,20 @@ dependencies = [ "getrandom 0.2.15", ] -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - [[package]] name = "rand_xorshift" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core 0.6.4", -] - -[[package]] -name = "rayon" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" -dependencies = [ - "either", - "rayon-core", + "rand_core", ] [[package]] -name = "rayon-core" -version = "1.12.1" +name = "recvmsg" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] +checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" [[package]] name = "redox_syscall" @@ -4161,18 +3390,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.6.0", -] - -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom 0.2.15", - "libredox", - "thiserror 1.0.69", + "bitflags 2.8.0", ] [[package]] @@ -4225,8 +3443,7 @@ dependencies = [ "http 0.2.12", "http-body 0.4.6", "hyper 0.14.32", - "hyper-rustls", - "hyper-tls", + "hyper-tls 0.5.0", "ipnet", "js-sys", "log", @@ -4235,50 +3452,70 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.12", - "rustls-pemfile", + "rustls-pemfile 1.0.4", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 0.1.2", "system-configuration", "tokio", "tokio-native-tls", - "tokio-rustls 0.24.1", - "tokio-util", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-streams", "web-sys", - "webpki-roots 0.25.4", "winreg", ] [[package]] -name = "rfc6979" -version = "0.4.0" +name = "reqwest" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ - "hmac", - "subtle", + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http 1.2.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-tls 0.6.0", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls-pemfile 2.2.0", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.2", + "tokio", + "tokio-native-tls", + "tower", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-registry", ] [[package]] -name = "ring" -version = "0.16.20" +name = "rfc6979" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", + "hmac", + "subtle", ] [[package]] @@ -4291,20 +3528,11 @@ dependencies = [ "cfg-if", "getrandom 0.2.15", "libc", - "spin 0.9.8", - "untrusted 0.9.0", + "spin", + "untrusted", "windows-sys 0.52.0", ] -[[package]] -name = "ripemd" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" -dependencies = [ - "digest 0.10.7", -] - [[package]] name = "rlp" version = "0.5.2" @@ -4312,21 +3540,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ "bytes", - "rlp-derive", "rustc-hex", ] -[[package]] -name = "rlp-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "ruint" version = "1.12.4" @@ -4345,7 +3561,7 @@ dependencies = [ "parity-scale-codec", "primitive-types", "proptest", - "rand 0.8.5", + "rand", "rlp", "ruint-macro", "serde", @@ -4367,15 +3583,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc-hash" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc-hex" @@ -4398,16 +3608,16 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.24", + "semver 1.0.25", ] [[package]] name = "rustix" -version = "0.38.43" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", @@ -4416,26 +3626,28 @@ dependencies = [ [[package]] name = "rustls" -version = "0.20.9" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.16.20", + "ring", + "rustls-webpki 0.101.7", "sct", - "webpki", ] [[package]] name = "rustls" -version = "0.21.12" +version = "0.23.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" dependencies = [ - "log", - "ring 0.17.8", - "rustls-webpki 0.101.7", - "sct", + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", ] [[package]] @@ -4445,7 +3657,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", - "rustls-pemfile", + "rustls-pemfile 1.0.4", "schannel", "security-framework", ] @@ -4460,23 +3672,39 @@ dependencies = [ ] [[package]] -name = "rustls-webpki" -version = "0.100.3" +name = "rustls-pemfile" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6a5fc258f1c1276dfe3016516945546e2d5383911efc0fc4f1cdc5df3a4ae3" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "rustls-pki-types", ] +[[package]] +name = "rustls-pki-types" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" + [[package]] name = "rustls-webpki" version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] @@ -4499,51 +3727,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" - -[[package]] -name = "salsa20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scale-info" -version = "2.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" -dependencies = [ - "cfg-if", - "derive_more", - "parity-scale-codec", - "scale-info-derive", -] - -[[package]] -name = "scale-info-derive" -version = "2.11.6" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" -dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", - "syn 2.0.95", -] +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "schannel" @@ -4560,26 +3746,14 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "scrypt" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" -dependencies = [ - "hmac", - "pbkdf2 0.11.0", - "salsa20", - "sha2", -] - [[package]] name = "sct" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -4602,7 +3776,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation", "core-foundation-sys", "libc", @@ -4630,12 +3804,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" -dependencies = [ - "serde", -] +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" [[package]] name = "semver-parser" @@ -4646,12 +3817,6 @@ dependencies = [ "pest", ] -[[package]] -name = "send_wrapper" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" - [[package]] name = "send_wrapper" version = "0.6.0" @@ -4675,14 +3840,14 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] name = "serde_json" -version = "1.0.135" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", @@ -4690,17 +3855,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_qs" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" -dependencies = [ - "percent-encoding", - "serde", - "thiserror 1.0.69", -] - [[package]] name = "serde_qs" version = "0.12.0" @@ -4712,15 +3866,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "serde_spanned" -version = "0.6.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" -dependencies = [ - "serde", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -4733,19 +3878,6 @@ dependencies = [ "serde", ] -[[package]] -name = "sha-1" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - [[package]] name = "sha-1" version = "0.10.1" @@ -4830,38 +3962,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core 0.6.4", + "rand_core", ] [[package]] name = "similar" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" - -[[package]] -name = "simple_asn1" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" -dependencies = [ - "num-bigint", - "num-traits", - "thiserror 1.0.69", - "time", -] - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "siphasher" -version = "1.0.1" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" [[package]] name = "slab" @@ -4873,56 +3981,23 @@ dependencies = [ ] [[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "socket2" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "soketto" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" -dependencies = [ - "base64 0.13.1", - "bytes", - "futures", - "http 0.2.12", - "httparse", - "log", - "rand 0.8.5", - "sha-1 0.9.8", -] - -[[package]] -name = "solang-parser" -version = "0.3.3" +name = "smallvec" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" dependencies = [ - "itertools 0.11.0", - "lalrpop", - "lalrpop-util", - "phf", - "thiserror 1.0.69", - "unicode-xid", + "serde", ] [[package]] -name = "spin" -version = "0.5.2" +name = "socket2" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] [[package]] name = "spin" @@ -4952,19 +4027,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "string_cache" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared 0.10.0", - "precomputed-hash", -] - [[package]] name = "strsim" version = "0.11.1" @@ -4986,11 +4048,11 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -4999,26 +4061,6 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "svm-rs" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" -dependencies = [ - "dirs", - "fs2", - "hex", - "once_cell", - "reqwest", - "semver 1.0.24", - "serde", - "serde_json", - "sha2", - "thiserror 1.0.69", - "url", - "zip", -] - [[package]] name = "syn" version = "1.0.109" @@ -5032,9 +4074,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.95" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -5043,14 +4085,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.18" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e89d8bf2768d277f40573c83a02a099e96d96dd3104e13ea676194e61ac4b0" +checksum = "9c2de690018098e367beeb793991c7d4dc7270f42c9d2ac4ccc876c1368ca430" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -5059,6 +4101,15 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + [[package]] name = "synstructure" version = "0.13.1" @@ -5067,7 +4118,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -5099,29 +4150,18 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.15.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" +checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" dependencies = [ "cfg-if", - "fastrand 2.3.0", - "getrandom 0.2.15", + "fastrand", + "getrandom 0.3.1", "once_cell", "rustix", "windows-sys 0.59.0", ] -[[package]] -name = "term" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" -dependencies = [ - "dirs-next", - "rustversion", - "winapi", -] - [[package]] name = "thiserror" version = "1.0.69" @@ -5133,11 +4173,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" dependencies = [ - "thiserror-impl 2.0.9", + "thiserror-impl 2.0.11", ] [[package]] @@ -5148,18 +4188,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] name = "thiserror-impl" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -5172,6 +4212,15 @@ dependencies = [ "once_cell", ] +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + [[package]] name = "time" version = "0.3.37" @@ -5179,7 +4228,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", - "itoa", "num-conv", "powerfmt", "serde", @@ -5222,26 +4270,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "tinyvec" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" -version = "1.42.0" +version = "1.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" dependencies = [ "backtrace", "bytes", @@ -5257,13 +4290,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -5278,22 +4311,21 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.20.9", + "rustls 0.21.12", "tokio", - "webpki", ] [[package]] name = "tokio-rustls" -version = "0.24.1" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.21.12", + "rustls 0.23.23", "tokio", ] @@ -5317,29 +4349,24 @@ checksum = "f714dd15bead90401d77e04243611caec13726c2408afd5b31901dfcdcb3b181" dependencies = [ "futures-util", "log", - "rustls 0.20.9", - "rustls-native-certs", "tokio", - "tokio-rustls 0.23.4", "tungstenite 0.17.3", - "webpki", ] [[package]] name = "tokio-tungstenite" -version = "0.20.1" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" +checksum = "be4bf6fecd69fcdede0ec680aaf474cdab988f9de6bc73d3758f0160e3b7025a" dependencies = [ "futures-util", "log", - "native-tls", - "rustls 0.21.12", + "rustls 0.23.23", + "rustls-pki-types", "tokio", - "tokio-native-tls", - "tokio-rustls 0.24.1", - "tungstenite 0.20.1", - "webpki-roots 0.25.4", + "tokio-rustls 0.26.1", + "tungstenite 0.26.1", + "webpki-roots", ] [[package]] @@ -5350,86 +4377,39 @@ checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", - "futures-io", "futures-sink", "pin-project-lite", "tokio", ] -[[package]] -name = "toml" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.22.22", -] - [[package]] name = "toml_datetime" version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow 0.5.40", -] [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ "indexmap", - "serde", - "serde_spanned", "toml_datetime", - "winnow 0.6.22", + "winnow", ] [[package]] name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.4.4" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ - "bitflags 2.6.0", - "bytes", "futures-core", "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "http-range-header", "pin-project-lite", + "sync_wrapper 1.0.2", + "tokio", "tower-layer", "tower-service", ] @@ -5452,7 +4432,6 @@ version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ - "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -5466,7 +4445,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -5479,16 +4458,6 @@ dependencies = [ "valuable", ] -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -5532,33 +4501,30 @@ dependencies = [ "http 0.2.12", "httparse", "log", - "rand 0.8.5", - "rustls 0.20.9", - "sha-1 0.10.1", + "rand", + "sha-1", "thiserror 1.0.69", "url", "utf-8", - "webpki", ] [[package]] name = "tungstenite" -version = "0.20.1" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" +checksum = "413083a99c579593656008130e29255e54dcaae495be556cc26888f211648c24" dependencies = [ "byteorder", "bytes", "data-encoding", - "http 0.2.12", + "http 1.2.0", "httparse", "log", - "native-tls", - "rand 0.8.5", - "rustls 0.21.12", + "rand", + "rustls 0.23.23", + "rustls-pki-types", "sha1", - "thiserror 1.0.69", - "url", + "thiserror 2.0.11", "utf-8", ] @@ -5594,9 +4560,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" [[package]] name = "unicode-xid" @@ -5608,6 +4574,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" name = "uniswapx-artemis" version = "0.1.0" dependencies = [ + "alloy", "alloy-primitives", "anyhow", "artemis-core", @@ -5622,15 +4589,14 @@ dependencies = [ "crossbeam-channel", "dashmap", "dotenv", - "ethers", "futures", "mockito", "phyllo", - "rand 0.8.5", - "reqwest", + "rand", + "reqwest 0.11.27", "serde", "serde_json", - "serde_qs 0.12.0", + "serde_qs", "tokio", "tokio-stream", "tracing", @@ -5646,16 +4612,9 @@ dependencies = [ "alloy-primitives", "alloy-sol-types", "anyhow", - "ethers", "hex", ] -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -5671,7 +4630,6 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding", - "serde", ] [[package]] @@ -5706,25 +4664,15 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom 0.2.15", - "serde", -] - -[[package]] -name = "uuid" -version = "1.11.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -5746,29 +4694,13 @@ checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] -[[package]] -name = "waker-fn" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - [[package]] name = "want" version = "0.3.1" @@ -5780,46 +4712,50 @@ dependencies = [ [[package]] name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.13.3+wasi-0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", @@ -5830,9 +4766,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5840,70 +4776,64 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] -name = "wasm-streams" -version = "0.4.2" +name = "wasmtimer" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +checksum = "0048ad49a55b9deb3953841fa1fc5858f0efbcb7a18868c899a360269fac1b23" dependencies = [ - "futures-util", + "futures", "js-sys", + "parking_lot", + "pin-utils", + "slab", "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", ] [[package]] name = "web-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.22.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" -dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", -] - [[package]] name = "webpki-roots" -version = "0.23.1" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" dependencies = [ - "rustls-webpki 0.100.3", + "rustls-pki-types", ] [[package]] -name = "webpki-roots" -version = "0.25.4" +name = "widestring" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" [[package]] name = "winapi" @@ -5922,26 +4852,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] -name = "winapi-util" -version = "0.1.9" +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-registry" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-sys 0.59.0", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", ] [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "windows-result" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] [[package]] -name = "windows-core" -version = "0.52.0" +name = "windows-strings" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ + "windows-result", "windows-targets 0.52.6", ] @@ -6095,18 +5037,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.6.22" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980" +checksum = "59690dea168f2198d1a3b0cac23b8063efcd11012f10ae4698f284808c8ef603" dependencies = [ "memchr", ] @@ -6121,6 +5054,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + [[package]] name = "write16" version = "1.0.0" @@ -6145,7 +5087,7 @@ dependencies = [ "log", "pharos", "rustc_version 0.4.1", - "send_wrapper 0.6.0", + "send_wrapper", "thiserror 1.0.69", "wasm-bindgen", "wasm-bindgen-futures", @@ -6167,12 +5109,6 @@ version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" -[[package]] -name = "yansi" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" - [[package]] name = "yoke" version = "0.7.5" @@ -6193,7 +5129,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", "synstructure", ] @@ -6215,7 +5151,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -6235,7 +5171,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", "synstructure", ] @@ -6256,7 +5192,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -6278,54 +5214,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", -] - -[[package]] -name = "zip" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" -dependencies = [ - "aes", - "byteorder", - "bzip2", - "constant_time_eq", - "crc32fast", - "crossbeam-utils", - "flate2", - "hmac", - "pbkdf2 0.11.0", - "sha1", - "time", - "zstd", -] - -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" -dependencies = [ - "cc", - "pkg-config", + "syn 2.0.98", ] diff --git a/Cargo.toml b/Cargo.toml index 5b2d6da..2e279d9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,8 +9,7 @@ edition = "2021" uniswapx-rs = { path = "./crates/uniswapx-rs" } bindings-uniswapx = { path = "./crates/bindings-uniswapx" } -artemis-core = { git = "https://github.com/paradigmxyz/artemis", rev = "70f3bce3488cf29f34197b9b2c0c02d329b95793"} -ethers = { version = "2.0.14", features = ["ws", "rustls"]} +artemis-core = { git = "https://github.com/ConjunctiveNormalForm/minimal-artemis-alloy", version = "0.2.0"} tokio = { version = "1.18", features = ["full"] } dotenv = "0.15.0" async-trait = "0.1.64" @@ -24,8 +23,9 @@ serde = "1.0.168" crossbeam = "0.8.2" crossbeam-channel = "0.5.8" tokio-stream = "0.1.14" -reqwest = "0.11.18" -alloy-primitives = "0.8.18" +reqwest = { version = "0.11.18", features = ["json"] } +alloy = "0.11.1" +alloy-primitives = "0.8.21" serde_qs = "0.12.0" async-stream = "0.3.5" mockito = "1.1.0" diff --git a/crates/bindings-uniswapx/Cargo.toml b/crates/bindings-uniswapx/Cargo.toml index 50f101f..8c30783 100644 --- a/crates/bindings-uniswapx/Cargo.toml +++ b/crates/bindings-uniswapx/Cargo.toml @@ -4,4 +4,4 @@ version = "0.1.0" edition = "2021" [dependencies] -alloy = { git = "https://github.com/alloy-rs/alloy", features = ["sol-types", "contract"] } \ No newline at end of file +alloy = { version = "0.11.1", features = ["sol-types", "contract"] } \ No newline at end of file diff --git a/crates/uniswapx-rs/Cargo.toml b/crates/uniswapx-rs/Cargo.toml index a9f0990..8556387 100644 --- a/crates/uniswapx-rs/Cargo.toml +++ b/crates/uniswapx-rs/Cargo.toml @@ -6,9 +6,8 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -alloy-primitives = "0.8.18" -alloy-sol-types = "0.8.18" -alloy-dyn-abi = "0.8.18" +alloy-primitives = "0.8.20" +alloy-sol-types = "0.8.20" +alloy-dyn-abi = "0.8.20" anyhow = "1.0.70" -ethers = "2.0.14" hex = "0.4.3" diff --git a/src/aws_utils/cloudwatch_utils.rs b/src/aws_utils/cloudwatch_utils.rs index ea43b15..589314b 100644 --- a/src/aws_utils/cloudwatch_utils.rs +++ b/src/aws_utils/cloudwatch_utils.rs @@ -160,11 +160,10 @@ impl MetricBuilder { } } -pub fn receipt_status_to_metric(status: u64, chain_id: u64) -> CwMetrics { +pub fn receipt_status_to_metric(status: bool, chain_id: u64) -> CwMetrics { match status { - 1 => CwMetrics::TxSucceeded(chain_id), - 0 => CwMetrics::TxReverted(chain_id), - _ => CwMetrics::TxStatusUnknown(chain_id), + true => CwMetrics::TxSucceeded(chain_id), + false => CwMetrics::TxReverted(chain_id), } } diff --git a/src/collectors/block_collector.rs b/src/collectors/block_collector.rs index 6fb3a4e..2b99613 100644 --- a/src/collectors/block_collector.rs +++ b/src/collectors/block_collector.rs @@ -1,33 +1,33 @@ +use alloy::{ + network::AnyNetwork, + primitives::{BlockHash, BlockNumber, BlockTimestamp}, + providers::{DynProvider, Provider}, +}; use anyhow::Result; use artemis_core::types::{Collector, CollectorStream}; use async_trait::async_trait; -use ethers::{ - prelude::Middleware, - providers::JsonRpcClient, - types::{BlockNumber, H256, U256, U64}, -}; use std::{sync::Arc, time::Duration}; -use tokio::time::sleep; -use tracing::{error, info, warn}; +use tokio_stream::StreamExt; +use tracing::{error, info}; const BLOCK_POLLING_INTERVAL: Duration = Duration::from_millis(250); /// A collector that listens for new blocks, and generates a stream of /// [events](NewBlock) which contain the block number and hash. -pub struct BlockCollector { - provider: Arc, +pub struct BlockCollector { + provider: Arc>, } /// A new block event, containing the block number and hash. #[derive(Debug, Clone)] pub struct NewBlock { - pub hash: H256, - pub number: U64, - pub timestamp: U256, + pub hash: BlockHash, + pub number: BlockNumber, + pub timestamp: BlockTimestamp, } -impl BlockCollector { - pub fn new(provider: Arc) -> Self { +impl BlockCollector { + pub fn new(provider: Arc>) -> Self { Self { provider } } } @@ -35,16 +35,11 @@ impl BlockCollector { /// Implementation of the [Collector](Collector) trait for the [BlockCollector](BlockCollector). /// This implementation uses polling to subscribe to new blocks. #[async_trait] -impl Collector for BlockCollector -where - M: Middleware + Send + Sync, - M::Provider: JsonRpcClient + Send + Sync, - M::Error: std::fmt::Display + 'static, -{ +impl Collector for BlockCollector { async fn get_event_stream(&self) -> Result> { // Initial block number to start tracking from let start_block = match self.provider.get_block_number().await { - Ok(num) => num.as_u64(), + Ok(num) => num, Err(e) => { error!("Failed to get initial block number: {}", e); return Err(e.into()); @@ -55,36 +50,12 @@ where let provider = self.provider.clone(); - let stream = async_stream::stream! { - let mut last_block = start_block; - - loop { - match provider.get_block(BlockNumber::Latest).await { - Ok(Some(block)) => { - let block_number = block.number.unwrap().as_u64(); - let block_timestamp = block.timestamp; - - // Update last processed block number - if block_number > last_block { - last_block = block_number; - - yield NewBlock { - hash: block.hash.unwrap(), - number: U64::from(block_number), - timestamp: block_timestamp, - }; - }; - } - Ok(None) => { - warn!("Fetched latest block but it's empty"); - }, - Err(e) => { - error!("Error fetching block: {}.", e); - } - } - sleep(BLOCK_POLLING_INTERVAL).await; - } - }; + let sub = provider.subscribe_blocks().await?; + let stream = sub.into_stream().map(|header| NewBlock { + hash: header.hash, + number: header.number, + timestamp: header.timestamp, + }); Ok(Box::pin(stream)) } diff --git a/src/collectors/uniswapx_order_collector.rs b/src/collectors/uniswapx_order_collector.rs index 440f185..823f1b8 100644 --- a/src/collectors/uniswapx_order_collector.rs +++ b/src/collectors/uniswapx_order_collector.rs @@ -143,8 +143,8 @@ impl Collector for UniswapXOrderCollector { #[cfg(test)] mod tests { use crate::collectors::uniswapx_order_collector::UniswapXOrderCollector; + use alloy::hex; use artemis_core::types::Collector; - use ethers::utils::hex; use futures::StreamExt; use mockito::{Mock, Server, ServerGuard}; use uniswapx_rs::order::{V2DutchOrder, V3DutchOrder}; diff --git a/src/executors/protect_executor.rs b/src/executors/protect_executor.rs index 18dcf30..bbdb56c 100644 --- a/src/executors/protect_executor.rs +++ b/src/executors/protect_executor.rs @@ -1,22 +1,25 @@ +use alloy_primitives::utils::format_units; use serde_json::Value; use std::{ + marker::PhantomData, ops::{Div, Mul}, sync::Arc, }; use tracing::{info, warn}; +use alloy::{ + network::AnyNetwork, + primitives::{U256, U64}, + providers::Provider, + rpc::types::TransactionReceipt, + signers::local::PrivateKeySigner, + transports::Transport, +}; use anyhow::Result; use artemis_core::executors::mempool_executor::SubmitTxToMempool; use artemis_core::types::Executor; use async_trait::async_trait; use aws_sdk_cloudwatch::Client as CloudWatchClient; -use ethers::{ - middleware::MiddlewareBuilder, - providers::{Middleware, MiddlewareError}, - signers::{LocalWallet, Signer}, - types::{TransactionReceipt, U256}, - utils::format_units, -}; use crate::{ aws_utils::cloudwatch_utils::{ @@ -28,17 +31,22 @@ use crate::{ }; /// An executor that sends transactions to the mempool. -pub struct ProtectExecutor { - client: Arc, - sender_client: Arc, +pub struct ProtectExecutor { + client: Arc

, + sender_client: Arc

, key_store: Arc, cloudwatch_client: Option>, + _transport: PhantomData, } -impl ProtectExecutor { +impl ProtectExecutor +where + P: Provider, + T: Transport + Clone, +{ pub fn new( - client: Arc, - sender_client: Arc, + client: Arc

, + sender_client: Arc

, key_store: Arc, cloudwatch_client: Option>, ) -> Self { @@ -47,21 +55,26 @@ impl ProtectExecutor { sender_client, key_store, cloudwatch_client, + _transport: PhantomData, } } } #[async_trait] -impl Executor for ProtectExecutor +impl Executor for ProtectExecutor where - M: Middleware, - M::Error: 'static, - N: Middleware + 'static, - N::Error: 'static, + P: Provider, + T: Transport + Clone, { /// Send a transaction to the mempool. async fn execute(&self, mut action: SubmitTxToMempool) -> Result<()> { - let chain_id = action.tx.chain_id().expect("Chain ID not found on transaction").to_string().parse::().unwrap(); + let chain_id = action + .tx + .chain_id() + .expect("Chain ID not found on transaction") + .to_string() + .parse::() + .unwrap(); let metric_future = build_metric_future( self.cloudwatch_client.clone(), DimensionValue::V3Executor, @@ -90,56 +103,51 @@ where ) .expect("Failed to parse chain ID"); - let wallet: LocalWallet = private_key + let wallet: PrivateKeySigner = private_key .as_str() - .parse::() + .parse::() .unwrap() .with_chain_id(chain_id); let address = wallet.address(); action.tx.set_from(address); - let gas_usage_result = self - .client - .estimate_gas(&action.tx, None) - .await - .or_else(|err| { - if let Some(Value::String(four_byte)) = - err.as_error_response().unwrap().data.clone() - { - let error_code = ReactorErrorCode::from(four_byte.clone()); - match error_code { - ReactorErrorCode::OrderAlreadyFilled => { - info!("Order already filled, skipping execution"); - let metric_future = build_metric_future( - self.cloudwatch_client.clone(), - DimensionValue::V3Executor, - CwMetrics::ExecutionSkippedAlreadyFilled(chain_id), - 1.0, - ); - if let Some(metric_future) = metric_future { - send_metric!(metric_future); - } - Err(anyhow::anyhow!("Order Already Filled")) + + let gas_usage_result = self.client.estimate_gas(&action.tx).await.or_else(|err| { + if let Some(Value::String(four_byte)) = err.as_error_response().unwrap().data.clone() { + let error_code = ReactorErrorCode::from(four_byte.clone()); + match error_code { + ReactorErrorCode::OrderAlreadyFilled => { + info!("Order already filled, skipping execution"); + let metric_future = build_metric_future( + self.cloudwatch_client.clone(), + DimensionValue::V3Executor, + CwMetrics::ExecutionSkippedAlreadyFilled(chain_id), + 1.0, + ); + if let Some(metric_future) = metric_future { + send_metric!(metric_future); } - ReactorErrorCode::InvalidDeadline => { - info!("Order past deadline, skipping execution"); - let metric_future = build_metric_future( - self.cloudwatch_client.clone(), - DimensionValue::V3Executor, - CwMetrics::ExecutionSkippedPastDeadline(chain_id), - 1.0, - ); - if let Some(metric_future) = metric_future { - send_metric!(metric_future); - } - Err(anyhow::anyhow!("Order Past Deadline")) + Err(anyhow::anyhow!("Order Already Filled")) + } + ReactorErrorCode::InvalidDeadline => { + info!("Order past deadline, skipping execution"); + let metric_future = build_metric_future( + self.cloudwatch_client.clone(), + DimensionValue::V3Executor, + CwMetrics::ExecutionSkippedPastDeadline(chain_id), + 1.0, + ); + if let Some(metric_future) = metric_future { + send_metric!(metric_future); } - _ => Ok(U256::from(1_000_000)), + Err(anyhow::anyhow!("Order Past Deadline")) } - } else { - warn!("Error estimating gas: {:?}", err); - Ok(U256::from(1_000_000)) + _ => Ok(U256::from(1_000_000)), } - }); + } else { + warn!("Error estimating gas: {:?}", err); + Ok(U256::from(1_000_000)) + } + }); info!("Gas Usage {:?}", gas_usage_result); let gas_usage = gas_usage_result; @@ -166,7 +174,13 @@ where let signer = nonce_manager.with_signer(wallet); info!("Executing tx {:?}", action.tx); - let chain_id = action.tx.chain_id().expect("Chain ID not found on transaction").to_string().parse::().unwrap(); + let chain_id = action + .tx + .chain_id() + .expect("Chain ID not found on transaction") + .to_string() + .parse::() + .unwrap(); let metric_future = build_metric_future( self.cloudwatch_client.clone(), DimensionValue::V3Executor, @@ -197,17 +211,17 @@ where } Ok(None) => { warn!("No receipt after confirmation"); - (None, ethers::types::U64::zero()) + (None, U64::zero()) } Err(e) => { warn!("Error waiting for confirmations: {}", e); - (None, ethers::types::U64::zero()) + (None, U64::zero()) } } } Err(e) => { warn!("Error sending transaction: {}", e); - (None, ethers::types::U64::zero()) + (None, U64::zero()) } }; @@ -242,7 +256,7 @@ where { let balance_eth = self .client - .get_balance(address, Some(block_number.into())) + .get_balance(address) .await .map_or_else(|_| None, |v| Some(format_units(v, "ether").unwrap())); diff --git a/src/executors/public_1559_executor.rs b/src/executors/public_1559_executor.rs index 9cf2935..f0fe613 100644 --- a/src/executors/public_1559_executor.rs +++ b/src/executors/public_1559_executor.rs @@ -1,20 +1,19 @@ -use alloy_primitives::U64; -use serde_json::Value; use std::sync::Arc; use tracing::{info, warn}; +use alloy::{ + eips::{BlockId, BlockNumberOrTag}, + network::{AnyNetwork, ReceiptResponse, TransactionBuilder}, + primitives::{utils::format_units, U256, U64}, + providers::{DynProvider, Provider}, + rpc::types::TransactionReceipt, + serde::WithOtherFields, + signers::{local::PrivateKeySigner, Signer}, +}; use anyhow::{Context, Result}; use artemis_core::types::Executor; use async_trait::async_trait; use aws_sdk_cloudwatch::Client as CloudWatchClient; -use ethers::types::U64 as EthersU64; -use ethers::{ - middleware::MiddlewareBuilder, - providers::{Middleware, MiddlewareError}, - signers::{LocalWallet, Signer}, - types::{BlockId, BlockNumber, TransactionReceipt, U256}, - utils::format_units, -}; use crate::{ aws_utils::cloudwatch_utils::{ @@ -25,37 +24,18 @@ use crate::{ strategies::{keystore::KeyStore, types::SubmitTxToMempoolWithExecutionMetadata}, }; -// code snippet from alloy book -// remove after fully migrated to alloy -pub trait ToEthers { - /// The corresponding Ethers type. - type To; - - /// Converts the Alloy type to the corresponding Ethers type. - fn to_ethers(self) -> Self::To; -} - -impl ToEthers for U64 { - type To = EthersU64; - - #[inline(always)] - fn to_ethers(self) -> Self::To { - EthersU64(self.into_limbs()) - } -} - /// An executor that sends transactions to the public mempool. -pub struct Public1559Executor { - client: Arc, - sender_client: Arc, +pub struct Public1559Executor { + client: Arc>, + sender_client: Arc>, key_store: Arc, cloudwatch_client: Option>, } -impl Public1559Executor { +impl Public1559Executor { pub fn new( - client: Arc, - sender_client: Arc, + client: Arc>, + sender_client: Arc>, key_store: Arc, cloudwatch_client: Option>, ) -> Self { @@ -69,17 +49,18 @@ impl Public1559Executor { } #[async_trait] -impl Executor for Public1559Executor -where - M: Middleware + 'static, - M::Error: 'static, - N: Middleware + 'static, - N::Error: 'static, -{ +impl Executor for Public1559Executor { /// Send a transaction to the mempool. async fn execute(&self, mut action: SubmitTxToMempoolWithExecutionMetadata) -> Result<()> { let order_hash = Arc::new(action.metadata.order_hash.clone()); - let chain_id_u64 = action.execution.tx.chain_id().expect("Chain ID not found on transaction").to_string().parse::().unwrap(); + let chain_id_u64 = action + .execution + .tx + .chain_id() + .expect("Chain ID not found on transaction") + .to_string() + .parse::() + .unwrap(); let metric_future = build_metric_future( self.cloudwatch_client.clone(), @@ -110,11 +91,11 @@ where ) .expect("Failed to parse chain ID"); - let wallet: LocalWallet = private_key + let wallet: PrivateKeySigner = private_key .as_str() - .parse::() + .parse::() .unwrap() - .with_chain_id(chain_id); + .with_chain_id(Some(chain_id)); let address = wallet.address(); action.execution.tx.set_from(address); @@ -122,53 +103,67 @@ where // early return on OrderAlready filled // always use 1_000_000 gas for now let target_block = match action.metadata.target_block { - Some(b) => BlockId::Number(BlockNumber::Number(b)), - _ => BlockId::Number(BlockNumber::Latest), + Some(b) => BlockId::Number(b.into()), + _ => BlockId::Number(BlockNumberOrTag::Latest), }; info!("{} - target_block: {:?}", order_hash, target_block); let gas_usage_result = self .client - .estimate_gas(&action.execution.tx, None) + .estimate_gas(&action.execution.tx) .await .or_else(|err| { - if let Some(Value::String(four_byte)) = - err.as_error_response().unwrap().data.clone() - { - let error_code = ReactorErrorCode::from(four_byte.clone()); - match error_code { - ReactorErrorCode::OrderAlreadyFilled => { - info!("{} - Order already filled, skipping execution", order_hash); - let metric_future = build_metric_future( - self.cloudwatch_client.clone(), - DimensionValue::PriorityExecutor, - CwMetrics::ExecutionSkippedAlreadyFilled(chain_id_u64), - 1.0, - ); - if let Some(metric_future) = metric_future { - send_metric_with_order_hash!(&order_hash, metric_future); + if let Some(raw) = &err.as_error_resp().unwrap().data { + if let Ok(serde_value) = serde_json::from_str::(raw.get()) { + if let serde_json::Value::String(four_byte) = serde_value { + let error_code = ReactorErrorCode::from(four_byte.clone()); + match error_code { + ReactorErrorCode::OrderAlreadyFilled => { + info!( + "{} - Order already filled, skipping execution", + order_hash + ); + let metric_future = build_metric_future( + self.cloudwatch_client.clone(), + DimensionValue::PriorityExecutor, + CwMetrics::ExecutionSkippedAlreadyFilled(chain_id_u64), + 1.0, + ); + if let Some(metric_future) = metric_future { + send_metric_with_order_hash!(&order_hash, metric_future); + } + Err(anyhow::anyhow!("Order Already Filled")) + } + ReactorErrorCode::InvalidDeadline => { + info!( + "{} - Order past deadline, skipping execution", + order_hash + ); + let metric_future = build_metric_future( + self.cloudwatch_client.clone(), + DimensionValue::PriorityExecutor, + CwMetrics::ExecutionSkippedPastDeadline(chain_id_u64), + 1.0, + ); + if let Some(metric_future) = metric_future { + send_metric_with_order_hash!(&order_hash, metric_future); + } + Err(anyhow::anyhow!("Order Past Deadline")) + } + _ => Ok(1_000_000), } - Err(anyhow::anyhow!("Order Already Filled")) + } else { + warn!("{} - Unexpected error data: {:?}", order_hash, serde_value); + Ok(1_000_000) } - ReactorErrorCode::InvalidDeadline => { - info!("{} - Order past deadline, skipping execution", order_hash); - let metric_future = build_metric_future( - self.cloudwatch_client.clone(), - DimensionValue::PriorityExecutor, - CwMetrics::ExecutionSkippedPastDeadline(chain_id_u64), - 1.0, - ); - if let Some(metric_future) = metric_future { - send_metric_with_order_hash!(&order_hash, metric_future); - } - Err(anyhow::anyhow!("Order Past Deadline")) - } - _ => Ok(U256::from(2_000_000)), + } else { + warn!("{} - Failed to parse error data: {:?}", order_hash, err); + Ok(1_000_000) } } else { - warn!("Error estimating gas: {:?}", err); - Ok(U256::from(2_000_000)) + warn!("{} - Error estimating gas: {:?}", order_hash, err); + Ok(1_000_000) } }); @@ -189,10 +184,10 @@ where } }; - action.execution.tx.set_gas(gas_usage); + action.execution.tx.set_gas_limit(gas_usage); let bid_priority_fee; - let base_fee: U256 = self + let base_fee = self .client .get_gas_price() .await @@ -208,19 +203,26 @@ where bid_priority_fee = Some(U256::from(50)); } - let eip1559_tx = action.execution.tx.as_eip1559_mut(); - if let Some(eip1559_tx) = eip1559_tx { - eip1559_tx.max_fee_per_gas = Some(base_fee); - eip1559_tx.max_priority_fee_per_gas = bid_priority_fee; + if bid_priority_fee.is_none() { + info!( + "{} - No bid priority fee, indicating quote < amount_out_required; skipping", + order_hash + ); + return Err(anyhow::anyhow!("Quote < amount_out_required")); + } + + let mut tx_request = action.execution.tx.clone(); + tx_request.set_gas_limit(gas_usage); + tx_request.set_max_fee_per_gas(base_fee); + tx_request.set_max_priority_fee_per_gas(bid_priority_fee.unwrap().to()); + + if tx_request.complete_1559().is_ok() { + info!("{} - built eip1559 tx", order_hash); } else { return Err(anyhow::anyhow!("Transaction is not EIP1559")); } - action.execution.tx.set_gas(gas_usage); - let sender_client = self.sender_client.clone(); - let nonce_manager = sender_client.nonce_manager(address); - let signer = nonce_manager.with_signer(wallet); info!("{} - Executing tx from {:?}", order_hash, address); let metric_future = build_metric_future( @@ -233,36 +235,36 @@ where // do not block current thread by awaiting in the background send_metric_with_order_hash!(&order_hash, metric_future); } - let result = signer.send_transaction(action.execution.tx, None).await; + let result = sender_client.send_transaction(tx_request).await; // Block on pending transaction getting confirmations let (receipt, status) = match result { Ok(tx) => { - let receipt = tx.confirmations(1).await.map_err(|e| { - anyhow::anyhow!("{} - Error waiting for confirmations: {}", order_hash, e) - }); + let receipt = tx + .with_required_confirmations(1) + .get_receipt() + .await + .map_err(|e| { + anyhow::anyhow!("{} - Error waiting for confirmations: {}", order_hash, e) + }); match receipt { - Ok(Some(receipt)) => { - let status = receipt.status.unwrap_or_default(); + Ok(receipt) => { + let status = receipt.status(); info!( "{} - receipt: tx_hash: {:?}, status: {}", order_hash, receipt.transaction_hash, status, ); (Some(receipt), status) } - Ok(None) => { - warn!("{} - No receipt after confirmation", order_hash); - (None, ethers::types::U64::zero()) - } Err(e) => { warn!("{} - Error waiting for confirmations: {}", order_hash, e); - (None, ethers::types::U64::zero()) + (None, false) } } } Err(e) => { warn!("{} - Error sending transaction: {}", order_hash, e); - (None, ethers::types::U64::zero()) + (None, false) } }; @@ -282,7 +284,7 @@ where let metric_future = build_metric_future( self.cloudwatch_client.clone(), DimensionValue::PriorityExecutor, - receipt_status_to_metric(status.as_u64(), chain_id_u64), + receipt_status_to_metric(status, chain_id_u64), 1.0, ); if let Some(metric_future) = metric_future { @@ -291,14 +293,18 @@ where } } - if let Some(TransactionReceipt { - block_number: Some(block_number), + if let Some(WithOtherFields { + inner: + TransactionReceipt::<_> { + block_number: Some(block_number), + .. + }, .. }) = receipt { let balance_eth = self .client - .get_balance(address, Some(block_number.into())) + .get_balance(address) .await .map_or_else(|_| None, |v| Some(format_units(v, "ether").unwrap())); @@ -309,7 +315,7 @@ where "{}- balance: {} at block {}", order_hash, balance_eth.clone(), - block_number.as_u64() + block_number ); let metric_future = build_metric_future( self.cloudwatch_client.clone(), diff --git a/src/executors/queued_executor.rs b/src/executors/queued_executor.rs index d8098ce..dd06057 100644 --- a/src/executors/queued_executor.rs +++ b/src/executors/queued_executor.rs @@ -1,23 +1,35 @@ use crate::executors::public_1559_executor::Public1559Executor; use crate::strategies::keystore::KeyStore; use crate::strategies::types::SubmitTxToMempoolWithExecutionMetadata; +use alloy::network::AnyNetwork; +use alloy::providers::Provider; +use alloy::transports::Transport; use artemis_core::types::Executor; use async_trait::async_trait; use aws_sdk_cloudwatch::Client as CloudWatchClient; -use ethers::providers::Middleware; +use std::marker::PhantomData; use std::sync::Arc; -pub struct QueuedExecutor { - provider: Arc, - sender_client: Arc, +pub struct QueuedExecutor +where + P: Provider + 'static, + T: Transport + Clone + 'static, +{ + provider: Arc

, + sender_client: Arc

, key_store: Arc, cloudwatch_client: Option>, + _transport: PhantomData, } -impl QueuedExecutor { +impl QueuedExecutor +where + P: Provider + 'static, + T: Transport + Clone + 'static, +{ pub fn new( - provider: Arc, - sender_client: Arc, + provider: Arc

, + sender_client: Arc

, key_store: Arc, cloudwatch_client: Option>, ) -> Self { @@ -26,23 +38,22 @@ impl QueuedExecutor { sender_client, key_store, cloudwatch_client, + _transport: PhantomData, } } } #[async_trait] -impl Executor for QueuedExecutor +impl Executor for QueuedExecutor where - M: Middleware + 'static, - M::Error: 'static, - N: Middleware + 'static, - N::Error: 'static, + P: Provider + 'static, + T: Transport + Clone + 'static, { async fn execute( &self, action: SubmitTxToMempoolWithExecutionMetadata, ) -> Result<(), anyhow::Error> { - let public_executor = Public1559Executor::::new( + let public_executor = Public1559Executor::::new( self.provider.clone(), self.sender_client.clone(), self.key_store.clone(), diff --git a/src/strategies/dutchv3_strategy.rs b/src/strategies/dutchv3_strategy.rs index 731c48a..1fdca7d 100644 --- a/src/strategies/dutchv3_strategy.rs +++ b/src/strategies/dutchv3_strategy.rs @@ -7,23 +7,26 @@ use crate::collectors::{ uniswapx_order_collector::UniswapXOrder, uniswapx_route_collector::{OrderBatchData, OrderData, RoutedOrder}, }; -use alloy_primitives::Uint; +use alloy::{ + hex, + network::AnyNetwork, + primitives::{Address, Bytes, Uint, U128, U256}, + providers::Provider, + rpc::types::Filter, + transports::Transport, +}; use anyhow::Result; use artemis_core::executors::mempool_executor::{GasBidInfo, SubmitTxToMempool}; use artemis_core::types::Strategy; use async_trait::async_trait; -use bindings_uniswapx::shared_types::SignedOrder; -use ethers::{ - providers::Middleware, - types::{Address, Bytes, Filter, U256}, - utils::hex, -}; -use std::error::Error; +use bindings_uniswapx::basereactor::BaseReactor::SignedOrder; + use std::str::FromStr; use std::{ collections::{HashMap, HashSet}, fmt::Debug, }; +use std::{error::Error, marker::PhantomData}; use std::{ ops::{Div, Mul}, sync::Arc, @@ -39,13 +42,13 @@ const REACTOR_ADDRESS: &str = "0xB274d5F4b833b61B340b654d600A864fB604a87c"; #[derive(Debug)] #[allow(dead_code)] -pub struct UniswapXDutchV3Fill { +pub struct UniswapXDutchV3Fill { /// Ethers client. - client: Arc, + client: Arc

, /// executor address executor_address: String, /// Amount of profits to bid in gas - bid_percentage: u64, + bid_percentage: u128, last_block_number: u64, last_block_timestamp: u64, // map of open order hashes to order data @@ -58,11 +61,16 @@ pub struct UniswapXDutchV3Fill { route_receiver: Receiver, sender_address: String, chain_id: u64, + _transport: PhantomData, } -impl UniswapXDutchV3Fill { +impl UniswapXDutchV3Fill +where + P: Provider, + T: Transport + Clone, +{ pub fn new( - client: Arc, + client: Arc

, config: Config, sender: Sender>, receiver: Receiver, @@ -84,12 +92,17 @@ impl UniswapXDutchV3Fill { route_receiver: receiver, sender_address, chain_id, + _transport: PhantomData, } } } #[async_trait] -impl Strategy for UniswapXDutchV3Fill { +impl Strategy for UniswapXDutchV3Fill +where + P: Provider + 'static, + T: Transport + Clone + 'static, +{ // In order to sync this strategy, we need to get the current bid for all Sudo pools. async fn sync_state(&mut self) -> Result<()> { info!("syncing state"); @@ -98,7 +111,7 @@ impl Strategy for UniswapXDutchV3Fill } // Process incoming events, seeing if we can arb new orders, and updating the internal state on new blocks. - async fn process_event(&mut self, event: Event) -> Option { + async fn process_event(&mut self, event: Event) -> Vec { match event { Event::UniswapXOrder(order) => self.process_order_event(&order).await, Event::NewBlock(block) => self.process_new_block_event(&block).await, @@ -107,14 +120,18 @@ impl Strategy for UniswapXDutchV3Fill } } -impl UniswapXStrategy for UniswapXDutchV3Fill {} +impl UniswapXStrategy for UniswapXDutchV3Fill {} struct DutchV3OrderWrapper { inner: V3DutchOrder, encoded_order: String, } -impl UniswapXDutchV3Fill { +impl UniswapXDutchV3Fill +where + P: Provider, + T: Transport + Clone, +{ fn decode_order(&self, encoded_order: &str) -> Result> { let encoded_order = if let Some(stripped) = encoded_order.strip_prefix("0x") { stripped @@ -191,22 +208,18 @@ impl UniswapXDutchV3Fill { let action = Some(Action::SubmitTx(SubmitTxToMempool { tx: tx.clone(), gas_bid_info: Some(GasBidInfo { - bid_percentage: self.bid_percentage, - total_profit: profit, + bid_percentage: U128::from(self.bid_percentage), + total_profit: profit.to(), }), })); // Must be able to cover min gas cost let sender_address = Address::from_str(&self.sender_address).unwrap(); tx.set_from(sender_address); - let gas_usage = self - .client - .estimate_gas(&tx, None) - .await - .unwrap_or_else(|err| { - info!("Error estimating gas: {}", err); - U256::from(1_000_000) - }); + let gas_usage = self.client.estimate_gas(&tx).await.unwrap_or_else(|err| { + info!("Error estimating gas: {}", err); + 1_000_000 + }); // Get the current min gas price let min_gas_price = self .get_arbitrum_min_gas_price(self.client.clone()) @@ -214,9 +227,11 @@ impl UniswapXDutchV3Fill { .unwrap_or(U256::from(10_000_000)); // gas price at which we'd break even, meaning 100% of profit goes to validator - let breakeven_gas_price = profit / gas_usage; + let breakeven_gas_price = profit / U256::from(gas_usage); // gas price corresponding to bid percentage - let bid_gas_price = breakeven_gas_price.mul(self.bid_percentage).div(100); + let bid_gas_price = breakeven_gas_price + .mul(U256::from(self.bid_percentage)) + .div(U256::from(100)); if bid_gas_price < min_gas_price { info!( "Bid gas price {} is less than min gas price {}, skipping", @@ -236,8 +251,8 @@ impl UniswapXDutchV3Fill { /// Process new block events, updating the internal state. async fn process_new_block_event(&mut self, event: &NewBlock) -> Option { - self.last_block_number = event.number.as_u64(); - self.last_block_timestamp = event.timestamp.as_u64(); + self.last_block_number = event.number; + self.last_block_timestamp = event.timestamp; info!( "Processing block {} at {}, Order set sizes -- open: {}, processing: {}, done: {}", @@ -328,7 +343,7 @@ impl UniswapXDutchV3Fill { // early return on error let logs = self.client.get_logs(&filter).await?; for log in logs { - let order_hash = format!("0x{:x}", log.topics[1]); + let order_hash = format!("0x{:x}", log.topics()[1]); // remove from open info!("{} - Removing filled order", order_hash); self.open_orders.remove(&order_hash); diff --git a/src/strategies/priority_strategy.rs b/src/strategies/priority_strategy.rs index a3b2446..e1e339e 100644 --- a/src/strategies/priority_strategy.rs +++ b/src/strategies/priority_strategy.rs @@ -13,22 +13,24 @@ use crate::{ }, strategies::types::SubmitTxToMempoolWithExecutionMetadata, }; -use alloy_primitives::Uint; +use alloy::{ + hex, + network::AnyNetwork, + primitives::{Address, Bytes, Uint, U128, U256, U64}, + providers::Provider, + rpc::types::Filter, + transports::Transport, +}; use anyhow::Result; use artemis_core::executors::mempool_executor::{GasBidInfo, SubmitTxToMempool}; use artemis_core::types::Strategy; use async_trait::async_trait; use aws_sdk_cloudwatch::Client as CloudWatchClient; -use bindings_uniswapx::shared_types::SignedOrder; +use bindings_uniswapx::basereactor::BaseReactor::SignedOrder; use dashmap::DashMap; -use ethers::{ - providers::Middleware, - types::{Address, Bytes, Filter, U256, U64}, - utils::hex, -}; -use std::error::Error; use std::str::FromStr; use std::sync::Arc; +use std::{error::Error, marker::PhantomData}; use tokio::sync::{ mpsc::{Receiver, Sender}, RwLock, @@ -69,7 +71,7 @@ impl ExecutionMetadata { } } - pub fn calculate_priority_fee(&self, bid_percentage: u64) -> Option { + pub fn calculate_priority_fee(&self, bid_percentage: U128) -> Option { if self.quote.le(&self.amount_out_required) { return None; } @@ -88,9 +90,9 @@ impl ExecutionMetadata { #[derive(Debug)] #[allow(dead_code)] -pub struct UniswapXPriorityFill { +pub struct UniswapXPriorityFill { /// Ethers client. - client: Arc, + client: Arc

, // AWS Cloudwatch CLient for metrics propagation cloudwatch_client: Option>, /// executor address @@ -108,11 +110,16 @@ pub struct UniswapXPriorityFill { batch_sender: Sender>, route_receiver: Receiver, chain_id: u64, + _transport: PhantomData, } -impl UniswapXPriorityFill { +impl UniswapXPriorityFill +where + P: Provider + 'static, + T: Transport + Clone + 'static, +{ pub fn new( - client: Arc, + client: Arc

, cloudwatch_client: Option>, config: Config, sender: Sender>, @@ -134,12 +141,17 @@ impl UniswapXPriorityFill { batch_sender: sender, route_receiver: receiver, chain_id, + _transport: PhantomData, } } } #[async_trait] -impl Strategy for UniswapXPriorityFill { +impl Strategy for UniswapXPriorityFill +where + P: Provider + 'static, + T: Transport + Clone + 'static, +{ async fn sync_state(&mut self) -> Result<()> { info!("syncing state"); @@ -147,7 +159,7 @@ impl Strategy for UniswapXPriorityFill Option { + async fn process_event(&mut self, event: Event) -> Vec { match event { Event::UniswapXOrder(order) => self.process_order_event(&order).await, Event::NewBlock(block) => self.process_new_block_event(&block).await, @@ -156,9 +168,13 @@ impl Strategy for UniswapXPriorityFill UniswapXStrategy for UniswapXPriorityFill {} +impl UniswapXStrategy for UniswapXPriorityFill {} -impl UniswapXPriorityFill { +impl UniswapXPriorityFill +where + P: Provider + 'static, + T: Transport + Clone + 'static, +{ pub fn get_new_order(&self, hash: &str) -> Option { self.new_orders.get(hash).map(|entry| entry.value().clone()) } @@ -189,13 +205,13 @@ impl UniswapXPriorityFill { /// - skip if we have already processed this order /// - immediately send for execution if order is fillable /// - otherwise add to new_orders to be processed on new block event - async fn process_order_event(&self, event: &UniswapXOrder) -> Option { + async fn process_order_event(&self, event: &UniswapXOrder) -> Vec { if *self.last_block_timestamp.read().await == 0 { info!( "{} - skipping processing new order event (no timestamp)", event.order_hash ); - return None; + return vec![]; } if self.new_orders.contains_key(&event.order_hash) || self.processing_orders.contains_key(&event.order_hash) @@ -204,13 +220,14 @@ impl UniswapXPriorityFill { "{} - skipping processing new order event (already tracking)", event.order_hash ); - return None; + return vec![]; } let order = self .decode_order(&event.encoded_order) .map_err(|e| error!("failed to decode: {}", e)) - .ok()?; + .ok() + .unwrap(); let order_hash = event.order_hash.clone(); let resolved_order = order.resolve( @@ -232,7 +249,7 @@ impl UniswapXPriorityFill { "{} - New order processing already done, skipping", order_hash ); - return None; + return vec![]; } let order_data = OrderData { order: Order::PriorityOrder(order), @@ -276,10 +293,10 @@ impl UniswapXPriorityFill { } } - None + vec![] } - async fn process_new_route(&mut self, event: &RoutedOrder) -> Option { + async fn process_new_route(&mut self, event: &RoutedOrder) -> Vec { if event .request .orders @@ -323,9 +340,9 @@ impl UniswapXPriorityFill { .await .ok()?, gas_bid_info: Some(GasBidInfo { - bid_percentage: self.bid_percentage, + bid_percentage: U128::from(self.bid_percentage), // this field is not used for priority orders - total_profit: U256::from(0), + total_profit: U128::from(0), }), }, metadata, @@ -342,8 +359,8 @@ impl UniswapXPriorityFill { /// - check new_orders for orders that are now fillable and send for execution /// - prune done orders async fn process_new_block_event(&mut self, event: &NewBlock) -> Option { - *self.last_block_number.write().await = event.number.as_u64(); - *self.last_block_timestamp.write().await = event.timestamp.as_u64(); + *self.last_block_number.write().await = event.number; + *self.last_block_timestamp.write().await = event.timestamp; info!( "Processing block {} at {}, Order set sizes -- open: {}, processing: {}, done: {}", @@ -373,7 +390,7 @@ impl UniswapXPriorityFill { DimensionName::Service.as_ref(), DimensionValue::PriorityExecutor.as_ref(), ) - .with_value(event.number.as_u64() as f64) + .with_value(event.number as f64) .build(), ) .send(); @@ -438,7 +455,7 @@ impl UniswapXPriorityFill { }); for log in logs { - let order_hash = format!("0x{:x}", log.topics[1]); + let order_hash = format!("0x{:x}", log.topics()[1]); info!( "{} - Removing filled order from processing_orders", order_hash @@ -480,7 +497,7 @@ impl UniswapXPriorityFill { order_hash: request.orders[0].hash.clone(), // Conversion between alloy and ethers.rs types // TODO: fully migrate to alloy - target_block: target_block.map(|b| U64::from(U256(b.into_limbs()).as_u64())), + target_block: target_block.map(|b| U64::from(b)), } }) } diff --git a/src/strategies/shared.rs b/src/strategies/shared.rs index 3e12dce..9f869dc 100644 --- a/src/strategies/shared.rs +++ b/src/strategies/shared.rs @@ -1,17 +1,27 @@ use crate::collectors::uniswapx_route_collector::RoutedOrder; +use alloy::{ + consensus::TypedTransaction, + dyn_abi::{abi::Token, DynSolType, DynSolValue}, + network::AnyNetwork, + primitives::{Address, U256}, + providers::{DynProvider, Provider}, + sol, + transports::Transport, +}; +use alloy_primitives::Bytes; use anyhow::Result; use async_trait::async_trait; use bindings_uniswapx::{ - erc20::ERC20, shared_types::SignedOrder, swap_router_02_executor::SwapRouter02Executor, -}; -use ethers::{ - abi::{ethabi, ParamType, Token}, - providers::Middleware, - types::{ - transaction::eip2718::TypedTransaction, Address, Bytes, Eip1559TransactionRequest, H160, - U256, - }, + basereactor::BaseReactor::SignedOrder, erc20::ERC20, swaprouter02executor::SwapRouter02Executor, }; +//use ethers::{ +// abi::{ethabi, ParamType, Token}, +// providers::Middleware, +// types::{ +// transaction::eip2718::TypedTransaction, Address, Bytes, Eip1559TransactionRequest, H160, +// U256, +// }, +//}; use std::sync::Arc; use std::{ str::FromStr, @@ -21,23 +31,43 @@ use std::{ const REACTOR_ADDRESS: &str = "0x00000011F84B9aa48e5f8aA8B9897600006289Be"; const SWAPROUTER_02_ADDRESS: &str = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"; pub const WETH_ADDRESS: &str = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +const ARBITRUM_GAS_PRECOMPILE: &str = "0x000000000000000000000000000000000000006C"; + +sol! { + #[allow(missing_docs)] + #[sol(rpc)] + contract GasPrecompileContract { + function getMinimumGasPrice() external view returns (uint256); + } +} #[async_trait] -pub trait UniswapXStrategy { +pub trait UniswapXStrategy +{ // builds a transaction to fill an order async fn build_fill( &self, - client: Arc, + client: Arc>, executor_address: &str, signed_orders: Vec, RoutedOrder { request, route, .. }: &RoutedOrder, ) -> Result { - let chain_id: U256 = client.get_chainid().await?; + let multicall_type: DynSolType = DynSolType::Tuple(vec![ + DynSolType::Uint(256), + DynSolType::Array(Box::new(DynSolType::Bytes)), + ]); + + let calldata_type: DynSolType = DynSolType::Tuple(vec![ + DynSolType::Array(Box::new(DynSolType::Address)), + DynSolType::Array(Box::new(DynSolType::Address)), + DynSolType::Array(Box::new(DynSolType::Bytes)), + ]); + let chain_id = client.get_chain_id().await?; let fill_contract = - SwapRouter02Executor::new(H160::from_str(executor_address)?, client.clone()); + SwapRouter02Executor::new(Address::from_str(executor_address)?, client.clone()); - let token_in: H160 = H160::from_str(&request.token_in)?; - let token_out: H160 = H160::from_str(&request.token_out)?; + let token_in = Address::from_str(&request.token_in)?; + let token_out = Address::from_str(&request.token_out)?; let swaprouter_02_approval = self .get_tokens_to_approve( @@ -56,16 +86,18 @@ pub trait UniswapXStrategy { let multicall_bytes = &route.method_parameters.calldata[10..]; // Decode multicall into [Uint256, bytes[]] (deadline, multicallData) - let decoded_multicall_bytes = ethabi::decode( - &[ - ParamType::Uint(256), - ParamType::Array(Box::new(ParamType::Bytes)), - ], + let decoded_multicall_bytes = multicall_type.abi_decode( &Bytes::from_str(multicall_bytes).expect("Failed to decode multicall bytes"), ); let decoded_multicall_bytes = match decoded_multicall_bytes { - Ok(data) => data[1].clone(), // already in bytes[] + Ok(data) => { + if let DynSolValue::Tuple(values) = data { + values[1].clone() + } else { + return Err(anyhow::anyhow!("Failed to decode multicall bytes")); + } + } Err(e) => { return Err(anyhow::anyhow!("Failed to decode multicall bytes: {}", e)); } @@ -73,13 +105,21 @@ pub trait UniswapXStrategy { // abi encode as [tokens to approve to swap router 02, tokens to approve to reactor, multicall data] // [address[], address[], bytes[]] - let calldata = ethabi::encode(&[ - Token::Array(swaprouter_02_approval), - Token::Array(reactor_approval), - decoded_multicall_bytes, + let calldata = DynSolValue::Tuple(vec![ + DynSolValue::Array(swaprouter_02_approval.iter().map(|a| DynSolValue::Address(a.clone())).collect()), + DynSolValue::Array(reactor_approval.iter().map(|a| DynSolValue::Address(a.clone())).collect()), + DynSolValue::Array(vec![decoded_multicall_bytes]), ]); - let mut call = fill_contract.execute_batch(signed_orders, Bytes::from(calldata)); - Ok(call.tx.set_chain_id(chain_id.as_u64()).clone()) + let encoded_calldata = calldata.abi_encode(); + let orders: Vec = + signed_orders.into_iter().map(|order| { + SwapRouter02Executor::SignedOrder { + order: order.order, + sig: order.sig, + } + }).collect(); + let mut call = fill_contract.executeBatch(orders, Bytes::from(encoded_calldata)); + Ok(call.tx.set_chain_id(chain_id).clone()) } fn current_timestamp(&self) -> Result { @@ -89,24 +129,24 @@ pub trait UniswapXStrategy { async fn get_tokens_to_approve( &self, - client: Arc, + client: Arc

, token: Address, from: &str, to: &str, - ) -> Result, anyhow::Error> { + ) -> Result, anyhow::Error> { if token == Address::zero() { return Ok(vec![]); } let token_contract = ERC20::new(token, client.clone()); let allowance = token_contract .allowance( - H160::from_str(from).expect("Error encoding from address"), - H160::from_str(to).expect("Error encoding from address"), + Address::from_str(from).expect("Error encoding from address"), + Address::from_str(to).expect("Error encoding from address"), ) .await .expect("Failed to get allowance"); if allowance < U256::MAX / 2 { - Ok(vec![Token::Address(token)]) + Ok(vec![token]) } else { Ok(vec![]) } @@ -135,28 +175,11 @@ pub trait UniswapXStrategy { /// Get the minimum gas price on Arbitrum /// https://docs.arbitrum.io/build-decentralized-apps/precompiles/reference#arbgasinfo - async fn get_arbitrum_min_gas_price(&self, client: Arc) -> Result { - const ARBITRUM_GAS_PRECOMPILE: &str = "0x000000000000000000000000000000000000006C"; - + async fn get_arbitrum_min_gas_price(&self, client: Arc

) -> Result { let precompile_address = ARBITRUM_GAS_PRECOMPILE.parse::

()?; - #[allow(deprecated)] - let data = ethers::abi::Function { - name: "getMinimumGasPrice".to_string(), - inputs: vec![], - outputs: vec![ethers::abi::Param { - name: "".to_string(), - kind: ethers::abi::ParamType::Uint(256), - internal_type: None, - }], - constant: Some(true), - state_mutability: ethers::abi::StateMutability::View, - } - .encode_input(&[])?; - let tx = Eip1559TransactionRequest::new() - .to(precompile_address) - .data(data); - let result = client.call(&TypedTransaction::Eip1559(tx), None).await?; + let gas_precompile = GasPrecompileContract::new(precompile_address, client.clone()); + let gas_info = gas_precompile.getMinimumGasPrice().call().await?._0; - Ok(U256::from_big_endian(&result.0)) + Ok(gas_info) } } diff --git a/src/strategies/uniswapx_strategy.rs b/src/strategies/uniswapx_strategy.rs index 07cf3eb..f4557c5 100644 --- a/src/strategies/uniswapx_strategy.rs +++ b/src/strategies/uniswapx_strategy.rs @@ -11,22 +11,29 @@ use crate::{ }, shared::send_metric_with_order_hash, }; -use alloy_primitives::Uint; +use alloy::{ + hex, + network::AnyNetwork, + primitives::{Address, Bytes, Uint, U128, U256}, + providers::Provider, + rpc::types::Filter, + transports::Transport, +}; use anyhow::Result; use artemis_core::executors::mempool_executor::{GasBidInfo, SubmitTxToMempool}; use artemis_core::types::Strategy; use async_trait::async_trait; use aws_sdk_cloudwatch::Client as CloudWatchClient; -use bindings_uniswapx::shared_types::SignedOrder; -use ethers::{ - providers::Middleware, - types::{Address, Bytes, Filter}, - utils::hex, -}; -use std::error::Error; +use bindings_uniswapx::basereactor::BaseReactor::SignedOrder; +//use ethers::{ +// providers::Middleware, +// types::{Address, Bytes, Filter}, +// utils::hex, +//}; use std::str::FromStr; use std::sync::Arc; use std::{collections::HashMap, fmt::Debug}; +use std::{error::Error, marker::PhantomData}; use tokio::sync::mpsc::{Receiver, Sender}; use tracing::{error, info}; use uniswapx_rs::order::{Order, OrderResolution, V2DutchOrder}; @@ -39,9 +46,13 @@ const REACTOR_ADDRESS: &str = "0x00000011F84B9aa48e5f8aA8B9897600006289Be"; #[derive(Debug)] #[allow(dead_code)] -pub struct UniswapXUniswapFill { +pub struct UniswapXUniswapFill +where + P: Provider, + T: Transport + Clone, +{ /// Ethers client. - client: Arc, + client: Arc

, /// executor address executor_address: String, /// Amount of profits to bid in gas @@ -56,11 +67,16 @@ pub struct UniswapXUniswapFill { route_receiver: Receiver, cloudwatch_client: Option>, chain_id: u64, + _transport: PhantomData, } -impl UniswapXUniswapFill { +impl UniswapXUniswapFill +where + P: Provider, + T: Transport + Clone, +{ pub fn new( - client: Arc, + client: Arc

, config: Config, sender: Sender>, receiver: Receiver, @@ -81,12 +97,17 @@ impl UniswapXUniswapFill { route_receiver: receiver, cloudwatch_client, chain_id, + _transport: PhantomData, } } } #[async_trait] -impl Strategy for UniswapXUniswapFill { +impl Strategy for UniswapXUniswapFill +where + P: Provider, + T: Transport + Clone, +{ // In order to sync this strategy, we need to get the current bid for all Sudo pools. async fn sync_state(&mut self) -> Result<()> { info!("syncing state"); @@ -95,7 +116,7 @@ impl Strategy for UniswapXUniswapFill } // Process incoming events, seeing if we can arb new orders, and updating the internal state on new blocks. - async fn process_event(&mut self, event: Event) -> Option { + async fn process_event(&mut self, event: Event) -> Vec { match event { Event::UniswapXOrder(order) => self.process_order_event(&order).await, Event::NewBlock(block) => self.process_new_block_event(&block).await, @@ -104,9 +125,13 @@ impl Strategy for UniswapXUniswapFill } } -impl UniswapXStrategy for UniswapXUniswapFill {} +impl UniswapXStrategy for UniswapXUniswapFill {} -impl UniswapXUniswapFill { +impl UniswapXUniswapFill +where + P: Provider + 'static, + T: Transport + Clone + 'static, +{ fn decode_order(&self, encoded_order: &str) -> Result> { let encoded_order = if let Some(stripped) = encoded_order.strip_prefix("0x") { stripped From 995a166cda0e763c19118e30e17d2abca4c23242 Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Tue, 18 Feb 2025 15:07:28 -0800 Subject: [PATCH 03/15] build pass --- src/executors/protect_executor.rs | 160 +++++++++++------------- src/executors/public_1559_executor.rs | 2 +- src/executors/queued_executor.rs | 35 ++---- src/main.rs | 64 ++++------ src/strategies/dutchv3_strategy.rs | 173 +++++++++++++------------- src/strategies/priority_strategy.rs | 98 +++++++-------- src/strategies/shared.rs | 62 ++++----- src/strategies/types.rs | 2 +- src/strategies/uniswapx_strategy.rs | 142 ++++++++++----------- 9 files changed, 344 insertions(+), 394 deletions(-) diff --git a/src/executors/protect_executor.rs b/src/executors/protect_executor.rs index bbdb56c..991d5a6 100644 --- a/src/executors/protect_executor.rs +++ b/src/executors/protect_executor.rs @@ -1,19 +1,13 @@ -use alloy_primitives::utils::format_units; -use serde_json::Value; -use std::{ - marker::PhantomData, - ops::{Div, Mul}, - sync::Arc, -}; +use alloy_primitives::{utils::format_units, U128}; +use std::sync::Arc; use tracing::{info, warn}; use alloy::{ - network::AnyNetwork, - primitives::{U256, U64}, - providers::Provider, + network::{AnyNetwork, ReceiptResponse, TransactionBuilder}, + providers::{DynProvider, Provider}, rpc::types::TransactionReceipt, - signers::local::PrivateKeySigner, - transports::Transport, + serde::WithOtherFields, + signers::{local::PrivateKeySigner, Signer}, }; use anyhow::Result; use artemis_core::executors::mempool_executor::SubmitTxToMempool; @@ -31,22 +25,17 @@ use crate::{ }; /// An executor that sends transactions to the mempool. -pub struct ProtectExecutor { - client: Arc

, - sender_client: Arc

, +pub struct ProtectExecutor { + client: Arc>, + sender_client: Arc>, key_store: Arc, cloudwatch_client: Option>, - _transport: PhantomData, } -impl ProtectExecutor -where - P: Provider, - T: Transport + Clone, -{ +impl ProtectExecutor { pub fn new( - client: Arc

, - sender_client: Arc

, + client: Arc>, + sender_client: Arc>, key_store: Arc, cloudwatch_client: Option>, ) -> Self { @@ -55,17 +44,12 @@ where sender_client, key_store, cloudwatch_client, - _transport: PhantomData, } } } #[async_trait] -impl Executor for ProtectExecutor -where - P: Provider, - T: Transport + Clone, -{ +impl Executor for ProtectExecutor { /// Send a transaction to the mempool. async fn execute(&self, mut action: SubmitTxToMempool) -> Result<()> { let chain_id = action @@ -107,71 +91,79 @@ where .as_str() .parse::() .unwrap() - .with_chain_id(chain_id); + .with_chain_id(Some(chain_id)); let address = wallet.address(); action.tx.set_from(address); let gas_usage_result = self.client.estimate_gas(&action.tx).await.or_else(|err| { - if let Some(Value::String(four_byte)) = err.as_error_response().unwrap().data.clone() { - let error_code = ReactorErrorCode::from(four_byte.clone()); - match error_code { - ReactorErrorCode::OrderAlreadyFilled => { - info!("Order already filled, skipping execution"); - let metric_future = build_metric_future( - self.cloudwatch_client.clone(), - DimensionValue::V3Executor, - CwMetrics::ExecutionSkippedAlreadyFilled(chain_id), - 1.0, - ); - if let Some(metric_future) = metric_future { - send_metric!(metric_future); - } - Err(anyhow::anyhow!("Order Already Filled")) - } - ReactorErrorCode::InvalidDeadline => { - info!("Order past deadline, skipping execution"); - let metric_future = build_metric_future( - self.cloudwatch_client.clone(), - DimensionValue::V3Executor, - CwMetrics::ExecutionSkippedPastDeadline(chain_id), - 1.0, - ); - if let Some(metric_future) = metric_future { - send_metric!(metric_future); + if let Some(raw) = &err.as_error_resp().unwrap().data { + if let Ok(serde_value) = serde_json::from_str::(raw.get()) { + if let serde_json::Value::String(four_byte) = serde_value { + let error_code = ReactorErrorCode::from(four_byte.clone()); + match error_code { + ReactorErrorCode::OrderAlreadyFilled => { + info!("Order already filled, skipping execution"); + let metric_future = build_metric_future( + self.cloudwatch_client.clone(), + DimensionValue::V3Executor, + CwMetrics::ExecutionSkippedAlreadyFilled(chain_id), + 1.0, + ); + if let Some(metric_future) = metric_future { + send_metric!(metric_future); + } + Err(anyhow::anyhow!("Order Already Filled")) + } + ReactorErrorCode::InvalidDeadline => { + info!("Order past deadline, skipping execution"); + let metric_future = build_metric_future( + self.cloudwatch_client.clone(), + DimensionValue::V3Executor, + CwMetrics::ExecutionSkippedPastDeadline(chain_id), + 1.0, + ); + if let Some(metric_future) = metric_future { + send_metric!(metric_future); + } + Err(anyhow::anyhow!("Order Past Deadline")) + } + _ => Ok(1_000_000), } - Err(anyhow::anyhow!("Order Past Deadline")) + } else { + warn!("Unexpected error data: {:?}", serde_value); + Ok(1_000_000) } - _ => Ok(U256::from(1_000_000)), + } else { + warn!("Error estimating gas: {:?}", err); + Ok(1_000_000) } } else { warn!("Error estimating gas: {:?}", err); - Ok(U256::from(1_000_000)) + Ok(1_000_000) } }); info!("Gas Usage {:?}", gas_usage_result); - let gas_usage = gas_usage_result; + let gas_usage = gas_usage_result.unwrap_or(1_000_000); let bid_gas_price; if let Some(gas_bid_info) = action.gas_bid_info { // gas price at which we'd break even, meaning 100% of profit goes to validator - let breakeven_gas_price = gas_bid_info.total_profit / gas_usage?; + let breakeven_gas_price = gas_bid_info.total_profit / U128::from(gas_usage); // gas price corresponding to bid percentage bid_gas_price = breakeven_gas_price - .mul(gas_bid_info.bid_percentage) - .div(100); + * gas_bid_info.bid_percentage + / U128::from(100); } else { bid_gas_price = self .client .get_gas_price() .await - .map_err(|err| anyhow::anyhow!("Error getting gas price: {}", err))?; + .map_or_else(|_| U128::from(1), |v| U128::from(v)); } info!("bid_gas_price: {}", bid_gas_price); - action.tx.set_gas_price(bid_gas_price); + action.tx.set_gas_price(bid_gas_price.to()); let sender_client = self.sender_client.clone(); - let nonce_manager = sender_client.nonce_manager(address); - let signer = nonce_manager.with_signer(wallet); info!("Executing tx {:?}", action.tx); let chain_id = action @@ -191,37 +183,35 @@ where // do not block current thread by awaiting in the background send_metric!(metric_future); } - let result = signer.send_transaction(action.tx, None).await; + + let result = sender_client.send_transaction(action.tx).await; // Block on pending transaction getting confirmations let (receipt, status) = match result { Ok(tx) => { let receipt = tx - .confirmations(1) + .with_required_confirmations(1) + .get_receipt() .await .map_err(|e| anyhow::anyhow!("Error waiting for confirmations: {}", e)); match receipt { - Ok(Some(receipt)) => { - let status = receipt.status.unwrap_or_default(); + Ok(receipt) => { + let status = receipt.status(); info!( "receipt: tx_hash: {:?}, status: {}", receipt.transaction_hash, status, ); (Some(receipt), status) } - Ok(None) => { - warn!("No receipt after confirmation"); - (None, U64::zero()) - } Err(e) => { warn!("Error waiting for confirmations: {}", e); - (None, U64::zero()) + (None, false) } } } Err(e) => { warn!("Error sending transaction: {}", e); - (None, U64::zero()) + (None, false) } }; @@ -240,7 +230,7 @@ where let metric_future = build_metric_future( self.cloudwatch_client.clone(), DimensionValue::V3Executor, - receipt_status_to_metric(status.as_u64(), chain_id), + receipt_status_to_metric(status, chain_id), 1.0, ); if let Some(metric_future) = metric_future { @@ -249,8 +239,12 @@ where } } - if let Some(TransactionReceipt { - block_number: Some(block_number), + if let Some(WithOtherFields { + inner: + TransactionReceipt::<_> { + block_number: Some(block_number), + .. + }, .. }) = receipt { @@ -263,11 +257,7 @@ where // TODO: use if-let chains when it becomes stable https://github.com/rust-lang/rust/issues/53667 // if let Some(balance_eth) = balance_eth && let Some(cw) = &self.cloudwatch_client { if let Some(balance_eth) = balance_eth { - info!( - "balance: {} at block {}", - balance_eth.clone(), - block_number.as_u64() - ); + info!("balance: {} at block {}", balance_eth.clone(), block_number); let metric_future = build_metric_future( self.cloudwatch_client.clone(), DimensionValue::V3Executor, diff --git a/src/executors/public_1559_executor.rs b/src/executors/public_1559_executor.rs index f0fe613..7a40926 100644 --- a/src/executors/public_1559_executor.rs +++ b/src/executors/public_1559_executor.rs @@ -4,7 +4,7 @@ use tracing::{info, warn}; use alloy::{ eips::{BlockId, BlockNumberOrTag}, network::{AnyNetwork, ReceiptResponse, TransactionBuilder}, - primitives::{utils::format_units, U256, U64}, + primitives::{utils::format_units, U256}, providers::{DynProvider, Provider}, rpc::types::TransactionReceipt, serde::WithOtherFields, diff --git a/src/executors/queued_executor.rs b/src/executors/queued_executor.rs index dd06057..4b34142 100644 --- a/src/executors/queued_executor.rs +++ b/src/executors/queued_executor.rs @@ -1,35 +1,23 @@ use crate::executors::public_1559_executor::Public1559Executor; use crate::strategies::keystore::KeyStore; use crate::strategies::types::SubmitTxToMempoolWithExecutionMetadata; -use alloy::network::AnyNetwork; -use alloy::providers::Provider; -use alloy::transports::Transport; +use alloy::{network::AnyNetwork, providers::DynProvider}; use artemis_core::types::Executor; use async_trait::async_trait; use aws_sdk_cloudwatch::Client as CloudWatchClient; -use std::marker::PhantomData; use std::sync::Arc; -pub struct QueuedExecutor -where - P: Provider + 'static, - T: Transport + Clone + 'static, -{ - provider: Arc

, - sender_client: Arc

, +pub struct QueuedExecutor { + provider: Arc>, + sender_client: Arc>, key_store: Arc, cloudwatch_client: Option>, - _transport: PhantomData, } -impl QueuedExecutor -where - P: Provider + 'static, - T: Transport + Clone + 'static, -{ +impl QueuedExecutor { pub fn new( - provider: Arc

, - sender_client: Arc

, + provider: Arc>, + sender_client: Arc>, key_store: Arc, cloudwatch_client: Option>, ) -> Self { @@ -38,22 +26,17 @@ where sender_client, key_store, cloudwatch_client, - _transport: PhantomData, } } } #[async_trait] -impl Executor for QueuedExecutor -where - P: Provider + 'static, - T: Transport + Clone + 'static, -{ +impl Executor for QueuedExecutor { async fn execute( &self, action: SubmitTxToMempoolWithExecutionMetadata, ) -> Result<(), anyhow::Error> { - let public_executor = Public1559Executor::::new( + let public_executor = Public1559Executor::new( self.provider.clone(), self.sender_client.clone(), self.key_store.clone(), diff --git a/src/main.rs b/src/main.rs index 312f13b..0973144 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,12 +8,17 @@ use collectors::{ block_collector::BlockCollector, uniswapx_order_collector::UniswapXOrderCollector, uniswapx_route_collector::UniswapXRouteCollector, }; -use ethers::utils::hex; -use ethers::{ - providers::{Http, Provider}, - signers::{LocalWallet, Signer}, +//use ethers::utils::hex; +//use ethers::{ +// providers::{Http, Provider}, +// signers::{LocalWallet, Signer}, +//}; +use alloy::{ + hex, + network::AnyNetwork, + providers::{DynProvider, ProviderBuilder, WsConnect}, + signers::local::PrivateKeySigner, }; -use executors::protect_executor::ProtectExecutor; use executors::queued_executor::QueuedExecutor; use std::collections::HashMap; use std::sync::Arc; @@ -46,13 +51,9 @@ pub mod strategies; .args(&["cloudwatch_metrics"]) ))] pub struct Args { - /// Ethereum node HTTP endpoint. + /// Ethereum node WSS endpoint. #[arg(long, required = true)] - pub http: String, - - /// MevBlocker HTTP endpoint - #[arg(long, required = false)] - pub mevblocker_http: Option, + pub wss: String, /// Private key for sending txs. #[arg(long, group = "key_source")] @@ -69,7 +70,7 @@ pub struct Args { /// Percentage of profit to pay in gas. #[arg(long, required = true)] - pub bid_percentage: u64, + pub bid_percentage: u128, /// Private key for sending txs. #[arg(long, required = true)] @@ -111,17 +112,9 @@ async fn main() -> Result<()> { // Set up ethers provider. let chain_id = args.chain_id; - let provider = Provider::::try_from(args.http.as_str()) - .expect("could not instantiate HTTP Provider"); - - let mevblocker_provider; - if let Some(mevblocker_http) = args.mevblocker_http { - mevblocker_provider = Provider::::try_from(mevblocker_http) - .expect("could not instantiate MevBlocker Provider"); - } else { - mevblocker_provider = Provider::::try_from(args.http.as_str()) - .expect("could not instantiate MevBlocker Provider"); - } + let provider = DynProvider::::new( + ProviderBuilder::new().network::().on_ws(WsConnect::new(args.wss.as_str())).await? + ); let mut key_store = Arc::new(KeyStore::new()); @@ -152,16 +145,15 @@ async fn main() -> Result<()> { } } else { let pk = args.private_key.clone().unwrap(); - let wallet: LocalWallet = pk.parse::().unwrap().with_chain_id(chain_id); + let wallet: PrivateKeySigner = pk.parse().expect("can not parse private key"); let address = wallet.address(); Arc::make_mut(&mut key_store) - .add_key(hex::encode(address.as_bytes()), pk) + .add_key(hex::encode(address), pk) .await; } info!("Key store initialized with {} keys", key_store.len()); let provider = Arc::new(provider); - let mevblocker_provider = Arc::new(mevblocker_provider); // Set up engine. let mut engine = Engine::default(); @@ -210,7 +202,7 @@ async fn main() -> Result<()> { match &args.order_type { OrderType::DutchV2 => { let uniswapx_strategy = UniswapXUniswapFill::new( - Arc::new(provider.clone()), + provider.clone(), config.clone(), batch_sender, route_receiver, @@ -221,7 +213,7 @@ async fn main() -> Result<()> { } OrderType::DutchV3 => { let uniswapx_strategy = UniswapXDutchV3Fill::new( - Arc::new(provider.clone()), + provider.clone(), config.clone(), batch_sender, route_receiver, @@ -232,7 +224,7 @@ async fn main() -> Result<()> { } OrderType::Priority => { let priority_strategy = UniswapXPriorityFill::new( - Arc::new(provider.clone()), + provider.clone(), cloudwatch_client.clone(), config.clone(), batch_sender, @@ -244,19 +236,6 @@ async fn main() -> Result<()> { } } - let protect_executor = Box::new(ProtectExecutor::new( - provider.clone(), - mevblocker_provider.clone(), - key_store.clone(), - cloudwatch_client.clone(), - )); - - let protect_executor = ExecutorMap::new(protect_executor, |action| match action { - Action::SubmitTx(tx) => Some(tx), - // No op for public transactions - _ => None, - }); - let queued_executor = Box::new(QueuedExecutor::new( provider.clone(), provider.clone(), @@ -270,7 +249,6 @@ async fn main() -> Result<()> { }); engine.add_executor(Box::new(queued_executor)); - engine.add_executor(Box::new(protect_executor)); // Start engine. match engine.run().await { diff --git a/src/strategies/dutchv3_strategy.rs b/src/strategies/dutchv3_strategy.rs index 1fdca7d..2c39a68 100644 --- a/src/strategies/dutchv3_strategy.rs +++ b/src/strategies/dutchv3_strategy.rs @@ -9,11 +9,10 @@ use crate::collectors::{ }; use alloy::{ hex, - network::AnyNetwork, + network::{AnyNetwork, TransactionBuilder}, primitives::{Address, Bytes, Uint, U128, U256}, - providers::Provider, + providers::{DynProvider, Provider}, rpc::types::Filter, - transports::Transport, }; use anyhow::Result; use artemis_core::executors::mempool_executor::{GasBidInfo, SubmitTxToMempool}; @@ -26,8 +25,8 @@ use std::{ collections::{HashMap, HashSet}, fmt::Debug, }; -use std::{error::Error, marker::PhantomData}; use std::{ + error::Error, ops::{Div, Mul}, sync::Arc, }; @@ -42,9 +41,9 @@ const REACTOR_ADDRESS: &str = "0xB274d5F4b833b61B340b654d600A864fB604a87c"; #[derive(Debug)] #[allow(dead_code)] -pub struct UniswapXDutchV3Fill { +pub struct UniswapXDutchV3Fill { /// Ethers client. - client: Arc

, + client: Arc>, /// executor address executor_address: String, /// Amount of profits to bid in gas @@ -61,16 +60,11 @@ pub struct UniswapXDutchV3Fill { route_receiver: Receiver, sender_address: String, chain_id: u64, - _transport: PhantomData, } -impl UniswapXDutchV3Fill -where - P: Provider, - T: Transport + Clone, -{ +impl UniswapXDutchV3Fill { pub fn new( - client: Arc

, + client: Arc>, config: Config, sender: Sender>, receiver: Receiver, @@ -92,17 +86,12 @@ where route_receiver: receiver, sender_address, chain_id, - _transport: PhantomData, } } } #[async_trait] -impl Strategy for UniswapXDutchV3Fill -where - P: Provider + 'static, - T: Transport + Clone + 'static, -{ +impl Strategy for UniswapXDutchV3Fill { // In order to sync this strategy, we need to get the current bid for all Sudo pools. async fn sync_state(&mut self) -> Result<()> { info!("syncing state"); @@ -120,18 +109,14 @@ where } } -impl UniswapXStrategy for UniswapXDutchV3Fill {} +impl UniswapXStrategy for UniswapXDutchV3Fill {} struct DutchV3OrderWrapper { inner: V3DutchOrder, encoded_order: String, } -impl UniswapXDutchV3Fill -where - P: Provider, - T: Transport + Clone, -{ +impl UniswapXDutchV3Fill { fn decode_order(&self, encoded_order: &str) -> Result> { let encoded_order = if let Some(stripped) = encoded_order.strip_prefix("0x") { stripped @@ -144,31 +129,34 @@ where } // Process new orders as they come in. - async fn process_order_event(&mut self, event: &UniswapXOrder) -> Option { + async fn process_order_event(&mut self, event: &UniswapXOrder) -> Vec { if self.last_block_timestamp == 0 || self.processing_orders.contains(&event.order_hash) { - return None; + return vec![]; } let order = self .decode_order(&event.encoded_order) .map_err(|e| error!("failed to decode: {}", e)) - .ok()?; - let wrapper = DutchV3OrderWrapper { - inner: order, - encoded_order: event.encoded_order.clone(), - }; - self.update_order_state(wrapper, &event.signature, &event.order_hash); - None + .ok(); + + if let Some(order) = order { + let wrapper = DutchV3OrderWrapper { + inner: order, + encoded_order: event.encoded_order.clone(), + }; + self.update_order_state(wrapper, &event.signature, &event.order_hash); + } + vec![] } - async fn process_new_route(&mut self, event: &RoutedOrder) -> Option { + async fn process_new_route(&mut self, event: &RoutedOrder) -> Vec { if event .request .orders .iter() .any(|o| self.done_orders.contains_key(&o.hash)) { - return None; + return vec![]; } let OrderBatchData { @@ -184,7 +172,7 @@ where .cloned() .collect(); if filtered_orders.is_empty() { - return None; + return vec![]; } if let Some(profit) = self.get_profit_eth(event) { @@ -195,62 +183,72 @@ where amount_out_required, profit ); - let signed_orders = self.get_signed_orders(filtered_orders.clone()).ok()?; - let mut tx = self + let signed_orders = self + .get_signed_orders(filtered_orders.clone()) + .unwrap_or_else(|e| { + error!("Error getting signed orders: {}", e); + vec![] + }); + let tx_request = self .build_fill( self.client.clone(), &self.executor_address, signed_orders, event, ) - .await - .ok()?; - let action = Some(Action::SubmitTx(SubmitTxToMempool { - tx: tx.clone(), - gas_bid_info: Some(GasBidInfo { - bid_percentage: U128::from(self.bid_percentage), - total_profit: profit.to(), - }), - })); - - // Must be able to cover min gas cost - let sender_address = Address::from_str(&self.sender_address).unwrap(); - tx.set_from(sender_address); - let gas_usage = self.client.estimate_gas(&tx).await.unwrap_or_else(|err| { - info!("Error estimating gas: {}", err); - 1_000_000 - }); - // Get the current min gas price - let min_gas_price = self - .get_arbitrum_min_gas_price(self.client.clone()) - .await - .unwrap_or(U256::from(10_000_000)); - - // gas price at which we'd break even, meaning 100% of profit goes to validator - let breakeven_gas_price = profit / U256::from(gas_usage); - // gas price corresponding to bid percentage - let bid_gas_price = breakeven_gas_price - .mul(U256::from(self.bid_percentage)) - .div(U256::from(100)); - if bid_gas_price < min_gas_price { - info!( - "Bid gas price {} is less than min gas price {}, skipping", - bid_gas_price, min_gas_price - ); - return None; - } - - for order in filtered_orders.iter() { - self.processing_orders.insert(order.hash.clone()); + .await; + + match tx_request { + Ok(mut req) => { + // Must be able to cover min gas cost + let sender_address = Address::from_str(&self.sender_address).unwrap(); + req.set_from(sender_address); + let gas_usage = self.client.estimate_gas(&req).await.unwrap_or_else(|err| { + info!("Error estimating gas: {}", err); + 1_000_000 + }); + // Get the current min gas price + let min_gas_price = self + .get_arbitrum_min_gas_price(self.client.clone()) + .await + .unwrap_or(U256::from(10_000_000)); + + // gas price at which we'd break even, meaning 100% of profit goes to validator + let breakeven_gas_price = profit / U256::from(gas_usage); + // gas price corresponding to bid percentage + let bid_gas_price = breakeven_gas_price + .mul(U256::from(self.bid_percentage)) + .div(U256::from(100)); + if bid_gas_price < min_gas_price { + info!( + "Bid gas price {} is less than min gas price {}, skipping", + bid_gas_price, min_gas_price + ); + return vec![]; + } + + for order in filtered_orders.iter() { + self.processing_orders.insert(order.hash.clone()); + } + return vec![Action::SubmitTx(SubmitTxToMempool { + tx: req, + gas_bid_info: Some(GasBidInfo { + bid_percentage: U128::from(self.bid_percentage), + total_profit: U128::from(profit), + }), + })]; + } + Err(e) => { + error!("Error building fill: {}", e); + return vec![]; + } } - return action; } - - None + vec![] } /// Process new block events, updating the internal state. - async fn process_new_block_event(&mut self, event: &NewBlock) -> Option { + async fn process_new_block_event(&mut self, event: &NewBlock) -> Vec { self.last_block_number = event.number; self.last_block_timestamp = event.timestamp; @@ -264,17 +262,20 @@ where ); self.handle_fills() .await - .map_err(|e| error!("Error handling fills {}", e)) - .ok()?; + .unwrap_or_else(|e| { + error!("Error handling fills: {}", e); + }); self.update_open_orders(); self.prune_done_orders(); self.batch_sender .send(self.get_order_batches().values().cloned().collect()) .await - .ok()?; + .unwrap_or_else(|e| { + error!("Error sending order batches: {}", e); + }); - None + vec![] } /// encode orders into generic signed orders diff --git a/src/strategies/priority_strategy.rs b/src/strategies/priority_strategy.rs index e1e339e..348e563 100644 --- a/src/strategies/priority_strategy.rs +++ b/src/strategies/priority_strategy.rs @@ -17,9 +17,8 @@ use alloy::{ hex, network::AnyNetwork, primitives::{Address, Bytes, Uint, U128, U256, U64}, - providers::Provider, + providers::{DynProvider, Provider}, rpc::types::Filter, - transports::Transport, }; use anyhow::Result; use artemis_core::executors::mempool_executor::{GasBidInfo, SubmitTxToMempool}; @@ -28,9 +27,9 @@ use async_trait::async_trait; use aws_sdk_cloudwatch::Client as CloudWatchClient; use bindings_uniswapx::basereactor::BaseReactor::SignedOrder; use dashmap::DashMap; +use std::error::Error; use std::str::FromStr; use std::sync::Arc; -use std::{error::Error, marker::PhantomData}; use tokio::sync::{ mpsc::{Receiver, Sender}, RwLock, @@ -90,15 +89,15 @@ impl ExecutionMetadata { #[derive(Debug)] #[allow(dead_code)] -pub struct UniswapXPriorityFill { +pub struct UniswapXPriorityFill { /// Ethers client. - client: Arc

, + client: Arc>, // AWS Cloudwatch CLient for metrics propagation cloudwatch_client: Option>, /// executor address executor_address: String, /// Amount of profits to bid in gas - bid_percentage: u64, + bid_percentage: u128, last_block_number: RwLock, last_block_timestamp: RwLock, // map of new order hashes to order data @@ -110,16 +109,11 @@ pub struct UniswapXPriorityFill { batch_sender: Sender>, route_receiver: Receiver, chain_id: u64, - _transport: PhantomData, } -impl UniswapXPriorityFill -where - P: Provider + 'static, - T: Transport + Clone + 'static, -{ +impl UniswapXPriorityFill { pub fn new( - client: Arc

, + client: Arc>, cloudwatch_client: Option>, config: Config, sender: Sender>, @@ -141,17 +135,12 @@ where batch_sender: sender, route_receiver: receiver, chain_id, - _transport: PhantomData, } } } #[async_trait] -impl Strategy for UniswapXPriorityFill -where - P: Provider + 'static, - T: Transport + Clone + 'static, -{ +impl Strategy for UniswapXPriorityFill { async fn sync_state(&mut self) -> Result<()> { info!("syncing state"); @@ -168,13 +157,9 @@ where } } -impl UniswapXStrategy for UniswapXPriorityFill {} +impl UniswapXStrategy for UniswapXPriorityFill {} -impl UniswapXPriorityFill -where - P: Provider + 'static, - T: Transport + Clone + 'static, -{ +impl UniswapXPriorityFill { pub fn get_new_order(&self, hash: &str) -> Option { self.new_orders.get(hash).map(|entry| entry.value().clone()) } @@ -307,7 +292,7 @@ where "{} - Skipping route with done order", event.request.orders[0].hash ); - return None; + return vec![]; } let OrderBatchData { @@ -326,31 +311,42 @@ where amount_out_required, ); - let signed_orders = self.get_signed_orders(orders.clone()).ok()?; - return Some(Action::SubmitPublicTx( - SubmitTxToMempoolWithExecutionMetadata { - execution: SubmitTxToMempool { - tx: self - .build_fill( - self.client.clone(), - &self.executor_address, - signed_orders, - event, - ) - .await - .ok()?, - gas_bid_info: Some(GasBidInfo { - bid_percentage: U128::from(self.bid_percentage), - // this field is not used for priority orders - total_profit: U128::from(0), - }), - }, - metadata, - }, - )); + let signed_orders = self.get_signed_orders(orders.clone()).unwrap_or_else(|e| { + error!("Error getting signed orders: {}", e); + vec![] + }); + let fill_tx_request = self + .build_fill( + self.client.clone(), + &self.executor_address, + signed_orders, + event, + ) + .await; + match fill_tx_request { + Ok(fill_tx_request) => { + return vec![Action::SubmitPublicTx( + SubmitTxToMempoolWithExecutionMetadata { + execution: SubmitTxToMempool { + tx: fill_tx_request, + gas_bid_info: Some(GasBidInfo { + bid_percentage: U128::from(self.bid_percentage), + // this field is not used for priority orders + total_profit: U128::from(0), + }), + }, + metadata, + }, + )]; + } + Err(e) => { + warn!("{} - Error building fill: {}", metadata.order_hash, e); + return vec![]; + } + } } - None + vec![] } /// Process new block events @@ -358,7 +354,7 @@ where /// - check for fills from block logs and remove from processing_orders /// - check new_orders for orders that are now fillable and send for execution /// - prune done orders - async fn process_new_block_event(&mut self, event: &NewBlock) -> Option { + async fn process_new_block_event(&mut self, event: &NewBlock) -> Vec { *self.last_block_number.write().await = event.number; *self.last_block_timestamp.write().await = event.timestamp; @@ -402,7 +398,7 @@ where } } - None + vec![] } /// encode orders into generic signed orders diff --git a/src/strategies/shared.rs b/src/strategies/shared.rs index 9f869dc..53d04fd 100644 --- a/src/strategies/shared.rs +++ b/src/strategies/shared.rs @@ -1,12 +1,12 @@ use crate::collectors::uniswapx_route_collector::RoutedOrder; use alloy::{ - consensus::TypedTransaction, - dyn_abi::{abi::Token, DynSolType, DynSolValue}, - network::AnyNetwork, + dyn_abi::{DynSolType, DynSolValue}, + network::{AnyNetwork, TransactionBuilder}, primitives::{Address, U256}, providers::{DynProvider, Provider}, + rpc::types::TransactionRequest, + serde::WithOtherFields, sol, - transports::Transport, }; use alloy_primitives::Bytes; use anyhow::Result; @@ -14,14 +14,6 @@ use async_trait::async_trait; use bindings_uniswapx::{ basereactor::BaseReactor::SignedOrder, erc20::ERC20, swaprouter02executor::SwapRouter02Executor, }; -//use ethers::{ -// abi::{ethabi, ParamType, Token}, -// providers::Middleware, -// types::{ -// transaction::eip2718::TypedTransaction, Address, Bytes, Eip1559TransactionRequest, H160, -// U256, -// }, -//}; use std::sync::Arc; use std::{ str::FromStr, @@ -42,8 +34,7 @@ sol! { } #[async_trait] -pub trait UniswapXStrategy -{ +pub trait UniswapXStrategy { // builds a transaction to fill an order async fn build_fill( &self, @@ -51,7 +42,7 @@ pub trait UniswapXStrategy executor_address: &str, signed_orders: Vec, RoutedOrder { request, route, .. }: &RoutedOrder, - ) -> Result { + ) -> Result> { let multicall_type: DynSolType = DynSolType::Tuple(vec![ DynSolType::Uint(256), DynSolType::Array(Box::new(DynSolType::Bytes)), @@ -106,20 +97,30 @@ pub trait UniswapXStrategy // abi encode as [tokens to approve to swap router 02, tokens to approve to reactor, multicall data] // [address[], address[], bytes[]] let calldata = DynSolValue::Tuple(vec![ - DynSolValue::Array(swaprouter_02_approval.iter().map(|a| DynSolValue::Address(a.clone())).collect()), - DynSolValue::Array(reactor_approval.iter().map(|a| DynSolValue::Address(a.clone())).collect()), + DynSolValue::Array( + swaprouter_02_approval + .iter() + .map(|a| DynSolValue::Address(a.clone())) + .collect(), + ), + DynSolValue::Array( + reactor_approval + .iter() + .map(|a| DynSolValue::Address(a.clone())) + .collect(), + ), DynSolValue::Array(vec![decoded_multicall_bytes]), ]); let encoded_calldata = calldata.abi_encode(); - let orders: Vec = - signed_orders.into_iter().map(|order| { - SwapRouter02Executor::SignedOrder { - order: order.order, - sig: order.sig, - } - }).collect(); - let mut call = fill_contract.executeBatch(orders, Bytes::from(encoded_calldata)); - Ok(call.tx.set_chain_id(chain_id).clone()) + let orders: Vec = signed_orders + .into_iter() + .map(|order| SwapRouter02Executor::SignedOrder { + order: order.order, + sig: order.sig, + }) + .collect(); + let call = fill_contract.executeBatch(orders, Bytes::from(encoded_calldata)); + Ok(call.into_transaction_request().with_chain_id(chain_id)) } fn current_timestamp(&self) -> Result { @@ -129,12 +130,12 @@ pub trait UniswapXStrategy async fn get_tokens_to_approve( &self, - client: Arc

, + client: Arc>, token: Address, from: &str, to: &str, ) -> Result, anyhow::Error> { - if token == Address::zero() { + if token == Address::ZERO { return Ok(vec![]); } let token_contract = ERC20::new(token, client.clone()); @@ -143,9 +144,10 @@ pub trait UniswapXStrategy Address::from_str(from).expect("Error encoding from address"), Address::from_str(to).expect("Error encoding from address"), ) + .call() .await .expect("Failed to get allowance"); - if allowance < U256::MAX / 2 { + if allowance._0 < U256::MAX / U256::from(2) { Ok(vec![token]) } else { Ok(vec![]) @@ -175,7 +177,7 @@ pub trait UniswapXStrategy /// Get the minimum gas price on Arbitrum /// https://docs.arbitrum.io/build-decentralized-apps/precompiles/reference#arbgasinfo - async fn get_arbitrum_min_gas_price(&self, client: Arc

) -> Result { + async fn get_arbitrum_min_gas_price(&self, client: Arc>) -> Result { let precompile_address = ARBITRUM_GAS_PRECOMPILE.parse::

()?; let gas_precompile = GasPrecompileContract::new(precompile_address, client.clone()); let gas_info = gas_precompile.getMinimumGasPrice().call().await?._0; diff --git a/src/strategies/types.rs b/src/strategies/types.rs index b22ef46..6352a9f 100644 --- a/src/strategies/types.rs +++ b/src/strategies/types.rs @@ -31,7 +31,7 @@ pub enum Action { /// Configuration for variables we need to pass to the strategy. #[derive(Debug, Clone)] pub struct Config { - pub bid_percentage: u64, + pub bid_percentage: u128, pub executor_address: String, } diff --git a/src/strategies/uniswapx_strategy.rs b/src/strategies/uniswapx_strategy.rs index f4557c5..df374ee 100644 --- a/src/strategies/uniswapx_strategy.rs +++ b/src/strategies/uniswapx_strategy.rs @@ -14,28 +14,23 @@ use crate::{ use alloy::{ hex, network::AnyNetwork, - primitives::{Address, Bytes, Uint, U128, U256}, - providers::Provider, + primitives::{Address, Bytes, Uint}, + providers::{DynProvider, Provider}, rpc::types::Filter, - transports::Transport, }; +use alloy_primitives::U128; use anyhow::Result; use artemis_core::executors::mempool_executor::{GasBidInfo, SubmitTxToMempool}; use artemis_core::types::Strategy; use async_trait::async_trait; use aws_sdk_cloudwatch::Client as CloudWatchClient; use bindings_uniswapx::basereactor::BaseReactor::SignedOrder; -//use ethers::{ -// providers::Middleware, -// types::{Address, Bytes, Filter}, -// utils::hex, -//}; use std::str::FromStr; use std::sync::Arc; use std::{collections::HashMap, fmt::Debug}; -use std::{error::Error, marker::PhantomData}; +use std::error::Error; use tokio::sync::mpsc::{Receiver, Sender}; -use tracing::{error, info}; +use tracing::{error, info, warn}; use uniswapx_rs::order::{Order, OrderResolution, V2DutchOrder}; use super::types::{Action, Event}; @@ -46,17 +41,13 @@ const REACTOR_ADDRESS: &str = "0x00000011F84B9aa48e5f8aA8B9897600006289Be"; #[derive(Debug)] #[allow(dead_code)] -pub struct UniswapXUniswapFill -where - P: Provider, - T: Transport + Clone, -{ +pub struct UniswapXUniswapFill { /// Ethers client. - client: Arc

, + client: Arc>, /// executor address executor_address: String, /// Amount of profits to bid in gas - bid_percentage: u64, + bid_percentage: u128, last_block_number: u64, last_block_timestamp: u64, // map of open order hashes to order data @@ -67,16 +58,11 @@ where route_receiver: Receiver, cloudwatch_client: Option>, chain_id: u64, - _transport: PhantomData, } -impl UniswapXUniswapFill -where - P: Provider, - T: Transport + Clone, -{ +impl UniswapXUniswapFill { pub fn new( - client: Arc

, + client: Arc>, config: Config, sender: Sender>, receiver: Receiver, @@ -97,17 +83,12 @@ where route_receiver: receiver, cloudwatch_client, chain_id, - _transport: PhantomData, } } } #[async_trait] -impl Strategy for UniswapXUniswapFill -where - P: Provider, - T: Transport + Clone, -{ +impl Strategy for UniswapXUniswapFill { // In order to sync this strategy, we need to get the current bid for all Sudo pools. async fn sync_state(&mut self) -> Result<()> { info!("syncing state"); @@ -125,13 +106,9 @@ where } } -impl UniswapXStrategy for UniswapXUniswapFill {} +impl UniswapXStrategy for UniswapXUniswapFill {} -impl UniswapXUniswapFill -where - P: Provider + 'static, - T: Transport + Clone + 'static, -{ +impl UniswapXUniswapFill { fn decode_order(&self, encoded_order: &str) -> Result> { let encoded_order = if let Some(stripped) = encoded_order.strip_prefix("0x") { stripped @@ -144,28 +121,30 @@ where } // Process new orders as they come in. - async fn process_order_event(&mut self, event: &UniswapXOrder) -> Option { + async fn process_order_event(&mut self, event: &UniswapXOrder) -> Vec { if self.last_block_timestamp == 0 { - return None; + return vec![]; } let order = self .decode_order(&event.encoded_order) .map_err(|e| error!("failed to decode: {}", e)) - .ok()?; + .ok(); - self.update_order_state(order, &event.signature, &event.order_hash); - None + if let Some(order) = order { + self.update_order_state(order, &event.signature, &event.order_hash); + } + vec![] } - async fn process_new_route(&mut self, event: &RoutedOrder) -> Option { + async fn process_new_route(&mut self, event: &RoutedOrder) -> Vec { if event .request .orders .iter() .any(|o| self.done_orders.contains_key(&o.hash)) { - return None; + return vec![]; } let OrderBatchData { // orders, @@ -182,22 +161,39 @@ where amount_out_required, profit ); - let signed_orders = self.get_signed_orders(orders.clone()).ok()?; - return Some(Action::SubmitTx(SubmitTxToMempool { - tx: self - .build_fill( - self.client.clone(), - &self.executor_address, - signed_orders, - event, - ) - .await - .ok()?, - gas_bid_info: Some(GasBidInfo { - bid_percentage: self.bid_percentage, - total_profit: profit, - }), - })); + let signed_orders = self + .get_signed_orders(orders.clone()) + .unwrap_or_else(|e| { + error!("Error getting signed orders: {}", e); + vec![] + }); + + let fill_tx_request = self + .build_fill( + self.client.clone(), + &self.executor_address, + signed_orders, + event, + ) + .await; + match fill_tx_request { + Ok(fill_tx_request) => { + return vec![Action::SubmitTx(SubmitTxToMempool { + tx: fill_tx_request, + gas_bid_info: Some(GasBidInfo { + bid_percentage: U128::from(self.bid_percentage), + total_profit: U128::from(profit), + }), + })]; + } + Err(e) => { + warn!( + "{} - Error building fill: {}", + event.request.orders[0].hash, e + ); + return vec![]; + } + } } else { let metric_future = build_metric_future( self.cloudwatch_client.clone(), @@ -213,13 +209,13 @@ where } } - None + vec![] } /// Process new block events, updating the internal state. - async fn process_new_block_event(&mut self, event: &NewBlock) -> Option { - self.last_block_number = event.number.as_u64(); - self.last_block_timestamp = event.timestamp.as_u64(); + async fn process_new_block_event(&mut self, event: &NewBlock) -> Vec { + self.last_block_number = event.number; + self.last_block_timestamp = event.timestamp; info!( "Processing block {} at {}, Order set sizes -- open: {}, done: {}", @@ -228,19 +224,20 @@ where self.open_orders.len(), self.done_orders.len() ); - self.handle_fills() - .await - .map_err(|e| error!("Error handling fills {}", e)) - .ok()?; + self.handle_fills().await.unwrap_or_else(|e| { + error!("{} - Error handling fills: {}", event.number, e); + }); self.update_open_orders(); self.prune_done_orders(); self.batch_sender .send(self.get_order_batches().values().cloned().collect()) .await - .ok()?; + .unwrap_or_else(|e| { + error!("{} - Error sending order batches: {}", event.number, e); + }); - None + vec![] } /// encode orders into generic signed orders @@ -251,7 +248,10 @@ where Order::V2DutchOrder(order) => { signed_orders.push(SignedOrder { order: Bytes::from(order.encode_inner()), - sig: Bytes::from_str(&batch.signature)?, + sig: Bytes::from_str(&batch.signature).unwrap_or_else(|e| { + error!("Error encoding signature: {}", e); + Bytes::new() + }), }); } _ => { @@ -313,7 +313,7 @@ where // early return on error let logs = self.client.get_logs(&filter).await?; for log in logs { - let order_hash = format!("0x{:x}", log.topics[1]); + let order_hash = format!("0x{:x}", log.topics()[1]); // remove from open info!("{} - Removing filled order", order_hash); self.open_orders.remove(&order_hash); From 9cc7c20ec5fecf7c797acf5d0085eea4f31ddce9 Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Tue, 18 Feb 2025 15:34:58 -0800 Subject: [PATCH 04/15] bindings update --- .../src/deployuniversalrouterexecutor.rs | 777 +++ crates/bindings-uniswapx/src/lib.rs | 201 +- .../src/universalrouterexecutor.rs | 4423 +++++++++++++++++ 3 files changed, 5302 insertions(+), 99 deletions(-) create mode 100644 crates/bindings-uniswapx/src/deployuniversalrouterexecutor.rs create mode 100644 crates/bindings-uniswapx/src/universalrouterexecutor.rs diff --git a/crates/bindings-uniswapx/src/deployuniversalrouterexecutor.rs b/crates/bindings-uniswapx/src/deployuniversalrouterexecutor.rs new file mode 100644 index 0000000..036429d --- /dev/null +++ b/crates/bindings-uniswapx/src/deployuniversalrouterexecutor.rs @@ -0,0 +1,777 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface DeployUniversalRouterExecutor { + function IS_SCRIPT() external view returns (bool); + function run() external returns (address executor); + function setUp() external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_SCRIPT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "run", + "inputs": [], + "outputs": [ + { + "name": "executor", + "type": "address", + "internalType": "contract UniversalRouterExecutor" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setUp", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod DeployUniversalRouterExecutor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c805462ff00ff191662010001179055348015610020575f80fd5b506122b28061002e5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610077575b5f80fd5b005b61004d61009a565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600c5461008a9062010000900460ff1681565b604051901515815260200161006e565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f464f554e4452595f505249564154455f4b45590000000000000000000000000060448201525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa158015610132573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610156919061091e565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f464f554e4452595f554e4956455253414c524f555445524558454355544f525f60448201527f4445504c4f595f52454143544f5200000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610215573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610239919061095d565b6040517f4d7baf0600000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f464f554e4452595f554e4956455253414c524f555445524558454355544f525f60448201527f4445504c4f595f57484954454c49535445445f43414c4c4552535f454e434f4460648201527f454400000000000000000000000000000000000000000000000000000000000060848201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90634d7baf069060a4015f60405180830381865afa15801561031d573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103629190810190610a1b565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f464f554e4452595f554e4956455253414c524f555445524558454355544f525f60448201527f4445504c4f595f4f574e4552000000000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610421573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610445919061095d565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f464f554e4452595f554e4956455253414c524f555445524558454355544f525f60448201527f4445504c4f595f554e4956455253414c524f555445520000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610504573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610528919061095d565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f464f554e4452595f554e4956455253414c524f555445524558454355544f525f60448201527f4445504c4f595f5045524d49543200000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156105e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061060b919061095d565b90505f848060200190518101906106229190610ac8565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101899052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d47906024015f604051808303815f87803b158015610688575f80fd5b505af115801561069a573d5f803e3d5ffd5b505050505f801b81878686866040516106b290610911565b6106c0959493929190610b70565b8190604051809103905ff59050801580156106dd573d5f803e3d5ffd5b5097507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610747575f80fd5b505af1158015610759573d5f803e3d5ffd5b5050505061079c6040518060400160405280601781526020017f556e6976657273616c526f757465724578656375746f7200000000000000000081525089610851565b6108476040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508973ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561081e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610842919061095d565b610851565b5050505050505090565b6108e28282604051602401610867929190610c01565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526108e6565b5050565b6108ef816108f2565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b61160d80610c7083390190565b5f6020828403121561092e575f80fd5b5051919050565b805173ffffffffffffffffffffffffffffffffffffffff81168114610958575f80fd5b919050565b5f6020828403121561096d575f80fd5b61097682610935565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109f1576109f161097d565b604052919050565b5f5b83811015610a135781810151838201526020016109fb565b50505f910152565b5f60208284031215610a2b575f80fd5b815167ffffffffffffffff80821115610a42575f80fd5b818401915084601f830112610a55575f80fd5b815181811115610a6757610a6761097d565b610a9860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016109aa565b9150808252856020828501011115610aae575f80fd5b610abf8160208401602086016109f9565b50949350505050565b5f6020808385031215610ad9575f80fd5b825167ffffffffffffffff80821115610af0575f80fd5b818501915085601f830112610b03575f80fd5b815181811115610b1557610b1561097d565b8060051b9150610b268483016109aa565b8181529183018401918481019088841115610b3f575f80fd5b938501935b83851015610b6457610b5585610935565b82529385019390850190610b44565b98975050505050505050565b60a080825286519082018190525f9060209060c0840190828a01845b82811015610bbe57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610b8c565b50505073ffffffffffffffffffffffffffffffffffffffff9788166020850152958716604084015250509184166060830152909216608090920191909152919050565b604081525f8351806040840152610c1f8160608501602088016109f9565b73ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160600191905056fe60e060405234801562000010575f80fd5b506040516200160d3803806200160d83398101604081905262000033916200012e565b5f80546001600160a01b0319166001600160a01b03851690811782556040518592907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f5b8551811015620000da576001805f888481518110620000a057620000a062000245565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016200007d565b506001600160a01b0393841660a05290831660805290911660c05250620002599050565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b038116811462000129575f80fd5b919050565b5f805f805f60a0868803121562000143575f80fd5b85516001600160401b03808211156200015a575f80fd5b818801915088601f8301126200016e575f80fd5b8151602082821115620001855762000185620000fe565b8160051b604051601f19603f83011681018181108682111715620001ad57620001ad620000fe565b60405292835281830193508481018201928c841115620001cb575f80fd5b948201945b83861015620001f457620001e48662000112565b85529482019493820193620001d0565b99506200020590508a820162000112565b975050505050620002196040870162000112565b9250620002296060870162000112565b9150620002396080870162000112565b90509295509295909350565b634e487b7160e01b5f52603260045260245ffd5b60805160a05160c05161134b620002c25f395f818160cc015281816102f8015261037901525f81816101e50152818161027c015281816104a20152818161059f0152818161081e015261091201525f81816101280152818161041b0152610501015261134b5ff3fe6080604052600436106100b0575f3560e01c80639456fbcc11610066578063d0f2d8ac1161004c578063d0f2d8ac14610207578063e5135ec614610226578063f2fde38b14610245575f80fd5b80639456fbcc146101b5578063ab572650146101d4575f80fd5b8063585da62811610096578063585da6281461014a578063690d83201461016b5780638da5cb5b1461018a575f80fd5b806312261ee7146100bb57806335a9e4df14610117575f80fd5b366100b757005b5f80fd5b3480156100c6575f80fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b348015610122575f80fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b348015610155575f80fd5b50610169610164366004610d9e565b610264565b005b348015610176575f80fd5b50610169610185366004610e26565b6105cf565b348015610195575f80fd5b505f546100ee9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101c0575f80fd5b506101696101cf366004610e48565b610661565b3480156101df575f80fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b348015610212575f80fd5b50610169610221366004610e7f565b610795565b348015610231575f80fd5b50610169610240366004610d9e565b610889565b348015610250575f80fd5b5061016961025f366004610e26565b610980565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102d3576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80806102e284860186610fec565b9250925092505f5b8351811015610491576103777f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061034a5761034a6110db565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610a6f9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166387517c458583815181106103c5576103c56110db565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff91821660048201527f000000000000000000000000000000000000000000000000000000000000000082166024820152604481019190915265ffffffffffff60648201526084015f604051808303815f87803b15801561046f575f80fd5b505af1158015610481573d5f803e3d5ffd5b5050600190920191506102ea9050565b505f5b82518110156104fc576104f47f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85848151811061034a5761034a6110db565b600101610494565b505f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16836040516105449190611108565b5f604051808303815f865af19150503d805f811461057d576040519150601f19603f3d011682016040523d82523d5f602084013e610582565b606091505b50915091508161059457805160208201fd5b47156105c4576105c47f000000000000000000000000000000000000000000000000000000000000000047610b40565b505050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61065e8147610bdb565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161064b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261079190829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa15801561074f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107739190611134565b73ffffffffffffffffffffffffffffffffffffffff85169190610c4d565b5050565b335f9081526001602052604081205460ff16151590036107e1576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906108579086908690869060040161123c565b5f604051808303815f87803b15801561086e575f80fd5b505af1158015610880573d5f803e3d5ffd5b50505050505050565b335f9081526001602052604081205460ff16151590036108d5576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c79061094d908790879087908790600401611261565b5f604051808303815f87803b158015610964575f80fd5b505af1158015610976573d5f803e3d5ffd5b5050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161064b565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c4544000000000000000000000000000000000000604482015260640161064b565b50505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610b96576040519150601f19603f3d011682016040523d82523d5f602084013e610b9b565b606091505b5050905080610bd6576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f805f805f85875af1905080610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161064b565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161064b565b5f8083601f840112610d28575f80fd5b50813567ffffffffffffffff811115610d3f575f80fd5b6020830191508360208260051b8501011115610d59575f80fd5b9250929050565b5f8083601f840112610d70575f80fd5b50813567ffffffffffffffff811115610d87575f80fd5b602083019150836020828501011115610d59575f80fd5b5f805f8060408587031215610db1575f80fd5b843567ffffffffffffffff80821115610dc8575f80fd5b610dd488838901610d18565b90965094506020870135915080821115610dec575f80fd5b50610df987828801610d60565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461065e575f80fd5b5f60208284031215610e36575f80fd5b8135610e4181610e05565b9392505050565b5f8060408385031215610e59575f80fd5b8235610e6481610e05565b91506020830135610e7481610e05565b809150509250929050565b5f805f60408486031215610e91575f80fd5b833567ffffffffffffffff80821115610ea8575f80fd5b9085019060408288031215610ebb575f80fd5b90935060208501359080821115610ed0575f80fd5b50610edd86828701610d60565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610f5e57610f5e610eea565b604052919050565b5f82601f830112610f75575f80fd5b8135602067ffffffffffffffff821115610f9157610f91610eea565b8160051b610fa0828201610f17565b9283528481018201928281019087851115610fb9575f80fd5b83870192505b84831015610fe1578235610fd281610e05565b82529183019190830190610fbf565b979650505050505050565b5f805f60608486031215610ffe575f80fd5b833567ffffffffffffffff80821115611015575f80fd5b61102187838801610f66565b9450602091508186013581811115611037575f80fd5b61104388828901610f66565b945050604086013581811115611057575f80fd5b8601601f81018813611067575f80fd5b80358281111561107957611079610eea565b6110a9847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610f17565b925080835288848284010111156110be575f80fd5b80848301858501375f848285010152505080925050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82515f5b81811015611127576020818601810151858301520161110d565b505f920191825250919050565b5f60208284031215611144575f80fd5b5051919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261117e575f80fd5b830160208101925035905067ffffffffffffffff81111561119d575f80fd5b803603821315610d59575f80fd5b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f6111fd828361114b565b6040855261120f6040860182846111ab565b91505061121f602084018461114b565b85830360208701526112328382846111ab565b9695505050505050565b604081525f61124e60408301866111f2565b82810360208401526112328185876111ab565b604080825281018490525f6060600586901b8301810190830187835b888110156112ff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18b36030181126112dd575f80fd5b6112e9858c83016111f2565b945050602092830192919091019060010161127d565b5050508281036020840152610fe18185876111ab56fea2646970667358221220f9372e128942851938947b0424ed03ee7dcb0c13f6ecde912c8b7edc90ab75d264736f6c63430008180033a2646970667358221220eff6a2d9eb97e66339a1219a8d5e5a35042a911ea7f01be09c430891e3cda37464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[Pa\"\xB2\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0wW[_\x80\xFD[\0[a\0Ma\0\x9AV[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x8A\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0nV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x012W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01V\x91\x90a\t\x1EV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FFOUNDRY_UNIVERSALROUTEREXECUTOR_`D\x82\x01R\x7FDEPLOY_REACTOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x15W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x029\x91\x90a\t]V[`@Q\x7FM{\xAF\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FFOUNDRY_UNIVERSALROUTEREXECUTOR_`D\x82\x01R\x7FDEPLOY_WHITELISTED_CALLERS_ENCOD`d\x82\x01R\x7FED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x84\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cM{\xAF\x06\x90`\xA4\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x1DW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x03b\x91\x90\x81\x01\x90a\n\x1BV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`,`$\x82\x01R\x7FFOUNDRY_UNIVERSALROUTEREXECUTOR_`D\x82\x01R\x7FDEPLOY_OWNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04!W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04E\x91\x90a\t]V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FFOUNDRY_UNIVERSALROUTEREXECUTOR_`D\x82\x01R\x7FDEPLOY_UNIVERSALROUTER\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\x04W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05(\x91\x90a\t]V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FFOUNDRY_UNIVERSALROUTEREXECUTOR_`D\x82\x01R\x7FDEPLOY_PERMIT2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xE7W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x0B\x91\x90a\t]V[\x90P_\x84\x80` \x01\x90Q\x81\x01\x90a\x06\"\x91\x90a\n\xC8V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x89\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06\x88W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06\x9AW=_\x80>=_\xFD[PPPP_\x80\x1B\x81\x87\x86\x86\x86`@Qa\x06\xB2\x90a\t\x11V[a\x06\xC0\x95\x94\x93\x92\x91\x90a\x0BpV[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x06\xDDW=_\x80>=_\xFD[P\x97P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07GW_\x80\xFD[PZ\xF1\x15\x80\x15a\x07YW=_\x80>=_\xFD[PPPPa\x07\x9C`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7FUniversalRouterExecutor\0\0\0\0\0\0\0\0\0\x81RP\x89a\x08QV[a\x08G`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x89s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\x1EW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08B\x91\x90a\t]V[a\x08QV[PPPPPPP\x90V[a\x08\xE2\x82\x82`@Q`$\x01a\x08g\x92\x91\x90a\x0C\x01V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x08\xE6V[PPV[a\x08\xEF\x81a\x08\xF2V[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x16\r\x80a\x0Cp\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\t.W_\x80\xFD[PQ\x91\x90PV[\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\tXW_\x80\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\tmW_\x80\xFD[a\tv\x82a\t5V[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t\xF1Wa\t\xF1a\t}V[`@R\x91\x90PV[_[\x83\x81\x10\x15a\n\x13W\x81\x81\x01Q\x83\x82\x01R` \x01a\t\xFBV[PP_\x91\x01RV[_` \x82\x84\x03\x12\x15a\n+W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\nBW_\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\nUW_\x80\xFD[\x81Q\x81\x81\x11\x15a\ngWa\nga\t}V[a\n\x98` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\t\xAAV[\x91P\x80\x82R\x85` \x82\x85\x01\x01\x11\x15a\n\xAEW_\x80\xFD[a\n\xBF\x81` \x84\x01` \x86\x01a\t\xF9V[P\x94\x93PPPPV[_` \x80\x83\x85\x03\x12\x15a\n\xD9W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\n\xF0W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0B\x03W_\x80\xFD[\x81Q\x81\x81\x11\x15a\x0B\x15Wa\x0B\x15a\t}V[\x80`\x05\x1B\x91Pa\x0B&\x84\x83\x01a\t\xAAV[\x81\x81R\x91\x83\x01\x84\x01\x91\x84\x81\x01\x90\x88\x84\x11\x15a\x0B?W_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a\x0BdWa\x0BU\x85a\t5V[\x82R\x93\x85\x01\x93\x90\x85\x01\x90a\x0BDV[\x98\x97PPPPPPPPV[`\xA0\x80\x82R\x86Q\x90\x82\x01\x81\x90R_\x90` \x90`\xC0\x84\x01\x90\x82\x8A\x01\x84[\x82\x81\x10\x15a\x0B\xBEW\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x0B\x8CV[PPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x16` \x85\x01R\x95\x87\x16`@\x84\x01RPP\x91\x84\x16``\x83\x01R\x90\x92\x16`\x80\x90\x92\x01\x91\x90\x91R\x91\x90PV[`@\x81R_\x83Q\x80`@\x84\x01Ra\x0C\x1F\x81``\x85\x01` \x88\x01a\t\xF9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16` \x83\x01RP`\x1F\x91\x90\x91\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x01``\x01\x91\x90PV\xFE`\xE0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0\x16\r8\x03\x80b\0\x16\r\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01.V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x90\x81\x17\x82U`@Q\x85\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P_[\x85Q\x81\x10\x15b\0\0\xDAW`\x01\x80_\x88\x84\x81Q\x81\x10b\0\0\xA0Wb\0\0\xA0b\0\x02EV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x82R\x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U`\x01\x01b\0\0}V[P`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\xA0R\x90\x83\x16`\x80R\x90\x91\x16`\xC0RPb\0\x02Y\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01)W_\x80\xFD[\x91\x90PV[_\x80_\x80_`\xA0\x86\x88\x03\x12\x15b\0\x01CW_\x80\xFD[\x85Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01ZW_\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12b\0\x01nW_\x80\xFD[\x81Q` \x82\x82\x11\x15b\0\x01\x85Wb\0\x01\x85b\0\0\xFEV[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15b\0\x01\xADWb\0\x01\xADb\0\0\xFEV[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x8C\x84\x11\x15b\0\x01\xCBW_\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15b\0\x01\xF4Wb\0\x01\xE4\x86b\0\x01\x12V[\x85R\x94\x82\x01\x94\x93\x82\x01\x93b\0\x01\xD0V[\x99Pb\0\x02\x05\x90P\x8A\x82\x01b\0\x01\x12V[\x97PPPPPb\0\x02\x19`@\x87\x01b\0\x01\x12V[\x92Pb\0\x02)``\x87\x01b\0\x01\x12V[\x91Pb\0\x029`\x80\x87\x01b\0\x01\x12V[\x90P\x92\x95P\x92\x95\x90\x93PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`\x80Q`\xA0Q`\xC0Qa\x13Kb\0\x02\xC2_9_\x81\x81`\xCC\x01R\x81\x81a\x02\xF8\x01Ra\x03y\x01R_\x81\x81a\x01\xE5\x01R\x81\x81a\x02|\x01R\x81\x81a\x04\xA2\x01R\x81\x81a\x05\x9F\x01R\x81\x81a\x08\x1E\x01Ra\t\x12\x01R_\x81\x81a\x01(\x01R\x81\x81a\x04\x1B\x01Ra\x05\x01\x01Ra\x13K_\xF3\xFE`\x80`@R`\x046\x10a\0\xB0W_5`\xE0\x1C\x80c\x94V\xFB\xCC\x11a\0fW\x80c\xD0\xF2\xD8\xAC\x11a\0LW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x07W\x80c\xE5\x13^\xC6\x14a\x02&W\x80c\xF2\xFD\xE3\x8B\x14a\x02EW_\x80\xFD[\x80c\x94V\xFB\xCC\x14a\x01\xB5W\x80c\xABW&P\x14a\x01\xD4W_\x80\xFD[\x80cX]\xA6(\x11a\0\x96W\x80cX]\xA6(\x14a\x01JW\x80ci\r\x83 \x14a\x01kW\x80c\x8D\xA5\xCB[\x14a\x01\x8AW_\x80\xFD[\x80c\x12&\x1E\xE7\x14a\0\xBBW\x80c5\xA9\xE4\xDF\x14a\x01\x17W_\x80\xFD[6a\0\xB7W\0[_\x80\xFD[4\x80\x15a\0\xC6W_\x80\xFD[Pa\0\xEE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\"W_\x80\xFD[Pa\0\xEE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[4\x80\x15a\x01UW_\x80\xFD[Pa\x01ia\x01d6`\x04a\r\x9EV[a\x02dV[\0[4\x80\x15a\x01vW_\x80\xFD[Pa\x01ia\x01\x856`\x04a\x0E&V[a\x05\xCFV[4\x80\x15a\x01\x95W_\x80\xFD[P_Ta\0\xEE\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xC0W_\x80\xFD[Pa\x01ia\x01\xCF6`\x04a\x0EHV[a\x06aV[4\x80\x15a\x01\xDFW_\x80\xFD[Pa\0\xEE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[4\x80\x15a\x02\x12W_\x80\xFD[Pa\x01ia\x02!6`\x04a\x0E\x7FV[a\x07\x95V[4\x80\x15a\x021W_\x80\xFD[Pa\x01ia\x02@6`\x04a\r\x9EV[a\x08\x89V[4\x80\x15a\x02PW_\x80\xFD[Pa\x01ia\x02_6`\x04a\x0E&V[a\t\x80V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x02\xD3W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x02\xE2\x84\x86\x01\x86a\x0F\xECV[\x92P\x92P\x92P_[\x83Q\x81\x10\x15a\x04\x91Wa\x03w\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03JWa\x03Ja\x10\xDBV[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\no\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x87Q|E\x85\x83\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x10\xDBV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x84\x90\x1B\x16\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16`$\x82\x01R`D\x81\x01\x91\x90\x91Re\xFF\xFF\xFF\xFF\xFF\xFF`d\x82\x01R`\x84\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04oW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\x81W=_\x80>=_\xFD[PP`\x01\x90\x92\x01\x91Pa\x02\xEA\x90PV[P_[\x82Q\x81\x10\x15a\x04\xFCWa\x04\xF4\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x84\x81Q\x81\x10a\x03JWa\x03Ja\x10\xDBV[`\x01\x01a\x04\x94V[P_\x80\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83`@Qa\x05D\x91\x90a\x11\x08V[_`@Q\x80\x83\x03\x81_\x86Z\xF1\x91PP=\x80_\x81\x14a\x05}W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x05\x82V[``\x91P[P\x91P\x91P\x81a\x05\x94W\x80Q` \x82\x01\xFD[G\x15a\x05\xC4Wa\x05\xC4\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\x0B@V[PPPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06TW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[a\x06^\x81Ga\x0B\xDBV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xE1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\x07\x91\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07OW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07s\x91\x90a\x114V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x0CMV[PPV[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x07\xE1W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x08W\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x12=_\xFD[PPPPPPPV[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x08\xD5W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\tM\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x12aV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\tdW_\x80\xFD[PZ\xF1\x15\x80\x15a\tvW=_\x80>=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\n\0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0B:W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0B\x96W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0B\x9BV[``\x91P[PP\x90P\x80a\x0B\xD6W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\x0B\xD6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[_`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0B:W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[_\x80\x83`\x1F\x84\x01\x12a\r(W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r?W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\rYW_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\rpW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\x87W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\rYW_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\r\xB1W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\r\xC8W_\x80\xFD[a\r\xD4\x88\x83\x89\x01a\r\x18V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\r\xECW_\x80\xFD[Pa\r\xF9\x87\x82\x88\x01a\r`V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06^W_\x80\xFD[_` \x82\x84\x03\x12\x15a\x0E6W_\x80\xFD[\x815a\x0EA\x81a\x0E\x05V[\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x0EYW_\x80\xFD[\x825a\x0Ed\x81a\x0E\x05V[\x91P` \x83\x015a\x0Et\x81a\x0E\x05V[\x80\x91PP\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\x0E\x91W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xA8W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x0E\xBBW_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x0E\xD0W_\x80\xFD[Pa\x0E\xDD\x86\x82\x87\x01a\r`V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x0F^Wa\x0F^a\x0E\xEAV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x0FuW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0F\x91Wa\x0F\x91a\x0E\xEAV[\x81`\x05\x1Ba\x0F\xA0\x82\x82\x01a\x0F\x17V[\x92\x83R\x84\x81\x01\x82\x01\x92\x82\x81\x01\x90\x87\x85\x11\x15a\x0F\xB9W_\x80\xFD[\x83\x87\x01\x92P[\x84\x83\x10\x15a\x0F\xE1W\x825a\x0F\xD2\x81a\x0E\x05V[\x82R\x91\x83\x01\x91\x90\x83\x01\x90a\x0F\xBFV[\x97\x96PPPPPPPV[_\x80_``\x84\x86\x03\x12\x15a\x0F\xFEW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x10\x15W_\x80\xFD[a\x10!\x87\x83\x88\x01a\x0FfV[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x107W_\x80\xFD[a\x10C\x88\x82\x89\x01a\x0FfV[\x94PP`@\x86\x015\x81\x81\x11\x15a\x10WW_\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a\x10gW_\x80\xFD[\x805\x82\x81\x11\x15a\x10yWa\x10ya\x0E\xEAV[a\x10\xA9\x84\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x0F\x17V[\x92P\x80\x83R\x88\x84\x82\x84\x01\x01\x11\x15a\x10\xBEW_\x80\xFD[\x80\x84\x83\x01\x85\x85\x017_\x84\x82\x85\x01\x01RPP\x80\x92PPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82Q_[\x81\x81\x10\x15a\x11'W` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x11\rV[P_\x92\x01\x91\x82RP\x91\x90PV[_` \x82\x84\x03\x12\x15a\x11DW_\x80\xFD[PQ\x91\x90PV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x11~W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\x9DW_\x80\xFD[\x806\x03\x82\x13\x15a\rYW_\x80\xFD[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\x11\xFD\x82\x83a\x11KV[`@\x85Ra\x12\x0F`@\x86\x01\x82\x84a\x11\xABV[\x91PPa\x12\x1F` \x84\x01\x84a\x11KV[\x85\x83\x03` \x87\x01Ra\x122\x83\x82\x84a\x11\xABV[\x96\x95PPPPPPV[`@\x81R_a\x12N`@\x83\x01\x86a\x11\xF2V[\x82\x81\x03` \x84\x01Ra\x122\x81\x85\x87a\x11\xABV[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x12\xFFW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x12\xDDW_\x80\xFD[a\x12\xE9\x85\x8C\x83\x01a\x11\xF2V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x12}V[PPP\x82\x81\x03` \x84\x01Ra\x0F\xE1\x81\x85\x87a\x11\xABV\xFE\xA2dipfsX\"\x12 \xF97.\x12\x89B\x85\x198\x94{\x04$\xED\x03\xEE}\xCB\x0C\x13\xF6\xEC\xDE\x91,\x8B~\xDC\x90\xABu\xD2dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xEF\xF6\xA2\xD9\xEB\x97\xE6c9\xA1!\x9A\x8D^Z5\x04*\x91\x1E\xA7\xF0\x1B\xE0\x9CC\x08\x91\xE3\xCD\xA3tdsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610077575b5f80fd5b005b61004d61009a565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600c5461008a9062010000900460ff1681565b604051901515815260200161006e565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f464f554e4452595f505249564154455f4b45590000000000000000000000000060448201525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa158015610132573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610156919061091e565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f464f554e4452595f554e4956455253414c524f555445524558454355544f525f60448201527f4445504c4f595f52454143544f5200000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610215573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610239919061095d565b6040517f4d7baf0600000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f464f554e4452595f554e4956455253414c524f555445524558454355544f525f60448201527f4445504c4f595f57484954454c49535445445f43414c4c4552535f454e434f4460648201527f454400000000000000000000000000000000000000000000000000000000000060848201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90634d7baf069060a4015f60405180830381865afa15801561031d573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103629190810190610a1b565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f464f554e4452595f554e4956455253414c524f555445524558454355544f525f60448201527f4445504c4f595f4f574e4552000000000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610421573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610445919061095d565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f464f554e4452595f554e4956455253414c524f555445524558454355544f525f60448201527f4445504c4f595f554e4956455253414c524f555445520000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610504573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610528919061095d565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f464f554e4452595f554e4956455253414c524f555445524558454355544f525f60448201527f4445504c4f595f5045524d49543200000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156105e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061060b919061095d565b90505f848060200190518101906106229190610ac8565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101899052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d47906024015f604051808303815f87803b158015610688575f80fd5b505af115801561069a573d5f803e3d5ffd5b505050505f801b81878686866040516106b290610911565b6106c0959493929190610b70565b8190604051809103905ff59050801580156106dd573d5f803e3d5ffd5b5097507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610747575f80fd5b505af1158015610759573d5f803e3d5ffd5b5050505061079c6040518060400160405280601781526020017f556e6976657273616c526f757465724578656375746f7200000000000000000081525089610851565b6108476040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508973ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561081e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610842919061095d565b610851565b5050505050505090565b6108e28282604051602401610867929190610c01565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526108e6565b5050565b6108ef816108f2565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b61160d80610c7083390190565b5f6020828403121561092e575f80fd5b5051919050565b805173ffffffffffffffffffffffffffffffffffffffff81168114610958575f80fd5b919050565b5f6020828403121561096d575f80fd5b61097682610935565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109f1576109f161097d565b604052919050565b5f5b83811015610a135781810151838201526020016109fb565b50505f910152565b5f60208284031215610a2b575f80fd5b815167ffffffffffffffff80821115610a42575f80fd5b818401915084601f830112610a55575f80fd5b815181811115610a6757610a6761097d565b610a9860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016109aa565b9150808252856020828501011115610aae575f80fd5b610abf8160208401602086016109f9565b50949350505050565b5f6020808385031215610ad9575f80fd5b825167ffffffffffffffff80821115610af0575f80fd5b818501915085601f830112610b03575f80fd5b815181811115610b1557610b1561097d565b8060051b9150610b268483016109aa565b8181529183018401918481019088841115610b3f575f80fd5b938501935b83851015610b6457610b5585610935565b82529385019390850190610b44565b98975050505050505050565b60a080825286519082018190525f9060209060c0840190828a01845b82811015610bbe57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610b8c565b50505073ffffffffffffffffffffffffffffffffffffffff9788166020850152958716604084015250509184166060830152909216608090920191909152919050565b604081525f8351806040840152610c1f8160608501602088016109f9565b73ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160600191905056fe60e060405234801562000010575f80fd5b506040516200160d3803806200160d83398101604081905262000033916200012e565b5f80546001600160a01b0319166001600160a01b03851690811782556040518592907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f5b8551811015620000da576001805f888481518110620000a057620000a062000245565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016200007d565b506001600160a01b0393841660a05290831660805290911660c05250620002599050565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b038116811462000129575f80fd5b919050565b5f805f805f60a0868803121562000143575f80fd5b85516001600160401b03808211156200015a575f80fd5b818801915088601f8301126200016e575f80fd5b8151602082821115620001855762000185620000fe565b8160051b604051601f19603f83011681018181108682111715620001ad57620001ad620000fe565b60405292835281830193508481018201928c841115620001cb575f80fd5b948201945b83861015620001f457620001e48662000112565b85529482019493820193620001d0565b99506200020590508a820162000112565b975050505050620002196040870162000112565b9250620002296060870162000112565b9150620002396080870162000112565b90509295509295909350565b634e487b7160e01b5f52603260045260245ffd5b60805160a05160c05161134b620002c25f395f818160cc015281816102f8015261037901525f81816101e50152818161027c015281816104a20152818161059f0152818161081e015261091201525f81816101280152818161041b0152610501015261134b5ff3fe6080604052600436106100b0575f3560e01c80639456fbcc11610066578063d0f2d8ac1161004c578063d0f2d8ac14610207578063e5135ec614610226578063f2fde38b14610245575f80fd5b80639456fbcc146101b5578063ab572650146101d4575f80fd5b8063585da62811610096578063585da6281461014a578063690d83201461016b5780638da5cb5b1461018a575f80fd5b806312261ee7146100bb57806335a9e4df14610117575f80fd5b366100b757005b5f80fd5b3480156100c6575f80fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b348015610122575f80fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b348015610155575f80fd5b50610169610164366004610d9e565b610264565b005b348015610176575f80fd5b50610169610185366004610e26565b6105cf565b348015610195575f80fd5b505f546100ee9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101c0575f80fd5b506101696101cf366004610e48565b610661565b3480156101df575f80fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b348015610212575f80fd5b50610169610221366004610e7f565b610795565b348015610231575f80fd5b50610169610240366004610d9e565b610889565b348015610250575f80fd5b5061016961025f366004610e26565b610980565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102d3576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80806102e284860186610fec565b9250925092505f5b8351811015610491576103777f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061034a5761034a6110db565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610a6f9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166387517c458583815181106103c5576103c56110db565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff91821660048201527f000000000000000000000000000000000000000000000000000000000000000082166024820152604481019190915265ffffffffffff60648201526084015f604051808303815f87803b15801561046f575f80fd5b505af1158015610481573d5f803e3d5ffd5b5050600190920191506102ea9050565b505f5b82518110156104fc576104f47f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85848151811061034a5761034a6110db565b600101610494565b505f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16836040516105449190611108565b5f604051808303815f865af19150503d805f811461057d576040519150601f19603f3d011682016040523d82523d5f602084013e610582565b606091505b50915091508161059457805160208201fd5b47156105c4576105c47f000000000000000000000000000000000000000000000000000000000000000047610b40565b505050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61065e8147610bdb565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161064b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261079190829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa15801561074f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107739190611134565b73ffffffffffffffffffffffffffffffffffffffff85169190610c4d565b5050565b335f9081526001602052604081205460ff16151590036107e1576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906108579086908690869060040161123c565b5f604051808303815f87803b15801561086e575f80fd5b505af1158015610880573d5f803e3d5ffd5b50505050505050565b335f9081526001602052604081205460ff16151590036108d5576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c79061094d908790879087908790600401611261565b5f604051808303815f87803b158015610964575f80fd5b505af1158015610976573d5f803e3d5ffd5b5050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161064b565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c4544000000000000000000000000000000000000604482015260640161064b565b50505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610b96576040519150601f19603f3d011682016040523d82523d5f602084013e610b9b565b606091505b5050905080610bd6576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f805f805f85875af1905080610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161064b565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161064b565b5f8083601f840112610d28575f80fd5b50813567ffffffffffffffff811115610d3f575f80fd5b6020830191508360208260051b8501011115610d59575f80fd5b9250929050565b5f8083601f840112610d70575f80fd5b50813567ffffffffffffffff811115610d87575f80fd5b602083019150836020828501011115610d59575f80fd5b5f805f8060408587031215610db1575f80fd5b843567ffffffffffffffff80821115610dc8575f80fd5b610dd488838901610d18565b90965094506020870135915080821115610dec575f80fd5b50610df987828801610d60565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461065e575f80fd5b5f60208284031215610e36575f80fd5b8135610e4181610e05565b9392505050565b5f8060408385031215610e59575f80fd5b8235610e6481610e05565b91506020830135610e7481610e05565b809150509250929050565b5f805f60408486031215610e91575f80fd5b833567ffffffffffffffff80821115610ea8575f80fd5b9085019060408288031215610ebb575f80fd5b90935060208501359080821115610ed0575f80fd5b50610edd86828701610d60565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610f5e57610f5e610eea565b604052919050565b5f82601f830112610f75575f80fd5b8135602067ffffffffffffffff821115610f9157610f91610eea565b8160051b610fa0828201610f17565b9283528481018201928281019087851115610fb9575f80fd5b83870192505b84831015610fe1578235610fd281610e05565b82529183019190830190610fbf565b979650505050505050565b5f805f60608486031215610ffe575f80fd5b833567ffffffffffffffff80821115611015575f80fd5b61102187838801610f66565b9450602091508186013581811115611037575f80fd5b61104388828901610f66565b945050604086013581811115611057575f80fd5b8601601f81018813611067575f80fd5b80358281111561107957611079610eea565b6110a9847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610f17565b925080835288848284010111156110be575f80fd5b80848301858501375f848285010152505080925050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82515f5b81811015611127576020818601810151858301520161110d565b505f920191825250919050565b5f60208284031215611144575f80fd5b5051919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261117e575f80fd5b830160208101925035905067ffffffffffffffff81111561119d575f80fd5b803603821315610d59575f80fd5b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f6111fd828361114b565b6040855261120f6040860182846111ab565b91505061121f602084018461114b565b85830360208701526112328382846111ab565b9695505050505050565b604081525f61124e60408301866111f2565b82810360208401526112328185876111ab565b604080825281018490525f6060600586901b8301810190830187835b888110156112ff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18b36030181126112dd575f80fd5b6112e9858c83016111f2565b945050602092830192919091019060010161127d565b5050508281036020840152610fe18185876111ab56fea2646970667358221220f9372e128942851938947b0424ed03ee7dcb0c13f6ecde912c8b7edc90ab75d264736f6c63430008180033a2646970667358221220eff6a2d9eb97e66339a1219a8d5e5a35042a911ea7f01be09c430891e3cda37464736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0wW[_\x80\xFD[\0[a\0Ma\0\x9AV[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x8A\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0nV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x012W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01V\x91\x90a\t\x1EV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FFOUNDRY_UNIVERSALROUTEREXECUTOR_`D\x82\x01R\x7FDEPLOY_REACTOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x15W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x029\x91\x90a\t]V[`@Q\x7FM{\xAF\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`B`$\x82\x01R\x7FFOUNDRY_UNIVERSALROUTEREXECUTOR_`D\x82\x01R\x7FDEPLOY_WHITELISTED_CALLERS_ENCOD`d\x82\x01R\x7FED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x84\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cM{\xAF\x06\x90`\xA4\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x1DW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x03b\x91\x90\x81\x01\x90a\n\x1BV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`,`$\x82\x01R\x7FFOUNDRY_UNIVERSALROUTEREXECUTOR_`D\x82\x01R\x7FDEPLOY_OWNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04!W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04E\x91\x90a\t]V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FFOUNDRY_UNIVERSALROUTEREXECUTOR_`D\x82\x01R\x7FDEPLOY_UNIVERSALROUTER\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\x04W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05(\x91\x90a\t]V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FFOUNDRY_UNIVERSALROUTEREXECUTOR_`D\x82\x01R\x7FDEPLOY_PERMIT2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05\xE7W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\x0B\x91\x90a\t]V[\x90P_\x84\x80` \x01\x90Q\x81\x01\x90a\x06\"\x91\x90a\n\xC8V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x89\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06\x88W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06\x9AW=_\x80>=_\xFD[PPPP_\x80\x1B\x81\x87\x86\x86\x86`@Qa\x06\xB2\x90a\t\x11V[a\x06\xC0\x95\x94\x93\x92\x91\x90a\x0BpV[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x06\xDDW=_\x80>=_\xFD[P\x97P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x07GW_\x80\xFD[PZ\xF1\x15\x80\x15a\x07YW=_\x80>=_\xFD[PPPPa\x07\x9C`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7FUniversalRouterExecutor\0\0\0\0\0\0\0\0\0\x81RP\x89a\x08QV[a\x08G`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x89s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08\x1EW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08B\x91\x90a\t]V[a\x08QV[PPPPPPP\x90V[a\x08\xE2\x82\x82`@Q`$\x01a\x08g\x92\x91\x90a\x0C\x01V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x08\xE6V[PPV[a\x08\xEF\x81a\x08\xF2V[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x16\r\x80a\x0Cp\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\t.W_\x80\xFD[PQ\x91\x90PV[\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\tXW_\x80\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\tmW_\x80\xFD[a\tv\x82a\t5V[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t\xF1Wa\t\xF1a\t}V[`@R\x91\x90PV[_[\x83\x81\x10\x15a\n\x13W\x81\x81\x01Q\x83\x82\x01R` \x01a\t\xFBV[PP_\x91\x01RV[_` \x82\x84\x03\x12\x15a\n+W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\nBW_\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\nUW_\x80\xFD[\x81Q\x81\x81\x11\x15a\ngWa\nga\t}V[a\n\x98` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\t\xAAV[\x91P\x80\x82R\x85` \x82\x85\x01\x01\x11\x15a\n\xAEW_\x80\xFD[a\n\xBF\x81` \x84\x01` \x86\x01a\t\xF9V[P\x94\x93PPPPV[_` \x80\x83\x85\x03\x12\x15a\n\xD9W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\n\xF0W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x0B\x03W_\x80\xFD[\x81Q\x81\x81\x11\x15a\x0B\x15Wa\x0B\x15a\t}V[\x80`\x05\x1B\x91Pa\x0B&\x84\x83\x01a\t\xAAV[\x81\x81R\x91\x83\x01\x84\x01\x91\x84\x81\x01\x90\x88\x84\x11\x15a\x0B?W_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a\x0BdWa\x0BU\x85a\t5V[\x82R\x93\x85\x01\x93\x90\x85\x01\x90a\x0BDV[\x98\x97PPPPPPPPV[`\xA0\x80\x82R\x86Q\x90\x82\x01\x81\x90R_\x90` \x90`\xC0\x84\x01\x90\x82\x8A\x01\x84[\x82\x81\x10\x15a\x0B\xBEW\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x0B\x8CV[PPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x16` \x85\x01R\x95\x87\x16`@\x84\x01RPP\x91\x84\x16``\x83\x01R\x90\x92\x16`\x80\x90\x92\x01\x91\x90\x91R\x91\x90PV[`@\x81R_\x83Q\x80`@\x84\x01Ra\x0C\x1F\x81``\x85\x01` \x88\x01a\t\xF9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16` \x83\x01RP`\x1F\x91\x90\x91\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x01``\x01\x91\x90PV\xFE`\xE0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0\x16\r8\x03\x80b\0\x16\r\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01.V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x90\x81\x17\x82U`@Q\x85\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P_[\x85Q\x81\x10\x15b\0\0\xDAW`\x01\x80_\x88\x84\x81Q\x81\x10b\0\0\xA0Wb\0\0\xA0b\0\x02EV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x82R\x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U`\x01\x01b\0\0}V[P`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\xA0R\x90\x83\x16`\x80R\x90\x91\x16`\xC0RPb\0\x02Y\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01)W_\x80\xFD[\x91\x90PV[_\x80_\x80_`\xA0\x86\x88\x03\x12\x15b\0\x01CW_\x80\xFD[\x85Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01ZW_\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12b\0\x01nW_\x80\xFD[\x81Q` \x82\x82\x11\x15b\0\x01\x85Wb\0\x01\x85b\0\0\xFEV[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15b\0\x01\xADWb\0\x01\xADb\0\0\xFEV[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x8C\x84\x11\x15b\0\x01\xCBW_\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15b\0\x01\xF4Wb\0\x01\xE4\x86b\0\x01\x12V[\x85R\x94\x82\x01\x94\x93\x82\x01\x93b\0\x01\xD0V[\x99Pb\0\x02\x05\x90P\x8A\x82\x01b\0\x01\x12V[\x97PPPPPb\0\x02\x19`@\x87\x01b\0\x01\x12V[\x92Pb\0\x02)``\x87\x01b\0\x01\x12V[\x91Pb\0\x029`\x80\x87\x01b\0\x01\x12V[\x90P\x92\x95P\x92\x95\x90\x93PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`\x80Q`\xA0Q`\xC0Qa\x13Kb\0\x02\xC2_9_\x81\x81`\xCC\x01R\x81\x81a\x02\xF8\x01Ra\x03y\x01R_\x81\x81a\x01\xE5\x01R\x81\x81a\x02|\x01R\x81\x81a\x04\xA2\x01R\x81\x81a\x05\x9F\x01R\x81\x81a\x08\x1E\x01Ra\t\x12\x01R_\x81\x81a\x01(\x01R\x81\x81a\x04\x1B\x01Ra\x05\x01\x01Ra\x13K_\xF3\xFE`\x80`@R`\x046\x10a\0\xB0W_5`\xE0\x1C\x80c\x94V\xFB\xCC\x11a\0fW\x80c\xD0\xF2\xD8\xAC\x11a\0LW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x07W\x80c\xE5\x13^\xC6\x14a\x02&W\x80c\xF2\xFD\xE3\x8B\x14a\x02EW_\x80\xFD[\x80c\x94V\xFB\xCC\x14a\x01\xB5W\x80c\xABW&P\x14a\x01\xD4W_\x80\xFD[\x80cX]\xA6(\x11a\0\x96W\x80cX]\xA6(\x14a\x01JW\x80ci\r\x83 \x14a\x01kW\x80c\x8D\xA5\xCB[\x14a\x01\x8AW_\x80\xFD[\x80c\x12&\x1E\xE7\x14a\0\xBBW\x80c5\xA9\xE4\xDF\x14a\x01\x17W_\x80\xFD[6a\0\xB7W\0[_\x80\xFD[4\x80\x15a\0\xC6W_\x80\xFD[Pa\0\xEE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\"W_\x80\xFD[Pa\0\xEE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[4\x80\x15a\x01UW_\x80\xFD[Pa\x01ia\x01d6`\x04a\r\x9EV[a\x02dV[\0[4\x80\x15a\x01vW_\x80\xFD[Pa\x01ia\x01\x856`\x04a\x0E&V[a\x05\xCFV[4\x80\x15a\x01\x95W_\x80\xFD[P_Ta\0\xEE\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xC0W_\x80\xFD[Pa\x01ia\x01\xCF6`\x04a\x0EHV[a\x06aV[4\x80\x15a\x01\xDFW_\x80\xFD[Pa\0\xEE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[4\x80\x15a\x02\x12W_\x80\xFD[Pa\x01ia\x02!6`\x04a\x0E\x7FV[a\x07\x95V[4\x80\x15a\x021W_\x80\xFD[Pa\x01ia\x02@6`\x04a\r\x9EV[a\x08\x89V[4\x80\x15a\x02PW_\x80\xFD[Pa\x01ia\x02_6`\x04a\x0E&V[a\t\x80V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x02\xD3W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x02\xE2\x84\x86\x01\x86a\x0F\xECV[\x92P\x92P\x92P_[\x83Q\x81\x10\x15a\x04\x91Wa\x03w\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03JWa\x03Ja\x10\xDBV[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\no\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x87Q|E\x85\x83\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x10\xDBV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x84\x90\x1B\x16\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16`$\x82\x01R`D\x81\x01\x91\x90\x91Re\xFF\xFF\xFF\xFF\xFF\xFF`d\x82\x01R`\x84\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04oW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\x81W=_\x80>=_\xFD[PP`\x01\x90\x92\x01\x91Pa\x02\xEA\x90PV[P_[\x82Q\x81\x10\x15a\x04\xFCWa\x04\xF4\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x84\x81Q\x81\x10a\x03JWa\x03Ja\x10\xDBV[`\x01\x01a\x04\x94V[P_\x80\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83`@Qa\x05D\x91\x90a\x11\x08V[_`@Q\x80\x83\x03\x81_\x86Z\xF1\x91PP=\x80_\x81\x14a\x05}W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x05\x82V[``\x91P[P\x91P\x91P\x81a\x05\x94W\x80Q` \x82\x01\xFD[G\x15a\x05\xC4Wa\x05\xC4\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\x0B@V[PPPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06TW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[a\x06^\x81Ga\x0B\xDBV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xE1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\x07\x91\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07OW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07s\x91\x90a\x114V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x0CMV[PPV[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x07\xE1W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x08W\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x12=_\xFD[PPPPPPPV[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x08\xD5W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\tM\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x12aV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\tdW_\x80\xFD[PZ\xF1\x15\x80\x15a\tvW=_\x80>=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\n\0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0B:W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0B\x96W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0B\x9BV[``\x91P[PP\x90P\x80a\x0B\xD6W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\x0B\xD6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[_`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0B:W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[_\x80\x83`\x1F\x84\x01\x12a\r(W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r?W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\rYW_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\rpW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\x87W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\rYW_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\r\xB1W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\r\xC8W_\x80\xFD[a\r\xD4\x88\x83\x89\x01a\r\x18V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\r\xECW_\x80\xFD[Pa\r\xF9\x87\x82\x88\x01a\r`V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06^W_\x80\xFD[_` \x82\x84\x03\x12\x15a\x0E6W_\x80\xFD[\x815a\x0EA\x81a\x0E\x05V[\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x0EYW_\x80\xFD[\x825a\x0Ed\x81a\x0E\x05V[\x91P` \x83\x015a\x0Et\x81a\x0E\x05V[\x80\x91PP\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\x0E\x91W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xA8W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x0E\xBBW_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x0E\xD0W_\x80\xFD[Pa\x0E\xDD\x86\x82\x87\x01a\r`V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x0F^Wa\x0F^a\x0E\xEAV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x0FuW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0F\x91Wa\x0F\x91a\x0E\xEAV[\x81`\x05\x1Ba\x0F\xA0\x82\x82\x01a\x0F\x17V[\x92\x83R\x84\x81\x01\x82\x01\x92\x82\x81\x01\x90\x87\x85\x11\x15a\x0F\xB9W_\x80\xFD[\x83\x87\x01\x92P[\x84\x83\x10\x15a\x0F\xE1W\x825a\x0F\xD2\x81a\x0E\x05V[\x82R\x91\x83\x01\x91\x90\x83\x01\x90a\x0F\xBFV[\x97\x96PPPPPPPV[_\x80_``\x84\x86\x03\x12\x15a\x0F\xFEW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x10\x15W_\x80\xFD[a\x10!\x87\x83\x88\x01a\x0FfV[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x107W_\x80\xFD[a\x10C\x88\x82\x89\x01a\x0FfV[\x94PP`@\x86\x015\x81\x81\x11\x15a\x10WW_\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a\x10gW_\x80\xFD[\x805\x82\x81\x11\x15a\x10yWa\x10ya\x0E\xEAV[a\x10\xA9\x84\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x0F\x17V[\x92P\x80\x83R\x88\x84\x82\x84\x01\x01\x11\x15a\x10\xBEW_\x80\xFD[\x80\x84\x83\x01\x85\x85\x017_\x84\x82\x85\x01\x01RPP\x80\x92PPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82Q_[\x81\x81\x10\x15a\x11'W` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x11\rV[P_\x92\x01\x91\x82RP\x91\x90PV[_` \x82\x84\x03\x12\x15a\x11DW_\x80\xFD[PQ\x91\x90PV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x11~W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\x9DW_\x80\xFD[\x806\x03\x82\x13\x15a\rYW_\x80\xFD[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\x11\xFD\x82\x83a\x11KV[`@\x85Ra\x12\x0F`@\x86\x01\x82\x84a\x11\xABV[\x91PPa\x12\x1F` \x84\x01\x84a\x11KV[\x85\x83\x03` \x87\x01Ra\x122\x83\x82\x84a\x11\xABV[\x96\x95PPPPPPV[`@\x81R_a\x12N`@\x83\x01\x86a\x11\xF2V[\x82\x81\x03` \x84\x01Ra\x122\x81\x85\x87a\x11\xABV[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x12\xFFW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x12\xDDW_\x80\xFD[a\x12\xE9\x85\x8C\x83\x01a\x11\xF2V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x12}V[PPP\x82\x81\x03` \x84\x01Ra\x0F\xE1\x81\x85\x87a\x11\xABV\xFE\xA2dipfsX\"\x12 \xF97.\x12\x89B\x85\x198\x94{\x04$\xED\x03\xEE}\xCB\x0C\x13\xF6\xEC\xDE\x91,\x8B~\xDC\x90\xABu\xD2dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xEF\xF6\xA2\xD9\xEB\x97\xE6c9\xA1!\x9A\x8D^Z5\x04*\x91\x1E\xA7\xF0\x1B\xE0\x9CC\x08\x91\xE3\xCD\xA3tdsolcC\0\x08\x18\x003", + ); + /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. +```solidity +function IS_SCRIPT() external view returns (bool); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_SCRIPTCall {} + ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct IS_SCRIPTReturn { + #[allow(missing_docs)] + pub _0: bool, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (bool,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: IS_SCRIPTReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for IS_SCRIPTReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for IS_SCRIPTCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = IS_SCRIPTReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "IS_SCRIPT()"; + const SELECTOR: [u8; 4] = [248u8, 204u8, 191u8, 71u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `run()` and selector `0xc0406226`. +```solidity +function run() external returns (address executor); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct runCall {} + ///Container type for the return parameters of the [`run()`](runCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct runReturn { + #[allow(missing_docs)] + pub executor: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: runReturn) -> Self { + (value.executor,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for runReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { executor: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for runCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = runReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "run()"; + const SELECTOR: [u8; 4] = [192u8, 64u8, 98u8, 38u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `setUp()` and selector `0x0a9254e4`. +```solidity +function setUp() external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpCall {} + ///Container type for the return parameters of the [`setUp()`](setUpCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct setUpReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: setUpReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for setUpReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for setUpCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = setUpReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "setUp()"; + const SELECTOR: [u8; 4] = [10u8, 146u8, 84u8, 228u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`DeployUniversalRouterExecutor`](self) function calls. + pub enum DeployUniversalRouterExecutorCalls { + #[allow(missing_docs)] + IS_SCRIPT(IS_SCRIPTCall), + #[allow(missing_docs)] + run(runCall), + #[allow(missing_docs)] + setUp(setUpCall), + } + #[automatically_derived] + impl DeployUniversalRouterExecutorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [10u8, 146u8, 84u8, 228u8], + [192u8, 64u8, 98u8, 38u8], + [248u8, 204u8, 191u8, 71u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for DeployUniversalRouterExecutorCalls { + const NAME: &'static str = "DeployUniversalRouterExecutorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::IS_SCRIPT(_) => { + ::SELECTOR + } + Self::run(_) => ::SELECTOR, + Self::setUp(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn setUp( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployUniversalRouterExecutorCalls::setUp) + } + setUp + }, + { + fn run( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployUniversalRouterExecutorCalls::run) + } + run + }, + { + fn IS_SCRIPT( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(DeployUniversalRouterExecutorCalls::IS_SCRIPT) + } + IS_SCRIPT + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encoded_size(inner) + } + Self::run(inner) => { + ::abi_encoded_size(inner) + } + Self::setUp(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::IS_SCRIPT(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::run(inner) => { + ::abi_encode_raw(inner, out) + } + Self::setUp(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`DeployUniversalRouterExecutor`](self) contract instance. + +See the [wrapper's documentation](`DeployUniversalRouterExecutorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> DeployUniversalRouterExecutorInstance { + DeployUniversalRouterExecutorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + DeployUniversalRouterExecutorInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + DeployUniversalRouterExecutorInstance::::deploy_builder(provider) + } + /**A [`DeployUniversalRouterExecutor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`DeployUniversalRouterExecutor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct DeployUniversalRouterExecutorInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for DeployUniversalRouterExecutorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("DeployUniversalRouterExecutorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployUniversalRouterExecutorInstance { + /**Creates a new wrapper around an on-chain [`DeployUniversalRouterExecutor`](self) contract instance. + +See the [wrapper's documentation](`DeployUniversalRouterExecutorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl DeployUniversalRouterExecutorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider( + self, + ) -> DeployUniversalRouterExecutorInstance { + DeployUniversalRouterExecutorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployUniversalRouterExecutorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`IS_SCRIPT`] function. + pub fn IS_SCRIPT( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&IS_SCRIPTCall {}) + } + ///Creates a new call builder for the [`run`] function. + pub fn run(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&runCall {}) + } + ///Creates a new call builder for the [`setUp`] function. + pub fn setUp(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&setUpCall {}) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > DeployUniversalRouterExecutorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} diff --git a/crates/bindings-uniswapx/src/lib.rs b/crates/bindings-uniswapx/src/lib.rs index 073755a..2c84220 100644 --- a/crates/bindings-uniswapx/src/lib.rs +++ b/crates/bindings-uniswapx/src/lib.rs @@ -3,102 +3,105 @@ //! This is autogenerated code. //! Do not manually edit these files. //! These files may be overwritten by the codegen system at any time. -pub mod arraybuilder; -pub mod basereactor; -pub mod blocknumberish; -pub mod mockblocknumberish; -pub mod byteslib; -pub mod cosignerlib; -pub mod mockcosignerlibcontract; -pub mod currencylibrary; -pub mod curvebuilder; -pub mod deploydutch; -pub mod deploydutchv2; -pub mod deploydutchv3; -pub mod deployexclusivedutch; -pub mod deploymultifillerexecutor; -pub mod deploypermit2; -pub mod deploypriorityorderreactor; -pub mod deployswaprouter02executor; -pub mod dutchdecaylib; -pub mod dutchorderlib; -pub mod dutchorderreactor; -pub mod ecdsa; -pub mod eip712; -pub mod erc20; -pub mod exclusivedutchorderlib; -pub mod exclusivedutchorderreactor; -pub mod exclusivefillervalidation; -pub mod exclusivitylib; -pub mod fixedpointmathlib; -pub mod iallowancetransfer; -pub mod iarbsys; -pub mod ieip712; -pub mod ierc165; -pub mod ierc20; -pub mod ierc5267; -pub mod ierc721; -pub mod ierc721enumerable; -pub mod ierc721metadata; -pub mod ierc721tokenreceiver; -pub mod ipermit2; -pub mod iprotocolfeecontroller; -pub mod ireactor; -pub mod ireactorcallback; -pub mod isignaturetransfer; -pub mod iswaprouter02; -pub mod ivalidationcallback; -pub mod limitorderlib; -pub mod limitorderreactor; -pub mod math; -pub mod mathext; -pub mod mockarbsys; -pub mod mockdutchorderreactor; -pub mod mockerc20; -pub mod mockerc721; -pub mod mockexclusivitylib; -pub mod mockfeecontroller; -pub mod mockfeecontrollerduplicates; -pub mod mockfeecontrollerinputandoutputfees; -pub mod mockfeecontrollerinputfees; -pub mod mockfeecontrollerzerofee; -pub mod mockfillcontract; -pub mod mockfillcontractdoubleexecution; -pub mod mockfillcontractwithoutputoverride; -pub mod mockprotocolfees; -pub mod mockresolvedorderlib; -pub mod mockswaprouter; -pub mod mockswapper; -pub mod mockvalidationcontract; -pub mod multifillerswaprouter02executor; -pub mod nonlineardutchdecaylib; -pub mod orderinfobuilder; -pub mod orderinfolib; -pub mod orderquoter; -pub mod outputsbuilder; -pub mod owned; -pub mod path; -pub mod pathbuilder; -pub mod permit2lib; -pub mod permitsignature; -pub mod priorityfeelib; -pub mod priorityorderlib; -pub mod priorityorderreactor; -pub mod protocolfees; -pub mod reactorevents; -pub mod reentrancyguard; -pub mod resolvedorderlib; -pub mod safecast; -pub mod safetransferlib; -pub mod shortstrings; -pub mod signedmath; -pub mod solarray; -pub mod storageslot; -pub mod strings; -pub mod swaprouter02executor; -pub mod uint16arraylibrary; -pub mod v2dutchorderlib; -pub mod v2dutchorderreactor; -pub mod v3dutchorderlib; -pub mod v3dutchorderreactor; -pub mod weth; +pub mod r#arraybuilder; +pub mod r#basereactor; +pub mod r#blocknumberish; +pub mod r#mockblocknumberish; +pub mod r#byteslib; +pub mod r#cosignerlib; +pub mod r#mockcosignerlibcontract; +pub mod r#currencylibrary; +pub mod r#curvebuilder; +pub mod r#deploydutch; +pub mod r#deploydutchv2; +pub mod r#deploydutchv3; +pub mod r#deployexclusivedutch; +pub mod r#deploymultifillerexecutor; +pub mod r#deploypermit2; +pub mod r#deploypriorityorderreactor; +pub mod r#deployswaprouter02executor; +pub mod r#deployuniversalrouterexecutor; +pub mod r#dutchdecaylib; +pub mod r#dutchorderlib; +pub mod r#dutchorderreactor; +pub mod r#ecdsa; +pub mod r#eip712; +pub mod r#erc20; +pub mod r#exclusivedutchorderlib; +pub mod r#exclusivedutchorderreactor; +pub mod r#exclusivefillervalidation; +pub mod r#exclusivitylib; +pub mod r#fixedpointmathlib; +pub mod r#iallowancetransfer; +pub mod r#iarbsys; +pub mod r#ieip712; +pub mod r#ierc165; +pub mod r#ierc20; +pub mod r#ierc5267; +pub mod r#ierc721; +pub mod r#ierc721enumerable; +pub mod r#ierc721metadata; +pub mod r#ierc721tokenreceiver; +pub mod r#ipermit2; +pub mod r#iprotocolfeecontroller; +pub mod r#ireactor; +pub mod r#ireactorcallback; +pub mod r#isignaturetransfer; +pub mod r#iswaprouter02; +pub mod r#iuniversalrouter; +pub mod r#ivalidationcallback; +pub mod r#limitorderlib; +pub mod r#limitorderreactor; +pub mod r#math; +pub mod r#mathext; +pub mod r#mockarbsys; +pub mod r#mockdutchorderreactor; +pub mod r#mockerc20; +pub mod r#mockerc721; +pub mod r#mockexclusivitylib; +pub mod r#mockfeecontroller; +pub mod r#mockfeecontrollerduplicates; +pub mod r#mockfeecontrollerinputandoutputfees; +pub mod r#mockfeecontrollerinputfees; +pub mod r#mockfeecontrollerzerofee; +pub mod r#mockfillcontract; +pub mod r#mockfillcontractdoubleexecution; +pub mod r#mockfillcontractwithoutputoverride; +pub mod r#mockprotocolfees; +pub mod r#mockresolvedorderlib; +pub mod r#mockswaprouter; +pub mod r#mockswapper; +pub mod r#mockvalidationcontract; +pub mod r#multifillerswaprouter02executor; +pub mod r#nonlineardutchdecaylib; +pub mod r#orderinfobuilder; +pub mod r#orderinfolib; +pub mod r#orderquoter; +pub mod r#outputsbuilder; +pub mod r#owned; +pub mod r#path; +pub mod r#pathbuilder; +pub mod r#permit2lib; +pub mod r#permitsignature; +pub mod r#priorityfeelib; +pub mod r#priorityorderlib; +pub mod r#priorityorderreactor; +pub mod r#protocolfees; +pub mod r#reactorevents; +pub mod r#reentrancyguard; +pub mod r#resolvedorderlib; +pub mod r#safecast; +pub mod r#safetransferlib; +pub mod r#shortstrings; +pub mod r#signedmath; +pub mod r#solarray; +pub mod r#storageslot; +pub mod r#strings; +pub mod r#swaprouter02executor; +pub mod r#uint16arraylibrary; +pub mod r#universalrouterexecutor; +pub mod r#v2dutchorderlib; +pub mod r#v2dutchorderreactor; +pub mod r#v3dutchorderlib; +pub mod r#v3dutchorderreactor; +pub mod r#weth; diff --git a/crates/bindings-uniswapx/src/universalrouterexecutor.rs b/crates/bindings-uniswapx/src/universalrouterexecutor.rs new file mode 100644 index 0000000..003c185 --- /dev/null +++ b/crates/bindings-uniswapx/src/universalrouterexecutor.rs @@ -0,0 +1,4423 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface UniversalRouterExecutor { + struct InputToken { + address token; + uint256 amount; + uint256 maxAmount; + } + struct OrderInfo { + address reactor; + address swapper; + uint256 nonce; + uint256 deadline; + address additionalValidationContract; + bytes additionalValidationData; + } + struct OutputToken { + address token; + uint256 amount; + address recipient; + } + struct ResolvedOrder { + OrderInfo info; + InputToken input; + OutputToken[] outputs; + bytes sig; + bytes32 hash; + } + struct SignedOrder { + bytes order; + bytes sig; + } + + error CallerNotWhitelisted(); + error MsgSenderNotReactor(); + error NativeTransferFailed(); + + event OwnershipTransferred(address indexed user, address indexed newOwner); + + constructor(address[] _whitelistedCallers, address _reactor, address _owner, address _universalRouter, address _permit2); + + receive() external payable; + + function execute(SignedOrder memory order, bytes memory callbackData) external; + function executeBatch(SignedOrder[] memory orders, bytes memory callbackData) external; + function owner() external view returns (address); + function permit2() external view returns (address); + function reactor() external view returns (address); + function reactorCallback(ResolvedOrder[] memory, bytes memory callbackData) external; + function transferOwnership(address newOwner) external; + function universalRouter() external view returns (address); + function withdrawERC20(address token, address to) external; + function withdrawETH(address recipient) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "constructor", + "inputs": [ + { + "name": "_whitelistedCallers", + "type": "address[]", + "internalType": "address[]" + }, + { + "name": "_reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "_owner", + "type": "address", + "internalType": "address" + }, + { + "name": "_universalRouter", + "type": "address", + "internalType": "address" + }, + { + "name": "_permit2", + "type": "address", + "internalType": "contract IPermit2" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "order", + "type": "tuple", + "internalType": "struct SignedOrder", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "executeBatch", + "inputs": [ + { + "name": "orders", + "type": "tuple[]", + "internalType": "struct SignedOrder[]", + "components": [ + { + "name": "order", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit2", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IPermit2" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "reactor", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IReactor" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "reactorCallback", + "inputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct ResolvedOrder[]", + "components": [ + { + "name": "info", + "type": "tuple", + "internalType": "struct OrderInfo", + "components": [ + { + "name": "reactor", + "type": "address", + "internalType": "contract IReactor" + }, + { + "name": "swapper", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "additionalValidationContract", + "type": "address", + "internalType": "contract IValidationCallback" + }, + { + "name": "additionalValidationData", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "input", + "type": "tuple", + "internalType": "struct InputToken", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "outputs", + "type": "tuple[]", + "internalType": "struct OutputToken[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ] + }, + { + "name": "sig", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ] + }, + { + "name": "callbackData", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "universalRouter", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdrawERC20", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "contract ERC20" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "withdrawETH", + "inputs": [ + { + "name": "recipient", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "user", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "CallerNotWhitelisted", + "inputs": [] + }, + { + "type": "error", + "name": "MsgSenderNotReactor", + "inputs": [] + }, + { + "type": "error", + "name": "NativeTransferFailed", + "inputs": [] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod UniversalRouterExecutor { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x60e060405234801562000010575f80fd5b506040516200160d3803806200160d83398101604081905262000033916200012e565b5f80546001600160a01b0319166001600160a01b03851690811782556040518592907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f5b8551811015620000da576001805f888481518110620000a057620000a062000245565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016200007d565b506001600160a01b0393841660a05290831660805290911660c05250620002599050565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b038116811462000129575f80fd5b919050565b5f805f805f60a0868803121562000143575f80fd5b85516001600160401b03808211156200015a575f80fd5b818801915088601f8301126200016e575f80fd5b8151602082821115620001855762000185620000fe565b8160051b604051601f19603f83011681018181108682111715620001ad57620001ad620000fe565b60405292835281830193508481018201928c841115620001cb575f80fd5b948201945b83861015620001f457620001e48662000112565b85529482019493820193620001d0565b99506200020590508a820162000112565b975050505050620002196040870162000112565b9250620002296060870162000112565b9150620002396080870162000112565b90509295509295909350565b634e487b7160e01b5f52603260045260245ffd5b60805160a05160c05161134b620002c25f395f818160cc015281816102f8015261037901525f81816101e50152818161027c015281816104a20152818161059f0152818161081e015261091201525f81816101280152818161041b0152610501015261134b5ff3fe6080604052600436106100b0575f3560e01c80639456fbcc11610066578063d0f2d8ac1161004c578063d0f2d8ac14610207578063e5135ec614610226578063f2fde38b14610245575f80fd5b80639456fbcc146101b5578063ab572650146101d4575f80fd5b8063585da62811610096578063585da6281461014a578063690d83201461016b5780638da5cb5b1461018a575f80fd5b806312261ee7146100bb57806335a9e4df14610117575f80fd5b366100b757005b5f80fd5b3480156100c6575f80fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b348015610122575f80fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b348015610155575f80fd5b50610169610164366004610d9e565b610264565b005b348015610176575f80fd5b50610169610185366004610e26565b6105cf565b348015610195575f80fd5b505f546100ee9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101c0575f80fd5b506101696101cf366004610e48565b610661565b3480156101df575f80fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b348015610212575f80fd5b50610169610221366004610e7f565b610795565b348015610231575f80fd5b50610169610240366004610d9e565b610889565b348015610250575f80fd5b5061016961025f366004610e26565b610980565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102d3576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80806102e284860186610fec565b9250925092505f5b8351811015610491576103777f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061034a5761034a6110db565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610a6f9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166387517c458583815181106103c5576103c56110db565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff91821660048201527f000000000000000000000000000000000000000000000000000000000000000082166024820152604481019190915265ffffffffffff60648201526084015f604051808303815f87803b15801561046f575f80fd5b505af1158015610481573d5f803e3d5ffd5b5050600190920191506102ea9050565b505f5b82518110156104fc576104f47f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85848151811061034a5761034a6110db565b600101610494565b505f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16836040516105449190611108565b5f604051808303815f865af19150503d805f811461057d576040519150601f19603f3d011682016040523d82523d5f602084013e610582565b606091505b50915091508161059457805160208201fd5b47156105c4576105c47f000000000000000000000000000000000000000000000000000000000000000047610b40565b505050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61065e8147610bdb565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161064b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261079190829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa15801561074f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107739190611134565b73ffffffffffffffffffffffffffffffffffffffff85169190610c4d565b5050565b335f9081526001602052604081205460ff16151590036107e1576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906108579086908690869060040161123c565b5f604051808303815f87803b15801561086e575f80fd5b505af1158015610880573d5f803e3d5ffd5b50505050505050565b335f9081526001602052604081205460ff16151590036108d5576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c79061094d908790879087908790600401611261565b5f604051808303815f87803b158015610964575f80fd5b505af1158015610976573d5f803e3d5ffd5b5050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161064b565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c4544000000000000000000000000000000000000604482015260640161064b565b50505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610b96576040519150601f19603f3d011682016040523d82523d5f602084013e610b9b565b606091505b5050905080610bd6576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f805f805f85875af1905080610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161064b565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161064b565b5f8083601f840112610d28575f80fd5b50813567ffffffffffffffff811115610d3f575f80fd5b6020830191508360208260051b8501011115610d59575f80fd5b9250929050565b5f8083601f840112610d70575f80fd5b50813567ffffffffffffffff811115610d87575f80fd5b602083019150836020828501011115610d59575f80fd5b5f805f8060408587031215610db1575f80fd5b843567ffffffffffffffff80821115610dc8575f80fd5b610dd488838901610d18565b90965094506020870135915080821115610dec575f80fd5b50610df987828801610d60565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461065e575f80fd5b5f60208284031215610e36575f80fd5b8135610e4181610e05565b9392505050565b5f8060408385031215610e59575f80fd5b8235610e6481610e05565b91506020830135610e7481610e05565b809150509250929050565b5f805f60408486031215610e91575f80fd5b833567ffffffffffffffff80821115610ea8575f80fd5b9085019060408288031215610ebb575f80fd5b90935060208501359080821115610ed0575f80fd5b50610edd86828701610d60565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610f5e57610f5e610eea565b604052919050565b5f82601f830112610f75575f80fd5b8135602067ffffffffffffffff821115610f9157610f91610eea565b8160051b610fa0828201610f17565b9283528481018201928281019087851115610fb9575f80fd5b83870192505b84831015610fe1578235610fd281610e05565b82529183019190830190610fbf565b979650505050505050565b5f805f60608486031215610ffe575f80fd5b833567ffffffffffffffff80821115611015575f80fd5b61102187838801610f66565b9450602091508186013581811115611037575f80fd5b61104388828901610f66565b945050604086013581811115611057575f80fd5b8601601f81018813611067575f80fd5b80358281111561107957611079610eea565b6110a9847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610f17565b925080835288848284010111156110be575f80fd5b80848301858501375f848285010152505080925050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82515f5b81811015611127576020818601810151858301520161110d565b505f920191825250919050565b5f60208284031215611144575f80fd5b5051919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261117e575f80fd5b830160208101925035905067ffffffffffffffff81111561119d575f80fd5b803603821315610d59575f80fd5b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f6111fd828361114b565b6040855261120f6040860182846111ab565b91505061121f602084018461114b565b85830360208701526112328382846111ab565b9695505050505050565b604081525f61124e60408301866111f2565b82810360208401526112328185876111ab565b604080825281018490525f6060600586901b8301810190830187835b888110156112ff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18b36030181126112dd575f80fd5b6112e9858c83016111f2565b945050602092830192919091019060010161127d565b5050508281036020840152610fe18185876111ab56fea2646970667358221220f9372e128942851938947b0424ed03ee7dcb0c13f6ecde912c8b7edc90ab75d264736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\xE0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0\x16\r8\x03\x80b\0\x16\r\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01.V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x16\x90\x81\x17\x82U`@Q\x85\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P_[\x85Q\x81\x10\x15b\0\0\xDAW`\x01\x80_\x88\x84\x81Q\x81\x10b\0\0\xA0Wb\0\0\xA0b\0\x02EV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x82R\x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U`\x01\x01b\0\0}V[P`\x01`\x01`\xA0\x1B\x03\x93\x84\x16`\xA0R\x90\x83\x16`\x80R\x90\x91\x16`\xC0RPb\0\x02Y\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01)W_\x80\xFD[\x91\x90PV[_\x80_\x80_`\xA0\x86\x88\x03\x12\x15b\0\x01CW_\x80\xFD[\x85Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01ZW_\x80\xFD[\x81\x88\x01\x91P\x88`\x1F\x83\x01\x12b\0\x01nW_\x80\xFD[\x81Q` \x82\x82\x11\x15b\0\x01\x85Wb\0\x01\x85b\0\0\xFEV[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15b\0\x01\xADWb\0\x01\xADb\0\0\xFEV[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x8C\x84\x11\x15b\0\x01\xCBW_\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15b\0\x01\xF4Wb\0\x01\xE4\x86b\0\x01\x12V[\x85R\x94\x82\x01\x94\x93\x82\x01\x93b\0\x01\xD0V[\x99Pb\0\x02\x05\x90P\x8A\x82\x01b\0\x01\x12V[\x97PPPPPb\0\x02\x19`@\x87\x01b\0\x01\x12V[\x92Pb\0\x02)``\x87\x01b\0\x01\x12V[\x91Pb\0\x029`\x80\x87\x01b\0\x01\x12V[\x90P\x92\x95P\x92\x95\x90\x93PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[`\x80Q`\xA0Q`\xC0Qa\x13Kb\0\x02\xC2_9_\x81\x81`\xCC\x01R\x81\x81a\x02\xF8\x01Ra\x03y\x01R_\x81\x81a\x01\xE5\x01R\x81\x81a\x02|\x01R\x81\x81a\x04\xA2\x01R\x81\x81a\x05\x9F\x01R\x81\x81a\x08\x1E\x01Ra\t\x12\x01R_\x81\x81a\x01(\x01R\x81\x81a\x04\x1B\x01Ra\x05\x01\x01Ra\x13K_\xF3\xFE`\x80`@R`\x046\x10a\0\xB0W_5`\xE0\x1C\x80c\x94V\xFB\xCC\x11a\0fW\x80c\xD0\xF2\xD8\xAC\x11a\0LW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x07W\x80c\xE5\x13^\xC6\x14a\x02&W\x80c\xF2\xFD\xE3\x8B\x14a\x02EW_\x80\xFD[\x80c\x94V\xFB\xCC\x14a\x01\xB5W\x80c\xABW&P\x14a\x01\xD4W_\x80\xFD[\x80cX]\xA6(\x11a\0\x96W\x80cX]\xA6(\x14a\x01JW\x80ci\r\x83 \x14a\x01kW\x80c\x8D\xA5\xCB[\x14a\x01\x8AW_\x80\xFD[\x80c\x12&\x1E\xE7\x14a\0\xBBW\x80c5\xA9\xE4\xDF\x14a\x01\x17W_\x80\xFD[6a\0\xB7W\0[_\x80\xFD[4\x80\x15a\0\xC6W_\x80\xFD[Pa\0\xEE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\"W_\x80\xFD[Pa\0\xEE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[4\x80\x15a\x01UW_\x80\xFD[Pa\x01ia\x01d6`\x04a\r\x9EV[a\x02dV[\0[4\x80\x15a\x01vW_\x80\xFD[Pa\x01ia\x01\x856`\x04a\x0E&V[a\x05\xCFV[4\x80\x15a\x01\x95W_\x80\xFD[P_Ta\0\xEE\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xC0W_\x80\xFD[Pa\x01ia\x01\xCF6`\x04a\x0EHV[a\x06aV[4\x80\x15a\x01\xDFW_\x80\xFD[Pa\0\xEE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[4\x80\x15a\x02\x12W_\x80\xFD[Pa\x01ia\x02!6`\x04a\x0E\x7FV[a\x07\x95V[4\x80\x15a\x021W_\x80\xFD[Pa\x01ia\x02@6`\x04a\r\x9EV[a\x08\x89V[4\x80\x15a\x02PW_\x80\xFD[Pa\x01ia\x02_6`\x04a\x0E&V[a\t\x80V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x02\xD3W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x02\xE2\x84\x86\x01\x86a\x0F\xECV[\x92P\x92P\x92P_[\x83Q\x81\x10\x15a\x04\x91Wa\x03w\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03JWa\x03Ja\x10\xDBV[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\no\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x87Q|E\x85\x83\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x10\xDBV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x84\x90\x1B\x16\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16`$\x82\x01R`D\x81\x01\x91\x90\x91Re\xFF\xFF\xFF\xFF\xFF\xFF`d\x82\x01R`\x84\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04oW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\x81W=_\x80>=_\xFD[PP`\x01\x90\x92\x01\x91Pa\x02\xEA\x90PV[P_[\x82Q\x81\x10\x15a\x04\xFCWa\x04\xF4\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x84\x81Q\x81\x10a\x03JWa\x03Ja\x10\xDBV[`\x01\x01a\x04\x94V[P_\x80\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83`@Qa\x05D\x91\x90a\x11\x08V[_`@Q\x80\x83\x03\x81_\x86Z\xF1\x91PP=\x80_\x81\x14a\x05}W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x05\x82V[``\x91P[P\x91P\x91P\x81a\x05\x94W\x80Q` \x82\x01\xFD[G\x15a\x05\xC4Wa\x05\xC4\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\x0B@V[PPPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06TW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[a\x06^\x81Ga\x0B\xDBV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xE1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\x07\x91\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07OW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07s\x91\x90a\x114V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x0CMV[PPV[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x07\xE1W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x08W\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x12=_\xFD[PPPPPPPV[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x08\xD5W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\tM\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x12aV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\tdW_\x80\xFD[PZ\xF1\x15\x80\x15a\tvW=_\x80>=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\n\0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0B:W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0B\x96W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0B\x9BV[``\x91P[PP\x90P\x80a\x0B\xD6W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\x0B\xD6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[_`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0B:W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[_\x80\x83`\x1F\x84\x01\x12a\r(W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r?W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\rYW_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\rpW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\x87W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\rYW_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\r\xB1W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\r\xC8W_\x80\xFD[a\r\xD4\x88\x83\x89\x01a\r\x18V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\r\xECW_\x80\xFD[Pa\r\xF9\x87\x82\x88\x01a\r`V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06^W_\x80\xFD[_` \x82\x84\x03\x12\x15a\x0E6W_\x80\xFD[\x815a\x0EA\x81a\x0E\x05V[\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x0EYW_\x80\xFD[\x825a\x0Ed\x81a\x0E\x05V[\x91P` \x83\x015a\x0Et\x81a\x0E\x05V[\x80\x91PP\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\x0E\x91W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xA8W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x0E\xBBW_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x0E\xD0W_\x80\xFD[Pa\x0E\xDD\x86\x82\x87\x01a\r`V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x0F^Wa\x0F^a\x0E\xEAV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x0FuW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0F\x91Wa\x0F\x91a\x0E\xEAV[\x81`\x05\x1Ba\x0F\xA0\x82\x82\x01a\x0F\x17V[\x92\x83R\x84\x81\x01\x82\x01\x92\x82\x81\x01\x90\x87\x85\x11\x15a\x0F\xB9W_\x80\xFD[\x83\x87\x01\x92P[\x84\x83\x10\x15a\x0F\xE1W\x825a\x0F\xD2\x81a\x0E\x05V[\x82R\x91\x83\x01\x91\x90\x83\x01\x90a\x0F\xBFV[\x97\x96PPPPPPPV[_\x80_``\x84\x86\x03\x12\x15a\x0F\xFEW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x10\x15W_\x80\xFD[a\x10!\x87\x83\x88\x01a\x0FfV[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x107W_\x80\xFD[a\x10C\x88\x82\x89\x01a\x0FfV[\x94PP`@\x86\x015\x81\x81\x11\x15a\x10WW_\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a\x10gW_\x80\xFD[\x805\x82\x81\x11\x15a\x10yWa\x10ya\x0E\xEAV[a\x10\xA9\x84\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x0F\x17V[\x92P\x80\x83R\x88\x84\x82\x84\x01\x01\x11\x15a\x10\xBEW_\x80\xFD[\x80\x84\x83\x01\x85\x85\x017_\x84\x82\x85\x01\x01RPP\x80\x92PPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82Q_[\x81\x81\x10\x15a\x11'W` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x11\rV[P_\x92\x01\x91\x82RP\x91\x90PV[_` \x82\x84\x03\x12\x15a\x11DW_\x80\xFD[PQ\x91\x90PV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x11~W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\x9DW_\x80\xFD[\x806\x03\x82\x13\x15a\rYW_\x80\xFD[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\x11\xFD\x82\x83a\x11KV[`@\x85Ra\x12\x0F`@\x86\x01\x82\x84a\x11\xABV[\x91PPa\x12\x1F` \x84\x01\x84a\x11KV[\x85\x83\x03` \x87\x01Ra\x122\x83\x82\x84a\x11\xABV[\x96\x95PPPPPPV[`@\x81R_a\x12N`@\x83\x01\x86a\x11\xF2V[\x82\x81\x03` \x84\x01Ra\x122\x81\x85\x87a\x11\xABV[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x12\xFFW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x12\xDDW_\x80\xFD[a\x12\xE9\x85\x8C\x83\x01a\x11\xF2V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x12}V[PPP\x82\x81\x03` \x84\x01Ra\x0F\xE1\x81\x85\x87a\x11\xABV\xFE\xA2dipfsX\"\x12 \xF97.\x12\x89B\x85\x198\x94{\x04$\xED\x03\xEE}\xCB\x0C\x13\xF6\xEC\xDE\x91,\x8B~\xDC\x90\xABu\xD2dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x6080604052600436106100b0575f3560e01c80639456fbcc11610066578063d0f2d8ac1161004c578063d0f2d8ac14610207578063e5135ec614610226578063f2fde38b14610245575f80fd5b80639456fbcc146101b5578063ab572650146101d4575f80fd5b8063585da62811610096578063585da6281461014a578063690d83201461016b5780638da5cb5b1461018a575f80fd5b806312261ee7146100bb57806335a9e4df14610117575f80fd5b366100b757005b5f80fd5b3480156100c6575f80fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b348015610122575f80fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b348015610155575f80fd5b50610169610164366004610d9e565b610264565b005b348015610176575f80fd5b50610169610185366004610e26565b6105cf565b348015610195575f80fd5b505f546100ee9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101c0575f80fd5b506101696101cf366004610e48565b610661565b3480156101df575f80fd5b506100ee7f000000000000000000000000000000000000000000000000000000000000000081565b348015610212575f80fd5b50610169610221366004610e7f565b610795565b348015610231575f80fd5b50610169610240366004610d9e565b610889565b348015610250575f80fd5b5061016961025f366004610e26565b610980565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102d3576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80806102e284860186610fec565b9250925092505f5b8351811015610491576103777f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061034a5761034a6110db565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610a6f9092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166387517c458583815181106103c5576103c56110db565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff91821660048201527f000000000000000000000000000000000000000000000000000000000000000082166024820152604481019190915265ffffffffffff60648201526084015f604051808303815f87803b15801561046f575f80fd5b505af1158015610481573d5f803e3d5ffd5b5050600190920191506102ea9050565b505f5b82518110156104fc576104f47f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85848151811061034a5761034a6110db565b600101610494565b505f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16836040516105449190611108565b5f604051808303815f865af19150503d805f811461057d576040519150601f19603f3d011682016040523d82523d5f602084013e610582565b606091505b50915091508161059457805160208201fd5b47156105c4576105c47f000000000000000000000000000000000000000000000000000000000000000047610b40565b505050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61065e8147610bdb565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161064b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015261079190829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa15801561074f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107739190611134565b73ffffffffffffffffffffffffffffffffffffffff85169190610c4d565b5050565b335f9081526001602052604081205460ff16151590036107e1576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906108579086908690869060040161123c565b5f604051808303815f87803b15801561086e575f80fd5b505af1158015610880573d5f803e3d5ffd5b50505050505050565b335f9081526001602052604081205460ff16151590036108d5576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c79061094d908790879087908790600401611261565b5f604051808303815f87803b158015610964575f80fd5b505af1158015610976573d5f803e3d5ffd5b5050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161064b565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c4544000000000000000000000000000000000000604482015260640161064b565b50505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610b96576040519150601f19603f3d011682016040523d82523d5f602084013e610b9b565b606091505b5050905080610bd6576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f805f805f85875af1905080610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161064b565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161064b565b5f8083601f840112610d28575f80fd5b50813567ffffffffffffffff811115610d3f575f80fd5b6020830191508360208260051b8501011115610d59575f80fd5b9250929050565b5f8083601f840112610d70575f80fd5b50813567ffffffffffffffff811115610d87575f80fd5b602083019150836020828501011115610d59575f80fd5b5f805f8060408587031215610db1575f80fd5b843567ffffffffffffffff80821115610dc8575f80fd5b610dd488838901610d18565b90965094506020870135915080821115610dec575f80fd5b50610df987828801610d60565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461065e575f80fd5b5f60208284031215610e36575f80fd5b8135610e4181610e05565b9392505050565b5f8060408385031215610e59575f80fd5b8235610e6481610e05565b91506020830135610e7481610e05565b809150509250929050565b5f805f60408486031215610e91575f80fd5b833567ffffffffffffffff80821115610ea8575f80fd5b9085019060408288031215610ebb575f80fd5b90935060208501359080821115610ed0575f80fd5b50610edd86828701610d60565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610f5e57610f5e610eea565b604052919050565b5f82601f830112610f75575f80fd5b8135602067ffffffffffffffff821115610f9157610f91610eea565b8160051b610fa0828201610f17565b9283528481018201928281019087851115610fb9575f80fd5b83870192505b84831015610fe1578235610fd281610e05565b82529183019190830190610fbf565b979650505050505050565b5f805f60608486031215610ffe575f80fd5b833567ffffffffffffffff80821115611015575f80fd5b61102187838801610f66565b9450602091508186013581811115611037575f80fd5b61104388828901610f66565b945050604086013581811115611057575f80fd5b8601601f81018813611067575f80fd5b80358281111561107957611079610eea565b6110a9847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610f17565b925080835288848284010111156110be575f80fd5b80848301858501375f848285010152505080925050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82515f5b81811015611127576020818601810151858301520161110d565b505f920191825250919050565b5f60208284031215611144575f80fd5b5051919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261117e575f80fd5b830160208101925035905067ffffffffffffffff81111561119d575f80fd5b803603821315610d59575f80fd5b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f6111fd828361114b565b6040855261120f6040860182846111ab565b91505061121f602084018461114b565b85830360208701526112328382846111ab565b9695505050505050565b604081525f61124e60408301866111f2565b82810360208401526112328185876111ab565b604080825281018490525f6060600586901b8301810190830187835b888110156112ff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18b36030181126112dd575f80fd5b6112e9858c83016111f2565b945050602092830192919091019060010161127d565b5050508281036020840152610fe18185876111ab56fea2646970667358221220f9372e128942851938947b0424ed03ee7dcb0c13f6ecde912c8b7edc90ab75d264736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x046\x10a\0\xB0W_5`\xE0\x1C\x80c\x94V\xFB\xCC\x11a\0fW\x80c\xD0\xF2\xD8\xAC\x11a\0LW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x07W\x80c\xE5\x13^\xC6\x14a\x02&W\x80c\xF2\xFD\xE3\x8B\x14a\x02EW_\x80\xFD[\x80c\x94V\xFB\xCC\x14a\x01\xB5W\x80c\xABW&P\x14a\x01\xD4W_\x80\xFD[\x80cX]\xA6(\x11a\0\x96W\x80cX]\xA6(\x14a\x01JW\x80ci\r\x83 \x14a\x01kW\x80c\x8D\xA5\xCB[\x14a\x01\x8AW_\x80\xFD[\x80c\x12&\x1E\xE7\x14a\0\xBBW\x80c5\xA9\xE4\xDF\x14a\x01\x17W_\x80\xFD[6a\0\xB7W\0[_\x80\xFD[4\x80\x15a\0\xC6W_\x80\xFD[Pa\0\xEE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\"W_\x80\xFD[Pa\0\xEE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[4\x80\x15a\x01UW_\x80\xFD[Pa\x01ia\x01d6`\x04a\r\x9EV[a\x02dV[\0[4\x80\x15a\x01vW_\x80\xFD[Pa\x01ia\x01\x856`\x04a\x0E&V[a\x05\xCFV[4\x80\x15a\x01\x95W_\x80\xFD[P_Ta\0\xEE\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xC0W_\x80\xFD[Pa\x01ia\x01\xCF6`\x04a\x0EHV[a\x06aV[4\x80\x15a\x01\xDFW_\x80\xFD[Pa\0\xEE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[4\x80\x15a\x02\x12W_\x80\xFD[Pa\x01ia\x02!6`\x04a\x0E\x7FV[a\x07\x95V[4\x80\x15a\x021W_\x80\xFD[Pa\x01ia\x02@6`\x04a\r\x9EV[a\x08\x89V[4\x80\x15a\x02PW_\x80\xFD[Pa\x01ia\x02_6`\x04a\x0E&V[a\t\x80V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x02\xD3W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x02\xE2\x84\x86\x01\x86a\x0F\xECV[\x92P\x92P\x92P_[\x83Q\x81\x10\x15a\x04\x91Wa\x03w\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03JWa\x03Ja\x10\xDBV[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\no\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x87Q|E\x85\x83\x81Q\x81\x10a\x03\xC5Wa\x03\xC5a\x10\xDBV[` \x90\x81\x02\x91\x90\x91\x01\x01Q`@Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x84\x90\x1B\x16\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16`$\x82\x01R`D\x81\x01\x91\x90\x91Re\xFF\xFF\xFF\xFF\xFF\xFF`d\x82\x01R`\x84\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04oW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\x81W=_\x80>=_\xFD[PP`\x01\x90\x92\x01\x91Pa\x02\xEA\x90PV[P_[\x82Q\x81\x10\x15a\x04\xFCWa\x04\xF4\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x84\x81Q\x81\x10a\x03JWa\x03Ja\x10\xDBV[`\x01\x01a\x04\x94V[P_\x80\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83`@Qa\x05D\x91\x90a\x11\x08V[_`@Q\x80\x83\x03\x81_\x86Z\xF1\x91PP=\x80_\x81\x14a\x05}W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x05\x82V[``\x91P[P\x91P\x91P\x81a\x05\x94W\x80Q` \x82\x01\xFD[G\x15a\x05\xC4Wa\x05\xC4\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\x0B@V[PPPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06TW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[a\x06^\x81Ga\x0B\xDBV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xE1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\x07\x91\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07OW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07s\x91\x90a\x114V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x0CMV[PPV[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x07\xE1W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x08W\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x12=_\xFD[PPPPPPPV[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x08\xD5W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\tM\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x12aV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\tdW_\x80\xFD[PZ\xF1\x15\x80\x15a\tvW=_\x80>=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\n\0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0B:W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0B\x96W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0B\x9BV[``\x91P[PP\x90P\x80a\x0B\xD6W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\x0B\xD6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[_`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0B:W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06KV[_\x80\x83`\x1F\x84\x01\x12a\r(W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r?W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\rYW_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\rpW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\x87W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\rYW_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\r\xB1W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\r\xC8W_\x80\xFD[a\r\xD4\x88\x83\x89\x01a\r\x18V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\r\xECW_\x80\xFD[Pa\r\xF9\x87\x82\x88\x01a\r`V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06^W_\x80\xFD[_` \x82\x84\x03\x12\x15a\x0E6W_\x80\xFD[\x815a\x0EA\x81a\x0E\x05V[\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x0EYW_\x80\xFD[\x825a\x0Ed\x81a\x0E\x05V[\x91P` \x83\x015a\x0Et\x81a\x0E\x05V[\x80\x91PP\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\x0E\x91W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xA8W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x0E\xBBW_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x0E\xD0W_\x80\xFD[Pa\x0E\xDD\x86\x82\x87\x01a\r`V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x0F^Wa\x0F^a\x0E\xEAV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x0FuW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0F\x91Wa\x0F\x91a\x0E\xEAV[\x81`\x05\x1Ba\x0F\xA0\x82\x82\x01a\x0F\x17V[\x92\x83R\x84\x81\x01\x82\x01\x92\x82\x81\x01\x90\x87\x85\x11\x15a\x0F\xB9W_\x80\xFD[\x83\x87\x01\x92P[\x84\x83\x10\x15a\x0F\xE1W\x825a\x0F\xD2\x81a\x0E\x05V[\x82R\x91\x83\x01\x91\x90\x83\x01\x90a\x0F\xBFV[\x97\x96PPPPPPPV[_\x80_``\x84\x86\x03\x12\x15a\x0F\xFEW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x10\x15W_\x80\xFD[a\x10!\x87\x83\x88\x01a\x0FfV[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x107W_\x80\xFD[a\x10C\x88\x82\x89\x01a\x0FfV[\x94PP`@\x86\x015\x81\x81\x11\x15a\x10WW_\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a\x10gW_\x80\xFD[\x805\x82\x81\x11\x15a\x10yWa\x10ya\x0E\xEAV[a\x10\xA9\x84\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x0F\x17V[\x92P\x80\x83R\x88\x84\x82\x84\x01\x01\x11\x15a\x10\xBEW_\x80\xFD[\x80\x84\x83\x01\x85\x85\x017_\x84\x82\x85\x01\x01RPP\x80\x92PPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82Q_[\x81\x81\x10\x15a\x11'W` \x81\x86\x01\x81\x01Q\x85\x83\x01R\x01a\x11\rV[P_\x92\x01\x91\x82RP\x91\x90PV[_` \x82\x84\x03\x12\x15a\x11DW_\x80\xFD[PQ\x91\x90PV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x11~W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\x9DW_\x80\xFD[\x806\x03\x82\x13\x15a\rYW_\x80\xFD[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\x11\xFD\x82\x83a\x11KV[`@\x85Ra\x12\x0F`@\x86\x01\x82\x84a\x11\xABV[\x91PPa\x12\x1F` \x84\x01\x84a\x11KV[\x85\x83\x03` \x87\x01Ra\x122\x83\x82\x84a\x11\xABV[\x96\x95PPPPPPV[`@\x81R_a\x12N`@\x83\x01\x86a\x11\xF2V[\x82\x81\x03` \x84\x01Ra\x122\x81\x85\x87a\x11\xABV[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x12\xFFW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x12\xDDW_\x80\xFD[a\x12\xE9\x85\x8C\x83\x01a\x11\xF2V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x12}V[PPP\x82\x81\x03` \x84\x01Ra\x0F\xE1\x81\x85\x87a\x11\xABV\xFE\xA2dipfsX\"\x12 \xF97.\x12\x89B\x85\x198\x94{\x04$\xED\x03\xEE}\xCB\x0C\x13\xF6\xEC\xDE\x91,\x8B~\xDC\x90\xABu\xD2dsolcC\0\x08\x18\x003", + ); + /**```solidity +struct InputToken { address token; uint256 amount; uint256 maxAmount; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InputToken { + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InputToken) -> Self { + (value.token, value.amount, value.maxAmount) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + maxAmount: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for InputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for InputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + as alloy_sol_types::SolType>::tokenize(&self.maxAmount), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for InputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for InputToken { + const NAME: &'static str = "InputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "InputToken(address token,uint256 amount,uint256 maxAmount)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.maxAmount) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for InputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.maxAmount, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.maxAmount, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OrderInfo { + #[allow(missing_docs)] + pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub swapper: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub additionalValidationData: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OrderInfo) -> Self { + ( + value.reactor, + value.swapper, + value.nonce, + value.deadline, + value.additionalValidationContract, + value.additionalValidationData, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OrderInfo { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + reactor: tuple.0, + swapper: tuple.1, + nonce: tuple.2, + deadline: tuple.3, + additionalValidationContract: tuple.4, + additionalValidationData: tuple.5, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OrderInfo { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OrderInfo { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.reactor, + ), + ::tokenize( + &self.swapper, + ), + as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ::tokenize( + &self.additionalValidationContract, + ), + ::tokenize( + &self.additionalValidationData, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OrderInfo { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OrderInfo { + const NAME: &'static str = "OrderInfo"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.reactor, + ) + .0, + ::eip712_data_word( + &self.swapper, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + .0, + ::eip712_data_word( + &self.additionalValidationContract, + ) + .0, + ::eip712_data_word( + &self.additionalValidationData, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OrderInfo { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.reactor, + ) + + ::topic_preimage_length( + &rust.swapper, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.deadline, + ) + + ::topic_preimage_length( + &rust.additionalValidationContract, + ) + + ::topic_preimage_length( + &rust.additionalValidationData, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.reactor, + out, + ); + ::encode_topic_preimage( + &rust.swapper, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationContract, + out, + ); + ::encode_topic_preimage( + &rust.additionalValidationData, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct OutputToken { address token; uint256 amount; address recipient; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct OutputToken { + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub recipient: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: OutputToken) -> Self { + (value.token, value.amount, value.recipient) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for OutputToken { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + amount: tuple.1, + recipient: tuple.2, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for OutputToken { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for OutputToken { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.token, + ), + as alloy_sol_types::SolType>::tokenize(&self.amount), + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for OutputToken { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for OutputToken { + const NAME: &'static str = "OutputToken"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "OutputToken(address token,uint256 amount,address recipient)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.token, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + .0, + ::eip712_data_word( + &self.recipient, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for OutputToken { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.token, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + + ::topic_preimage_length( + &rust.recipient, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, + out, + ); + ::encode_topic_preimage( + &rust.recipient, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ResolvedOrder { + #[allow(missing_docs)] + pub info: ::RustType, + #[allow(missing_docs)] + pub input: ::RustType, + #[allow(missing_docs)] + pub outputs: alloy::sol_types::private::Vec< + ::RustType, + >, + #[allow(missing_docs)] + pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] + pub hash: alloy::sol_types::private::FixedBytes<32>, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + OrderInfo, + InputToken, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::FixedBytes<32>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + ::RustType, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + alloy::sol_types::private::FixedBytes<32>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ResolvedOrder) -> Self { + (value.info, value.input, value.outputs, value.sig, value.hash) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ResolvedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + info: tuple.0, + input: tuple.1, + outputs: tuple.2, + sig: tuple.3, + hash: tuple.4, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for ResolvedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for ResolvedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize(&self.info), + ::tokenize(&self.input), + as alloy_sol_types::SolType>::tokenize(&self.outputs), + ::tokenize( + &self.sig, + ), + as alloy_sol_types::SolType>::tokenize(&self.hash), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for ResolvedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for ResolvedOrder { + const NAME: &'static str = "ResolvedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "ResolvedOrder(OrderInfo info,InputToken input,OutputToken[] outputs,bytes sig,bytes32 hash)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + let mut components = alloy_sol_types::private::Vec::with_capacity(3); + components + .push(::eip712_root_type()); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word(&self.info) + .0, + ::eip712_data_word( + &self.input, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.outputs) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.hash) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for ResolvedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.info, + ) + + ::topic_preimage_length( + &rust.input, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.outputs, + ) + + ::topic_preimage_length( + &rust.sig, + ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.hash) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.info, + out, + ); + ::encode_topic_preimage( + &rust.input, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.outputs, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.hash, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct SignedOrder { bytes order; bytes sig; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct SignedOrder { + #[allow(missing_docs)] + pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] + pub sig: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: SignedOrder) -> Self { + (value.order, value.sig) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for SignedOrder { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + sig: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for SignedOrder { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for SignedOrder { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.order, + ), + ::tokenize( + &self.sig, + ), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for SignedOrder { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for SignedOrder { + const NAME: &'static str = "SignedOrder"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "SignedOrder(bytes order,bytes sig)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.order, + ) + .0, + ::eip712_data_word( + &self.sig, + ) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for SignedOrder { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.order, + ) + + ::topic_preimage_length( + &rust.sig, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.order, + out, + ); + ::encode_topic_preimage( + &rust.sig, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**Custom error with signature `CallerNotWhitelisted()` and selector `0x8c6e5d71`. +```solidity +error CallerNotWhitelisted(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct CallerNotWhitelisted {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: CallerNotWhitelisted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for CallerNotWhitelisted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for CallerNotWhitelisted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "CallerNotWhitelisted()"; + const SELECTOR: [u8; 4] = [140u8, 110u8, 93u8, 113u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `MsgSenderNotReactor()` and selector `0x933fe52f`. +```solidity +error MsgSenderNotReactor(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct MsgSenderNotReactor {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: MsgSenderNotReactor) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for MsgSenderNotReactor { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for MsgSenderNotReactor { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "MsgSenderNotReactor()"; + const SELECTOR: [u8; 4] = [147u8, 63u8, 229u8, 47u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. +```solidity +error NativeTransferFailed(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct NativeTransferFailed {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: NativeTransferFailed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for NativeTransferFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for NativeTransferFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "NativeTransferFailed()"; + const SELECTOR: [u8; 4] = [244u8, 179u8, 177u8, 188u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`. +```solidity +event OwnershipTransferred(address indexed user, address indexed newOwner); +```*/ + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + #[derive(Clone)] + pub struct OwnershipTransferred { + #[allow(missing_docs)] + pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[automatically_derived] + impl alloy_sol_types::SolEvent for OwnershipTransferred { + type DataTuple<'a> = (); + type DataToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + type TopicList = ( + alloy_sol_types::sol_data::FixedBytes<32>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + const SIGNATURE: &'static str = "OwnershipTransferred(address,address)"; + const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ]); + const ANONYMOUS: bool = false; + #[allow(unused_variables)] + #[inline] + fn new( + topics: ::RustType, + data: as alloy_sol_types::SolType>::RustType, + ) -> Self { + Self { + user: topics.1, + newOwner: topics.2, + } + } + #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] + fn tokenize_body(&self) -> Self::DataToken<'_> { + () + } + #[inline] + fn topics(&self) -> ::RustType { + (Self::SIGNATURE_HASH.into(), self.user.clone(), self.newOwner.clone()) + } + #[inline] + fn encode_topics_raw( + &self, + out: &mut [alloy_sol_types::abi::token::WordToken], + ) -> alloy_sol_types::Result<()> { + if out.len() < ::COUNT { + return Err(alloy_sol_types::Error::Overrun); + } + out[0usize] = alloy_sol_types::abi::token::WordToken( + Self::SIGNATURE_HASH, + ); + out[1usize] = ::encode_topic( + &self.user, + ); + out[2usize] = ::encode_topic( + &self.newOwner, + ); + Ok(()) + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for OwnershipTransferred { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + From::from(self) + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + From::from(&self) + } + } + #[automatically_derived] + impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData { + #[inline] + fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData { + alloy_sol_types::SolEvent::encode_log_data(this) + } + } + }; + /**Constructor`. +```solidity +constructor(address[] _whitelistedCallers, address _reactor, address _owner, address _universalRouter, address _permit2); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct constructorCall { + #[allow(missing_docs)] + pub _whitelistedCallers: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + #[allow(missing_docs)] + pub _reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _universalRouter: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub _permit2: alloy::sol_types::private::Address, + } + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: constructorCall) -> Self { + ( + value._whitelistedCallers, + value._reactor, + value._owner, + value._universalRouter, + value._permit2, + ) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for constructorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _whitelistedCallers: tuple.0, + _reactor: tuple.1, + _owner: tuple.2, + _universalRouter: tuple.3, + _permit2: tuple.4, + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolConstructor for constructorCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._whitelistedCallers), + ::tokenize( + &self._reactor, + ), + ::tokenize( + &self._owner, + ), + ::tokenize( + &self._universalRouter, + ), + ::tokenize( + &self._permit2, + ), + ) + } + } + }; + /**Function with signature `execute((bytes,bytes),bytes)` and selector `0xd0f2d8ac`. +```solidity +function execute(SignedOrder memory order, bytes memory callbackData) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct executeCall { + #[allow(missing_docs)] + pub order: ::RustType, + #[allow(missing_docs)] + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`execute((bytes,bytes),bytes)`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + SignedOrder, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + ::RustType, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.order, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + order: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = (SignedOrder, alloy::sol_types::sol_data::Bytes); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute((bytes,bytes),bytes)"; + const SELECTOR: [u8; 4] = [208u8, 242u8, 216u8, 172u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize(&self.order), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `executeBatch((bytes,bytes)[],bytes)` and selector `0xe5135ec6`. +```solidity +function executeBatch(SignedOrder[] memory orders, bytes memory callbackData) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct executeBatchCall { + #[allow(missing_docs)] + pub orders: alloy::sol_types::private::Vec< + ::RustType, + >, + #[allow(missing_docs)] + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[],bytes)`](executeBatchCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct executeBatchReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchCall) -> Self { + (value.orders, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + orders: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeBatchReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeBatchReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeBatchCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeBatchReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "executeBatch((bytes,bytes)[],bytes)"; + const SELECTOR: [u8; 4] = [229u8, 19u8, 94u8, 198u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.orders), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `owner()` and selector `0x8da5cb5b`. +```solidity +function owner() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerCall {} + ///Container type for the return parameters of the [`owner()`](ownerCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ownerReturn { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ownerReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ownerReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for ownerCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = ownerReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "owner()"; + const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `permit2()` and selector `0x12261ee7`. +```solidity +function permit2() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct permit2Call {} + ///Container type for the return parameters of the [`permit2()`](permit2Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct permit2Return { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Call) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: permit2Return) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for permit2Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for permit2Call { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = permit2Return; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "permit2()"; + const SELECTOR: [u8; 4] = [18u8, 38u8, 30u8, 231u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `reactor()` and selector `0xab572650`. +```solidity +function reactor() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct reactorCall {} + ///Container type for the return parameters of the [`reactor()`](reactorCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct reactorReturn { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: reactorCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for reactorCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: reactorReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for reactorReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for reactorCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = reactorReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "reactor()"; + const SELECTOR: [u8; 4] = [171u8, 87u8, 38u8, 80u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)` and selector `0x585da628`. +```solidity +function reactorCallback(ResolvedOrder[] memory, bytes memory callbackData) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct reactorCallbackCall { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Vec< + ::RustType, + >, + #[allow(missing_docs)] + pub callbackData: alloy::sol_types::private::Bytes, + } + ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct reactorCallbackReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackCall) -> Self { + (value._0, value.callbackData) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for reactorCallbackCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + _0: tuple.0, + callbackData: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: reactorCallbackReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for reactorCallbackReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for reactorCallbackCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Bytes, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = reactorCallbackReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)"; + const SELECTOR: [u8; 4] = [88u8, 93u8, 166u8, 40u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self._0), + ::tokenize( + &self.callbackData, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`. +```solidity +function transferOwnership(address newOwner) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipCall { + #[allow(missing_docs)] + pub newOwner: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct transferOwnershipReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipCall) -> Self { + (value.newOwner,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { newOwner: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: transferOwnershipReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for transferOwnershipReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for transferOwnershipCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = transferOwnershipReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "transferOwnership(address)"; + const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.newOwner, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `universalRouter()` and selector `0x35a9e4df`. +```solidity +function universalRouter() external view returns (address); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct universalRouterCall {} + ///Container type for the return parameters of the [`universalRouter()`](universalRouterCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct universalRouterReturn { + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::Address, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: universalRouterCall) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for universalRouterCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: universalRouterReturn) -> Self { + (value._0,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for universalRouterReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { _0: tuple.0 } + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for universalRouterCall { + type Parameters<'a> = (); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = universalRouterReturn; + type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "universalRouter()"; + const SELECTOR: [u8; 4] = [53u8, 169u8, 228u8, 223u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `withdrawERC20(address,address)` and selector `0x9456fbcc`. +```solidity +function withdrawERC20(address token, address to) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawERC20Call { + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub to: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`withdrawERC20(address,address)`](withdrawERC20Call) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawERC20Return {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Address, + alloy::sol_types::private::Address, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawERC20Call) -> Self { + (value.token, value.to) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawERC20Call { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + token: tuple.0, + to: tuple.1, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawERC20Return) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawERC20Return { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawERC20Call { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Address, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawERC20Return; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdrawERC20(address,address)"; + const SELECTOR: [u8; 4] = [148u8, 86u8, 251u8, 204u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.token, + ), + ::tokenize( + &self.to, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + /**Function with signature `withdrawETH(address)` and selector `0x690d8320`. +```solidity +function withdrawETH(address recipient) external; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawETHCall { + #[allow(missing_docs)] + pub recipient: alloy::sol_types::private::Address, + } + ///Container type for the return parameters of the [`withdrawETH(address)`](withdrawETHCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct withdrawETHReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawETHCall) -> Self { + (value.recipient,) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawETHCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { recipient: tuple.0 } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: withdrawETHReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for withdrawETHReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for withdrawETHCall { + type Parameters<'a> = (alloy::sol_types::sol_data::Address,); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = withdrawETHReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "withdrawETH(address)"; + const SELECTOR: [u8; 4] = [105u8, 13u8, 131u8, 32u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.recipient, + ), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`UniversalRouterExecutor`](self) function calls. + pub enum UniversalRouterExecutorCalls { + #[allow(missing_docs)] + execute(executeCall), + #[allow(missing_docs)] + executeBatch(executeBatchCall), + #[allow(missing_docs)] + owner(ownerCall), + #[allow(missing_docs)] + permit2(permit2Call), + #[allow(missing_docs)] + reactor(reactorCall), + #[allow(missing_docs)] + reactorCallback(reactorCallbackCall), + #[allow(missing_docs)] + transferOwnership(transferOwnershipCall), + #[allow(missing_docs)] + universalRouter(universalRouterCall), + #[allow(missing_docs)] + withdrawERC20(withdrawERC20Call), + #[allow(missing_docs)] + withdrawETH(withdrawETHCall), + } + #[automatically_derived] + impl UniversalRouterExecutorCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [18u8, 38u8, 30u8, 231u8], + [53u8, 169u8, 228u8, 223u8], + [88u8, 93u8, 166u8, 40u8], + [105u8, 13u8, 131u8, 32u8], + [141u8, 165u8, 203u8, 91u8], + [148u8, 86u8, 251u8, 204u8], + [171u8, 87u8, 38u8, 80u8], + [208u8, 242u8, 216u8, 172u8], + [229u8, 19u8, 94u8, 198u8], + [242u8, 253u8, 227u8, 139u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for UniversalRouterExecutorCalls { + const NAME: &'static str = "UniversalRouterExecutorCalls"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 10usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + Self::executeBatch(_) => { + ::SELECTOR + } + Self::owner(_) => ::SELECTOR, + Self::permit2(_) => ::SELECTOR, + Self::reactor(_) => ::SELECTOR, + Self::reactorCallback(_) => { + ::SELECTOR + } + Self::transferOwnership(_) => { + ::SELECTOR + } + Self::universalRouter(_) => { + ::SELECTOR + } + Self::withdrawERC20(_) => { + ::SELECTOR + } + Self::withdrawETH(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn permit2( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorCalls::permit2) + } + permit2 + }, + { + fn universalRouter( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorCalls::universalRouter) + } + universalRouter + }, + { + fn reactorCallback( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorCalls::reactorCallback) + } + reactorCallback + }, + { + fn withdrawETH( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorCalls::withdrawETH) + } + withdrawETH + }, + { + fn owner( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorCalls::owner) + } + owner + }, + { + fn withdrawERC20( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorCalls::withdrawERC20) + } + withdrawERC20 + }, + { + fn reactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorCalls::reactor) + } + reactor + }, + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorCalls::execute) + } + execute + }, + { + fn executeBatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorCalls::executeBatch) + } + executeBatch + }, + { + fn transferOwnership( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorCalls::transferOwnership) + } + transferOwnership + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + Self::executeBatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::owner(inner) => { + ::abi_encoded_size(inner) + } + Self::permit2(inner) => { + ::abi_encoded_size(inner) + } + Self::reactor(inner) => { + ::abi_encoded_size(inner) + } + Self::reactorCallback(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::transferOwnership(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::universalRouter(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::withdrawERC20(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::withdrawETH(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + Self::executeBatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::owner(inner) => { + ::abi_encode_raw(inner, out) + } + Self::permit2(inner) => { + ::abi_encode_raw(inner, out) + } + Self::reactor(inner) => { + ::abi_encode_raw(inner, out) + } + Self::reactorCallback(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::transferOwnership(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::universalRouter(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawERC20(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::withdrawETH(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`UniversalRouterExecutor`](self) custom errors. + pub enum UniversalRouterExecutorErrors { + #[allow(missing_docs)] + CallerNotWhitelisted(CallerNotWhitelisted), + #[allow(missing_docs)] + MsgSenderNotReactor(MsgSenderNotReactor), + #[allow(missing_docs)] + NativeTransferFailed(NativeTransferFailed), + } + #[automatically_derived] + impl UniversalRouterExecutorErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [140u8, 110u8, 93u8, 113u8], + [147u8, 63u8, 229u8, 47u8], + [244u8, 179u8, 177u8, 188u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for UniversalRouterExecutorErrors { + const NAME: &'static str = "UniversalRouterExecutorErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 3usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::CallerNotWhitelisted(_) => { + ::SELECTOR + } + Self::MsgSenderNotReactor(_) => { + ::SELECTOR + } + Self::NativeTransferFailed(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn CallerNotWhitelisted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorErrors::CallerNotWhitelisted) + } + CallerNotWhitelisted + }, + { + fn MsgSenderNotReactor( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorErrors::MsgSenderNotReactor) + } + MsgSenderNotReactor + }, + { + fn NativeTransferFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(UniversalRouterExecutorErrors::NativeTransferFailed) + } + NativeTransferFailed + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::CallerNotWhitelisted(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::MsgSenderNotReactor(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::CallerNotWhitelisted(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::MsgSenderNotReactor(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::NativeTransferFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + ///Container for all the [`UniversalRouterExecutor`](self) events. + pub enum UniversalRouterExecutorEvents { + #[allow(missing_docs)] + OwnershipTransferred(OwnershipTransferred), + } + #[automatically_derived] + impl UniversalRouterExecutorEvents { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 32usize]] = &[ + [ + 139u8, + 224u8, + 7u8, + 156u8, + 83u8, + 22u8, + 89u8, + 20u8, + 19u8, + 68u8, + 205u8, + 31u8, + 208u8, + 164u8, + 242u8, + 132u8, + 25u8, + 73u8, + 127u8, + 151u8, + 34u8, + 163u8, + 218u8, + 175u8, + 227u8, + 180u8, + 24u8, + 111u8, + 107u8, + 100u8, + 87u8, + 224u8, + ], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolEventInterface for UniversalRouterExecutorEvents { + const NAME: &'static str = "UniversalRouterExecutorEvents"; + const COUNT: usize = 1usize; + fn decode_raw_log( + topics: &[alloy_sol_types::Word], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + match topics.first().copied() { + Some( + ::SIGNATURE_HASH, + ) => { + ::decode_raw_log( + topics, + data, + validate, + ) + .map(Self::OwnershipTransferred) + } + _ => { + alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog { + name: ::NAME, + log: alloy_sol_types::private::Box::new( + alloy_sol_types::private::LogData::new_unchecked( + topics.to_vec(), + data.to_vec().into(), + ), + ), + }) + } + } + } + } + #[automatically_derived] + impl alloy_sol_types::private::IntoLogData for UniversalRouterExecutorEvents { + fn to_log_data(&self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::to_log_data(inner) + } + } + } + fn into_log_data(self) -> alloy_sol_types::private::LogData { + match self { + Self::OwnershipTransferred(inner) => { + alloy_sol_types::private::IntoLogData::into_log_data(inner) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`UniversalRouterExecutor`](self) contract instance. + +See the [wrapper's documentation](`UniversalRouterExecutorInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> UniversalRouterExecutorInstance { + UniversalRouterExecutorInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _whitelistedCallers: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + _reactor: alloy::sol_types::private::Address, + _owner: alloy::sol_types::private::Address, + _universalRouter: alloy::sol_types::private::Address, + _permit2: alloy::sol_types::private::Address, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + UniversalRouterExecutorInstance::< + T, + P, + N, + >::deploy( + provider, + _whitelistedCallers, + _reactor, + _owner, + _universalRouter, + _permit2, + ) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + _whitelistedCallers: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + _reactor: alloy::sol_types::private::Address, + _owner: alloy::sol_types::private::Address, + _universalRouter: alloy::sol_types::private::Address, + _permit2: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + UniversalRouterExecutorInstance::< + T, + P, + N, + >::deploy_builder( + provider, + _whitelistedCallers, + _reactor, + _owner, + _universalRouter, + _permit2, + ) + } + /**A [`UniversalRouterExecutor`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`UniversalRouterExecutor`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct UniversalRouterExecutorInstance< + T, + P, + N = alloy_contract::private::Ethereum, + > { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for UniversalRouterExecutorInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("UniversalRouterExecutorInstance") + .field(&self.address) + .finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > UniversalRouterExecutorInstance { + /**Creates a new wrapper around an on-chain [`UniversalRouterExecutor`](self) contract instance. + +See the [wrapper's documentation](`UniversalRouterExecutorInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + _whitelistedCallers: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + _reactor: alloy::sol_types::private::Address, + _owner: alloy::sol_types::private::Address, + _universalRouter: alloy::sol_types::private::Address, + _permit2: alloy::sol_types::private::Address, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder( + provider, + _whitelistedCallers, + _reactor, + _owner, + _universalRouter, + _permit2, + ); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder( + provider: P, + _whitelistedCallers: alloy::sol_types::private::Vec< + alloy::sol_types::private::Address, + >, + _reactor: alloy::sol_types::private::Address, + _owner: alloy::sol_types::private::Address, + _universalRouter: alloy::sol_types::private::Address, + _permit2: alloy::sol_types::private::Address, + ) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + [ + &BYTECODE[..], + &alloy_sol_types::SolConstructor::abi_encode( + &constructorCall { + _whitelistedCallers, + _reactor, + _owner, + _universalRouter, + _permit2, + }, + )[..], + ] + .concat() + .into(), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl UniversalRouterExecutorInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> UniversalRouterExecutorInstance { + UniversalRouterExecutorInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > UniversalRouterExecutorInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + order: ::RustType, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&executeCall { order, callbackData }) + } + ///Creates a new call builder for the [`executeBatch`] function. + pub fn executeBatch( + &self, + orders: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeBatchCall { + orders, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`owner`] function. + pub fn owner(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&ownerCall {}) + } + ///Creates a new call builder for the [`permit2`] function. + pub fn permit2(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&permit2Call {}) + } + ///Creates a new call builder for the [`reactor`] function. + pub fn reactor(&self) -> alloy_contract::SolCallBuilder { + self.call_builder(&reactorCall {}) + } + ///Creates a new call builder for the [`reactorCallback`] function. + pub fn reactorCallback( + &self, + _0: alloy::sol_types::private::Vec< + ::RustType, + >, + callbackData: alloy::sol_types::private::Bytes, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &reactorCallbackCall { + _0, + callbackData, + }, + ) + } + ///Creates a new call builder for the [`transferOwnership`] function. + pub fn transferOwnership( + &self, + newOwner: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&transferOwnershipCall { newOwner }) + } + ///Creates a new call builder for the [`universalRouter`] function. + pub fn universalRouter( + &self, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&universalRouterCall {}) + } + ///Creates a new call builder for the [`withdrawERC20`] function. + pub fn withdrawERC20( + &self, + token: alloy::sol_types::private::Address, + to: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawERC20Call { token, to }) + } + ///Creates a new call builder for the [`withdrawETH`] function. + pub fn withdrawETH( + &self, + recipient: alloy::sol_types::private::Address, + ) -> alloy_contract::SolCallBuilder { + self.call_builder(&withdrawETHCall { recipient }) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > UniversalRouterExecutorInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + ///Creates a new event filter for the [`OwnershipTransferred`] event. + pub fn OwnershipTransferred_filter( + &self, + ) -> alloy_contract::Event { + self.event_filter::() + } + } +} From 95d482f0f386b45d0a864ffb985bdcdccf6c7c3c Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Tue, 18 Feb 2025 15:40:08 -0800 Subject: [PATCH 05/15] bindings update --- crates/bindings-uniswapx/src/arraybuilder.rs | 16 +- crates/bindings-uniswapx/src/basereactor.rs | 307 +- .../bindings-uniswapx/src/blocknumberish.rs | 18 +- crates/bindings-uniswapx/src/byteslib.rs | 16 +- crates/bindings-uniswapx/src/cosignerlib.rs | 30 +- .../bindings-uniswapx/src/currencylibrary.rs | 30 +- crates/bindings-uniswapx/src/curvebuilder.rs | 16 +- crates/bindings-uniswapx/src/deploydutch.rs | 70 +- crates/bindings-uniswapx/src/deploydutchv2.rs | 69 +- crates/bindings-uniswapx/src/deploydutchv3.rs | 69 +- .../src/deployexclusivedutch.rs | 70 +- .../src/deploymultifillerexecutor.rs | 58 +- crates/bindings-uniswapx/src/deploypermit2.rs | 33 +- .../src/deploypriorityorderreactor.rs | 70 +- .../src/deployswaprouter02executor.rs | 58 +- crates/bindings-uniswapx/src/dutchdecaylib.rs | 40 +- crates/bindings-uniswapx/src/dutchorderlib.rs | 16 +- .../src/dutchorderreactor.rs | 359 +- crates/bindings-uniswapx/src/ecdsa.rs | 16 +- crates/bindings-uniswapx/src/eip712.rs | 98 +- crates/bindings-uniswapx/src/erc20.rs | 303 +- .../src/exclusivedutchorderlib.rs | 16 +- .../src/exclusivedutchorderreactor.rs | 369 +- .../src/exclusivefillervalidation.rs | 122 +- .../bindings-uniswapx/src/exclusivitylib.rs | 30 +- .../src/fixedpointmathlib.rs | 16 +- .../src/iallowancetransfer.rs | 513 ++- crates/bindings-uniswapx/src/iarbsys.rs | 31 +- crates/bindings-uniswapx/src/ieip712.rs | 25 +- crates/bindings-uniswapx/src/ierc165.rs | 26 +- crates/bindings-uniswapx/src/ierc20.rs | 239 +- crates/bindings-uniswapx/src/ierc5267.rs | 73 +- crates/bindings-uniswapx/src/ierc721.rs | 297 +- .../src/ierc721enumerable.rs | 371 +- .../bindings-uniswapx/src/ierc721metadata.rs | 345 +- .../src/ierc721tokenreceiver.rs | 35 +- crates/bindings-uniswapx/src/ipermit2.rs | 3777 ++++++++++------- .../src/iprotocolfeecontroller.rs | 99 +- crates/bindings-uniswapx/src/ireactor.rs | 77 +- .../bindings-uniswapx/src/ireactorcallback.rs | 99 +- .../src/isignaturetransfer.rs | 281 +- crates/bindings-uniswapx/src/iswaprouter02.rs | 203 +- .../src/ivalidationcallback.rs | 99 +- crates/bindings-uniswapx/src/limitorderlib.rs | 16 +- .../src/limitorderreactor.rs | 319 +- crates/bindings-uniswapx/src/math.rs | 16 +- crates/bindings-uniswapx/src/mathext.rs | 16 +- crates/bindings-uniswapx/src/mockarbsys.rs | 60 +- .../src/mockblocknumberish.rs | 39 +- .../src/mockcosignerlibcontract.rs | 49 +- .../src/mockdutchorderreactor.rs | 446 +- crates/bindings-uniswapx/src/mockerc20.rs | 358 +- crates/bindings-uniswapx/src/mockerc721.rs | 367 +- .../src/mockexclusivitylib.rs | 200 +- .../src/mockfeecontroller.rs | 221 +- .../src/mockfeecontrollerduplicates.rs | 221 +- .../mockfeecontrollerinputandoutputfees.rs | 219 +- .../src/mockfeecontrollerinputfees.rs | 219 +- .../src/mockfeecontrollerzerofee.rs | 221 +- .../bindings-uniswapx/src/mockfillcontract.rs | 161 +- .../src/mockfillcontractdoubleexecution.rs | 150 +- .../src/mockfillcontractwithoutputoverride.rs | 182 +- .../bindings-uniswapx/src/mockprotocolfees.rs | 275 +- .../src/mockresolvedorderlib.rs | 121 +- crates/bindings-uniswapx/src/mockswapper.rs | 41 +- .../bindings-uniswapx/src/mockswaprouter.rs | 157 +- .../src/mockvalidationcontract.rs | 147 +- .../src/multifillerswaprouter02executor.rs | 352 +- .../src/nonlineardutchdecaylib.rs | 30 +- .../bindings-uniswapx/src/orderinfobuilder.rs | 16 +- crates/bindings-uniswapx/src/orderinfolib.rs | 16 +- crates/bindings-uniswapx/src/orderquoter.rs | 150 +- .../bindings-uniswapx/src/outputsbuilder.rs | 16 +- crates/bindings-uniswapx/src/owned.rs | 68 +- crates/bindings-uniswapx/src/path.rs | 16 +- crates/bindings-uniswapx/src/pathbuilder.rs | 16 +- crates/bindings-uniswapx/src/permit2lib.rs | 16 +- .../bindings-uniswapx/src/permitsignature.rs | 2911 ++++++++----- .../bindings-uniswapx/src/priorityfeelib.rs | 16 +- .../bindings-uniswapx/src/priorityorderlib.rs | 16 +- .../src/priorityorderreactor.rs | 379 +- crates/bindings-uniswapx/src/protocolfees.rs | 177 +- crates/bindings-uniswapx/src/reactorevents.rs | 40 +- .../bindings-uniswapx/src/reentrancyguard.rs | 8 +- .../bindings-uniswapx/src/resolvedorderlib.rs | 30 +- crates/bindings-uniswapx/src/safecast.rs | 16 +- .../bindings-uniswapx/src/safetransferlib.rs | 16 +- crates/bindings-uniswapx/src/shortstrings.rs | 41 +- crates/bindings-uniswapx/src/signedmath.rs | 16 +- crates/bindings-uniswapx/src/solarray.rs | 16 +- crates/bindings-uniswapx/src/storageslot.rs | 16 +- crates/bindings-uniswapx/src/strings.rs | 16 +- .../src/swaprouter02executor.rs | 282 +- .../src/uint16arraylibrary.rs | 16 +- .../bindings-uniswapx/src/v2dutchorderlib.rs | 16 +- .../src/v2dutchorderreactor.rs | 389 +- .../bindings-uniswapx/src/v3dutchorderlib.rs | 16 +- .../src/v3dutchorderreactor.rs | 389 +- crates/bindings-uniswapx/src/weth.rs | 408 +- 99 files changed, 13612 insertions(+), 5440 deletions(-) diff --git a/crates/bindings-uniswapx/src/arraybuilder.rs b/crates/bindings-uniswapx/src/arraybuilder.rs index 323ce47..dec7ef1 100644 --- a/crates/bindings-uniswapx/src/arraybuilder.rs +++ b/crates/bindings-uniswapx/src/arraybuilder.rs @@ -9,29 +9,35 @@ interface ArrayBuilder {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod ArrayBuilder { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220004db7042d8b8c819b7657d9b735ca0efaba01f5fbd1bb5cf0d1b1dfbe76b15464736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220484d41f55545340c0f5e95d5944368c5dafe7c4436264448af389c6095fef56e64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \0M\xB7\x04-\x8B\x8C\x81\x9BvW\xD9\xB75\xCA\x0E\xFA\xBA\x01\xF5\xFB\xD1\xBB\\\xF0\xD1\xB1\xDF\xBEv\xB1TdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 HMA\xF5UE4\x0C\x0F^\x95\xD5\x94Ch\xC5\xDA\xFE|D6&DH\xAF8\x9C`\x95\xFE\xF5ndsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220004db7042d8b8c819b7657d9b735ca0efaba01f5fbd1bb5cf0d1b1dfbe76b15464736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220484d41f55545340c0f5e95d5944368c5dafe7c4436264448af389c6095fef56e64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \0M\xB7\x04-\x8B\x8C\x81\x9BvW\xD9\xB75\xCA\x0E\xFA\xBA\x01\xF5\xFB\xD1\xBB\\\xF0\xD1\xB1\xDF\xBEv\xB1TdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 HMA\xF5UE4\x0C\x0F^\x95\xD5\x94Ch\xC5\xDA\xFE|D6&DH\xAF8\x9C`\x95\xFE\xF5ndsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`ArrayBuilder`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/basereactor.rs b/crates/bindings-uniswapx/src/basereactor.rs index d830a75..2328310 100644 --- a/crates/bindings-uniswapx/src/basereactor.rs +++ b/crates/bindings-uniswapx/src/basereactor.rs @@ -344,7 +344,13 @@ interface BaseReactor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod BaseReactor { use super::*; use alloy::sol_types as alloy_sol_types; @@ -371,13 +377,20 @@ pub mod BaseReactor { /**```solidity struct SignedOrder { bytes order; bytes sig; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignedOrder { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -583,12 +596,18 @@ struct SignedOrder { bytes order; bytes sig; } ```solidity error DuplicateFeeOutput(address duplicateToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DuplicateFeeOutput { + #[allow(missing_docs)] pub duplicateToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -648,14 +667,22 @@ error DuplicateFeeOutput(address duplicateToken); ```solidity error FeeTooLarge(address token, uint256 amount, address recipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct FeeTooLarge { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -667,7 +694,7 @@ error FeeTooLarge(address token, uint256 amount, address recipient); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -733,10 +760,15 @@ error FeeTooLarge(address token, uint256 amount, address recipient); ```solidity error InputAndOutputFees(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputFees {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -792,12 +824,18 @@ error InputAndOutputFees(); ```solidity error InvalidFeeToken(address feeToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidFeeToken { + #[allow(missing_docs)] pub feeToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -857,10 +895,15 @@ error InvalidFeeToken(address feeToken); ```solidity error InvalidReactor(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidReactor {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -916,10 +959,15 @@ error InvalidReactor(); ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -975,7 +1023,12 @@ error NativeTransferFailed(); ```solidity event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Fill { #[allow(missing_docs)] @@ -985,9 +1038,14 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub nonce: alloy::sol_types::private::U256, + pub nonce: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1052,6 +1110,21 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1230,7 +1328,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ProtocolFeeControllerSet { #[allow(missing_docs)] @@ -1238,7 +1341,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle #[allow(missing_docs)] pub newFeeController: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1299,6 +1407,21 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -1350,16 +1473,22 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle ```solidity function execute(SignedOrder memory order) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1465,18 +1594,24 @@ function execute(SignedOrder memory order) external payable; ```solidity function executeBatch(SignedOrder[] memory orders) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1590,19 +1725,26 @@ function executeBatch(SignedOrder[] memory orders) external payable; ```solidity function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1731,17 +1873,24 @@ function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory call ```solidity function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1863,16 +2012,22 @@ function executeWithCallback(SignedOrder memory order, bytes memory callbackData ```solidity function feeController() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerCall {} ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1976,16 +2131,22 @@ function feeController() external view returns (address); ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2089,16 +2250,22 @@ function owner() external view returns (address); ```solidity function permit2() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Call {} ///Container type for the return parameters of the [`permit2()`](permit2Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Return { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2202,16 +2369,22 @@ function permit2() external view returns (address); ```solidity function setProtocolFeeController(address _newFeeController) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerCall { + #[allow(missing_docs)] pub _newFeeController: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2323,16 +2496,22 @@ function setProtocolFeeController(address _newFeeController) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2442,14 +2621,23 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`BaseReactor`](self) function calls. pub enum BaseReactorCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] executeBatchWithCallback(executeBatchWithCallbackCall), + #[allow(missing_docs)] executeWithCallback(executeWithCallbackCall), + #[allow(missing_docs)] feeController(feeControllerCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] permit2(permit2Call), + #[allow(missing_docs)] setProtocolFeeController(setProtocolFeeControllerCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -2512,7 +2700,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2648,7 +2836,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2747,11 +2935,17 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`BaseReactor`](self) custom errors. pub enum BaseReactorErrors { + #[allow(missing_docs)] DuplicateFeeOutput(DuplicateFeeOutput), + #[allow(missing_docs)] FeeTooLarge(FeeTooLarge), + #[allow(missing_docs)] InputAndOutputFees(InputAndOutputFees), + #[allow(missing_docs)] InvalidFeeToken(InvalidFeeToken), + #[allow(missing_docs)] InvalidReactor(InvalidReactor), + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), } #[automatically_derived] @@ -2808,7 +3002,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2905,7 +3099,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2984,8 +3178,11 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`BaseReactor`](self) events. pub enum BaseReactorEvents { + #[allow(missing_docs)] Fill(Fill), + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), + #[allow(missing_docs)] ProtocolFeeControllerSet(ProtocolFeeControllerSet), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/blocknumberish.rs b/crates/bindings-uniswapx/src/blocknumberish.rs index 9333535..7c41884 100644 --- a/crates/bindings-uniswapx/src/blocknumberish.rs +++ b/crates/bindings-uniswapx/src/blocknumberish.rs @@ -17,35 +17,41 @@ interface BlockNumberish { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod BlockNumberish { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a060405234801561001057600080fd5b5061a4b14603610035576001600160401b0361000961005060201b17166080526100d7565b6001600160401b0361007d6100ba60201b17166080526100d7565b600060646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b591906100be565b905090565b4390565b6000602082840312156100d057600080fd5b5051919050565b60805160cf6100ed6000396000505060cf6000f3fe6080604052600080fd5b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156056573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190607891906081565b905090565b4390565b600060208284031215609257600080fd5b505191905056fea2646970667358221220b73aa0aaeb32c7953a71d7dd2c411922f55cf9c2c94a2dd7f1c0c947373e3f3264736f6c63430008180033 + ///0x60a060405234801561000f575f80fd5b5061a4b14603610034576001600160401b0361000861004f60201b17166080526100d1565b6001600160401b036100796100b660201b17166080526100d1565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100b191906100ba565b905090565b4390565b5f602082840312156100ca575f80fd5b5051919050565b60805160c96100e45f395f505060c95ff3fe60806040525f80fd5b5f606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156052573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019060749190607d565b905090565b4390565b5f60208284031215608c575f80fd5b505191905056fea26469706673582212201183f764f5954bd7ffe0326581ff79d63f9a537975ce06e46587ba12d737cd0964736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\xA4\xB1F\x03a\x005W`\x01`\x01`@\x1B\x03a\0\ta\0P` \x1B\x17\x16`\x80Ra\0\xD7V[`\x01`\x01`@\x1B\x03a\0}a\0\xBA` \x1B\x17\x16`\x80Ra\0\xD7V[`\0`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\x91W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xB5\x91\x90a\0\xBEV[\x90P\x90V[C\x90V[`\0` \x82\x84\x03\x12\x15a\0\xD0W`\0\x80\xFD[PQ\x91\x90PV[`\x80Q`\xCFa\0\xED`\09`\0PP`\xCF`\0\xF3\xFE`\x80`@R`\0\x80\xFD[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15`VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90`x\x91\x90`\x81V[\x90P\x90V[C\x90V[`\0` \x82\x84\x03\x12\x15`\x92W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB7:\xA0\xAA\xEB2\xC7\x95:q\xD7\xDD,A\x19\"\xF5\\\xF9\xC2\xC9J-\xD7\xF1\xC0\xC9G7>?2dsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\xA4\xB1F\x03a\x004W`\x01`\x01`@\x1B\x03a\0\x08a\0O` \x1B\x17\x16`\x80Ra\0\xD1V[`\x01`\x01`@\x1B\x03a\0ya\0\xB6` \x1B\x17\x16`\x80Ra\0\xD1V[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\x8DW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xB1\x91\x90a\0\xBAV[\x90P\x90V[C\x90V[_` \x82\x84\x03\x12\x15a\0\xCAW_\x80\xFD[PQ\x91\x90PV[`\x80Q`\xC9a\0\xE4_9_PP`\xC9_\xF3\xFE`\x80`@R_\x80\xFD[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15`RW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90`t\x91\x90`}V[\x90P\x90V[C\x90V[_` \x82\x84\x03\x12\x15`\x8CW_\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \x11\x83\xF7d\xF5\x95K\xD7\xFF\xE02e\x81\xFFy\xD6?\x9ASyu\xCE\x06\xE4e\x87\xBA\x12\xD77\xCD\tdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080604052600080fd5b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156056573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190607891906081565b905090565b4390565b600060208284031215609257600080fd5b505191905056fea2646970667358221220b73aa0aaeb32c7953a71d7dd2c411922f55cf9c2c94a2dd7f1c0c947373e3f3264736f6c63430008180033 + ///0x60806040525f80fd5b5f606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156052573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019060749190607d565b905090565b4390565b5f60208284031215608c575f80fd5b505191905056fea26469706673582212201183f764f5954bd7ffe0326581ff79d63f9a537975ce06e46587ba12d737cd0964736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\0\x80\xFD[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15`VW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90`x\x91\x90`\x81V[\x90P\x90V[C\x90V[`\0` \x82\x84\x03\x12\x15`\x92W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB7:\xA0\xAA\xEB2\xC7\x95:q\xD7\xDD,A\x19\"\xF5\\\xF9\xC2\xC9J-\xD7\xF1\xC0\xC9G7>?2dsolcC\0\x08\x18\x003", + b"`\x80`@R_\x80\xFD[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15`RW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90`t\x91\x90`}V[\x90P\x90V[C\x90V[_` \x82\x84\x03\x12\x15`\x8CW_\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \x11\x83\xF7d\xF5\x95K\xD7\xFF\xE02e\x81\xFFy\xD6?\x9ASyu\xCE\x06\xE4e\x87\xBA\x12\xD77\xCD\tdsolcC\0\x08\x18\x003", ); /**Constructor`. ```solidity constructor(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall {} const _: () = { diff --git a/crates/bindings-uniswapx/src/byteslib.rs b/crates/bindings-uniswapx/src/byteslib.rs index e7b0dbf..12d788b 100644 --- a/crates/bindings-uniswapx/src/byteslib.rs +++ b/crates/bindings-uniswapx/src/byteslib.rs @@ -9,29 +9,35 @@ interface BytesLib {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod BytesLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122000455ada9abf93f7e4e52893aecc3ef66a2729b95b4f7b69cfd0d668730d0ca064736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220a6be359ad586752416b55d8f60e2d79b623bac13b61a49589094471acda44dd564736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \0EZ\xDA\x9A\xBF\x93\xF7\xE4\xE5(\x93\xAE\xCC>\xF6j')\xB9[O{i\xCF\xD0\xD6hs\r\x0C\xA0dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xA6\xBE5\x9A\xD5\x86u$\x16\xB5]\x8F`\xE2\xD7\x9Bb;\xAC\x13\xB6\x1AIX\x90\x94G\x1A\xCD\xA4M\xD5dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122000455ada9abf93f7e4e52893aecc3ef66a2729b95b4f7b69cfd0d668730d0ca064736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220a6be359ad586752416b55d8f60e2d79b623bac13b61a49589094471acda44dd564736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \0EZ\xDA\x9A\xBF\x93\xF7\xE4\xE5(\x93\xAE\xCC>\xF6j')\xB9[O{i\xCF\xD0\xD6hs\r\x0C\xA0dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xA6\xBE5\x9A\xD5\x86u$\x16\xB5]\x8F`\xE2\xD7\x9Bb;\xAC\x13\xB6\x1AIX\x90\x94G\x1A\xCD\xA4M\xD5dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`BytesLib`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/cosignerlib.rs b/crates/bindings-uniswapx/src/cosignerlib.rs index 484708b..10cd9b3 100644 --- a/crates/bindings-uniswapx/src/cosignerlib.rs +++ b/crates/bindings-uniswapx/src/cosignerlib.rs @@ -17,38 +17,49 @@ interface CosignerLib { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod CosignerLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205e74c02237e4d571e29c432d63791304211f5a1ad21c2d4279f19188ed3b3dbb64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212207b621b7ce94aa3479cf86d368f2c620445ea49a74361d1a03e0b03bcb8df7bd464736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 ^t\xC0\"7\xE4\xD5q\xE2\x9CC-cy\x13\x04!\x1FZ\x1A\xD2\x1C-By\xF1\x91\x88\xED;=\xBBdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 {b\x1B|\xE9J\xA3G\x9C\xF8m6\x8F,b\x04E\xEAI\xA7Ca\xD1\xA0>\x0B\x03\xBC\xB8\xDF{\xD4dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205e74c02237e4d571e29c432d63791304211f5a1ad21c2d4279f19188ed3b3dbb64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212207b621b7ce94aa3479cf86d368f2c620445ea49a74361d1a03e0b03bcb8df7bd464736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 ^t\xC0\"7\xE4\xD5q\xE2\x9CC-cy\x13\x04!\x1FZ\x1A\xD2\x1C-By\xF1\x91\x88\xED;=\xBBdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 {b\x1B|\xE9J\xA3G\x9C\xF8m6\x8F,b\x04E\xEAI\xA7Ca\xD1\xA0>\x0B\x03\xBC\xB8\xDF{\xD4dsolcC\0\x08\x18\x003", ); /**Custom error with signature `InvalidCosignature()` and selector `0xd7815be1`. ```solidity error InvalidCosignature(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidCosignature {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -102,6 +113,7 @@ error InvalidCosignature(); }; ///Container for all the [`CosignerLib`](self) custom errors. pub enum CosignerLibErrors { + #[allow(missing_docs)] InvalidCosignature(InvalidCosignature), } #[automatically_derived] @@ -136,7 +148,7 @@ error InvalidCosignature(); Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -168,7 +180,7 @@ error InvalidCosignature(); ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/currencylibrary.rs b/crates/bindings-uniswapx/src/currencylibrary.rs index 618f211..85a8627 100644 --- a/crates/bindings-uniswapx/src/currencylibrary.rs +++ b/crates/bindings-uniswapx/src/currencylibrary.rs @@ -17,38 +17,49 @@ interface CurrencyLibrary { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod CurrencyLibrary { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204d31eec571fc5d8d0c338a6f6bce4e4e15ded122a4be09cad8ce5d66581f67b564736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220b54daf4b784b721364880fcd9943a3abf3f86738124e4f22b329a0d31b3b8b3964736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 M1\xEE\xC5q\xFC]\x8D\x0C3\x8Aok\xCENN\x15\xDE\xD1\"\xA4\xBE\t\xCA\xD8\xCE]fX\x1Fg\xB5dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xB5M\xAFKxKr\x13d\x88\x0F\xCD\x99C\xA3\xAB\xF3\xF8g8\x12NO\"\xB3)\xA0\xD3\x1B;\x8B9dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204d31eec571fc5d8d0c338a6f6bce4e4e15ded122a4be09cad8ce5d66581f67b564736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220b54daf4b784b721364880fcd9943a3abf3f86738124e4f22b329a0d31b3b8b3964736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 M1\xEE\xC5q\xFC]\x8D\x0C3\x8Aok\xCENN\x15\xDE\xD1\"\xA4\xBE\t\xCA\xD8\xCE]fX\x1Fg\xB5dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xB5M\xAFKxKr\x13d\x88\x0F\xCD\x99C\xA3\xAB\xF3\xF8g8\x12NO\"\xB3)\xA0\xD3\x1B;\x8B9dsolcC\0\x08\x18\x003", ); /**Custom error with signature `NativeTransferFailed()` and selector `0xf4b3b1bc`. ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -102,6 +113,7 @@ error NativeTransferFailed(); }; ///Container for all the [`CurrencyLibrary`](self) custom errors. pub enum CurrencyLibraryErrors { + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), } #[automatically_derived] @@ -136,7 +148,7 @@ error NativeTransferFailed(); Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -168,7 +180,7 @@ error NativeTransferFailed(); ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/curvebuilder.rs b/crates/bindings-uniswapx/src/curvebuilder.rs index ba445e4..4e3937d 100644 --- a/crates/bindings-uniswapx/src/curvebuilder.rs +++ b/crates/bindings-uniswapx/src/curvebuilder.rs @@ -9,29 +9,35 @@ interface CurveBuilder {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod CurveBuilder { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e5894095e3e5c2c544077a8cf87a690da4dc6f7c4568403975111be34366b4b64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212207a975419b70f5a817a77f173710d45ae86d470c8d613293eb90b065c170f8b3064736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 nX\x94\t^>\\,T@w\xA8\xCF\x87\xA6\x90\xDAM\xC6\xF7\xC4V\x84\x03\x97Q\x11\xBE46kKdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 z\x97T\x19\xB7\x0FZ\x81zw\xF1sq\rE\xAE\x86\xD4p\xC8\xD6\x13)>\xB9\x0B\x06\\\x17\x0F\x8B0dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e5894095e3e5c2c544077a8cf87a690da4dc6f7c4568403975111be34366b4b64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212207a975419b70f5a817a77f173710d45ae86d470c8d613293eb90b065c170f8b3064736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 nX\x94\t^>\\,T@w\xA8\xCF\x87\xA6\x90\xDAM\xC6\xF7\xC4V\x84\x03\x97Q\x11\xBE46kKdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 z\x97T\x19\xB7\x0FZ\x81zw\xF1sq\rE\xAE\x86\xD4p\xC8\xD6\x13)>\xB9\x0B\x06\\\x17\x0F\x8B0dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`CurveBuilder`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/deploydutch.rs b/crates/bindings-uniswapx/src/deploydutch.rs index 9269e85..6379a2d 100644 --- a/crates/bindings-uniswapx/src/deploydutch.rs +++ b/crates/bindings-uniswapx/src/deploydutch.rs @@ -70,41 +70,55 @@ interface DeployDutch { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod DeployDutch { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b506168aa806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610094575b600080fd5b005b6100506100b7565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a79062010000900460ff1681565b604051901515815260200161008b565b60408051606081018252600080825260208201819052918101919091527f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561013f57600080fd5b505af1158015610153573d6000803e3d6000fd5b5050506e22d473030f116ddee9f6b43ac78ba33b600003905061017a576101786103a1565b505b60008060001b6e22d473030f116ddee9f6b43ac78ba3731a9c8182c09f50c8318d769245bea52c32be35bc6040516101b19061052e565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156101f5573d6000803e3d6000fd5b5090506102376040518060400160405280600781526020017f52656163746f72000000000000000000000000000000000000000000000000008152508261046c565b60008060001b6040516102499061053b565b8190604051809103906000f5905080158015610269573d6000803e3d6000fd5b5090506102ab6040518060400160405280600681526020017f51756f74657200000000000000000000000000000000000000000000000000008152508261046c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561031657600080fd5b505af115801561032a573d6000803e3d6000fd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b600080604051806123e001604052806123c081526020016144b56123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290610424906e22d473030f116ddee9f6b43ac78ba39085906004016105ac565b600060405180830381600087803b15801561043e57600080fd5b505af1158015610452573d6000803e3d6000fd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6104fd82826040516024016104829291906105e3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610501565b5050565b61050a8161050d565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6130808061061c83390190565b610e198061369c83390190565b6000815180845260005b8181101561056e57602081850181015186830182015201610552565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006105db6040830184610548565b949350505050565b6040815260006105f66040830185610548565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b5060405162003080380380620030808339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051612f67620001196000396000818160e001526117e90152612f676000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046121aa565b6101eb565b005b6100b96100c9366004612258565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461229a565b6104c5565b34801561014a57600080fd5b506100b9610159366004612328565b610683565b6100b961016c36600461234c565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612328565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56123b0565b60200260200101819052506102d981610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016125b3565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b95565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612381565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666123b0565b90506020028101906104789190612679565b6109f6565b82828151811061048f5761048f6123b0565b6020908102919091010152600101610449565b506104ac81610b44565b6104b581610b95565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612381565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666123b0565b8282815181106105d9576105d96123b0565b60209081029190910101526001016105aa565b506105f681610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016125b3565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b95565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696123b0565b602002602001018190525061087d81610b44565b61088681610b95565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f83806126b7565b810190610a7c91906129a9565b9050610a8781610ce8565b6040518060a0016040528082600001518152602001610abd836020015184604001518560600151610dd39092919063ffffffff16565b8152602001610ae3836020015184604001518560800151610ea59092919063ffffffff16565b8152602001848060200190610af891906126b7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610f8c565b90529392505050565b805160005b8181101561035f576000838281518110610b6557610b656123b0565b60200260200101519050610b78816111f6565b610b8281336116e6565b610b8c81336117e7565b50600101610b49565b805160005b81811015610cd7576000838281518110610bb657610bb66123b0565b602002602001015190506000816040015151905060005b81811015610c3757600083604001518281518110610bed57610bed6123b0565b60200260200101519050610c2e81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611b579092919063ffffffff16565b50600101610bcd565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c8057610c806123b0565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cc591815260200190565b60405180910390a45050600101610b9a565b5047156104c1576104c13347611b9e565b60408101518151606001511015610d2b576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108915760005b8160800151518110156104c15781608001518181518110610d6657610d666123b0565b60200260200101516040015182608001518281518110610d8857610d886123b0565b60200260200101516020015114610dcb576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d43565b610e0d6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e4f576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e65856020015186604001518686611c38565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ec357610ec3612381565b604051908082528060200260200182016040528015610f2c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ee15790505b50915060005b81811015610f8357610f5e868281518110610f4f57610f4f6123b0565b60200260200101518686611cb5565b838281518110610f7057610f706123b0565b6020908102919091010152600101610f32565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a982015260009060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d913960405160200161113293929190612add565b604051602081830303815290604052805190602001206111558360000151611d85565b836020015184604001518560600151600001518660600151602001518760600151604001516111878960800151611e1f565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff166112165750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061126d908590600401612b20565b600060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112d09190810190612b33565b60408301515181519192509060006112e88284612c32565b67ffffffffffffffff81111561130057611300612381565b60405190808252806020026020018201604052801561136957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161131e5790505b50905060005b838110156113ba578560400151818151811061138d5761138d6123b0565b60200260200101518282815181106113a7576113a76123b0565b602090810291909101015260010161136f565b5060008060005b848110156116d55760008782815181106113dd576113dd6123b0565b6020026020010151905060005b8281101561149b57888181518110611404576114046123b0565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036114935781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016113ea565b506000805b8881101561155c5760008b6040015182815181106114c0576114c06123b0565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361155357851561153d576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161154c9084612c32565b9250600196505b506001016114a0565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036115d55784156115bc576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516115ce9082612c32565b9050600193505b8060000361162a5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611638816005612710611ebd565b826020015111156116ab578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106116c0576116c06123b0565b602090810291909101015250506001016113c1565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611737576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117b39084908690600401612c45565b60006040518083038186803b1580156117cb57600080fd5b505afa1580156117df573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6118a7846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6118b18585611ef9565b85600001516020015186608001516040516020016119fc907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d9139604051602001611a6993929190612add565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612e776020830139604051602001611abc929190612c74565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611b299695949392600401612ccf565b600060405180830381600087803b158015611b4357600080fd5b505af11580156117df573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611b7c5761035f8282611b9e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484611f40565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611bf8576040519150601f19603f3d011682016040523d82523d6000602084013e611bfd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611c48575083611cad565b828211611c81576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611c8f575082611cad565b428310611c9d575083611cad565b611caa8383428888612032565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d14576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d2a856020015186604001518686611c38565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d8152602001612ea5608d913980516020918201208351848301516040808701516060880151608089015160a08a015180519089012093516111d998939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611e3f57611e3f612381565b6040519080825280601f01601f191660200182016040528015611e69576020820181803683370190505b50905060005b8351811015611eae576000611e9c858381518110611e8f57611e8f6123b0565b602002602001015161204d565b60208381028501015250600101611e6f565b50805160209091012092915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611ef257600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600061204186868686866120c4565b90505b95945050505050565b6000604051806080016040528060528152602001612e25605291398051602091820120835184830151604080870151606088015191516111d9969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b60008484106120d4575080612044565b60006120e08786612d8a565b905060006120ee8888612d8a565b9050600085851215612120576121108383612109888a612d9d565b9190611ebd565b61211990612dc4565b9050612132565b61212f83836121098989612d9d565b90505b61213c8187612dfc565b9998505050505050505050565b60006040828403121561215b57600080fd5b50919050565b60008083601f84011261217357600080fd5b50813567ffffffffffffffff81111561218b57600080fd5b6020830191508360208285010111156121a357600080fd5b9250929050565b6000806000604084860312156121bf57600080fd5b833567ffffffffffffffff808211156121d757600080fd5b6121e387838801612149565b945060208601359150808211156121f957600080fd5b5061220686828701612161565b9497909650939450505050565b60008083601f84011261222557600080fd5b50813567ffffffffffffffff81111561223d57600080fd5b6020830191508360208260051b85010111156121a357600080fd5b6000806020838503121561226b57600080fd5b823567ffffffffffffffff81111561228257600080fd5b61228e85828601612213565b90969095509350505050565b600080600080604085870312156122b057600080fd5b843567ffffffffffffffff808211156122c857600080fd5b6122d488838901612213565b909650945060208701359150808211156122ed57600080fd5b506122fa87828801612161565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b60006020828403121561233a57600080fd5b813561234581612306565b9392505050565b60006020828403121561235e57600080fd5b813567ffffffffffffffff81111561237557600080fd5b611cad84828501612149565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156123fa5781810151838201526020016123e2565b50506000910152565b6000815180845261241b8160208601602086016123df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156124ad578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612462565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c061018085015261252c6101a0850182612403565b9050602083015161256a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612582828261244d565b915050606083015184820360a086015261259c8282612403565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612628577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526126168683516124b8565b955093820193908201906001016125dc565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126126ad57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126ec57600080fd5b83018035915067ffffffffffffffff82111561270757600080fd5b6020019150368190038213156121a357600080fd5b6040516060810167ffffffffffffffff8111828210171561273f5761273f612381565b60405290565b6040516080810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160a0810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160c0810167ffffffffffffffff8111828210171561273f5761273f612381565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127f5576127f5612381565b604052919050565b600082601f83011261280e57600080fd5b813567ffffffffffffffff81111561282857612828612381565b61285960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016127ae565b81815284602083860101111561286e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561289d57600080fd5b6128a561271c565b905081356128b281612306565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff8211156128ea576128ea612381565b5060051b60200190565b600082601f83011261290557600080fd5b8135602061291a612915836128d0565b6127ae565b82815260079290921b8401810191818101908684111561293957600080fd5b8286015b8481101561299e57608081890312156129565760008081fd5b61295e612745565b813561296981612306565b815281850135858201526040808301359082015260608083013561298c81612306565b9082015283529183019160800161293d565b509695505050505050565b6000602082840312156129bb57600080fd5b813567ffffffffffffffff808211156129d357600080fd5b9083019060e082860312156129e757600080fd5b6129ef612768565b8235828111156129fe57600080fd5b830160c08188031215612a1057600080fd5b612a1861278b565b8135612a2381612306565b81526020820135612a3381612306565b8060208301525060408201356040820152606082013560608201526080820135612a5c81612306565b608082015260a082013584811115612a7357600080fd5b612a7f898285016127fd565b60a08301525080835250506020830135602082015260408301356040820152612aab866060850161288b565b606082015260c083013582811115612ac257600080fd5b612ace878286016128f4565b60808301525095945050505050565b60008451612aef8184602089016123df565b845190830190612b038183602089016123df565b8451910190612b168183602088016123df565b0195945050505050565b60208152600061234560208301846124b8565b60006020808385031215612b4657600080fd5b825167ffffffffffffffff811115612b5d57600080fd5b8301601f81018513612b6e57600080fd5b8051612b7c612915826128d0565b81815260609182028301840191848201919088841115612b9b57600080fd5b938501935b83851015612bf75780858a031215612bb85760008081fd5b612bc061271c565b8551612bcb81612306565b81528587015187820152604080870151612be481612306565b9082015283529384019391850191612ba0565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611f3a57611f3a612c03565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611cad60408301846124b8565b7f44757463684f72646572207769746e6573732900000000000000000000000000815260008351612cac8160138501602088016123df565b835190830190612cc38160138401602088016123df565b01601301949350505050565b6000610140612cff838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612d406080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612d7581840186612403565b905082810361012084015261213c8185612403565b81810381811115611f3a57611f3a612c03565b8181036000831280158383131683831282161715612dbd57612dbd612c03565b5092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203612df557612df5612c03565b5060000390565b8082018281126000831280158216821582161715612e1c57612e1c612c03565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212200c74c65349b0af83668d860352d39f1829d5721d9019f51e2826cab1d7552ecb64736f6c63430008180033608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212204f855fe9ad607831506703d1076c7fdb575de559547994833437b0d18ccf26e764736f6c63430008180033 + ///0x6080604052600c805462ff00ff191662010001179055348015610020575f80fd5b5061675c8061002e5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610091575b5f80fd5b005b61004d6100b4565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a49062010000900460ff1681565b6040519015158152602001610088565b604080516060810182525f80825260208201819052918101919091527f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610137575f80fd5b505af1158015610149573d5f803e3d5ffd5b5050506e22d473030f116ddee9f6b43ac78ba33b5f03905061016f5761016d610386565b505b5f805f1b6e22d473030f116ddee9f6b43ac78ba3731a9c8182c09f50c8318d769245bea52c32be35bc6040516101a49061050b565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103905ff59050801580156101e5573d5f803e3d5ffd5b5090506102276040518060400160405280600781526020017f52656163746f72000000000000000000000000000000000000000000000000008152508261044b565b5f805f1b60405161023790610518565b8190604051809103905ff5905080158015610254573d5f803e3d5ffd5b5090506102966040518060400160405280600681526020017f51756f74657200000000000000000000000000000000000000000000000000008152508261044b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156102fd575f80fd5b505af115801561030f573d5f803e3d5ffd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b5f80604051806123e001604052806123c081526020016143676123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290610408906e22d473030f116ddee9f6b43ac78ba3908590600401610586565b5f604051808303815f87803b15801561041f575f80fd5b505af1158015610431573d5f803e3d5ffd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6104dc82826040516024016104619291906105bc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526104e0565b5050565b6104e9816104ec565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b612fb0806105f483390190565b610dc3806135a483390190565b5f81518084525f5b818110156105495760208185018101518683018201520161052d565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105b46040830184610525565b949350505050565b604081525f6105ce6040830185610525565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a060405234801562000010575f80fd5b5060405162002fb038038062002fb08339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b608051612e9f620001115f395f818160da01526117970152612e9f5ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af366004612132565b6101e0565b005b6100b46100c43660046121d7565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004612216565b6104af565b348015610143575f80fd5b506100b461015236600461229e565b610665565b6100b46101653660046122c0565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db36600461229e565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b761231f565b60200260200101819052506102cb81610b1d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b9084908790879060040161251a565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b6c565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff811115610374576103746122f2565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c576104678585838181106104505761045061231f565b905060200281019061046291906125dd565b6109d2565b8282815181106104795761047961231f565b6020908102919091010152600101610433565b5061049681610b1d565b61049f81610b6c565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d26122f2565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae8787838181106104505761045061231f565b8282815181106105c0576105c061231f565b6020908102919091010152600101610591565b506105dd81610b1d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d9084908890889060040161251a565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b6c565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f815181106108475761084761231f565b602002602001018190525061085b81610b1d565b61086481610b6c565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a8380612619565b810190610a5791906128fb565b9050610a6281610cb7565b6040518060a00160405280825f01518152602001610a97836020015184604001518560600151610da19092919063ffffffff16565b8152602001610abd836020015184604001518560800151610e6f9092919063ffffffff16565b8152602001848060200190610ad29190612619565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610b1483610f54565b90529392505050565b80515f5b8181101561034c575f838281518110610b3c57610b3c61231f565b60200260200101519050610b4f816111bb565b610b598133611698565b610b638133611795565b50600101610b21565b80515f5b81811015610ca6575f838281518110610b8b57610b8b61231f565b602002602001015190505f81604001515190505f5b81811015610c08575f83604001518281518110610bbf57610bbf61231f565b60200260200101519050610bff81604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611afe9092919063ffffffff16565b50600101610ba0565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c5057610c5061231f565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610c9491815260200190565b60405180910390a45050600101610b70565b5047156104ab576104ab3347611b45565b60408101518151606001511015610cfa576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160408101516020909101511461086f575f5b8160800151518110156104ab5781608001518181518110610d3457610d3461231f565b60200260200101516040015182608001518281518110610d5657610d5661231f565b60200260200101516020015114610d99576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d11565b610dd860405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b836040015184602001511115610e1a576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e2f856020015186604001518686611bdb565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610e8d57610e8d6122f2565b604051908082528060200260200182016040528015610ef557816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eab5790505b5091505f5b81811015610f4b57610f26868281518110610f1757610f1761231f565b60200260200101518686611c57565b838281518110610f3857610f3861231f565b6020908102919091010152600101610efa565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a98201525f9060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612d5d60208301396040518060c00160405280608d8152602001612ddd608d91396040516020016110f993929190612a27565b6040516020818303038152906040528051906020012061111b835f0151611d24565b8360200151846040015185606001515f015186606001516020015187606001516040015161114c8960800151611dbd565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff166111db5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611231908590600401612a69565b5f60405180830381865afa15801561124b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112909190810190612a7b565b6040830151518151919250905f6112a78284612b71565b67ffffffffffffffff8111156112bf576112bf6122f2565b60405190808252806020026020018201604052801561132757816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816112dd5790505b5090505f5b83811015611377578560400151818151811061134a5761134a61231f565b60200260200101518282815181106113645761136461231f565b602090810291909101015260010161132c565b505f805f5b84811015611687575f8782815181106113975761139761231f565b602002602001015190505f5b82811015611452578881815181106113bd576113bd61231f565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff160361144a5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6001016113a3565b505f805b8881101561150f575f8b6040015182815181106114755761147561231f565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff16036115065785156114f0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516114ff9084612b71565b9250600196505b50600101611456565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361158857841561156f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516115819082612b71565b9050600193505b805f036115dc5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6115ea816005612710611e58565b8260200151111561165d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a01815181106116725761167261231f565b6020908102919091010152505060010161137c565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146116e9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117659084908690600401612b84565b5f6040518083038186803b15801561177b575f80fd5b505afa15801561178d573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611854846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b61185e8585611e92565b855f01516020015186608001516040516020016119a8907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612d5d60208301396040518060c00160405280608d8152602001612ddd608d9139604051602001611a1593929190612a27565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612daf6020830139604051602001611a68929190612bb2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611ad59695949392600401612c0c565b5f604051808303815f87803b158015611aec575f80fd5b505af115801561178d573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611b235761034c8282611b45565b61034c73ffffffffffffffffffffffffffffffffffffffff8416338484611ed8565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611b9b576040519150601f19603f3d011682016040523d82523d5f602084013e611ba0565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f838503611bea575083611c4f565b828211611c23576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611c31575082611c4f565b428310611c3f575083611c4f565b611c4c8383428888611fc6565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611cb5576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611cca856020015186604001518686611bdb565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b5f6040518060c00160405280608d8152602001612ddd608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161119e98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115611ddc57611ddc6122f2565b6040519080825280601f01601f191660200182016040528015611e06576020820181803683370190505b5090505f5b8351811015611e49575f611e37858381518110611e2a57611e2a61231f565b6020026020010151611fe0565b60208381028501015250600101611e0b565b50805160209091012092915050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611e8b575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611fbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5050505050565b5f611fd48686868686612056565b90505b95945050505050565b5f604051806080016040528060528152602001612d5d6052913980516020918201208351848301516040808701516060880151915161119e969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f848410612065575080611fd7565b5f6120708786612cc6565b90505f61207d8888612cc6565b90505f858512156120ae5761209e8383612097888a612cd9565b9190611e58565b6120a790612cff565b90506120c0565b6120bd83836120978989612cd9565b90505b6120ca8187612d35565b9998505050505050505050565b5f604082840312156120e7575f80fd5b50919050565b5f8083601f8401126120fd575f80fd5b50813567ffffffffffffffff811115612114575f80fd5b60208301915083602082850101111561212b575f80fd5b9250929050565b5f805f60408486031215612144575f80fd5b833567ffffffffffffffff8082111561215b575f80fd5b612167878388016120d7565b9450602086013591508082111561217c575f80fd5b50612189868287016120ed565b9497909650939450505050565b5f8083601f8401126121a6575f80fd5b50813567ffffffffffffffff8111156121bd575f80fd5b6020830191508360208260051b850101111561212b575f80fd5b5f80602083850312156121e8575f80fd5b823567ffffffffffffffff8111156121fe575f80fd5b61220a85828601612196565b90969095509350505050565b5f805f8060408587031215612229575f80fd5b843567ffffffffffffffff80821115612240575f80fd5b61224c88838901612196565b90965094506020870135915080821115612264575f80fd5b50612271878288016120ed565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b5f602082840312156122ae575f80fd5b81356122b98161227d565b9392505050565b5f602082840312156122d0575f80fd5b813567ffffffffffffffff8111156122e6575f80fd5b611c4f848285016120d7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b8381101561236657818101518382015260200161234e565b50505f910152565b5f815180845261238581602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b83811015612415578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016123ca565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526124936101a085018261236e565b905060208301516124d16020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526124e982826123b7565b915050606083015184820360a0860152612503828261236e565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b8381101561258d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301855261257b868351612420565b95509382019390820190600101612541565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261260f575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261264c575f80fd5b83018035915067ffffffffffffffff821115612666575f80fd5b60200191503681900382131561212b575f80fd5b6040516060810167ffffffffffffffff8111828210171561269d5761269d6122f2565b60405290565b6040516080810167ffffffffffffffff8111828210171561269d5761269d6122f2565b60405160a0810167ffffffffffffffff8111828210171561269d5761269d6122f2565b60405160c0810167ffffffffffffffff8111828210171561269d5761269d6122f2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612753576127536122f2565b604052919050565b5f82601f83011261276a575f80fd5b813567ffffffffffffffff811115612784576127846122f2565b6127b560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161270c565b8181528460208386010111156127c9575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082840312156127f5575f80fd5b6127fd61267a565b9050813561280a8161227d565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612841576128416122f2565b5060051b60200190565b5f82601f83011261285a575f80fd5b8135602061286f61286a83612828565b61270c565b82815260079290921b8401810191818101908684111561288d575f80fd5b8286015b848110156128f057608081890312156128a8575f80fd5b6128b06126a3565b81356128bb8161227d565b81528185013585820152604080830135908201526060808301356128de8161227d565b90820152835291830191608001612891565b509695505050505050565b5f6020828403121561290b575f80fd5b813567ffffffffffffffff80821115612922575f80fd5b9083019060e08286031215612935575f80fd5b61293d6126c6565b82358281111561294b575f80fd5b830160c0818803121561295c575f80fd5b6129646126e9565b813561296f8161227d565b8152602082013561297f8161227d565b80602083015250604082013560408201526060820135606082015260808201356129a88161227d565b608082015260a0820135848111156129be575f80fd5b6129ca8982850161275b565b60a083015250808352505060208301356020820152604083013560408201526129f686606085016127e5565b606082015260c083013582811115612a0c575f80fd5b612a188782860161284b565b60808301525095945050505050565b5f8451612a3881846020890161234c565b845190830190612a4c81836020890161234c565b8451910190612a5f81836020880161234c565b0195945050505050565b602081525f6122b96020830184612420565b5f6020808385031215612a8c575f80fd5b825167ffffffffffffffff811115612aa2575f80fd5b8301601f81018513612ab2575f80fd5b8051612ac061286a82612828565b81815260609182028301840191848201919088841115612ade575f80fd5b938501935b83851015612b385780858a031215612af9575f80fd5b612b0161267a565b8551612b0c8161227d565b81528587015187820152604080870151612b258161227d565b9082015283529384019391850191612ae3565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611ed257611ed2612b44565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611c4f6040830184612420565b7f44757463684f72646572207769746e657373290000000000000000000000000081525f8351612be981601385016020880161234c565b835190830190612c0081601384016020880161234c565b01601301949350505050565b5f610140612c3b838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612c7c6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612cb18184018661236e565b90508281036101208401526120ca818561236e565b81810381811115611ed257611ed2612b44565b8181035f831280158383131683831282161715612cf857612cf8612b44565b5092915050565b5f7f80000000000000000000000000000000000000000000000000000000000000008203612d2f57612d2f612b44565b505f0390565b8082018281125f831280158216821582161715612d5457612d54612b44565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220c6046beff5f7d506b16e2018101ed3b878948834bd1d4031a2fce775c1deed4664736f6c63430008180033608060405234801561000f575f80fd5b50610da68061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806341d88d6914610043578063585da6281461006c5780637671d07b14610081575b5f80fd5b6100566100513660046104a8565b6100c2565b60405161006391906105dc565b60405180910390f35b61007f61007a3660046108c4565b610218565b005b61009d61008f366004610a2a565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610063565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183525f815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101aa9291600401610a64565b5f604051808303815f87803b1580156101c1575f80fd5b505af19250505080156101d2575060015b610212573d8080156101ff576040519150601f19603f3d011682016040523d82523d5f602084013e610204565b606091505b5061020e81610297565b9150505b92915050565b8151600114610253576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f825f8151811061026657610266610ad7565b602002602001015160405160200161027e91906105dc565b6040516020818303038152906040529050805181602001fd5b60408051610160810182525f60a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031257815182602001fd5b818060200190518101906102129190610ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561037657610376610326565b60405290565b6040516060810167ffffffffffffffff8111828210171561037657610376610326565b60405160a0810167ffffffffffffffff8111828210171561037657610376610326565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561040957610409610326565b604052919050565b5f67ffffffffffffffff82111561042a5761042a610326565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610465575f80fd5b813561047861047382610411565b6103c2565b81815284602083860101111561048c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156104b9575f80fd5b823567ffffffffffffffff808211156104d0575f80fd5b6104dc86838701610456565b935060208501359150808211156104f1575f80fd5b506104fe85828601610456565b9150509250929050565b5f5b8381101561052257818101518382015260200161050a565b50505f910152565b5f8151808452610541816020860160208601610508565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156105d1578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101610586565b509495945050505050565b602081525f825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106576101c084018261052a565b905060208401516106956040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106d08383610573565b925060608601519150808584030160c0860152506106ee828261052a565b915050608084015160e08401528091505092915050565b5f67ffffffffffffffff82111561071e5761071e610326565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610749575f80fd5b50565b5f60c0828403121561075c575f80fd5b610764610353565b9050813561077181610728565b8152602082013561078181610728565b80602083015250604082013560408201526060820135606082015260808201356107aa81610728565b608082015260a082013567ffffffffffffffff8111156107c8575f80fd5b6107d484828501610456565b60a08301525092915050565b5f606082840312156107f0575f80fd5b6107f861037c565b9050813561080581610728565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610832575f80fd5b8135602061084261047383610705565b82815260609283028501820192828201919087851115610860575f80fd5b8387015b858110156108b75781818a03121561087a575f80fd5b61088261037c565b813561088d81610728565b815281860135868201526040808301356108a681610728565b908201528452928401928101610864565b5090979650505050505050565b5f80604083850312156108d5575f80fd5b823567ffffffffffffffff808211156108ec575f80fd5b818501915085601f8301126108ff575f80fd5b8135602061090f61047383610705565b82815260059290921b8401810191818101908984111561092d575f80fd5b8286015b84811015610a1457803586811115610947575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181131561097b575f80fd5b61098361039f565b8683013589811115610993575f80fd5b6109a18f898387010161074c565b8252506109b18e604085016107e0565b8782015260a0830135898111156109c6575f80fd5b6109d48f8983870101610823565b60408301525060c0830135898111156109eb575f80fd5b6109f98f8983870101610456565b60608301525091013560808201528352918301918301610931565b50965050860135925050808211156104f1575f80fd5b5f60208284031215610a3a575f80fd5b813567ffffffffffffffff811115610a50575f80fd5b610a5c84828501610456565b949350505050565b604081525f8351604080840152610a7e608084018261052a565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610ab9828261052a565b9150508281036020840152610ace818561052a565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82601f830112610b13575f80fd5b8151610b2161047382610411565b818152846020838601011115610b35575f80fd5b610a5c826020830160208701610508565b5f60c08284031215610b56575f80fd5b610b5e610353565b90508151610b6b81610728565b81526020820151610b7b81610728565b8060208301525060408201516040820152606082015160608201526080820151610ba481610728565b608082015260a082015167ffffffffffffffff811115610bc2575f80fd5b6107d484828501610b04565b5f60608284031215610bde575f80fd5b610be661037c565b90508151610bf381610728565b80825250602082015160208201526040820151604082015292915050565b5f82601f830112610c20575f80fd5b81516020610c3061047383610705565b82815260609283028501820192828201919087851115610c4e575f80fd5b8387015b858110156108b75781818a031215610c68575f80fd5b610c7061037c565b8151610c7b81610728565b81528186015186820152604080830151610c9481610728565b908201528452928401928101610c52565b5f60208284031215610cb5575f80fd5b815167ffffffffffffffff80821115610ccc575f80fd5b9083019060e08286031215610cdf575f80fd5b610ce761039f565b825182811115610cf5575f80fd5b610d0187828601610b46565b825250610d118660208501610bce565b6020820152608083015182811115610d27575f80fd5b610d3387828601610c11565b60408301525060a083015182811115610d4a575f80fd5b610d5687828601610b04565b60608301525060c09290920151608083015250939250505056fea2646970667358221220b0816c51d51c5ab3947bad3df8fedfb8758eb6ce0ed20b8fc1844c9926a031be64736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa2646970667358221220e2d17ff003294cc473310712f0d6d46f870aaf7dee69a1de533ee270988e34ec64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pah\xAA\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x94W[`\0\x80\xFD[\0[a\0Pa\0\xB7V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA7\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8BV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01?W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01SW=`\0\x80>=`\0\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;`\0\x03\x90Pa\x01zWa\x01xa\x03\xA1V[P[`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xB1\x90a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x01\xF5W=`\0\x80>=`\0\xFD[P\x90Pa\x027`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[`\0\x80`\0\x1B`@Qa\x02I\x90a\x05;V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02iW=`\0\x80>=`\0\xFD[P\x90Pa\x02\xAB`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\x16W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03*W=`\0\x80>=`\0\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[`\0\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aD\xB5a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04$\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\xACV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04>W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04RW=`\0\x80>=`\0\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xFD\x82\x82`@Q`$\x01a\x04\x82\x92\x91\x90a\x05\xE3V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x05\x01V[PPV[a\x05\n\x81a\x05\rV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a0\x80\x80a\x06\x1C\x839\x01\x90V[a\x0E\x19\x80a6\x9C\x839\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x05nW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05RV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x05\xDB`@\x83\x01\x84a\x05HV[\x94\x93PPPPV[`@\x81R`\0a\x05\xF6`@\x83\x01\x85a\x05HV[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x000\x808\x03\x80b\x000\x80\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa/gb\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x17\xE9\x01Ra/g`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a!\xAAV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a\"XV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a\"\x9AV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a#(V[a\x06\x83V[a\0\xB9a\x01l6`\x04a#LV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a#(V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a#\xB0V[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\x95V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a&yV[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BDV[a\x04\xB5\x81a\x0B\x95V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\x95V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia#\xB0V[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BDV[a\x08\x86\x81a\x0B\x95V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a&\xB7V[\x81\x01\x90a\n|\x91\x90a)\xA9V[\x90Pa\n\x87\x81a\x0C\xE8V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xD3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0E\xA5\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a&\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\x8CV[\x90R\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea#\xB0V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x11\xF6V[a\x0B\x82\x813a\x16\xE6V[a\x0B\x8C\x813a\x17\xE7V[P`\x01\x01a\x0BIV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xD7W`\0\x83\x82\x81Q\x81\x10a\x0B\xB6Wa\x0B\xB6a#\xB0V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C7W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xEDWa\x0B\xEDa#\xB0V[` \x02` \x01\x01Q\x90Pa\x0C.\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1BW\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xCDV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x80Wa\x0C\x80a#\xB0V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xC5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x9AV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1B\x9EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r+W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\x80\x01QQ\x81\x10\x15a\x04\xC1W\x81`\x80\x01Q\x81\x81Q\x81\x10a\rfWa\rfa#\xB0V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\r\x88Wa\r\x88a#\xB0V[` \x02` \x01\x01Q` \x01Q\x14a\r\xCBW`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\rCV[a\x0E\r`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EOW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0Ee\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xC3Wa\x0E\xC3a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F,W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xE1W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\x83Wa\x0F^\x86\x82\x81Q\x81\x10a\x0FOWa\x0FOa#\xB0V[` \x02` \x01\x01Q\x86\x86a\x1C\xB5V[\x83\x82\x81Q\x81\x10a\x0FpWa\x0Fpa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F2V[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R`\0\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x112\x93\x92\x91\x90a*\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11U\x83`\0\x01Qa\x1D\x85V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q`\0\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x11\x87\x89`\x80\x01Qa\x1E\x1FV[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\x16WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12m\x90\x85\x90`\x04\x01a+ V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\x8AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\xD0\x91\x90\x81\x01\x90a+3V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x12\xE8\x82\x84a,2V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\0Wa\x13\0a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13iW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x1EW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x13\xBAW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\x8DWa\x13\x8Da#\xB0V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xA7Wa\x13\xA7a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13oV[P`\0\x80`\0[\x84\x81\x10\x15a\x16\xD5W`\0\x87\x82\x81Q\x81\x10a\x13\xDDWa\x13\xDDa#\xB0V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x14\x9BW\x88\x81\x81Q\x81\x10a\x14\x04Wa\x14\x04a#\xB0V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\x93W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x13\xEAV[P`\0\x80[\x88\x81\x10\x15a\x15\\W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x14\xC0Wa\x14\xC0a#\xB0V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15SW\x85\x15a\x15=W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15L\x90\x84a,2V[\x92P`\x01\x96P[P`\x01\x01a\x14\xA0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\xD5W\x84\x15a\x15\xBCW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\xCE\x90\x82a,2V[\x90P`\x01\x93P[\x80`\0\x03a\x16*W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x168\x81`\x05a'\x10a\x1E\xBDV[\x82` \x01Q\x11\x15a\x16\xABW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16\xC0Wa\x16\xC0a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13\xC1V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x177W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xB3\x90\x84\x90\x86\x90`\x04\x01a,EV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17\xCBW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xA7\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xB1\x85\x85a\x1E\xF9V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xFC\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x1Ai\x93\x92\x91\x90a*\xDDV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a.w` \x83\x019`@Q` \x01a\x1A\xBC\x92\x91\x90a,tV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B)\x96\x95\x94\x93\x92`\x04\x01a,\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B|Wa\x03_\x82\x82a\x1B\x9EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1F@V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1B\xF8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1B\xFDV[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1CHWP\x83a\x1C\xADV[\x82\x82\x11a\x1C\x81W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\x8FWP\x82a\x1C\xADV[B\x83\x10a\x1C\x9DWP\x83a\x1C\xADV[a\x1C\xAA\x83\x83B\x88\x88a 2V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x14W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D*\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\xD9\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E?Wa\x1E?a#\x81V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1EiW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1E\xAEW`\0a\x1E\x9C\x85\x83\x81Q\x81\x10a\x1E\x8FWa\x1E\x8Fa#\xB0V[` \x02` \x01\x01Qa MV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1EoV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\xF2W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a +W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0a A\x86\x86\x86\x86\x86a \xC4V[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a.%`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\xD9\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x84\x84\x10a \xD4WP\x80a DV[`\0a \xE0\x87\x86a-\x8AV[\x90P`\0a \xEE\x88\x88a-\x8AV[\x90P`\0\x85\x85\x12\x15a! Wa!\x10\x83\x83a!\t\x88\x8Aa-\x9DV[\x91\x90a\x1E\xBDV[a!\x19\x90a-\xC4V[\x90Pa!2V[a!/\x83\x83a!\t\x89\x89a-\x9DV[\x90P[a!<\x81\x87a-\xFCV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a![W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a!sW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x8BW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a!\xBFW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a!\xD7W`\0\x80\xFD[a!\xE3\x87\x83\x88\x01a!IV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!\xF9W`\0\x80\xFD[Pa\"\x06\x86\x82\x87\x01a!aV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\"%W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"=W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\"kW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x82W`\0\x80\xFD[a\"\x8E\x85\x82\x86\x01a\"\x13V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\"\xB0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"\xC8W`\0\x80\xFD[a\"\xD4\x88\x83\x89\x01a\"\x13V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"\xEDW`\0\x80\xFD[Pa\"\xFA\x87\x82\x88\x01a!aV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a#:W`\0\x80\xFD[\x815a#E\x81a#\x06V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a#^W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#uW`\0\x80\xFD[a\x1C\xAD\x84\x82\x85\x01a!IV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a#\xFAW\x81\x81\x01Q\x83\x82\x01R` \x01a#\xE2V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra$\x1B\x81` \x86\x01` \x86\x01a#\xDFV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a$\xADW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a$bV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%,a\x01\xA0\x85\x01\x82a$\x03V[\x90P` \x83\x01Qa%j` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra%\x82\x82\x82a$MV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x9C\x82\x82a$\x03V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a&(W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra&\x16\x86\x83Qa$\xB8V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%\xDCV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\xADW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&\xECW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a'\x07W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!\xA3W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xF5Wa'\xF5a#\x81V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a(\x0EW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a((Wa((a#\x81V[a(Y` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\xAEV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a(nW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a(\x9DW`\0\x80\xFD[a(\xA5a'\x1CV[\x90P\x815a(\xB2\x81a#\x06V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xEAWa(\xEAa#\x81V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a)\x05W`\0\x80\xFD[\x815` a)\x1Aa)\x15\x83a(\xD0V[a'\xAEV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a)9W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a)\x9EW`\x80\x81\x89\x03\x12\x15a)VW`\0\x80\x81\xFD[a)^a'EV[\x815a)i\x81a#\x06V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a)\x8C\x81a#\x06V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a)=V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a)\xBBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\xD3W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)\xE7W`\0\x80\xFD[a)\xEFa'hV[\x825\x82\x81\x11\x15a)\xFEW`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a*\x10W`\0\x80\xFD[a*\x18a'\x8BV[\x815a*#\x81a#\x06V[\x81R` \x82\x015a*3\x81a#\x06V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a*\\\x81a#\x06V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a*sW`\0\x80\xFD[a*\x7F\x89\x82\x85\x01a'\xFDV[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra*\xAB\x86``\x85\x01a(\x8BV[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\xC2W`\0\x80\xFD[a*\xCE\x87\x82\x86\x01a(\xF4V[`\x80\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa*\xEF\x81\x84` \x89\x01a#\xDFV[\x84Q\x90\x83\x01\x90a+\x03\x81\x83` \x89\x01a#\xDFV[\x84Q\x91\x01\x90a+\x16\x81\x83` \x88\x01a#\xDFV[\x01\x95\x94PPPPPV[` \x81R`\0a#E` \x83\x01\x84a$\xB8V[`\0` \x80\x83\x85\x03\x12\x15a+FW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+]W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a+nW`\0\x80\xFD[\x80Qa+|a)\x15\x82a(\xD0V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a+\x9BW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+\xF7W\x80\x85\x8A\x03\x12\x15a+\xB8W`\0\x80\x81\xFD[a+\xC0a'\x1CV[\x85Qa+\xCB\x81a#\x06V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+\xE4\x81a#\x06V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a+\xA0V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F:Wa\x1F:a,\x03V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1C\xAD`@\x83\x01\x84a$\xB8V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa,\xAC\x81`\x13\x85\x01` \x88\x01a#\xDFV[\x83Q\x90\x83\x01\x90a,\xC3\x81`\x13\x84\x01` \x88\x01a#\xDFV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a,\xFF\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra-@`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra-u\x81\x84\x01\x86a$\x03V[\x90P\x82\x81\x03a\x01 \x84\x01Ra!<\x81\x85a$\x03V[\x81\x81\x03\x81\x81\x11\x15a\x1F:Wa\x1F:a,\x03V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a-\xBDWa-\xBDa,\x03V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-\xF5Wa-\xF5a,\x03V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a.\x1CWa.\x1Ca,\x03V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x0Ct\xC6SI\xB0\xAF\x83f\x8D\x86\x03R\xD3\x9F\x18)\xD5r\x1D\x90\x19\xF5\x1E(&\xCA\xB1\xD7U.\xCBdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 O\x85_\xE9\xAD`x1Pg\x03\xD1\x07l\x7F\xDBW]\xE5YTy\x94\x8347\xB0\xD1\x8C\xCF&\xE7dsolcC\0\x08\x18\x003", + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[Pag\\\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x91W[_\x80\xFD[\0[a\0Ma\0\xB4V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x88V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x017W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01IW=_\x80>=_\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;_\x03\x90Pa\x01oWa\x01ma\x03\x86V[P[_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xA4\x90a\x05\x0BV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x01\xE5W=_\x80>=_\xFD[P\x90Pa\x02'`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[_\x80_\x1B`@Qa\x027\x90a\x05\x18V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02TW=_\x80>=_\xFD[P\x90Pa\x02\x96`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\xFDW_\x80\xFD[PZ\xF1\x15\x80\x15a\x03\x0FW=_\x80>=_\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[_\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aCga#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04\x08\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\x86V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x1FW_\x80\xFD[PZ\xF1\x15\x80\x15a\x041W=_\x80>=_\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xDC\x82\x82`@Q`$\x01a\x04a\x92\x91\x90a\x05\xBCV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04\xE0V[PPV[a\x04\xE9\x81a\x04\xECV[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a/\xB0\x80a\x05\xF4\x839\x01\x90V[a\r\xC3\x80a5\xA4\x839\x01\x90V[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x05IW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05-V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x05\xB4`@\x83\x01\x84a\x05%V[\x94\x93PPPPV[`@\x81R_a\x05\xCE`@\x83\x01\x85a\x05%V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0/\xB08\x03\x80b\0/\xB0\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa.\x9Fb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x17\x97\x01Ra.\x9F_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a!2V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a!\xD7V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a\"\x16V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a\"\x9EV[a\x06eV[a\0\xB4a\x01e6`\x04a\"\xC0V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a\"\x9EV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a#\x1FV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0BlV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a%\xDDV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\x1DV[a\x04\x9F\x81a\x0BlV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0BlV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga#\x1FV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\x1DV[a\x08d\x81a\x0BlV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a&\x19V[\x81\x01\x90a\nW\x91\x90a(\xFBV[\x90Pa\nb\x81a\x0C\xB7V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xA1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0Eo\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a&\x19V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FTV[\x90R\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0B=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\x90\x91\x90\x81\x01\x90a*{V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x12\xA7\x82\x84a+qV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xBFWa\x12\xBFa\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x12\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x13wW\x85`@\x01Q\x81\x81Q\x81\x10a\x13JWa\x13Ja#\x1FV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13dWa\x13da#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13,V[P_\x80_[\x84\x81\x10\x15a\x16\x87W_\x87\x82\x81Q\x81\x10a\x13\x97Wa\x13\x97a#\x1FV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14RW\x88\x81\x81Q\x81\x10a\x13\xBDWa\x13\xBDa#\x1FV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x13\xA3V[P_\x80[\x88\x81\x10\x15a\x15\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x14uWa\x14ua#\x1FV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x06W\x85\x15a\x14\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x14\xFF\x90\x84a+qV[\x92P`\x01\x96P[P`\x01\x01a\x14VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\x88W\x84\x15a\x15oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\x81\x90\x82a+qV[\x90P`\x01\x93P[\x80_\x03a\x15\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x15\xEA\x81`\x05a'\x10a\x1EXV[\x82` \x01Q\x11\x15a\x16]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16rWa\x16ra#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x16\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17e\x90\x84\x90\x86\x90`\x04\x01a+\x84V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17{W_\x80\xFD[PZ\xFA\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18T\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18^\x85\x85a\x1E\x92V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xA8\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a-]` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919`@Q` \x01a\x1A\x15\x93\x92\x91\x90a*'V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a-\xAF` \x83\x019`@Q` \x01a\x1Ah\x92\x91\x90a+\xB2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1A\xD5\x96\x95\x94\x93\x92`\x04\x01a,\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\xECW_\x80\xFD[PZ\xF1\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B#Wa\x03L\x82\x82a\x1BEV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1E\xD8V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1B\x9BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xA0V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1B\xEAWP\x83a\x1COV[\x82\x82\x11a\x1C#W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C1WP\x82a\x1COV[B\x83\x10a\x1C?WP\x83a\x1COV[a\x1CL\x83\x83B\x88\x88a\x1F\xC6V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1C\xB5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1C\xCA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1B\xDBV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\x9E\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1D\xDCWa\x1D\xDCa\"\xF2V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1EIW_a\x1E7\x85\x83\x81Q\x81\x10a\x1E*Wa\x1E*a#\x1FV[` \x02` \x01\x01Qa\x1F\xE0V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x0BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\x8BW_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F\xBFW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_a\x1F\xD4\x86\x86\x86\x86\x86a VV[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a-]`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\x9E\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x84\x84\x10a eWP\x80a\x1F\xD7V[_a p\x87\x86a,\xC6V[\x90P_a }\x88\x88a,\xC6V[\x90P_\x85\x85\x12\x15a \xAEWa \x9E\x83\x83a \x97\x88\x8Aa,\xD9V[\x91\x90a\x1EXV[a \xA7\x90a,\xFFV[\x90Pa \xC0V[a \xBD\x83\x83a \x97\x89\x89a,\xD9V[\x90P[a \xCA\x81\x87a-5V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a \xE7W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a \xFDW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x14W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!+W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a!DW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a![W_\x80\xFD[a!g\x87\x83\x88\x01a \xD7V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!|W_\x80\xFD[Pa!\x89\x86\x82\x87\x01a \xEDV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a!\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!+W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a!\xE8W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xFEW_\x80\xFD[a\"\n\x85\x82\x86\x01a!\x96V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\")W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"@W_\x80\xFD[a\"L\x88\x83\x89\x01a!\x96V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"dW_\x80\xFD[Pa\"q\x87\x82\x88\x01a \xEDV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[_` \x82\x84\x03\x12\x15a\"\xAEW_\x80\xFD[\x815a\"\xB9\x81a\"}V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\"\xD0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xE6W_\x80\xFD[a\x1CO\x84\x82\x85\x01a \xD7V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a#fW\x81\x81\x01Q\x83\x82\x01R` \x01a#NV[PP_\x91\x01RV[_\x81Q\x80\x84Ra#\x85\x81` \x86\x01` \x86\x01a#LV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a$\x15W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a#\xCAV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra$\x93a\x01\xA0\x85\x01\x82a#nV[\x90P` \x83\x01Qa$\xD1` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra$\xE9\x82\x82a#\xB7V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x03\x82\x82a#nV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a%\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra%{\x86\x83Qa$ V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\x0FW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&LW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a&fW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!+W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'SWa'Sa\"\xF2V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a'jW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'\x84Wa'\x84a\"\xF2V[a'\xB5` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\x0CV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a'\xC9W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a'\xF5W_\x80\xFD[a'\xFDa&zV[\x90P\x815a(\n\x81a\"}V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(AWa(Aa\"\xF2V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a(ZW_\x80\xFD[\x815` a(oa(j\x83a((V[a'\x0CV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a(\x8DW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a(\xF0W`\x80\x81\x89\x03\x12\x15a(\xA8W_\x80\xFD[a(\xB0a&\xA3V[\x815a(\xBB\x81a\"}V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a(\xDE\x81a\"}V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a(\x91V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a)\x0BW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\"W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)5W_\x80\xFD[a)=a&\xC6V[\x825\x82\x81\x11\x15a)KW_\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a)\\W_\x80\xFD[a)da&\xE9V[\x815a)o\x81a\"}V[\x81R` \x82\x015a)\x7F\x81a\"}V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a)\xA8\x81a\"}V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a)\xBEW_\x80\xFD[a)\xCA\x89\x82\x85\x01a'[V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra)\xF6\x86``\x85\x01a'\xE5V[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\x0CW_\x80\xFD[a*\x18\x87\x82\x86\x01a(KV[`\x80\x83\x01RP\x95\x94PPPPPV[_\x84Qa*8\x81\x84` \x89\x01a#LV[\x84Q\x90\x83\x01\x90a*L\x81\x83` \x89\x01a#LV[\x84Q\x91\x01\x90a*_\x81\x83` \x88\x01a#LV[\x01\x95\x94PPPPPV[` \x81R_a\"\xB9` \x83\x01\x84a$ V[_` \x80\x83\x85\x03\x12\x15a*\x8CW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xA2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a*\xB2W_\x80\xFD[\x80Qa*\xC0a(j\x82a((V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a*\xDEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+8W\x80\x85\x8A\x03\x12\x15a*\xF9W_\x80\xFD[a+\x01a&zV[\x85Qa+\x0C\x81a\"}V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+%\x81a\"}V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a*\xE3V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1CO`@\x83\x01\x84a$ V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x83Qa+\xE9\x81`\x13\x85\x01` \x88\x01a#LV[\x83Q\x90\x83\x01\x90a,\0\x81`\x13\x84\x01` \x88\x01a#LV[\x01`\x13\x01\x94\x93PPPPV[_a\x01@a,;\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra,|`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra,\xB1\x81\x84\x01\x86a#nV[\x90P\x82\x81\x03a\x01 \x84\x01Ra \xCA\x81\x85a#nV[\x81\x81\x03\x81\x81\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a,\xF8Wa,\xF8a+DV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-/Wa-/a+DV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a-TWa-Ta+DV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xC6\x04k\xEF\xF5\xF7\xD5\x06\xB1n \x18\x10\x1E\xD3\xB8x\x94\x884\xBD\x1D@1\xA2\xFC\xE7u\xC1\xDE\xEDFdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\r\xA6\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cA\xD8\x8Di\x14a\0CW\x80cX]\xA6(\x14a\0lW\x80cvq\xD0{\x14a\0\x81W[_\x80\xFD[a\0Va\0Q6`\x04a\x04\xA8V[a\0\xC2V[`@Qa\0c\x91\x90a\x05\xDCV[`@Q\x80\x91\x03\x90\xF3[a\0\x7Fa\0z6`\x04a\x08\xC4V[a\x02\x18V[\0[a\0\x9Da\0\x8F6`\x04a\n*V[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R_\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAA\x92\x91`\x04\x01a\ndV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC1W_\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xD2WP`\x01[a\x02\x12W=\x80\x80\x15a\x01\xFFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xB0\x81lQ\xD5\x1CZ\xB3\x94{\xAD=\xF8\xFE\xDF\xB8u\x8E\xB6\xCE\x0E\xD2\x0B\x8F\xC1\x84L\x99&\xA01\xBEdsolcC\0\x08\x18\x003`@`\x80\x81R`\x04\x90\x816\x10\x15a\0\x15W`\0\x80\xFD[`\0\x90\x815`\xE0\x1C\x80c\rX\xB1\xDB\x14a\x12lW\x80c\x13|)\xFE\x14a\x10uW\x80c*-\x80\xD1\x14a\r\xB7W\x80c+g\xB5p\x14a\x0B\xDEW\x80c0\xF2\x8Bz\x14a\n\xDEW\x80c6D\xE5\x15\x14a\n\x9DW\x80c6\xC7\x85\x16\x14a\n(W\x80c?\xF9\xDC\xB1\x14a\t\xA8W\x80cO\xE0+D\x14a\t?W\x80ce\xD9r<\x14a\x07\xACW\x80c\x87Q|E\x14a\x06zW\x80c\x92}\xA1\x05\x14a\x05\xC3W\x80c\xCCS(\x7F\x14a\x04\xA3W\x80c\xED\xD9DK\x14a\x03:Wc\xFE\x8E\xC1\xA7\x14a\0\xC6W`\0\x80\xFD[4a\x036W`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x835\x81\x81\x11a\x032Wa\x01\x14\x906\x90\x86\x01a\x16KV[`$5\x82\x81\x11a\x03.Wa\x01+\x906\x90\x87\x01a\x16\x1AV[a\x013a\x14\xE6V[\x91`\x845\x85\x81\x11a\x03*Wa\x01K\x906\x90\x8A\x01a\x15\xC1V[\x98\x90\x95`\xA45\x90\x81\x11a\x03&Wa\x01d\x916\x91\x01a\x15\xC1V[\x96\x90\x95\x81Q\x90a\x01s\x82a\x13\xFFV[`k\x82R\x7FPermitBatchWitnessTransferFrom(T` \x83\x01R\x7FokenPermissions[] permitted,addr\x83\x83\x01R\x7Fess spender,uint256 nonce,uint25``\x83\x01R\x7F6 deadline,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x82Q\x9A\x8B\x91\x81a\x02\"` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8A\x81R\x03\x99a\x02[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x9B\x8C\x81\x01\x83R\x82a\x147V[Q\x90 \x90\x85QQa\x02k\x81a\x1E\xBBV[\x90\x8A[\x81\x81\x10a\x02\xF9WPPa\x02\xF6\x99\x9Aa\x02\xED\x91\x83Qa\x02\xA0\x81a\x02\x94` \x82\x01\x80\x95a\x1FfV[\x03\x84\x81\x01\x83R\x82a\x147V[Q\x90 ` \x89\x81\x01Q\x85\x8B\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`d5`\xC0\x84\x01R\x82`\xE0\x81\x01[\x03\x90\x81\x01\x83R\x82a\x147V[Q\x90 \x93a\x1C\xF7V[\x80\xF3[\x80a\x03\x11a\x03\x0Ba\x03!\x93\x8CQa\x17^V[Qa TV[a\x03\x1B\x82\x86a\x17^V[Ra\x1F\nV[a\x02nV[\x88\x80\xFD[\x87\x80\xFD[\x84\x80\xFD[\x83\x80\xFD[P\x80\xFD[P\x914a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x805\x82\x81\x11a\x032Wa\x03\x8B\x906\x90\x83\x01a\x16KV[`$5\x83\x81\x11a\x03.Wa\x03\xA2\x906\x90\x84\x01a\x16\x1AV[\x93\x90\x92a\x03\xADa\x14\xE6V[\x91`d5\x90\x81\x11a\x04\x9FWa\x03\xC4\x916\x91\x01a\x15\xC1V[\x94\x90\x93\x83QQ\x97a\x03\xD4\x89a\x1E\xBBV[\x98\x88[\x81\x81\x10a\x04}WPPa\x02\xF6\x97\x98\x81Qa\x04%\x81a\x03\xF9` \x82\x01\x80\x95a\x1FfV[\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x01\x83R\x82a\x147V[Q\x90 ` \x86\x01Q\x82\x87\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\xFC\xF3_Z\xC6\xA2\xC2\x88h\xDCD\xC3\x02\x16dp&b9\x19_\x02\xB0\xEE@\x834\x82\x933\xB7f\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x02\xED\x81a\x14\x1BV[\x80\x8Ba\x03\x1B\x82a\x04\x94a\x03\x0Ba\x04\x9A\x96\x8DQa\x17^V[\x92a\x17^V[a\x03\xD7V[\x86\x80\xFD[P\x824a\x05\xBFW` \x90\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x03.Wa\x04\xF4\x916\x91\x01a\x16\x1AV[\x92\x90\x91\x84[\x84\x81\x10a\x05\x04W\x85\x80\xF3[\x80a\x05\x1Aa\x05\x15`\x01\x93\x88\x88a\x19lV[a\x19|V[a\x05/\x84a\x05)\x84\x8A\x8Aa\x19lV[\x01a\x19|V[3\x89R\x83\x85R\x85\x89 \x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x92\x83\x8BR\x86R\x86\x8A \x91\x16\x90\x81\x8AR\x85R\x85\x89 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81T\x16\x90U\x85Q\x91\x82R\x84\x82\x01R\x7F\x89\xB1\xAD\xD1^\xFFV\xB3\xDF\xE2\x99\xAD\x94\xE0\x1F+R\xFB\xCB\x80\xAE\x1A;\xAE\xA6\xAE\x8C\x04\xCB+\x98\xA4\x853\x92\xA2\x01a\x04\xF9V[\x82\x80\xFD[P4a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06v\x81a\x05\xFFa\x14\xA0V[\x93a\x06\x08a\x14\xC3V[a\x06\x10a\x14\xE6V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16\x83R`\x01` \x90\x81R\x84\x84 \x92\x88\x16\x84R\x91\x82R\x83\x83 \x90\x87\x16\x83R\x81R\x91\x90 T\x92Q\x93\x83\x16\x84R`\xA0\x83\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x84\x01R`\xD0\x91\x90\x91\x1C`@\x83\x01R\x81\x90``\x82\x01\x90V[\x03\x90\xF3[P4a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06\xB2a\x14\xA0V[\x90a\x06\xBBa\x14\xC3V[\x91a\x06\xC4a\x14\xE6V[e\xFF\xFF\xFF\xFF\xFF\xFF\x92`d5\x84\x81\x16\x90\x81\x81\x03a\x03*Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x7F\xDA\x9F\xA7\xC1\xB0\x04\x02\xC1}\x01a\xB2I\xB1\xAB\x8B\xBE\xC0G\xC5\xA5\"\x07\xB9\xC1\x12\xDE\xFF\xD8\x17\x03k\x943\x8AR`\x01` R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x8B \x98s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x94\x16\x99\x8A\x8DR` R\x83\x87\x8D \x9B\x16\x9A\x8B\x8DR` R\x86\x8C \x94\x86\x15`\0\x14a\x07\xA4WPB\x16\x92[\x84T\x92\x16\x97\x88\x93`\xA0\x1B\x16\x91\x16\x17\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA4\x80\xF3[\x90P\x92a\x07\x83V[P\x824a\x05\xBFW``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x07\xE5a\x14\xA0V[\x90a\x07\xEEa\x14\xC3V[\x92e\xFF\xFF\xFF\xFF\xFF\xFF`D5\x81\x81\x16\x93\x90\x84\x81\x03a\x03*W3\x88R` \x91`\x01\x83R\x84\x89 \x96s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x97\x88\x8BR\x84R\x85\x8A \x98\x16\x97\x88\x8AR\x83R\x84\x89 T`\xD0\x1C\x93\x84\x87\x11\x15a\t\x17Wa\xFF\xFF\x90\x85\x84\x03\x16\x11a\x08\xF0WP\x90\x7FU\xEB\x90\xD8\x10\xE1p\x0B5\xA8\xE7\xE2S\x95\xFF\x7F+\"Y\xAB\xD7A\\\xA2(M\xFB\x1C$d\x18\xF3\x93\x92\x913\x89R`\x01\x82R\x83\x89 \x87\x8AR\x82R\x83\x89 \x88\x8AR\x82R\x83\x89 \x90y\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83T\x92`\xD0\x1B\x16\x91\x16\x17\x90U\x82Q\x94\x85R\x84\x01R3\x92\xA4\x80\xF3[\x84Q\x7F$\xD3Z&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P4a\x036W\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W\x80` \x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\x8Fa\x14\xA0V[\x16\x81R\x80\x84R\x81\x81 `$5\x82R\x84R T\x90Q\x90\x81R\xF3[P\x824a\x05\xBFW\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFW\x7F7\x04\x90/\x967f\xA4\xE5a\xBB\xAA\xB6\xE6\xCD\xC1\xB1\xDD\x12\xF6\xE9\xE9\x96H\xDA\x88C\xB3\xF4k\x91\x8D\x905\x91`$53\x85R\x84` R\x81\x85 \x84\x86R` R\x81\x85 \x81\x81T\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA2\x80\xF3[\x824a\n\x9AW`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\n\x9AWa\n`a\x14\xA0V[a\nha\x14\xC3V[a\npa\x14\xE6V[`d5\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x83\x03a\x03.Wa\x02\xF6\x93a\x17\xA1V[\x80\xFD[P4a\x036W\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W` \x90a\n\xD7a\x1B\x1EV[\x90Q\x90\x81R\xF3[P\x82\x904a\x05\xBFWa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x0B\x1A6a\x15*V[\x90\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x0BLa\x14xV[\x91`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\xDAWa\x02\xF6\x94a\x0Bo\x916\x91\x01a\x15\xC1V[\x93\x90\x92a\x0B|\x83Qa TV[` \x84\x01Q\x82\x85\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\x93\x9C!\xA4\x8A\x8D\xBE:\x9A$\x04\xA1\xD4f\x91\xE4\xD3\x9Fe\x83\xD6\xECk5qF\x04\xC9\x86\xD8\x01\x06\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x0B\xD1\x81a\x14\x1BV[Q\x90 \x91a\x1C%V[\x85\x80\xFD[P\x914a\x036Wa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x0C\x18a\x14\xA0V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC6\x01`\xC0\x81\x12a\x032W`\x80\x85Q\x91a\x0CQ\x83a\x13\xE3V[\x12a\x032W\x84Q\x90a\x0Cb\x82a\x13\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91`$5\x83\x81\x16\x81\x03a\x04\x9FW\x81R`D5\x83\x81\x16\x81\x03a\x04\x9FW` \x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF`d5\x81\x81\x16\x81\x03a\x03*W\x88\x83\x01R`\x845\x90\x81\x16\x81\x03a\x04\x9FW``\x82\x01R\x81R`\xA45\x93\x82\x85\x16\x85\x03a\x0B\xDAW` \x82\x01\x94\x85R`\xC45\x90\x87\x83\x01\x82\x81R`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x03&Wa\x0C\xFE\x906\x90\x84\x01a\x15\xC1V[\x92\x90\x93\x80B\x11a\r\x88WPP\x91\x85\x91a\rxa\x02\xF6\x99\x9Aa\r~\x95a\r#\x88Qa\x1F\xBEV[\x90\x89\x8CQ\x16\x90Q\x90\x83Q\x92` \x84\x01\x94\x7F\xF3\x84\x1C\xD1\xFF\0\x85\x02jc'\xB6 \xB6y\x97\xCE@\xF2\x82\xC8\x8A\x8E\x90ZzV&\xE3\x10\xF3\xD0\x86R\x84\x01R``\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x90 a\x1B\xD9V[\x91a \xC7V[Q\x92Q\x16\x91a\x19\x9DV[`$\x92P\x8AQ\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[P\x914a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x93\x81\x856\x01\x12a\x032Wa\r\xF3a\x14\xA0V[\x92`$\x90\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x85\x11a\x03*W\x85\x90\x856\x03\x01\x12a\x04\x9FW\x80Q\x97\x85\x89\x01\x89\x81\x10\x82\x82\x11\x17a\x10JW\x82R\x84\x83\x015\x81\x81\x11a\x03&W\x85\x01\x906`#\x83\x01\x12\x15a\x03&W\x83\x82\x015\x91a\x0EP\x83a\x15\xEFV[\x90a\x0E]\x85Q\x92\x83a\x147V[\x83\x82R` \x93\x87\x85\x84\x01\x91`\x07\x1B\x83\x01\x01\x916\x83\x11a\x10FW\x88\x01\x90[\x82\x82\x10a\x0F\xE9WPPP\x8AR`Da\x0E\x93\x86\x88\x01a\x15\tV[\x96\x83\x8C\x01\x97\x88R\x015\x94\x83\x8B\x01\x91\x86\x83R`D5\x90\x81\x11a\x0F\xE5Wa\x0E\xBB\x906\x90\x87\x01a\x15\xC1V[\x95\x90\x96\x80B\x11a\x0F\xBAWPPP\x89\x98\x99QQa\x0E\xD6\x81a\x1E\xBBV[\x90\x8B[\x81\x81\x10a\x0F\x97WPP\x92\x88\x94\x92a\rx\x92a\x0Fd\x97\x95\x83Qa\x0F\x02\x81a\x03\xF9\x86\x82\x01\x80\x95a\x1FfV[Q\x90 \x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x8B\x8BQ\x16\x91Q\x92\x85Q\x94\x85\x01\x95\x7F\xAF\x1B\r0\xD2\xCA\xB08\x0Eh\xF0h\x90\x07\xE3%I\x93\xC5\x96\xF2\xFD\xD0\xAA\xA7\xF4\xD0OyD\x08c\x87R\x85\x01R\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x16\x90\x82QQ\x92\x84[\x84\x81\x10a\x0FxW\x85\x80\xF3[\x80a\x0F\x91\x85\x85a\x0F\x8B`\x01\x95\x87Qa\x17^V[Qa\x19\x9DV[\x01a\x0FmV[\x80a\x03\x11a\x0F\xAC\x8E\x9F\x9E\x93a\x0F\xB2\x94Qa\x17^V[Qa\x1F\xBEV[\x9B\x9A\x9Ba\x0E\xD9V[\x85Q\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[\x8A\x80\xFD[`\x80\x826\x03\x12a\x10FW\x85`\x80\x91\x88Qa\x10\x02\x81a\x13\x98V[a\x10\x0B\x85a\x15\tV[\x81Ra\x10\x18\x83\x86\x01a\x15\tV[\x83\x82\x01Ra\x10'\x8A\x86\x01a\x16\x07V[\x8A\x82\x01R\x8Da\x107\x81\x87\x01a\x16\x07V[\x90\x82\x01R\x81R\x01\x91\x01\x90a\x0EzV[\x8C\x80\xFD[\x84\x89`A\x86\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83RR\xFD[P\x824a\x05\xBFWa\x01@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x10\xB06a\x15*V[\x91\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x10\xE2a\x14xV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90a\x01\x045\x85\x81\x11a\x04\x9FWa\x11\x05\x906\x90\x86\x01a\x15\xC1V[\x90\x93a\x01$5\x96\x87\x11a\x03*Wa\x11%a\x0B\xD1\x96a\x02\xF6\x986\x91\x01a\x15\xC1V[\x96\x90\x95\x82Q\x90a\x114\x82a\x13\xFFV[`d\x82R\x7FPermitWitnessTransferFrom(TokenP` \x83\x01R\x7Fermissions permitted,address spe\x84\x83\x01R\x7Fnder,uint256 nonce,uint256 deadl``\x83\x01R\x7Fine,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x83Q\x94\x85\x91\x81a\x11\xE3` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8B\x81R\x03\x93a\x12\x1C\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x95\x86\x81\x01\x83R\x82a\x147V[Q\x90 \x92a\x12*\x86Qa TV[` \x87\x81\x01Q\x85\x89\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`\xE45`\xC0\x84\x01R\x82`\xE0\x81\x01a\x02\xE1V[P\x824a\x05\xBFW` \x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x0B\xDAW6`#\x83\x01\x12\x15a\x0B\xDAW\x81\x015\x92\x83\x11a\x03.W`$\x90`\x076\x83\x86\x83\x1B\x84\x01\x01\x11a\x04\x9FW\x86[\x85\x81\x10a\x12\xE5W\x87\x80\xF3[\x80\x82\x1B\x83\x01\x90`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\x836\x03\x01\x12a\x03&Wa\x13\x92\x88\x87`\x01\x94``\x83Qa\x13,\x81a\x13\x98V[a\x13h`\x84a\x13<\x8D\x86\x01a\x15\tV[\x94\x85\x84Ra\x13L`D\x82\x01a\x15\tV[\x80\x97\x85\x01Ra\x13]`d\x82\x01a\x15\tV[\x80\x98\x85\x01R\x01a\x15\tV[\x91\x82\x91\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x80\x80\x93\x16\x95\x16\x93\x16\x91\x16a\x17\xA1V[\x01a\x12\xDAV[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC45\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`\0\x80\xFD[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`D5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x01\x90`\x80\x82\x12a\x14\x9BW`@\x80Q\x90a\x15c\x82a\x13\xE3V[\x80\x82\x94\x12a\x14\x9BW\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W\x82R`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x81R`$5` \x82\x01R\x82R`D5` \x83\x01R`d5\x91\x01RV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x83\x81\x86\x01\x95\x01\x01\x11a\x14\x9BWV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x13\xB4W`\x05\x1B` \x01\x90V[5\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x80\x85\x01\x94\x84`\x06\x1B\x01\x01\x11a\x14\x9BWV[\x91\x90\x91``\x81\x84\x03\x12a\x14\x9BW`@\x80Q\x91a\x16f\x83a\x13\xE3V[\x82\x94\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x81\x11a\x14\x9BW\x83\x01\x82`\x1F\x82\x01\x12\x15a\x14\x9BW\x805a\x16\x93\x81a\x15\xEFV[\x92a\x16\xA0\x87Q\x94\x85a\x147V[\x81\x84R` \x94\x85\x80\x86\x01\x93`\x06\x1B\x85\x01\x01\x93\x81\x85\x11a\x14\x9BW\x90\x86\x89\x98\x97\x96\x95\x94\x93\x92\x01\x92[\x84\x84\x10a\x16\xE3WPPPPP\x85R\x80\x82\x015\x90\x85\x01R\x015\x91\x01RV[\x90\x91\x92\x93\x94\x95\x96\x97\x84\x83\x03\x12a\x14\x9BW\x88Q\x90\x89\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17a\x170W\x8A\x92\x89\x92\x84Ra\x17\x14\x87a\x15\tV[\x81R\x82\x87\x015\x83\x82\x01R\x81R\x01\x93\x01\x91\x90\x88\x97\x96\x95\x94\x93a\x16\xC6V[`$`\0\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`A`\x04R\xFD[\x80Q\x82\x10\x15a\x17rW` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x92\x91\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@`\0\x82\x84\x16\x81R`\x01` R\x82\x82\x82 \x96\x16\x95\x86\x82R` R\x81\x81 3\x82R` R \x94\x85T\x95e\xFF\xFF\xFF\xFF\xFF\xFF\x87`\xA0\x1C\x16\x80B\x11a\x18\x84WP\x82\x87\x16\x96\x83\x88\x03a\x18\x12W[PPa\x18\x10\x95P\x16\x92a\x18\xB5V[V[\x87\x84\x84\x16\x11`\0\x14a\x18OW`$\x88`@Q\x90\x7F\xF9o\xB0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x84a\x18\x10\x9A\x03\x16\x91\x16\x17\x90U8\x80a\x18\x02V[`$\x90`@Q\x90\x7F\xD8\x1B/.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90`\0`d\x92` \x95\x82\x95`@Q\x94\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\x04\x86\x01R`$\x85\x01R`D\x84\x01RZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x15a\x19\x0EWV[`d`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R\xFD[\x91\x90\x81\x10\x15a\x17rW`\x06\x1B\x01\x90V[5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x90V[\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81``\x84\x01Q\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x85Q\x16\x94\x82` \x82\x01Q\x16\x92\x80\x86`@\x80\x94\x01Q\x16\x95\x16\x95`\0\x91\x87\x83R`\x01` R\x83\x83 \x89\x84R` R\x83\x83 \x99\x16\x98\x89\x83R` R\x82\x82 \x91\x84\x83T`\xD0\x1C\x03a\x1A\xF5W\x91\x85a\x1A\xCE\x94\x92\x7F\xC6\xA3w\xBF\xC4\xEB\x12\0$\xA8\xAC\x08\xEE\xF2\x05\xBE\x16\xB8\x17\x02\x08\x12\xC72#\xE8\x1D\x1B\xDB\x97\x08\xEC\x98\x97\x96\x94P\x87\x15`\0\x14a\x1A\xD3Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90B\x16[`\xA0\x1B\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01\x86\x01`\xD0\x1B\x16\x17\x17\x90UQ\x93\x84\x93\x84\x91`@\x91\x94\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF``\x85\x01\x96\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x80\x92\x16` \x85\x01R\x16\x91\x01RV[\x03\x90\xA4V[Py\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87a\x1A`V[`\x04\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x1BiW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x82R\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j`@\x82\x01RF``\x82\x01R0`\x80\x82\x01R`\x80\x81Ra\x1B\xD3\x81a\x13\xFFV[Q\x90 \x90V[a\x1B\xE1a\x1B\x1EV[\x90`@Q\x90` \x82\x01\x92\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84R`\"\x83\x01R`B\x82\x01R`B\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x92\x90\x93`\xA45\x93`@\x84\x01Q\x80B\x11a\x1C\xC6WP` \x84Q\x01Q\x80\x86\x11a\x1C\x95WP\x91\x85\x91a\rxa\x1Ce\x94a\x1C`` \x88\x01Q\x86a\x1EGV[a\x1B\xD9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91QQ\x16\x92`\x845\x91\x82\x16\x82\x03a\x14\x9BWa\x18\x10\x93a\x18\xB5V[`$\x90`@Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`$\x90`@Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x95\x90\x93\x95\x80QQ\x95`@\x92\x83\x83\x01Q\x80B\x11a\x1E\x17WP\x84\x88\x03a\x1D\xEEWa\x1D.\x91\x86\x91a\rx` \x9Ba\x1C`\x8D\x88\x01Q\x86a\x1EGV[`\0[\x86\x81\x10a\x1DBWPPPPPPPPV[a\x1DM\x81\x83Qa\x17^V[Q\x88a\x1DZ\x83\x87\x8Aa\x19lV[\x015\x90\x89\x81\x01Q\x80\x83\x11a\x1D\xBEWP\x91\x81\x88\x88\x88`\x01\x96\x85\x96a\x1D\x84W[PPPPPP\x01a\x1D1V[a\x1D\xB3\x95a\x1D\xAD\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x05\x15\x93Q\x16\x95a\x19lV[\x91a\x18\xB5V[\x808\x88\x88\x88\x83a\x1DxV[`$\x90\x86Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`\x04\x84Q\x7F\xFFc:8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`$\x90\x85Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\xFF\x83\x16\x1B\x92\x16`\0R`\0` R`@`\0 \x90`\x08\x1C`\0R` R`@`\0 \x81\x81T\x18\x80\x91U\x16\x15a\x1E\x91WV[`\x04`@Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90a\x1E\xC5\x82a\x15\xEFV[a\x1E\xD2`@Q\x91\x82a\x147V[\x82\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x1F\0\x82\x94a\x15\xEFV[\x01\x90` 6\x91\x017V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x1F7W`\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80Q` \x80\x92\x01\x91`\0[\x82\x81\x10a\x1F\x7FWPPPP\x90V[\x83Q\x85R\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x1FqV[\x90\x81Q\x91`\0[\x83\x81\x10a\x1F\xABWPP\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q\x81\x85\x01R\x01a\x1F\x9AV[`@Q` \x81\x01\x91\x7Febl\xADl\xB9d\x93\xBFo^\xBE\xA2\x87V\xC9f\xF0#\xAB\x9E\x8A\x83\xA7\x10\x18I\xD5W;6x\x83Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`@\x84\x01R` \x82\x01Q\x16``\x83\x01R``e\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82`@\x82\x01Q\x16`\x80\x85\x01R\x01Q\x16`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RQ\x90 \x90V[`@Q` \x80\x82\x01\x92\x7Fa\x83X\xAC=\xB8\xDC'O\x0C\xD8\x82\x9D\xA7\xE24\xBDH\xCDs\xC4\xA7@\xAE\xDE\x1A\xDE\xC9\x84m\x06\xA1\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16`@\x84\x01R\x01Q``\x82\x01R``\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x90\x82`@\x91\x03\x12a\x14\x9BW` \x825\x92\x015\x90V[`\0\x84;a\".WP`A\x82\x03a!\xACWa \xE4\x82\x82\x01\x82a \xB1V[\x93\x90\x92`@\x10\x15a\x17rW` \x93`\0\x93`\xFF`@`\x80\x95\x015`\xF8\x1C[`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a!\xA0Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80`\0Q\x16\x91\x82\x15a!vW\x16\x03a!LWV[`\x04`@Q\x7F\x81^\x1Dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`\x04`@Q\x7F\x8B\xAAW\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`@Q=`\0\x82>=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 \xE2\xD1\x7F\xF0\x03)L\xC4s1\x07\x12\xF0\xD6\xD4o\x87\n\xAF}\xEEi\xA1\xDES>\xE2p\x98\x8E4\xECdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610094575b600080fd5b005b6100506100b7565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a79062010000900460ff1681565b604051901515815260200161008b565b60408051606081018252600080825260208201819052918101919091527f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561013f57600080fd5b505af1158015610153573d6000803e3d6000fd5b5050506e22d473030f116ddee9f6b43ac78ba33b600003905061017a576101786103a1565b505b60008060001b6e22d473030f116ddee9f6b43ac78ba3731a9c8182c09f50c8318d769245bea52c32be35bc6040516101b19061052e565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156101f5573d6000803e3d6000fd5b5090506102376040518060400160405280600781526020017f52656163746f72000000000000000000000000000000000000000000000000008152508261046c565b60008060001b6040516102499061053b565b8190604051809103906000f5905080158015610269573d6000803e3d6000fd5b5090506102ab6040518060400160405280600681526020017f51756f74657200000000000000000000000000000000000000000000000000008152508261046c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561031657600080fd5b505af115801561032a573d6000803e3d6000fd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b600080604051806123e001604052806123c081526020016144b56123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290610424906e22d473030f116ddee9f6b43ac78ba39085906004016105ac565b600060405180830381600087803b15801561043e57600080fd5b505af1158015610452573d6000803e3d6000fd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6104fd82826040516024016104829291906105e3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610501565b5050565b61050a8161050d565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6130808061061c83390190565b610e198061369c83390190565b6000815180845260005b8181101561056e57602081850181015186830182015201610552565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006105db6040830184610548565b949350505050565b6040815260006105f66040830185610548565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b5060405162003080380380620030808339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051612f67620001196000396000818160e001526117e90152612f676000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046121aa565b6101eb565b005b6100b96100c9366004612258565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461229a565b6104c5565b34801561014a57600080fd5b506100b9610159366004612328565b610683565b6100b961016c36600461234c565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612328565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56123b0565b60200260200101819052506102d981610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016125b3565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b95565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612381565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666123b0565b90506020028101906104789190612679565b6109f6565b82828151811061048f5761048f6123b0565b6020908102919091010152600101610449565b506104ac81610b44565b6104b581610b95565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612381565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666123b0565b8282815181106105d9576105d96123b0565b60209081029190910101526001016105aa565b506105f681610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016125b3565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b95565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696123b0565b602002602001018190525061087d81610b44565b61088681610b95565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f83806126b7565b810190610a7c91906129a9565b9050610a8781610ce8565b6040518060a0016040528082600001518152602001610abd836020015184604001518560600151610dd39092919063ffffffff16565b8152602001610ae3836020015184604001518560800151610ea59092919063ffffffff16565b8152602001848060200190610af891906126b7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610f8c565b90529392505050565b805160005b8181101561035f576000838281518110610b6557610b656123b0565b60200260200101519050610b78816111f6565b610b8281336116e6565b610b8c81336117e7565b50600101610b49565b805160005b81811015610cd7576000838281518110610bb657610bb66123b0565b602002602001015190506000816040015151905060005b81811015610c3757600083604001518281518110610bed57610bed6123b0565b60200260200101519050610c2e81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611b579092919063ffffffff16565b50600101610bcd565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c8057610c806123b0565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cc591815260200190565b60405180910390a45050600101610b9a565b5047156104c1576104c13347611b9e565b60408101518151606001511015610d2b576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108915760005b8160800151518110156104c15781608001518181518110610d6657610d666123b0565b60200260200101516040015182608001518281518110610d8857610d886123b0565b60200260200101516020015114610dcb576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d43565b610e0d6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e4f576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e65856020015186604001518686611c38565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ec357610ec3612381565b604051908082528060200260200182016040528015610f2c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ee15790505b50915060005b81811015610f8357610f5e868281518110610f4f57610f4f6123b0565b60200260200101518686611cb5565b838281518110610f7057610f706123b0565b6020908102919091010152600101610f32565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a982015260009060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d913960405160200161113293929190612add565b604051602081830303815290604052805190602001206111558360000151611d85565b836020015184604001518560600151600001518660600151602001518760600151604001516111878960800151611e1f565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff166112165750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061126d908590600401612b20565b600060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112d09190810190612b33565b60408301515181519192509060006112e88284612c32565b67ffffffffffffffff81111561130057611300612381565b60405190808252806020026020018201604052801561136957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161131e5790505b50905060005b838110156113ba578560400151818151811061138d5761138d6123b0565b60200260200101518282815181106113a7576113a76123b0565b602090810291909101015260010161136f565b5060008060005b848110156116d55760008782815181106113dd576113dd6123b0565b6020026020010151905060005b8281101561149b57888181518110611404576114046123b0565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036114935781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016113ea565b506000805b8881101561155c5760008b6040015182815181106114c0576114c06123b0565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361155357851561153d576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161154c9084612c32565b9250600196505b506001016114a0565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036115d55784156115bc576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516115ce9082612c32565b9050600193505b8060000361162a5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611638816005612710611ebd565b826020015111156116ab578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106116c0576116c06123b0565b602090810291909101015250506001016113c1565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611737576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117b39084908690600401612c45565b60006040518083038186803b1580156117cb57600080fd5b505afa1580156117df573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6118a7846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6118b18585611ef9565b85600001516020015186608001516040516020016119fc907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d9139604051602001611a6993929190612add565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612e776020830139604051602001611abc929190612c74565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611b299695949392600401612ccf565b600060405180830381600087803b158015611b4357600080fd5b505af11580156117df573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611b7c5761035f8282611b9e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484611f40565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611bf8576040519150601f19603f3d011682016040523d82523d6000602084013e611bfd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611c48575083611cad565b828211611c81576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611c8f575082611cad565b428310611c9d575083611cad565b611caa8383428888612032565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d14576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d2a856020015186604001518686611c38565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d8152602001612ea5608d913980516020918201208351848301516040808701516060880151608089015160a08a015180519089012093516111d998939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611e3f57611e3f612381565b6040519080825280601f01601f191660200182016040528015611e69576020820181803683370190505b50905060005b8351811015611eae576000611e9c858381518110611e8f57611e8f6123b0565b602002602001015161204d565b60208381028501015250600101611e6f565b50805160209091012092915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611ef257600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600061204186868686866120c4565b90505b95945050505050565b6000604051806080016040528060528152602001612e25605291398051602091820120835184830151604080870151606088015191516111d9969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b60008484106120d4575080612044565b60006120e08786612d8a565b905060006120ee8888612d8a565b9050600085851215612120576121108383612109888a612d9d565b9190611ebd565b61211990612dc4565b9050612132565b61212f83836121098989612d9d565b90505b61213c8187612dfc565b9998505050505050505050565b60006040828403121561215b57600080fd5b50919050565b60008083601f84011261217357600080fd5b50813567ffffffffffffffff81111561218b57600080fd5b6020830191508360208285010111156121a357600080fd5b9250929050565b6000806000604084860312156121bf57600080fd5b833567ffffffffffffffff808211156121d757600080fd5b6121e387838801612149565b945060208601359150808211156121f957600080fd5b5061220686828701612161565b9497909650939450505050565b60008083601f84011261222557600080fd5b50813567ffffffffffffffff81111561223d57600080fd5b6020830191508360208260051b85010111156121a357600080fd5b6000806020838503121561226b57600080fd5b823567ffffffffffffffff81111561228257600080fd5b61228e85828601612213565b90969095509350505050565b600080600080604085870312156122b057600080fd5b843567ffffffffffffffff808211156122c857600080fd5b6122d488838901612213565b909650945060208701359150808211156122ed57600080fd5b506122fa87828801612161565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b60006020828403121561233a57600080fd5b813561234581612306565b9392505050565b60006020828403121561235e57600080fd5b813567ffffffffffffffff81111561237557600080fd5b611cad84828501612149565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156123fa5781810151838201526020016123e2565b50506000910152565b6000815180845261241b8160208601602086016123df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156124ad578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612462565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c061018085015261252c6101a0850182612403565b9050602083015161256a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612582828261244d565b915050606083015184820360a086015261259c8282612403565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612628577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526126168683516124b8565b955093820193908201906001016125dc565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126126ad57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126ec57600080fd5b83018035915067ffffffffffffffff82111561270757600080fd5b6020019150368190038213156121a357600080fd5b6040516060810167ffffffffffffffff8111828210171561273f5761273f612381565b60405290565b6040516080810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160a0810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160c0810167ffffffffffffffff8111828210171561273f5761273f612381565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127f5576127f5612381565b604052919050565b600082601f83011261280e57600080fd5b813567ffffffffffffffff81111561282857612828612381565b61285960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016127ae565b81815284602083860101111561286e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561289d57600080fd5b6128a561271c565b905081356128b281612306565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff8211156128ea576128ea612381565b5060051b60200190565b600082601f83011261290557600080fd5b8135602061291a612915836128d0565b6127ae565b82815260079290921b8401810191818101908684111561293957600080fd5b8286015b8481101561299e57608081890312156129565760008081fd5b61295e612745565b813561296981612306565b815281850135858201526040808301359082015260608083013561298c81612306565b9082015283529183019160800161293d565b509695505050505050565b6000602082840312156129bb57600080fd5b813567ffffffffffffffff808211156129d357600080fd5b9083019060e082860312156129e757600080fd5b6129ef612768565b8235828111156129fe57600080fd5b830160c08188031215612a1057600080fd5b612a1861278b565b8135612a2381612306565b81526020820135612a3381612306565b8060208301525060408201356040820152606082013560608201526080820135612a5c81612306565b608082015260a082013584811115612a7357600080fd5b612a7f898285016127fd565b60a08301525080835250506020830135602082015260408301356040820152612aab866060850161288b565b606082015260c083013582811115612ac257600080fd5b612ace878286016128f4565b60808301525095945050505050565b60008451612aef8184602089016123df565b845190830190612b038183602089016123df565b8451910190612b168183602088016123df565b0195945050505050565b60208152600061234560208301846124b8565b60006020808385031215612b4657600080fd5b825167ffffffffffffffff811115612b5d57600080fd5b8301601f81018513612b6e57600080fd5b8051612b7c612915826128d0565b81815260609182028301840191848201919088841115612b9b57600080fd5b938501935b83851015612bf75780858a031215612bb85760008081fd5b612bc061271c565b8551612bcb81612306565b81528587015187820152604080870151612be481612306565b9082015283529384019391850191612ba0565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611f3a57611f3a612c03565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611cad60408301846124b8565b7f44757463684f72646572207769746e6573732900000000000000000000000000815260008351612cac8160138501602088016123df565b835190830190612cc38160138401602088016123df565b01601301949350505050565b6000610140612cff838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612d406080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612d7581840186612403565b905082810361012084015261213c8185612403565b81810381811115611f3a57611f3a612c03565b8181036000831280158383131683831282161715612dbd57612dbd612c03565b5092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203612df557612df5612c03565b5060000390565b8082018281126000831280158216821582161715612e1c57612e1c612c03565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212200c74c65349b0af83668d860352d39f1829d5721d9019f51e2826cab1d7552ecb64736f6c63430008180033608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212204f855fe9ad607831506703d1076c7fdb575de559547994833437b0d18ccf26e764736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610091575b5f80fd5b005b61004d6100b4565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a49062010000900460ff1681565b6040519015158152602001610088565b604080516060810182525f80825260208201819052918101919091527f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610137575f80fd5b505af1158015610149573d5f803e3d5ffd5b5050506e22d473030f116ddee9f6b43ac78ba33b5f03905061016f5761016d610386565b505b5f805f1b6e22d473030f116ddee9f6b43ac78ba3731a9c8182c09f50c8318d769245bea52c32be35bc6040516101a49061050b565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103905ff59050801580156101e5573d5f803e3d5ffd5b5090506102276040518060400160405280600781526020017f52656163746f72000000000000000000000000000000000000000000000000008152508261044b565b5f805f1b60405161023790610518565b8190604051809103905ff5905080158015610254573d5f803e3d5ffd5b5090506102966040518060400160405280600681526020017f51756f74657200000000000000000000000000000000000000000000000000008152508261044b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156102fd575f80fd5b505af115801561030f573d5f803e3d5ffd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b5f80604051806123e001604052806123c081526020016143676123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290610408906e22d473030f116ddee9f6b43ac78ba3908590600401610586565b5f604051808303815f87803b15801561041f575f80fd5b505af1158015610431573d5f803e3d5ffd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6104dc82826040516024016104619291906105bc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526104e0565b5050565b6104e9816104ec565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b612fb0806105f483390190565b610dc3806135a483390190565b5f81518084525f5b818110156105495760208185018101518683018201520161052d565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105b46040830184610525565b949350505050565b604081525f6105ce6040830185610525565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a060405234801562000010575f80fd5b5060405162002fb038038062002fb08339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b608051612e9f620001115f395f818160da01526117970152612e9f5ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af366004612132565b6101e0565b005b6100b46100c43660046121d7565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004612216565b6104af565b348015610143575f80fd5b506100b461015236600461229e565b610665565b6100b46101653660046122c0565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db36600461229e565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b761231f565b60200260200101819052506102cb81610b1d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b9084908790879060040161251a565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b6c565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff811115610374576103746122f2565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c576104678585838181106104505761045061231f565b905060200281019061046291906125dd565b6109d2565b8282815181106104795761047961231f565b6020908102919091010152600101610433565b5061049681610b1d565b61049f81610b6c565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d26122f2565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae8787838181106104505761045061231f565b8282815181106105c0576105c061231f565b6020908102919091010152600101610591565b506105dd81610b1d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d9084908890889060040161251a565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b6c565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f815181106108475761084761231f565b602002602001018190525061085b81610b1d565b61086481610b6c565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a8380612619565b810190610a5791906128fb565b9050610a6281610cb7565b6040518060a00160405280825f01518152602001610a97836020015184604001518560600151610da19092919063ffffffff16565b8152602001610abd836020015184604001518560800151610e6f9092919063ffffffff16565b8152602001848060200190610ad29190612619565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610b1483610f54565b90529392505050565b80515f5b8181101561034c575f838281518110610b3c57610b3c61231f565b60200260200101519050610b4f816111bb565b610b598133611698565b610b638133611795565b50600101610b21565b80515f5b81811015610ca6575f838281518110610b8b57610b8b61231f565b602002602001015190505f81604001515190505f5b81811015610c08575f83604001518281518110610bbf57610bbf61231f565b60200260200101519050610bff81604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611afe9092919063ffffffff16565b50600101610ba0565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c5057610c5061231f565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610c9491815260200190565b60405180910390a45050600101610b70565b5047156104ab576104ab3347611b45565b60408101518151606001511015610cfa576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160408101516020909101511461086f575f5b8160800151518110156104ab5781608001518181518110610d3457610d3461231f565b60200260200101516040015182608001518281518110610d5657610d5661231f565b60200260200101516020015114610d99576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d11565b610dd860405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b836040015184602001511115610e1a576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e2f856020015186604001518686611bdb565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610e8d57610e8d6122f2565b604051908082528060200260200182016040528015610ef557816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eab5790505b5091505f5b81811015610f4b57610f26868281518110610f1757610f1761231f565b60200260200101518686611c57565b838281518110610f3857610f3861231f565b6020908102919091010152600101610efa565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a98201525f9060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612d5d60208301396040518060c00160405280608d8152602001612ddd608d91396040516020016110f993929190612a27565b6040516020818303038152906040528051906020012061111b835f0151611d24565b8360200151846040015185606001515f015186606001516020015187606001516040015161114c8960800151611dbd565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff166111db5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611231908590600401612a69565b5f60405180830381865afa15801561124b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112909190810190612a7b565b6040830151518151919250905f6112a78284612b71565b67ffffffffffffffff8111156112bf576112bf6122f2565b60405190808252806020026020018201604052801561132757816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816112dd5790505b5090505f5b83811015611377578560400151818151811061134a5761134a61231f565b60200260200101518282815181106113645761136461231f565b602090810291909101015260010161132c565b505f805f5b84811015611687575f8782815181106113975761139761231f565b602002602001015190505f5b82811015611452578881815181106113bd576113bd61231f565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff160361144a5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6001016113a3565b505f805b8881101561150f575f8b6040015182815181106114755761147561231f565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff16036115065785156114f0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516114ff9084612b71565b9250600196505b50600101611456565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361158857841561156f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516115819082612b71565b9050600193505b805f036115dc5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6115ea816005612710611e58565b8260200151111561165d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a01815181106116725761167261231f565b6020908102919091010152505060010161137c565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146116e9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117659084908690600401612b84565b5f6040518083038186803b15801561177b575f80fd5b505afa15801561178d573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611854846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b61185e8585611e92565b855f01516020015186608001516040516020016119a8907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612d5d60208301396040518060c00160405280608d8152602001612ddd608d9139604051602001611a1593929190612a27565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612daf6020830139604051602001611a68929190612bb2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611ad59695949392600401612c0c565b5f604051808303815f87803b158015611aec575f80fd5b505af115801561178d573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611b235761034c8282611b45565b61034c73ffffffffffffffffffffffffffffffffffffffff8416338484611ed8565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611b9b576040519150601f19603f3d011682016040523d82523d5f602084013e611ba0565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f838503611bea575083611c4f565b828211611c23576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611c31575082611c4f565b428310611c3f575083611c4f565b611c4c8383428888611fc6565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611cb5576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611cca856020015186604001518686611bdb565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b5f6040518060c00160405280608d8152602001612ddd608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161119e98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115611ddc57611ddc6122f2565b6040519080825280601f01601f191660200182016040528015611e06576020820181803683370190505b5090505f5b8351811015611e49575f611e37858381518110611e2a57611e2a61231f565b6020026020010151611fe0565b60208381028501015250600101611e0b565b50805160209091012092915050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611e8b575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611fbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5050505050565b5f611fd48686868686612056565b90505b95945050505050565b5f604051806080016040528060528152602001612d5d6052913980516020918201208351848301516040808701516060880151915161119e969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f848410612065575080611fd7565b5f6120708786612cc6565b90505f61207d8888612cc6565b90505f858512156120ae5761209e8383612097888a612cd9565b9190611e58565b6120a790612cff565b90506120c0565b6120bd83836120978989612cd9565b90505b6120ca8187612d35565b9998505050505050505050565b5f604082840312156120e7575f80fd5b50919050565b5f8083601f8401126120fd575f80fd5b50813567ffffffffffffffff811115612114575f80fd5b60208301915083602082850101111561212b575f80fd5b9250929050565b5f805f60408486031215612144575f80fd5b833567ffffffffffffffff8082111561215b575f80fd5b612167878388016120d7565b9450602086013591508082111561217c575f80fd5b50612189868287016120ed565b9497909650939450505050565b5f8083601f8401126121a6575f80fd5b50813567ffffffffffffffff8111156121bd575f80fd5b6020830191508360208260051b850101111561212b575f80fd5b5f80602083850312156121e8575f80fd5b823567ffffffffffffffff8111156121fe575f80fd5b61220a85828601612196565b90969095509350505050565b5f805f8060408587031215612229575f80fd5b843567ffffffffffffffff80821115612240575f80fd5b61224c88838901612196565b90965094506020870135915080821115612264575f80fd5b50612271878288016120ed565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b5f602082840312156122ae575f80fd5b81356122b98161227d565b9392505050565b5f602082840312156122d0575f80fd5b813567ffffffffffffffff8111156122e6575f80fd5b611c4f848285016120d7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b8381101561236657818101518382015260200161234e565b50505f910152565b5f815180845261238581602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b83811015612415578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016123ca565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526124936101a085018261236e565b905060208301516124d16020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526124e982826123b7565b915050606083015184820360a0860152612503828261236e565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b8381101561258d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301855261257b868351612420565b95509382019390820190600101612541565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261260f575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261264c575f80fd5b83018035915067ffffffffffffffff821115612666575f80fd5b60200191503681900382131561212b575f80fd5b6040516060810167ffffffffffffffff8111828210171561269d5761269d6122f2565b60405290565b6040516080810167ffffffffffffffff8111828210171561269d5761269d6122f2565b60405160a0810167ffffffffffffffff8111828210171561269d5761269d6122f2565b60405160c0810167ffffffffffffffff8111828210171561269d5761269d6122f2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612753576127536122f2565b604052919050565b5f82601f83011261276a575f80fd5b813567ffffffffffffffff811115612784576127846122f2565b6127b560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161270c565b8181528460208386010111156127c9575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082840312156127f5575f80fd5b6127fd61267a565b9050813561280a8161227d565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612841576128416122f2565b5060051b60200190565b5f82601f83011261285a575f80fd5b8135602061286f61286a83612828565b61270c565b82815260079290921b8401810191818101908684111561288d575f80fd5b8286015b848110156128f057608081890312156128a8575f80fd5b6128b06126a3565b81356128bb8161227d565b81528185013585820152604080830135908201526060808301356128de8161227d565b90820152835291830191608001612891565b509695505050505050565b5f6020828403121561290b575f80fd5b813567ffffffffffffffff80821115612922575f80fd5b9083019060e08286031215612935575f80fd5b61293d6126c6565b82358281111561294b575f80fd5b830160c0818803121561295c575f80fd5b6129646126e9565b813561296f8161227d565b8152602082013561297f8161227d565b80602083015250604082013560408201526060820135606082015260808201356129a88161227d565b608082015260a0820135848111156129be575f80fd5b6129ca8982850161275b565b60a083015250808352505060208301356020820152604083013560408201526129f686606085016127e5565b606082015260c083013582811115612a0c575f80fd5b612a188782860161284b565b60808301525095945050505050565b5f8451612a3881846020890161234c565b845190830190612a4c81836020890161234c565b8451910190612a5f81836020880161234c565b0195945050505050565b602081525f6122b96020830184612420565b5f6020808385031215612a8c575f80fd5b825167ffffffffffffffff811115612aa2575f80fd5b8301601f81018513612ab2575f80fd5b8051612ac061286a82612828565b81815260609182028301840191848201919088841115612ade575f80fd5b938501935b83851015612b385780858a031215612af9575f80fd5b612b0161267a565b8551612b0c8161227d565b81528587015187820152604080870151612b258161227d565b9082015283529384019391850191612ae3565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611ed257611ed2612b44565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611c4f6040830184612420565b7f44757463684f72646572207769746e657373290000000000000000000000000081525f8351612be981601385016020880161234c565b835190830190612c0081601384016020880161234c565b01601301949350505050565b5f610140612c3b838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612c7c6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612cb18184018661236e565b90508281036101208401526120ca818561236e565b81810381811115611ed257611ed2612b44565b8181035f831280158383131683831282161715612cf857612cf8612b44565b5092915050565b5f7f80000000000000000000000000000000000000000000000000000000000000008203612d2f57612d2f612b44565b505f0390565b8082018281125f831280158216821582161715612d5457612d54612b44565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220c6046beff5f7d506b16e2018101ed3b878948834bd1d4031a2fce775c1deed4664736f6c63430008180033608060405234801561000f575f80fd5b50610da68061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806341d88d6914610043578063585da6281461006c5780637671d07b14610081575b5f80fd5b6100566100513660046104a8565b6100c2565b60405161006391906105dc565b60405180910390f35b61007f61007a3660046108c4565b610218565b005b61009d61008f366004610a2a565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610063565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183525f815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101aa9291600401610a64565b5f604051808303815f87803b1580156101c1575f80fd5b505af19250505080156101d2575060015b610212573d8080156101ff576040519150601f19603f3d011682016040523d82523d5f602084013e610204565b606091505b5061020e81610297565b9150505b92915050565b8151600114610253576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f825f8151811061026657610266610ad7565b602002602001015160405160200161027e91906105dc565b6040516020818303038152906040529050805181602001fd5b60408051610160810182525f60a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031257815182602001fd5b818060200190518101906102129190610ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561037657610376610326565b60405290565b6040516060810167ffffffffffffffff8111828210171561037657610376610326565b60405160a0810167ffffffffffffffff8111828210171561037657610376610326565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561040957610409610326565b604052919050565b5f67ffffffffffffffff82111561042a5761042a610326565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610465575f80fd5b813561047861047382610411565b6103c2565b81815284602083860101111561048c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156104b9575f80fd5b823567ffffffffffffffff808211156104d0575f80fd5b6104dc86838701610456565b935060208501359150808211156104f1575f80fd5b506104fe85828601610456565b9150509250929050565b5f5b8381101561052257818101518382015260200161050a565b50505f910152565b5f8151808452610541816020860160208601610508565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156105d1578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101610586565b509495945050505050565b602081525f825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106576101c084018261052a565b905060208401516106956040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106d08383610573565b925060608601519150808584030160c0860152506106ee828261052a565b915050608084015160e08401528091505092915050565b5f67ffffffffffffffff82111561071e5761071e610326565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610749575f80fd5b50565b5f60c0828403121561075c575f80fd5b610764610353565b9050813561077181610728565b8152602082013561078181610728565b80602083015250604082013560408201526060820135606082015260808201356107aa81610728565b608082015260a082013567ffffffffffffffff8111156107c8575f80fd5b6107d484828501610456565b60a08301525092915050565b5f606082840312156107f0575f80fd5b6107f861037c565b9050813561080581610728565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610832575f80fd5b8135602061084261047383610705565b82815260609283028501820192828201919087851115610860575f80fd5b8387015b858110156108b75781818a03121561087a575f80fd5b61088261037c565b813561088d81610728565b815281860135868201526040808301356108a681610728565b908201528452928401928101610864565b5090979650505050505050565b5f80604083850312156108d5575f80fd5b823567ffffffffffffffff808211156108ec575f80fd5b818501915085601f8301126108ff575f80fd5b8135602061090f61047383610705565b82815260059290921b8401810191818101908984111561092d575f80fd5b8286015b84811015610a1457803586811115610947575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181131561097b575f80fd5b61098361039f565b8683013589811115610993575f80fd5b6109a18f898387010161074c565b8252506109b18e604085016107e0565b8782015260a0830135898111156109c6575f80fd5b6109d48f8983870101610823565b60408301525060c0830135898111156109eb575f80fd5b6109f98f8983870101610456565b60608301525091013560808201528352918301918301610931565b50965050860135925050808211156104f1575f80fd5b5f60208284031215610a3a575f80fd5b813567ffffffffffffffff811115610a50575f80fd5b610a5c84828501610456565b949350505050565b604081525f8351604080840152610a7e608084018261052a565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610ab9828261052a565b9150508281036020840152610ace818561052a565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82601f830112610b13575f80fd5b8151610b2161047382610411565b818152846020838601011115610b35575f80fd5b610a5c826020830160208701610508565b5f60c08284031215610b56575f80fd5b610b5e610353565b90508151610b6b81610728565b81526020820151610b7b81610728565b8060208301525060408201516040820152606082015160608201526080820151610ba481610728565b608082015260a082015167ffffffffffffffff811115610bc2575f80fd5b6107d484828501610b04565b5f60608284031215610bde575f80fd5b610be661037c565b90508151610bf381610728565b80825250602082015160208201526040820151604082015292915050565b5f82601f830112610c20575f80fd5b81516020610c3061047383610705565b82815260609283028501820192828201919087851115610c4e575f80fd5b8387015b858110156108b75781818a031215610c68575f80fd5b610c7061037c565b8151610c7b81610728565b81528186015186820152604080830151610c9481610728565b908201528452928401928101610c52565b5f60208284031215610cb5575f80fd5b815167ffffffffffffffff80821115610ccc575f80fd5b9083019060e08286031215610cdf575f80fd5b610ce761039f565b825182811115610cf5575f80fd5b610d0187828601610b46565b825250610d118660208501610bce565b6020820152608083015182811115610d27575f80fd5b610d3387828601610c11565b60408301525060a083015182811115610d4a575f80fd5b610d5687828601610b04565b60608301525060c09290920151608083015250939250505056fea2646970667358221220b0816c51d51c5ab3947bad3df8fedfb8758eb6ce0ed20b8fc1844c9926a031be64736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa2646970667358221220e2d17ff003294cc473310712f0d6d46f870aaf7dee69a1de533ee270988e34ec64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x94W[`\0\x80\xFD[\0[a\0Pa\0\xB7V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA7\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8BV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01?W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01SW=`\0\x80>=`\0\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;`\0\x03\x90Pa\x01zWa\x01xa\x03\xA1V[P[`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xB1\x90a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x01\xF5W=`\0\x80>=`\0\xFD[P\x90Pa\x027`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[`\0\x80`\0\x1B`@Qa\x02I\x90a\x05;V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02iW=`\0\x80>=`\0\xFD[P\x90Pa\x02\xAB`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\x16W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03*W=`\0\x80>=`\0\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[`\0\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aD\xB5a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04$\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\xACV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04>W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04RW=`\0\x80>=`\0\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xFD\x82\x82`@Q`$\x01a\x04\x82\x92\x91\x90a\x05\xE3V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x05\x01V[PPV[a\x05\n\x81a\x05\rV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a0\x80\x80a\x06\x1C\x839\x01\x90V[a\x0E\x19\x80a6\x9C\x839\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x05nW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05RV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x05\xDB`@\x83\x01\x84a\x05HV[\x94\x93PPPPV[`@\x81R`\0a\x05\xF6`@\x83\x01\x85a\x05HV[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x000\x808\x03\x80b\x000\x80\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa/gb\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x17\xE9\x01Ra/g`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a!\xAAV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a\"XV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a\"\x9AV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a#(V[a\x06\x83V[a\0\xB9a\x01l6`\x04a#LV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a#(V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a#\xB0V[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\x95V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a&yV[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BDV[a\x04\xB5\x81a\x0B\x95V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\x95V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia#\xB0V[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BDV[a\x08\x86\x81a\x0B\x95V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a&\xB7V[\x81\x01\x90a\n|\x91\x90a)\xA9V[\x90Pa\n\x87\x81a\x0C\xE8V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xD3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0E\xA5\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a&\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\x8CV[\x90R\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea#\xB0V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x11\xF6V[a\x0B\x82\x813a\x16\xE6V[a\x0B\x8C\x813a\x17\xE7V[P`\x01\x01a\x0BIV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xD7W`\0\x83\x82\x81Q\x81\x10a\x0B\xB6Wa\x0B\xB6a#\xB0V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C7W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xEDWa\x0B\xEDa#\xB0V[` \x02` \x01\x01Q\x90Pa\x0C.\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1BW\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xCDV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x80Wa\x0C\x80a#\xB0V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xC5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x9AV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1B\x9EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r+W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\x80\x01QQ\x81\x10\x15a\x04\xC1W\x81`\x80\x01Q\x81\x81Q\x81\x10a\rfWa\rfa#\xB0V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\r\x88Wa\r\x88a#\xB0V[` \x02` \x01\x01Q` \x01Q\x14a\r\xCBW`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\rCV[a\x0E\r`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EOW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0Ee\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xC3Wa\x0E\xC3a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F,W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xE1W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\x83Wa\x0F^\x86\x82\x81Q\x81\x10a\x0FOWa\x0FOa#\xB0V[` \x02` \x01\x01Q\x86\x86a\x1C\xB5V[\x83\x82\x81Q\x81\x10a\x0FpWa\x0Fpa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F2V[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R`\0\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x112\x93\x92\x91\x90a*\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11U\x83`\0\x01Qa\x1D\x85V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q`\0\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x11\x87\x89`\x80\x01Qa\x1E\x1FV[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\x16WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12m\x90\x85\x90`\x04\x01a+ V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\x8AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\xD0\x91\x90\x81\x01\x90a+3V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x12\xE8\x82\x84a,2V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\0Wa\x13\0a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13iW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x1EW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x13\xBAW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\x8DWa\x13\x8Da#\xB0V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xA7Wa\x13\xA7a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13oV[P`\0\x80`\0[\x84\x81\x10\x15a\x16\xD5W`\0\x87\x82\x81Q\x81\x10a\x13\xDDWa\x13\xDDa#\xB0V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x14\x9BW\x88\x81\x81Q\x81\x10a\x14\x04Wa\x14\x04a#\xB0V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\x93W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x13\xEAV[P`\0\x80[\x88\x81\x10\x15a\x15\\W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x14\xC0Wa\x14\xC0a#\xB0V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15SW\x85\x15a\x15=W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15L\x90\x84a,2V[\x92P`\x01\x96P[P`\x01\x01a\x14\xA0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\xD5W\x84\x15a\x15\xBCW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\xCE\x90\x82a,2V[\x90P`\x01\x93P[\x80`\0\x03a\x16*W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x168\x81`\x05a'\x10a\x1E\xBDV[\x82` \x01Q\x11\x15a\x16\xABW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16\xC0Wa\x16\xC0a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13\xC1V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x177W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xB3\x90\x84\x90\x86\x90`\x04\x01a,EV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17\xCBW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xA7\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xB1\x85\x85a\x1E\xF9V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xFC\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x1Ai\x93\x92\x91\x90a*\xDDV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a.w` \x83\x019`@Q` \x01a\x1A\xBC\x92\x91\x90a,tV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B)\x96\x95\x94\x93\x92`\x04\x01a,\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B|Wa\x03_\x82\x82a\x1B\x9EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1F@V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1B\xF8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1B\xFDV[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1CHWP\x83a\x1C\xADV[\x82\x82\x11a\x1C\x81W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\x8FWP\x82a\x1C\xADV[B\x83\x10a\x1C\x9DWP\x83a\x1C\xADV[a\x1C\xAA\x83\x83B\x88\x88a 2V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x14W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D*\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\xD9\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E?Wa\x1E?a#\x81V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1EiW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1E\xAEW`\0a\x1E\x9C\x85\x83\x81Q\x81\x10a\x1E\x8FWa\x1E\x8Fa#\xB0V[` \x02` \x01\x01Qa MV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1EoV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\xF2W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a +W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0a A\x86\x86\x86\x86\x86a \xC4V[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a.%`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\xD9\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x84\x84\x10a \xD4WP\x80a DV[`\0a \xE0\x87\x86a-\x8AV[\x90P`\0a \xEE\x88\x88a-\x8AV[\x90P`\0\x85\x85\x12\x15a! Wa!\x10\x83\x83a!\t\x88\x8Aa-\x9DV[\x91\x90a\x1E\xBDV[a!\x19\x90a-\xC4V[\x90Pa!2V[a!/\x83\x83a!\t\x89\x89a-\x9DV[\x90P[a!<\x81\x87a-\xFCV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a![W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a!sW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x8BW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a!\xBFW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a!\xD7W`\0\x80\xFD[a!\xE3\x87\x83\x88\x01a!IV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!\xF9W`\0\x80\xFD[Pa\"\x06\x86\x82\x87\x01a!aV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\"%W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"=W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\"kW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x82W`\0\x80\xFD[a\"\x8E\x85\x82\x86\x01a\"\x13V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\"\xB0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"\xC8W`\0\x80\xFD[a\"\xD4\x88\x83\x89\x01a\"\x13V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"\xEDW`\0\x80\xFD[Pa\"\xFA\x87\x82\x88\x01a!aV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a#:W`\0\x80\xFD[\x815a#E\x81a#\x06V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a#^W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#uW`\0\x80\xFD[a\x1C\xAD\x84\x82\x85\x01a!IV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a#\xFAW\x81\x81\x01Q\x83\x82\x01R` \x01a#\xE2V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra$\x1B\x81` \x86\x01` \x86\x01a#\xDFV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a$\xADW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a$bV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%,a\x01\xA0\x85\x01\x82a$\x03V[\x90P` \x83\x01Qa%j` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra%\x82\x82\x82a$MV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x9C\x82\x82a$\x03V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a&(W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra&\x16\x86\x83Qa$\xB8V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%\xDCV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\xADW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&\xECW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a'\x07W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!\xA3W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xF5Wa'\xF5a#\x81V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a(\x0EW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a((Wa((a#\x81V[a(Y` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\xAEV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a(nW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a(\x9DW`\0\x80\xFD[a(\xA5a'\x1CV[\x90P\x815a(\xB2\x81a#\x06V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xEAWa(\xEAa#\x81V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a)\x05W`\0\x80\xFD[\x815` a)\x1Aa)\x15\x83a(\xD0V[a'\xAEV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a)9W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a)\x9EW`\x80\x81\x89\x03\x12\x15a)VW`\0\x80\x81\xFD[a)^a'EV[\x815a)i\x81a#\x06V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a)\x8C\x81a#\x06V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a)=V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a)\xBBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\xD3W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)\xE7W`\0\x80\xFD[a)\xEFa'hV[\x825\x82\x81\x11\x15a)\xFEW`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a*\x10W`\0\x80\xFD[a*\x18a'\x8BV[\x815a*#\x81a#\x06V[\x81R` \x82\x015a*3\x81a#\x06V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a*\\\x81a#\x06V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a*sW`\0\x80\xFD[a*\x7F\x89\x82\x85\x01a'\xFDV[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra*\xAB\x86``\x85\x01a(\x8BV[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\xC2W`\0\x80\xFD[a*\xCE\x87\x82\x86\x01a(\xF4V[`\x80\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa*\xEF\x81\x84` \x89\x01a#\xDFV[\x84Q\x90\x83\x01\x90a+\x03\x81\x83` \x89\x01a#\xDFV[\x84Q\x91\x01\x90a+\x16\x81\x83` \x88\x01a#\xDFV[\x01\x95\x94PPPPPV[` \x81R`\0a#E` \x83\x01\x84a$\xB8V[`\0` \x80\x83\x85\x03\x12\x15a+FW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+]W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a+nW`\0\x80\xFD[\x80Qa+|a)\x15\x82a(\xD0V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a+\x9BW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+\xF7W\x80\x85\x8A\x03\x12\x15a+\xB8W`\0\x80\x81\xFD[a+\xC0a'\x1CV[\x85Qa+\xCB\x81a#\x06V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+\xE4\x81a#\x06V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a+\xA0V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F:Wa\x1F:a,\x03V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1C\xAD`@\x83\x01\x84a$\xB8V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa,\xAC\x81`\x13\x85\x01` \x88\x01a#\xDFV[\x83Q\x90\x83\x01\x90a,\xC3\x81`\x13\x84\x01` \x88\x01a#\xDFV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a,\xFF\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra-@`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra-u\x81\x84\x01\x86a$\x03V[\x90P\x82\x81\x03a\x01 \x84\x01Ra!<\x81\x85a$\x03V[\x81\x81\x03\x81\x81\x11\x15a\x1F:Wa\x1F:a,\x03V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a-\xBDWa-\xBDa,\x03V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-\xF5Wa-\xF5a,\x03V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a.\x1CWa.\x1Ca,\x03V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x0Ct\xC6SI\xB0\xAF\x83f\x8D\x86\x03R\xD3\x9F\x18)\xD5r\x1D\x90\x19\xF5\x1E(&\xCA\xB1\xD7U.\xCBdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 O\x85_\xE9\xAD`x1Pg\x03\xD1\x07l\x7F\xDBW]\xE5YTy\x94\x8347\xB0\xD1\x8C\xCF&\xE7dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x91W[_\x80\xFD[\0[a\0Ma\0\xB4V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x88V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x017W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01IW=_\x80>=_\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;_\x03\x90Pa\x01oWa\x01ma\x03\x86V[P[_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xA4\x90a\x05\x0BV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x01\xE5W=_\x80>=_\xFD[P\x90Pa\x02'`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[_\x80_\x1B`@Qa\x027\x90a\x05\x18V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02TW=_\x80>=_\xFD[P\x90Pa\x02\x96`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\xFDW_\x80\xFD[PZ\xF1\x15\x80\x15a\x03\x0FW=_\x80>=_\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[_\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aCga#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04\x08\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\x86V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x1FW_\x80\xFD[PZ\xF1\x15\x80\x15a\x041W=_\x80>=_\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xDC\x82\x82`@Q`$\x01a\x04a\x92\x91\x90a\x05\xBCV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04\xE0V[PPV[a\x04\xE9\x81a\x04\xECV[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a/\xB0\x80a\x05\xF4\x839\x01\x90V[a\r\xC3\x80a5\xA4\x839\x01\x90V[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x05IW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05-V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x05\xB4`@\x83\x01\x84a\x05%V[\x94\x93PPPPV[`@\x81R_a\x05\xCE`@\x83\x01\x85a\x05%V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0/\xB08\x03\x80b\0/\xB0\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa.\x9Fb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x17\x97\x01Ra.\x9F_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a!2V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a!\xD7V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a\"\x16V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a\"\x9EV[a\x06eV[a\0\xB4a\x01e6`\x04a\"\xC0V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a\"\x9EV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a#\x1FV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0BlV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a%\xDDV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\x1DV[a\x04\x9F\x81a\x0BlV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0BlV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga#\x1FV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\x1DV[a\x08d\x81a\x0BlV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a&\x19V[\x81\x01\x90a\nW\x91\x90a(\xFBV[\x90Pa\nb\x81a\x0C\xB7V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xA1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0Eo\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a&\x19V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FTV[\x90R\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0B=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\x90\x91\x90\x81\x01\x90a*{V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x12\xA7\x82\x84a+qV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xBFWa\x12\xBFa\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x12\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x13wW\x85`@\x01Q\x81\x81Q\x81\x10a\x13JWa\x13Ja#\x1FV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13dWa\x13da#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13,V[P_\x80_[\x84\x81\x10\x15a\x16\x87W_\x87\x82\x81Q\x81\x10a\x13\x97Wa\x13\x97a#\x1FV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14RW\x88\x81\x81Q\x81\x10a\x13\xBDWa\x13\xBDa#\x1FV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x13\xA3V[P_\x80[\x88\x81\x10\x15a\x15\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x14uWa\x14ua#\x1FV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x06W\x85\x15a\x14\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x14\xFF\x90\x84a+qV[\x92P`\x01\x96P[P`\x01\x01a\x14VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\x88W\x84\x15a\x15oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\x81\x90\x82a+qV[\x90P`\x01\x93P[\x80_\x03a\x15\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x15\xEA\x81`\x05a'\x10a\x1EXV[\x82` \x01Q\x11\x15a\x16]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16rWa\x16ra#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x16\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17e\x90\x84\x90\x86\x90`\x04\x01a+\x84V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17{W_\x80\xFD[PZ\xFA\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18T\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18^\x85\x85a\x1E\x92V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xA8\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a-]` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919`@Q` \x01a\x1A\x15\x93\x92\x91\x90a*'V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a-\xAF` \x83\x019`@Q` \x01a\x1Ah\x92\x91\x90a+\xB2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1A\xD5\x96\x95\x94\x93\x92`\x04\x01a,\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\xECW_\x80\xFD[PZ\xF1\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B#Wa\x03L\x82\x82a\x1BEV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1E\xD8V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1B\x9BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xA0V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1B\xEAWP\x83a\x1COV[\x82\x82\x11a\x1C#W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C1WP\x82a\x1COV[B\x83\x10a\x1C?WP\x83a\x1COV[a\x1CL\x83\x83B\x88\x88a\x1F\xC6V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1C\xB5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1C\xCA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1B\xDBV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\x9E\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1D\xDCWa\x1D\xDCa\"\xF2V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1EIW_a\x1E7\x85\x83\x81Q\x81\x10a\x1E*Wa\x1E*a#\x1FV[` \x02` \x01\x01Qa\x1F\xE0V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x0BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\x8BW_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F\xBFW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_a\x1F\xD4\x86\x86\x86\x86\x86a VV[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a-]`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\x9E\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x84\x84\x10a eWP\x80a\x1F\xD7V[_a p\x87\x86a,\xC6V[\x90P_a }\x88\x88a,\xC6V[\x90P_\x85\x85\x12\x15a \xAEWa \x9E\x83\x83a \x97\x88\x8Aa,\xD9V[\x91\x90a\x1EXV[a \xA7\x90a,\xFFV[\x90Pa \xC0V[a \xBD\x83\x83a \x97\x89\x89a,\xD9V[\x90P[a \xCA\x81\x87a-5V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a \xE7W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a \xFDW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x14W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!+W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a!DW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a![W_\x80\xFD[a!g\x87\x83\x88\x01a \xD7V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!|W_\x80\xFD[Pa!\x89\x86\x82\x87\x01a \xEDV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a!\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!+W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a!\xE8W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xFEW_\x80\xFD[a\"\n\x85\x82\x86\x01a!\x96V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\")W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"@W_\x80\xFD[a\"L\x88\x83\x89\x01a!\x96V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"dW_\x80\xFD[Pa\"q\x87\x82\x88\x01a \xEDV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[_` \x82\x84\x03\x12\x15a\"\xAEW_\x80\xFD[\x815a\"\xB9\x81a\"}V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\"\xD0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xE6W_\x80\xFD[a\x1CO\x84\x82\x85\x01a \xD7V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a#fW\x81\x81\x01Q\x83\x82\x01R` \x01a#NV[PP_\x91\x01RV[_\x81Q\x80\x84Ra#\x85\x81` \x86\x01` \x86\x01a#LV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a$\x15W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a#\xCAV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra$\x93a\x01\xA0\x85\x01\x82a#nV[\x90P` \x83\x01Qa$\xD1` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra$\xE9\x82\x82a#\xB7V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x03\x82\x82a#nV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a%\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra%{\x86\x83Qa$ V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\x0FW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&LW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a&fW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!+W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'SWa'Sa\"\xF2V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a'jW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'\x84Wa'\x84a\"\xF2V[a'\xB5` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\x0CV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a'\xC9W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a'\xF5W_\x80\xFD[a'\xFDa&zV[\x90P\x815a(\n\x81a\"}V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(AWa(Aa\"\xF2V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a(ZW_\x80\xFD[\x815` a(oa(j\x83a((V[a'\x0CV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a(\x8DW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a(\xF0W`\x80\x81\x89\x03\x12\x15a(\xA8W_\x80\xFD[a(\xB0a&\xA3V[\x815a(\xBB\x81a\"}V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a(\xDE\x81a\"}V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a(\x91V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a)\x0BW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\"W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)5W_\x80\xFD[a)=a&\xC6V[\x825\x82\x81\x11\x15a)KW_\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a)\\W_\x80\xFD[a)da&\xE9V[\x815a)o\x81a\"}V[\x81R` \x82\x015a)\x7F\x81a\"}V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a)\xA8\x81a\"}V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a)\xBEW_\x80\xFD[a)\xCA\x89\x82\x85\x01a'[V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra)\xF6\x86``\x85\x01a'\xE5V[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\x0CW_\x80\xFD[a*\x18\x87\x82\x86\x01a(KV[`\x80\x83\x01RP\x95\x94PPPPPV[_\x84Qa*8\x81\x84` \x89\x01a#LV[\x84Q\x90\x83\x01\x90a*L\x81\x83` \x89\x01a#LV[\x84Q\x91\x01\x90a*_\x81\x83` \x88\x01a#LV[\x01\x95\x94PPPPPV[` \x81R_a\"\xB9` \x83\x01\x84a$ V[_` \x80\x83\x85\x03\x12\x15a*\x8CW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xA2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a*\xB2W_\x80\xFD[\x80Qa*\xC0a(j\x82a((V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a*\xDEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+8W\x80\x85\x8A\x03\x12\x15a*\xF9W_\x80\xFD[a+\x01a&zV[\x85Qa+\x0C\x81a\"}V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+%\x81a\"}V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a*\xE3V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1CO`@\x83\x01\x84a$ V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x83Qa+\xE9\x81`\x13\x85\x01` \x88\x01a#LV[\x83Q\x90\x83\x01\x90a,\0\x81`\x13\x84\x01` \x88\x01a#LV[\x01`\x13\x01\x94\x93PPPPV[_a\x01@a,;\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra,|`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra,\xB1\x81\x84\x01\x86a#nV[\x90P\x82\x81\x03a\x01 \x84\x01Ra \xCA\x81\x85a#nV[\x81\x81\x03\x81\x81\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a,\xF8Wa,\xF8a+DV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-/Wa-/a+DV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a-TWa-Ta+DV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xC6\x04k\xEF\xF5\xF7\xD5\x06\xB1n \x18\x10\x1E\xD3\xB8x\x94\x884\xBD\x1D@1\xA2\xFC\xE7u\xC1\xDE\xEDFdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\r\xA6\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cA\xD8\x8Di\x14a\0CW\x80cX]\xA6(\x14a\0lW\x80cvq\xD0{\x14a\0\x81W[_\x80\xFD[a\0Va\0Q6`\x04a\x04\xA8V[a\0\xC2V[`@Qa\0c\x91\x90a\x05\xDCV[`@Q\x80\x91\x03\x90\xF3[a\0\x7Fa\0z6`\x04a\x08\xC4V[a\x02\x18V[\0[a\0\x9Da\0\x8F6`\x04a\n*V[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R_\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAA\x92\x91`\x04\x01a\ndV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC1W_\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xD2WP`\x01[a\x02\x12W=\x80\x80\x15a\x01\xFFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xB0\x81lQ\xD5\x1CZ\xB3\x94{\xAD=\xF8\xFE\xDF\xB8u\x8E\xB6\xCE\x0E\xD2\x0B\x8F\xC1\x84L\x99&\xA01\xBEdsolcC\0\x08\x18\x003`@`\x80\x81R`\x04\x90\x816\x10\x15a\0\x15W`\0\x80\xFD[`\0\x90\x815`\xE0\x1C\x80c\rX\xB1\xDB\x14a\x12lW\x80c\x13|)\xFE\x14a\x10uW\x80c*-\x80\xD1\x14a\r\xB7W\x80c+g\xB5p\x14a\x0B\xDEW\x80c0\xF2\x8Bz\x14a\n\xDEW\x80c6D\xE5\x15\x14a\n\x9DW\x80c6\xC7\x85\x16\x14a\n(W\x80c?\xF9\xDC\xB1\x14a\t\xA8W\x80cO\xE0+D\x14a\t?W\x80ce\xD9r<\x14a\x07\xACW\x80c\x87Q|E\x14a\x06zW\x80c\x92}\xA1\x05\x14a\x05\xC3W\x80c\xCCS(\x7F\x14a\x04\xA3W\x80c\xED\xD9DK\x14a\x03:Wc\xFE\x8E\xC1\xA7\x14a\0\xC6W`\0\x80\xFD[4a\x036W`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x835\x81\x81\x11a\x032Wa\x01\x14\x906\x90\x86\x01a\x16KV[`$5\x82\x81\x11a\x03.Wa\x01+\x906\x90\x87\x01a\x16\x1AV[a\x013a\x14\xE6V[\x91`\x845\x85\x81\x11a\x03*Wa\x01K\x906\x90\x8A\x01a\x15\xC1V[\x98\x90\x95`\xA45\x90\x81\x11a\x03&Wa\x01d\x916\x91\x01a\x15\xC1V[\x96\x90\x95\x81Q\x90a\x01s\x82a\x13\xFFV[`k\x82R\x7FPermitBatchWitnessTransferFrom(T` \x83\x01R\x7FokenPermissions[] permitted,addr\x83\x83\x01R\x7Fess spender,uint256 nonce,uint25``\x83\x01R\x7F6 deadline,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x82Q\x9A\x8B\x91\x81a\x02\"` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8A\x81R\x03\x99a\x02[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x9B\x8C\x81\x01\x83R\x82a\x147V[Q\x90 \x90\x85QQa\x02k\x81a\x1E\xBBV[\x90\x8A[\x81\x81\x10a\x02\xF9WPPa\x02\xF6\x99\x9Aa\x02\xED\x91\x83Qa\x02\xA0\x81a\x02\x94` \x82\x01\x80\x95a\x1FfV[\x03\x84\x81\x01\x83R\x82a\x147V[Q\x90 ` \x89\x81\x01Q\x85\x8B\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`d5`\xC0\x84\x01R\x82`\xE0\x81\x01[\x03\x90\x81\x01\x83R\x82a\x147V[Q\x90 \x93a\x1C\xF7V[\x80\xF3[\x80a\x03\x11a\x03\x0Ba\x03!\x93\x8CQa\x17^V[Qa TV[a\x03\x1B\x82\x86a\x17^V[Ra\x1F\nV[a\x02nV[\x88\x80\xFD[\x87\x80\xFD[\x84\x80\xFD[\x83\x80\xFD[P\x80\xFD[P\x914a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x805\x82\x81\x11a\x032Wa\x03\x8B\x906\x90\x83\x01a\x16KV[`$5\x83\x81\x11a\x03.Wa\x03\xA2\x906\x90\x84\x01a\x16\x1AV[\x93\x90\x92a\x03\xADa\x14\xE6V[\x91`d5\x90\x81\x11a\x04\x9FWa\x03\xC4\x916\x91\x01a\x15\xC1V[\x94\x90\x93\x83QQ\x97a\x03\xD4\x89a\x1E\xBBV[\x98\x88[\x81\x81\x10a\x04}WPPa\x02\xF6\x97\x98\x81Qa\x04%\x81a\x03\xF9` \x82\x01\x80\x95a\x1FfV[\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x01\x83R\x82a\x147V[Q\x90 ` \x86\x01Q\x82\x87\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\xFC\xF3_Z\xC6\xA2\xC2\x88h\xDCD\xC3\x02\x16dp&b9\x19_\x02\xB0\xEE@\x834\x82\x933\xB7f\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x02\xED\x81a\x14\x1BV[\x80\x8Ba\x03\x1B\x82a\x04\x94a\x03\x0Ba\x04\x9A\x96\x8DQa\x17^V[\x92a\x17^V[a\x03\xD7V[\x86\x80\xFD[P\x824a\x05\xBFW` \x90\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x03.Wa\x04\xF4\x916\x91\x01a\x16\x1AV[\x92\x90\x91\x84[\x84\x81\x10a\x05\x04W\x85\x80\xF3[\x80a\x05\x1Aa\x05\x15`\x01\x93\x88\x88a\x19lV[a\x19|V[a\x05/\x84a\x05)\x84\x8A\x8Aa\x19lV[\x01a\x19|V[3\x89R\x83\x85R\x85\x89 \x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x92\x83\x8BR\x86R\x86\x8A \x91\x16\x90\x81\x8AR\x85R\x85\x89 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81T\x16\x90U\x85Q\x91\x82R\x84\x82\x01R\x7F\x89\xB1\xAD\xD1^\xFFV\xB3\xDF\xE2\x99\xAD\x94\xE0\x1F+R\xFB\xCB\x80\xAE\x1A;\xAE\xA6\xAE\x8C\x04\xCB+\x98\xA4\x853\x92\xA2\x01a\x04\xF9V[\x82\x80\xFD[P4a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06v\x81a\x05\xFFa\x14\xA0V[\x93a\x06\x08a\x14\xC3V[a\x06\x10a\x14\xE6V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16\x83R`\x01` \x90\x81R\x84\x84 \x92\x88\x16\x84R\x91\x82R\x83\x83 \x90\x87\x16\x83R\x81R\x91\x90 T\x92Q\x93\x83\x16\x84R`\xA0\x83\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x84\x01R`\xD0\x91\x90\x91\x1C`@\x83\x01R\x81\x90``\x82\x01\x90V[\x03\x90\xF3[P4a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06\xB2a\x14\xA0V[\x90a\x06\xBBa\x14\xC3V[\x91a\x06\xC4a\x14\xE6V[e\xFF\xFF\xFF\xFF\xFF\xFF\x92`d5\x84\x81\x16\x90\x81\x81\x03a\x03*Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x7F\xDA\x9F\xA7\xC1\xB0\x04\x02\xC1}\x01a\xB2I\xB1\xAB\x8B\xBE\xC0G\xC5\xA5\"\x07\xB9\xC1\x12\xDE\xFF\xD8\x17\x03k\x943\x8AR`\x01` R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x8B \x98s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x94\x16\x99\x8A\x8DR` R\x83\x87\x8D \x9B\x16\x9A\x8B\x8DR` R\x86\x8C \x94\x86\x15`\0\x14a\x07\xA4WPB\x16\x92[\x84T\x92\x16\x97\x88\x93`\xA0\x1B\x16\x91\x16\x17\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA4\x80\xF3[\x90P\x92a\x07\x83V[P\x824a\x05\xBFW``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x07\xE5a\x14\xA0V[\x90a\x07\xEEa\x14\xC3V[\x92e\xFF\xFF\xFF\xFF\xFF\xFF`D5\x81\x81\x16\x93\x90\x84\x81\x03a\x03*W3\x88R` \x91`\x01\x83R\x84\x89 \x96s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x97\x88\x8BR\x84R\x85\x8A \x98\x16\x97\x88\x8AR\x83R\x84\x89 T`\xD0\x1C\x93\x84\x87\x11\x15a\t\x17Wa\xFF\xFF\x90\x85\x84\x03\x16\x11a\x08\xF0WP\x90\x7FU\xEB\x90\xD8\x10\xE1p\x0B5\xA8\xE7\xE2S\x95\xFF\x7F+\"Y\xAB\xD7A\\\xA2(M\xFB\x1C$d\x18\xF3\x93\x92\x913\x89R`\x01\x82R\x83\x89 \x87\x8AR\x82R\x83\x89 \x88\x8AR\x82R\x83\x89 \x90y\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83T\x92`\xD0\x1B\x16\x91\x16\x17\x90U\x82Q\x94\x85R\x84\x01R3\x92\xA4\x80\xF3[\x84Q\x7F$\xD3Z&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P4a\x036W\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W\x80` \x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\x8Fa\x14\xA0V[\x16\x81R\x80\x84R\x81\x81 `$5\x82R\x84R T\x90Q\x90\x81R\xF3[P\x824a\x05\xBFW\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFW\x7F7\x04\x90/\x967f\xA4\xE5a\xBB\xAA\xB6\xE6\xCD\xC1\xB1\xDD\x12\xF6\xE9\xE9\x96H\xDA\x88C\xB3\xF4k\x91\x8D\x905\x91`$53\x85R\x84` R\x81\x85 \x84\x86R` R\x81\x85 \x81\x81T\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA2\x80\xF3[\x824a\n\x9AW`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\n\x9AWa\n`a\x14\xA0V[a\nha\x14\xC3V[a\npa\x14\xE6V[`d5\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x83\x03a\x03.Wa\x02\xF6\x93a\x17\xA1V[\x80\xFD[P4a\x036W\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W` \x90a\n\xD7a\x1B\x1EV[\x90Q\x90\x81R\xF3[P\x82\x904a\x05\xBFWa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x0B\x1A6a\x15*V[\x90\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x0BLa\x14xV[\x91`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\xDAWa\x02\xF6\x94a\x0Bo\x916\x91\x01a\x15\xC1V[\x93\x90\x92a\x0B|\x83Qa TV[` \x84\x01Q\x82\x85\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\x93\x9C!\xA4\x8A\x8D\xBE:\x9A$\x04\xA1\xD4f\x91\xE4\xD3\x9Fe\x83\xD6\xECk5qF\x04\xC9\x86\xD8\x01\x06\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x0B\xD1\x81a\x14\x1BV[Q\x90 \x91a\x1C%V[\x85\x80\xFD[P\x914a\x036Wa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x0C\x18a\x14\xA0V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC6\x01`\xC0\x81\x12a\x032W`\x80\x85Q\x91a\x0CQ\x83a\x13\xE3V[\x12a\x032W\x84Q\x90a\x0Cb\x82a\x13\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91`$5\x83\x81\x16\x81\x03a\x04\x9FW\x81R`D5\x83\x81\x16\x81\x03a\x04\x9FW` \x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF`d5\x81\x81\x16\x81\x03a\x03*W\x88\x83\x01R`\x845\x90\x81\x16\x81\x03a\x04\x9FW``\x82\x01R\x81R`\xA45\x93\x82\x85\x16\x85\x03a\x0B\xDAW` \x82\x01\x94\x85R`\xC45\x90\x87\x83\x01\x82\x81R`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x03&Wa\x0C\xFE\x906\x90\x84\x01a\x15\xC1V[\x92\x90\x93\x80B\x11a\r\x88WPP\x91\x85\x91a\rxa\x02\xF6\x99\x9Aa\r~\x95a\r#\x88Qa\x1F\xBEV[\x90\x89\x8CQ\x16\x90Q\x90\x83Q\x92` \x84\x01\x94\x7F\xF3\x84\x1C\xD1\xFF\0\x85\x02jc'\xB6 \xB6y\x97\xCE@\xF2\x82\xC8\x8A\x8E\x90ZzV&\xE3\x10\xF3\xD0\x86R\x84\x01R``\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x90 a\x1B\xD9V[\x91a \xC7V[Q\x92Q\x16\x91a\x19\x9DV[`$\x92P\x8AQ\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[P\x914a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x93\x81\x856\x01\x12a\x032Wa\r\xF3a\x14\xA0V[\x92`$\x90\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x85\x11a\x03*W\x85\x90\x856\x03\x01\x12a\x04\x9FW\x80Q\x97\x85\x89\x01\x89\x81\x10\x82\x82\x11\x17a\x10JW\x82R\x84\x83\x015\x81\x81\x11a\x03&W\x85\x01\x906`#\x83\x01\x12\x15a\x03&W\x83\x82\x015\x91a\x0EP\x83a\x15\xEFV[\x90a\x0E]\x85Q\x92\x83a\x147V[\x83\x82R` \x93\x87\x85\x84\x01\x91`\x07\x1B\x83\x01\x01\x916\x83\x11a\x10FW\x88\x01\x90[\x82\x82\x10a\x0F\xE9WPPP\x8AR`Da\x0E\x93\x86\x88\x01a\x15\tV[\x96\x83\x8C\x01\x97\x88R\x015\x94\x83\x8B\x01\x91\x86\x83R`D5\x90\x81\x11a\x0F\xE5Wa\x0E\xBB\x906\x90\x87\x01a\x15\xC1V[\x95\x90\x96\x80B\x11a\x0F\xBAWPPP\x89\x98\x99QQa\x0E\xD6\x81a\x1E\xBBV[\x90\x8B[\x81\x81\x10a\x0F\x97WPP\x92\x88\x94\x92a\rx\x92a\x0Fd\x97\x95\x83Qa\x0F\x02\x81a\x03\xF9\x86\x82\x01\x80\x95a\x1FfV[Q\x90 \x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x8B\x8BQ\x16\x91Q\x92\x85Q\x94\x85\x01\x95\x7F\xAF\x1B\r0\xD2\xCA\xB08\x0Eh\xF0h\x90\x07\xE3%I\x93\xC5\x96\xF2\xFD\xD0\xAA\xA7\xF4\xD0OyD\x08c\x87R\x85\x01R\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x16\x90\x82QQ\x92\x84[\x84\x81\x10a\x0FxW\x85\x80\xF3[\x80a\x0F\x91\x85\x85a\x0F\x8B`\x01\x95\x87Qa\x17^V[Qa\x19\x9DV[\x01a\x0FmV[\x80a\x03\x11a\x0F\xAC\x8E\x9F\x9E\x93a\x0F\xB2\x94Qa\x17^V[Qa\x1F\xBEV[\x9B\x9A\x9Ba\x0E\xD9V[\x85Q\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[\x8A\x80\xFD[`\x80\x826\x03\x12a\x10FW\x85`\x80\x91\x88Qa\x10\x02\x81a\x13\x98V[a\x10\x0B\x85a\x15\tV[\x81Ra\x10\x18\x83\x86\x01a\x15\tV[\x83\x82\x01Ra\x10'\x8A\x86\x01a\x16\x07V[\x8A\x82\x01R\x8Da\x107\x81\x87\x01a\x16\x07V[\x90\x82\x01R\x81R\x01\x91\x01\x90a\x0EzV[\x8C\x80\xFD[\x84\x89`A\x86\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83RR\xFD[P\x824a\x05\xBFWa\x01@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x10\xB06a\x15*V[\x91\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x10\xE2a\x14xV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90a\x01\x045\x85\x81\x11a\x04\x9FWa\x11\x05\x906\x90\x86\x01a\x15\xC1V[\x90\x93a\x01$5\x96\x87\x11a\x03*Wa\x11%a\x0B\xD1\x96a\x02\xF6\x986\x91\x01a\x15\xC1V[\x96\x90\x95\x82Q\x90a\x114\x82a\x13\xFFV[`d\x82R\x7FPermitWitnessTransferFrom(TokenP` \x83\x01R\x7Fermissions permitted,address spe\x84\x83\x01R\x7Fnder,uint256 nonce,uint256 deadl``\x83\x01R\x7Fine,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x83Q\x94\x85\x91\x81a\x11\xE3` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8B\x81R\x03\x93a\x12\x1C\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x95\x86\x81\x01\x83R\x82a\x147V[Q\x90 \x92a\x12*\x86Qa TV[` \x87\x81\x01Q\x85\x89\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`\xE45`\xC0\x84\x01R\x82`\xE0\x81\x01a\x02\xE1V[P\x824a\x05\xBFW` \x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x0B\xDAW6`#\x83\x01\x12\x15a\x0B\xDAW\x81\x015\x92\x83\x11a\x03.W`$\x90`\x076\x83\x86\x83\x1B\x84\x01\x01\x11a\x04\x9FW\x86[\x85\x81\x10a\x12\xE5W\x87\x80\xF3[\x80\x82\x1B\x83\x01\x90`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\x836\x03\x01\x12a\x03&Wa\x13\x92\x88\x87`\x01\x94``\x83Qa\x13,\x81a\x13\x98V[a\x13h`\x84a\x13<\x8D\x86\x01a\x15\tV[\x94\x85\x84Ra\x13L`D\x82\x01a\x15\tV[\x80\x97\x85\x01Ra\x13]`d\x82\x01a\x15\tV[\x80\x98\x85\x01R\x01a\x15\tV[\x91\x82\x91\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x80\x80\x93\x16\x95\x16\x93\x16\x91\x16a\x17\xA1V[\x01a\x12\xDAV[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC45\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`\0\x80\xFD[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`D5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x01\x90`\x80\x82\x12a\x14\x9BW`@\x80Q\x90a\x15c\x82a\x13\xE3V[\x80\x82\x94\x12a\x14\x9BW\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W\x82R`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x81R`$5` \x82\x01R\x82R`D5` \x83\x01R`d5\x91\x01RV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x83\x81\x86\x01\x95\x01\x01\x11a\x14\x9BWV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x13\xB4W`\x05\x1B` \x01\x90V[5\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x80\x85\x01\x94\x84`\x06\x1B\x01\x01\x11a\x14\x9BWV[\x91\x90\x91``\x81\x84\x03\x12a\x14\x9BW`@\x80Q\x91a\x16f\x83a\x13\xE3V[\x82\x94\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x81\x11a\x14\x9BW\x83\x01\x82`\x1F\x82\x01\x12\x15a\x14\x9BW\x805a\x16\x93\x81a\x15\xEFV[\x92a\x16\xA0\x87Q\x94\x85a\x147V[\x81\x84R` \x94\x85\x80\x86\x01\x93`\x06\x1B\x85\x01\x01\x93\x81\x85\x11a\x14\x9BW\x90\x86\x89\x98\x97\x96\x95\x94\x93\x92\x01\x92[\x84\x84\x10a\x16\xE3WPPPPP\x85R\x80\x82\x015\x90\x85\x01R\x015\x91\x01RV[\x90\x91\x92\x93\x94\x95\x96\x97\x84\x83\x03\x12a\x14\x9BW\x88Q\x90\x89\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17a\x170W\x8A\x92\x89\x92\x84Ra\x17\x14\x87a\x15\tV[\x81R\x82\x87\x015\x83\x82\x01R\x81R\x01\x93\x01\x91\x90\x88\x97\x96\x95\x94\x93a\x16\xC6V[`$`\0\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`A`\x04R\xFD[\x80Q\x82\x10\x15a\x17rW` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x92\x91\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@`\0\x82\x84\x16\x81R`\x01` R\x82\x82\x82 \x96\x16\x95\x86\x82R` R\x81\x81 3\x82R` R \x94\x85T\x95e\xFF\xFF\xFF\xFF\xFF\xFF\x87`\xA0\x1C\x16\x80B\x11a\x18\x84WP\x82\x87\x16\x96\x83\x88\x03a\x18\x12W[PPa\x18\x10\x95P\x16\x92a\x18\xB5V[V[\x87\x84\x84\x16\x11`\0\x14a\x18OW`$\x88`@Q\x90\x7F\xF9o\xB0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x84a\x18\x10\x9A\x03\x16\x91\x16\x17\x90U8\x80a\x18\x02V[`$\x90`@Q\x90\x7F\xD8\x1B/.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90`\0`d\x92` \x95\x82\x95`@Q\x94\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\x04\x86\x01R`$\x85\x01R`D\x84\x01RZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x15a\x19\x0EWV[`d`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R\xFD[\x91\x90\x81\x10\x15a\x17rW`\x06\x1B\x01\x90V[5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x90V[\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81``\x84\x01Q\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x85Q\x16\x94\x82` \x82\x01Q\x16\x92\x80\x86`@\x80\x94\x01Q\x16\x95\x16\x95`\0\x91\x87\x83R`\x01` R\x83\x83 \x89\x84R` R\x83\x83 \x99\x16\x98\x89\x83R` R\x82\x82 \x91\x84\x83T`\xD0\x1C\x03a\x1A\xF5W\x91\x85a\x1A\xCE\x94\x92\x7F\xC6\xA3w\xBF\xC4\xEB\x12\0$\xA8\xAC\x08\xEE\xF2\x05\xBE\x16\xB8\x17\x02\x08\x12\xC72#\xE8\x1D\x1B\xDB\x97\x08\xEC\x98\x97\x96\x94P\x87\x15`\0\x14a\x1A\xD3Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90B\x16[`\xA0\x1B\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01\x86\x01`\xD0\x1B\x16\x17\x17\x90UQ\x93\x84\x93\x84\x91`@\x91\x94\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF``\x85\x01\x96\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x80\x92\x16` \x85\x01R\x16\x91\x01RV[\x03\x90\xA4V[Py\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87a\x1A`V[`\x04\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x1BiW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x82R\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j`@\x82\x01RF``\x82\x01R0`\x80\x82\x01R`\x80\x81Ra\x1B\xD3\x81a\x13\xFFV[Q\x90 \x90V[a\x1B\xE1a\x1B\x1EV[\x90`@Q\x90` \x82\x01\x92\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84R`\"\x83\x01R`B\x82\x01R`B\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x92\x90\x93`\xA45\x93`@\x84\x01Q\x80B\x11a\x1C\xC6WP` \x84Q\x01Q\x80\x86\x11a\x1C\x95WP\x91\x85\x91a\rxa\x1Ce\x94a\x1C`` \x88\x01Q\x86a\x1EGV[a\x1B\xD9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91QQ\x16\x92`\x845\x91\x82\x16\x82\x03a\x14\x9BWa\x18\x10\x93a\x18\xB5V[`$\x90`@Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`$\x90`@Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x95\x90\x93\x95\x80QQ\x95`@\x92\x83\x83\x01Q\x80B\x11a\x1E\x17WP\x84\x88\x03a\x1D\xEEWa\x1D.\x91\x86\x91a\rx` \x9Ba\x1C`\x8D\x88\x01Q\x86a\x1EGV[`\0[\x86\x81\x10a\x1DBWPPPPPPPPV[a\x1DM\x81\x83Qa\x17^V[Q\x88a\x1DZ\x83\x87\x8Aa\x19lV[\x015\x90\x89\x81\x01Q\x80\x83\x11a\x1D\xBEWP\x91\x81\x88\x88\x88`\x01\x96\x85\x96a\x1D\x84W[PPPPPP\x01a\x1D1V[a\x1D\xB3\x95a\x1D\xAD\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x05\x15\x93Q\x16\x95a\x19lV[\x91a\x18\xB5V[\x808\x88\x88\x88\x83a\x1DxV[`$\x90\x86Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`\x04\x84Q\x7F\xFFc:8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`$\x90\x85Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\xFF\x83\x16\x1B\x92\x16`\0R`\0` R`@`\0 \x90`\x08\x1C`\0R` R`@`\0 \x81\x81T\x18\x80\x91U\x16\x15a\x1E\x91WV[`\x04`@Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90a\x1E\xC5\x82a\x15\xEFV[a\x1E\xD2`@Q\x91\x82a\x147V[\x82\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x1F\0\x82\x94a\x15\xEFV[\x01\x90` 6\x91\x017V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x1F7W`\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80Q` \x80\x92\x01\x91`\0[\x82\x81\x10a\x1F\x7FWPPPP\x90V[\x83Q\x85R\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x1FqV[\x90\x81Q\x91`\0[\x83\x81\x10a\x1F\xABWPP\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q\x81\x85\x01R\x01a\x1F\x9AV[`@Q` \x81\x01\x91\x7Febl\xADl\xB9d\x93\xBFo^\xBE\xA2\x87V\xC9f\xF0#\xAB\x9E\x8A\x83\xA7\x10\x18I\xD5W;6x\x83Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`@\x84\x01R` \x82\x01Q\x16``\x83\x01R``e\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82`@\x82\x01Q\x16`\x80\x85\x01R\x01Q\x16`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RQ\x90 \x90V[`@Q` \x80\x82\x01\x92\x7Fa\x83X\xAC=\xB8\xDC'O\x0C\xD8\x82\x9D\xA7\xE24\xBDH\xCDs\xC4\xA7@\xAE\xDE\x1A\xDE\xC9\x84m\x06\xA1\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16`@\x84\x01R\x01Q``\x82\x01R``\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x90\x82`@\x91\x03\x12a\x14\x9BW` \x825\x92\x015\x90V[`\0\x84;a\".WP`A\x82\x03a!\xACWa \xE4\x82\x82\x01\x82a \xB1V[\x93\x90\x92`@\x10\x15a\x17rW` \x93`\0\x93`\xFF`@`\x80\x95\x015`\xF8\x1C[`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a!\xA0Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80`\0Q\x16\x91\x82\x15a!vW\x16\x03a!LWV[`\x04`@Q\x7F\x81^\x1Dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`\x04`@Q\x7F\x8B\xAAW\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`@Q=`\0\x82>=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 \xE2\xD1\x7F\xF0\x03)L\xC4s1\x07\x12\xF0\xD6\xD4o\x87\n\xAF}\xEEi\xA1\xDES>\xE2p\x98\x8E4\xECdsolcC\0\x08\x18\x003", ); /**```solidity struct DutchDeployment { address permit2; address reactor; address quoter; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DutchDeployment { + #[allow(missing_docs)] pub permit2: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub quoter: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -327,16 +341,22 @@ struct DutchDeployment { address permit2; address reactor; address quoter; } ```solidity function IS_SCRIPT() external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTCall {} ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -440,16 +460,22 @@ function IS_SCRIPT() external view returns (bool); ```solidity function run() external returns (DutchDeployment memory deployment); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct runCall {} ///Container type for the return parameters of the [`run()`](runCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct runReturn { + #[allow(missing_docs)] pub deployment: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -555,14 +581,19 @@ function run() external returns (DutchDeployment memory deployment); ```solidity function setUp() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUpCall {} ///Container type for the return parameters of the [`setUp()`](setUpCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUpReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -664,8 +695,11 @@ function setUp() external; }; ///Container for all the [`DeployDutch`](self) function calls. pub enum DeployDutchCalls { + #[allow(missing_docs)] IS_SCRIPT(IS_SCRIPTCall), + #[allow(missing_docs)] run(runCall), + #[allow(missing_docs)] setUp(setUpCall), } #[automatically_derived] @@ -706,7 +740,7 @@ function setUp() external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -764,7 +798,7 @@ function setUp() external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/deploydutchv2.rs b/crates/bindings-uniswapx/src/deploydutchv2.rs index c0e5db6..4f2d7f8 100644 --- a/crates/bindings-uniswapx/src/deploydutchv2.rs +++ b/crates/bindings-uniswapx/src/deploydutchv2.rs @@ -64,40 +64,53 @@ interface DeployDutchV2 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod DeployDutchV2 { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50613b77806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610089575b600080fd5b005b6100506100ac565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252015b60405180910390f35b600c5461009c9062010000900460ff1681565b6040519015158152602001610080565b60408051808201909152600080825260208201526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e455200000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017d9190610493565b90506101be6040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561022957600080fd5b505af115801561023d573d6000803e3d6000fd5b5050505060008060001b6e22d473030f116ddee9f6b43ac78ba38360405161026490610486565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156102a8573d6000803e3d6000fd5b5090506102ea6040518060400160405280600781526020017f52656163746f7200000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035557600080fd5b505af1158015610369573d6000803e3d6000fd5b5050505060405180604001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b61045582826040516024016103da9291906104d0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610459565b5050565b61046281610465565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6135e88061055a83390190565b6000602082840312156104a557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104c957600080fd5b9392505050565b604081526000835180604084015260005b818110156104fe57602081870181015160608684010152016104e1565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b50604051620035e8380380620035e88339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b6080516134cf620001196000396000818160e00152611a5301526134cf6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046124e4565b6101eb565b005b6100b96100c9366004612592565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96101393660046125d4565b6104c5565b34801561014a57600080fd5b506100b9610159366004612672565b610683565b6100b961016c366004612696565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612672565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56126fa565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016128fd565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff811115610388576103886126cb565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666126fa565b905060200281019061047891906129c3565b6109f6565b82828151811061048f5761048f6126fa565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e96126cb565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666126fa565b8282815181106105d9576105d96126fa565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016128fd565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696126fa565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612a01565b810190610a7c9190612e40565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b089190612a01565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e6126fa565b60200260200101519050610ba181611468565b610bab8133611958565b610bb58133611a51565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf6126fa565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c166126fa565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d5d9092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca96126fa565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611da4565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061338d60208301396040518060c00160405280608d815260200161340d608d9139604051602001610e9193929190612f3d565b60405160208183030381529060405280519060200120610eb48360000151611e3e565b6020808501516040808701518051938101519101516060880151929392610eda90611ed8565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612f80565b9150915060008360a00151604081518110610fc257610fc26126fa565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612fa4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001613034565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a6126fa565b602002602001015190506000836080015160a001518381518110611240576112406126fa565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686611f76565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611392576113926126cb565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e6126fa565b60200260200101518686611ff3565b83828151811061143f5761143f6126fa565b6020908102919091010152600101611401565b50509392505050565b61067d84848484426120c3565b60015473ffffffffffffffffffffffffffffffffffffffff166114885750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906114df90859060040161305a565b600060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611542919081019061306d565b604083015151815191925090600061155a828461316c565b67ffffffffffffffff811115611572576115726126cb565b6040519080825280602002602001820160405280156115db57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115905790505b50905060005b8381101561162c57856040015181815181106115ff576115ff6126fa565b6020026020010151828281518110611619576116196126fa565b60209081029190910101526001016115e1565b5060008060005b8481101561194757600087828151811061164f5761164f6126fa565b6020026020010151905060005b8281101561170d57888181518110611676576116766126fa565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117055781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161165c565b506000805b888110156117ce5760008b604001518281518110611732576117326126fa565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036117c55785156117af576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117be908461316c565b9250600196505b50600101611712565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361184757841561182e576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b01510151611840908261316c565b9050600193505b8060000361189c5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6118aa81600561271061216f565b8260200151111561191d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611932576119326126fa565b60209081029190910101525050600101611633565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146119a9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611a25908490869060040161317f565b60006040518083038186803b158015611a3d57600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611b11846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b611b1b85856121ab565b856000015160200151866080015160405180608001604052806052815260200161338d605291396040518060c00160405280608d815260200161340d608d91396040518060600160405280602e81526020016133df602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611cc2949392916020016131ae565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611d2f9695949392600401613237565b600060405180830381600087803b158015611d4957600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d825761035f8282611da4565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846121f2565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dfe576040519150601f19603f3d011682016040523d82523d6000602084013e611e03565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d815260200161340d608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ef857611ef86126cb565b6040519080825280601f01601f191660200182016040528015611f22576020820181803683370190505b50905060005b8351811015611f67576000611f55858381518110611f4857611f486126fa565b60200260200101516122dd565b60208381028501015250600101611f28565b50805160209091012092915050565b6000838503611f86575083611feb565b828211611fbf576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611fcd575082611feb565b428310611fdb575083611feb565b611fe88383428888612354565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612052576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612068856020015186604001518686611f76565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b6120ce84848361236f565b6121685781612109576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561216557600082828151811061212e5761212e6126fa565b6020026020010151905061215785612710612149919061316c565b6020830151906127106123ba565b602090910152600101612111565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026121a457600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b600060405180608001604052806052815260200161338d60529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600061236386868686866123fe565b90505b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416158061239357508282115b80611feb575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123ef57600080fd5b50910281810615159190040190565b600084841061240e575080612366565b600061241a87866132f2565b9050600061242888886132f2565b905060008585121561245a5761244a8383612443888a613305565b919061216f565b6124539061332c565b905061246c565b61246983836124438989613305565b90505b6124768187613364565b9998505050505050505050565b60006040828403121561249557600080fd5b50919050565b60008083601f8401126124ad57600080fd5b50813567ffffffffffffffff8111156124c557600080fd5b6020830191508360208285010111156124dd57600080fd5b9250929050565b6000806000604084860312156124f957600080fd5b833567ffffffffffffffff8082111561251157600080fd5b61251d87838801612483565b9450602086013591508082111561253357600080fd5b506125408682870161249b565b9497909650939450505050565b60008083601f84011261255f57600080fd5b50813567ffffffffffffffff81111561257757600080fd5b6020830191508360208260051b85010111156124dd57600080fd5b600080602083850312156125a557600080fd5b823567ffffffffffffffff8111156125bc57600080fd5b6125c88582860161254d565b90969095509350505050565b600080600080604085870312156125ea57600080fd5b843567ffffffffffffffff8082111561260257600080fd5b61260e8883890161254d565b9096509450602087013591508082111561262757600080fd5b506126348782880161249b565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b803561266d81612640565b919050565b60006020828403121561268457600080fd5b813561268f81612640565b9392505050565b6000602082840312156126a857600080fd5b813567ffffffffffffffff8111156126bf57600080fd5b611feb84828501612483565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561274457818101518382015260200161272c565b50506000910152565b60008151808452612765816020860160208601612729565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156127f7578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016127ac565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526128766101a085018261274d565b905060208301516128b46020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128cc8282612797565b915050606083015184820360a08601526128e6828261274d565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612960868351612802565b95509382019390820190600101612926565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126129f757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a3657600080fd5b83018035915067ffffffffffffffff821115612a5157600080fd5b6020019150368190038213156124dd57600080fd5b60405160c0810167ffffffffffffffff81118282101715612a8957612a896126cb565b60405290565b6040516060810167ffffffffffffffff81118282101715612a8957612a896126cb565b6040516080810167ffffffffffffffff81118282101715612a8957612a896126cb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b1c57612b1c6126cb565b604052919050565b600082601f830112612b3557600080fd5b813567ffffffffffffffff811115612b4f57612b4f6126cb565b612b8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ad5565b818152846020838601011115612b9557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612bc457600080fd5b612bcc612a66565b90508135612bd981612640565b81526020820135612be981612640565b8060208301525060408201356040820152606082013560608201526080820135612c1281612640565b608082015260a082013567ffffffffffffffff811115612c3157600080fd5b612c3d84828501612b24565b60a08301525092915050565b600060608284031215612c5b57600080fd5b612c63612a8f565b90508135612c7081612640565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612ca857612ca86126cb565b5060051b60200190565b600082601f830112612cc357600080fd5b81356020612cd8612cd383612c8e565b612ad5565b82815260079290921b84018101918181019086841115612cf757600080fd5b8286015b84811015612d5c5760808189031215612d145760008081fd5b612d1c612ab2565b8135612d2781612640565b8152818501358582015260408083013590820152606080830135612d4a81612640565b90820152835291830191608001612cfb565b509695505050505050565b600060c08284031215612d7957600080fd5b612d81612a66565b905081358152602080830135818301526040830135612d9f81612640565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612dd457600080fd5b8301601f81018513612de557600080fd5b8035612df3612cd382612c8e565b81815260059190911b82018301908381019087831115612e1257600080fd5b928401925b82841015612e3057833582529284019290840190612e17565b60a0860152509295945050505050565b600060208284031215612e5257600080fd5b813567ffffffffffffffff80821115612e6a57600080fd5b908301906101008286031215612e7f57600080fd5b612e87612a66565b823582811115612e9657600080fd5b612ea287828601612bb2565b825250612eb160208401612662565b6020820152612ec38660408501612c49565b604082015260a083013582811115612eda57600080fd5b612ee687828601612cb2565b60608301525060c083013582811115612efe57600080fd5b612f0a87828601612d67565b60808301525060e083013582811115612f2257600080fd5b612f2e87828601612b24565b60a08301525095945050505050565b60008451612f4f818460208901612729565b845190830190612f63818360208901612729565b8451910190612f76818360208801612729565b0195945050505050565b60008060408385031215612f9357600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612d5c5783518252928401926001929092019190840190613014565b8281526000825161304c816020850160208701612729565b919091016020019392505050565b60208152600061268f6020830184612802565b6000602080838503121561308057600080fd5b825167ffffffffffffffff81111561309757600080fd5b8301601f810185136130a857600080fd5b80516130b6612cd382612c8e565b818152606091820283018401918482019190888411156130d557600080fd5b938501935b838510156131315780858a0312156130f25760008081fd5b6130fa612a8f565b855161310581612640565b8152858701518782015260408087015161311e81612640565b90820152835293840193918501916130da565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156121ec576121ec61313d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611feb6040830184612802565b7f563244757463684f72646572207769746e6573732900000000000000000000008152600085516131e6816015850160208a01612729565b8551908301906131fd816015840160208a01612729565b8551910190613213816015840160208901612729565b8451910190613229816015840160208801612729565b016015019695505050505050565b6000610140613267838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526132a86080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526132dd8184018661274d565b9050828103610120840152612476818561274d565b818103818111156121ec576121ec61313d565b81810360008312801583831316838312821617156133255761332561313d565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361335d5761335d61313d565b5060000390565b80820182811260008312801582168215821617156133845761338461313d565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212201b7d41a288872094e2643d8efd2d7d2fa97b6432325500b0029b8b9a405d2e4464736f6c63430008180033a2646970667358221220d977387c71933d37a95ee423c1cb1752881fa04482ea060251331dd8edd9bbf964736f6c63430008180033 + ///0x6080604052600c805462ff00ff191662010001179055348015610020575f80fd5b50613a6d8061002e5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610086575b5f80fd5b005b61004d6100a9565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252015b60405180910390f35b600c546100999062010000900460ff1681565b604051901515815260200161007d565b604080518082019091525f80825260208201526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e4552000000000000000000000060448201525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610152573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101769190610479565b90506101b76040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250826103ac565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561021e575f80fd5b505af1158015610230573d5f803e3d5ffd5b505050505f805f1b6e22d473030f116ddee9f6b43ac78ba3836040516102559061046c565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103905ff5905080158015610296573d5f803e3d5ffd5b5090506102d86040518060400160405280600781526020017f52656163746f7200000000000000000000000000000000000000000000000000815250826103ac565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561033f575f80fd5b505af1158015610351573d5f803e3d5ffd5b5050505060405180604001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b61043d82826040516024016103c29291906104b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610441565b5050565b61044a8161044d565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6134fe8061053a83390190565b5f60208284031215610489575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104ac575f80fd5b9392505050565b604081525f83518060408401525f5b818110156104df57602081870181015160608684010152016104c2565b505f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a060405234801562000010575f80fd5b50604051620034fe380380620034fe8339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b6080516133ed620001115f395f818160da01526119f901526133ed5ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af36600461245f565b6101e0565b005b6100b46100c4366004612504565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004612543565b6104af565b348015610143575f80fd5b506100b46101523660046125db565b610665565b6100b46101653660046125fd565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db3660046125db565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b761265c565b60200260200101819052506102cb81610b46565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b90849087908790600401612857565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b95565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff8111156103745761037461262f565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c576104678585838181106104505761045061265c565b9050602002810190610462919061291a565b6109d2565b8282815181106104795761047961265c565b6020908102919091010152600101610433565b5061049681610b46565b61049f81610b95565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d261262f565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae8787838181106104505761045061265c565b8282815181106105c0576105c061265c565b6020908102919091010152600101610591565b506105dd81610b46565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d90849088908890600401612857565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b95565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f815181106108475761084761265c565b602002602001018190525061085b81610b46565b61086481610b95565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a8380612956565b810190610a579190612d7d565b90505f610a6382610ce0565b9050610a6f8183610f10565b610a7882611109565b6040805160a081018252835181526080840151805160209182015193860151929391840192610aa992909190611265565b81526080840151805160209182015160608701519290930192610acd929190611333565b8152602001858060200190610ae29190612956565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001829052608083015160408101518151606090920151929550610b3f92869290611418565b5050919050565b80515f5b8181101561034c575f838281518110610b6557610b6561265c565b60200260200101519050610b7881611425565b610b828133611902565b610b8c81336119f7565b50600101610b4a565b80515f5b81811015610ccf575f838281518110610bb457610bb461265c565b602002602001015190505f81604001515190505f5b81811015610c31575f83604001518281518110610be857610be861265c565b60200260200101519050610c2881604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611cfc9092919063ffffffff16565b50600101610bc9565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c7957610c7961265c565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610cbd91815260200190565b60405180910390a45050600101610b99565b5047156104ab576104ab3347611d43565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c8201525f9060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181526080830190915260528083529091906132ab60208301396040518060c00160405280608d815260200161332b608d9139604051602001610e5f93929190612e72565b60405160208183030381529060405280519060200120610e81835f0151611dd9565b6020808501516040808701518051938101519101516060880151929392610ea790611e72565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f57576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808260a00151806020019051810190610f719190612eb4565b915091505f8360a00151604081518110610f8d57610f8d61265c565b602001015160f81c60f81b60f81c90505f6001868660800151604051602001610fb69190612ed6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ff29291602001612f64565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa15801561106b573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161415806110ca575073ffffffffffffffffffffffffffffffffffffffff8116155b15611101576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b608080820151015115611172578060400151602001518160800151608001511115611160576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111b9576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8160600151518110156104ab575f826060015182815181106111df576111df61265c565b602002602001015190505f836080015160a0015183815181106112045761120461265c565b60200260200101519050805f1461125b578160200151811015611253576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111bb565b61129c60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b8360400151846020015111156112de576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6112f3856020015186604001518686611f0d565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff8111156113515761135161262f565b6040519080825280602002602001820160405280156113b957816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161136f5790505b5091505f5b8181101561140f576113ea8682815181106113db576113db61265c565b60200260200101518686611f89565b8382815181106113fc576113fc61265c565b60209081029190910101526001016113be565b50509392505050565b61065f8484848442612056565b60015473ffffffffffffffffffffffffffffffffffffffff166114455750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061149b908590600401612f89565b5f60405180830381865afa1580156114b5573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114fa9190810190612f9b565b6040830151518151919250905f6115118284613091565b67ffffffffffffffff8111156115295761152961262f565b60405190808252806020026020018201604052801561159157816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115475790505b5090505f5b838110156115e157856040015181815181106115b4576115b461265c565b60200260200101518282815181106115ce576115ce61265c565b6020908102919091010152600101611596565b505f805f5b848110156118f1575f8782815181106116015761160161265c565b602002602001015190505f5b828110156116bc578881815181106116275761162761265c565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036116b45781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b60010161160d565b505f805b88811015611779575f8b6040015182815181106116df576116df61265c565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff160361177057851561175a576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117699084613091565b9250600196505b506001016116c0565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117f25784156117d9576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117eb9082613091565b9050600193505b805f036118465781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b611854816005612710612100565b826020015111156118c7578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a01815181106118dc576118dc61265c565b602090810291909101015250506001016115e6565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611953576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119cf90849086906004016130a4565b5f6040518083038186803b1580156119e5575f80fd5b505afa158015611101573d5f803e3d5ffd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611ab6846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b611ac0858561213a565b855f01516020015186608001516040518060800160405280605281526020016132ab605291396040518060c00160405280608d815260200161332b608d91396040518060600160405280602e81526020016132fd602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611c66949392916020016130d2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cd3969594939260040161315a565b5f604051808303815f87803b158015611cea575f80fd5b505af1158015611101573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611d215761034c8282611d43565b61034c73ffffffffffffffffffffffffffffffffffffffff8416338484612180565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611d99576040519150601f19603f3d011682016040523d82523d5f602084013e611d9e565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060c00160405280608d815260200161332b608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610ef398939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115611e9157611e9161262f565b6040519080825280601f01601f191660200182016040528015611ebb576020820181803683370190505b5090505f5b8351811015611efe575f611eec858381518110611edf57611edf61265c565b6020026020010151612267565b60208381028501015250600101611ec0565b50805160209091012092915050565b5f838503611f1c575083611f81565b828211611f55576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611f63575082611f81565b428310611f71575083611f81565b611f7e83834288886122dd565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611fe7576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ffc856020015186604001518686611f0d565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b6120618484836122f7565b6120f9578161209c576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b81518110156120f6575f8282815181106120bf576120bf61265c565b602002602001015190506120e8856127106120da9190613091565b602083015190612710612341565b6020909101526001016120a3565b50505b5050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612133575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806120f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5f6040518060800160405280605281526020016132ab60529139805160209182012083518483015160408087015160608801519151610ef3969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f6122eb8686868686612383565b90505b95945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416158061231a57508282115b80611f81575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612374575f80fd5b50910281810615159190040190565b5f8484106123925750806122ee565b5f61239d8786613214565b90505f6123aa8888613214565b90505f858512156123db576123cb83836123c4888a613227565b9190612100565b6123d49061324d565b90506123ed565b6123ea83836123c48989613227565b90505b6123f78187613283565b9998505050505050505050565b5f60408284031215612414575f80fd5b50919050565b5f8083601f84011261242a575f80fd5b50813567ffffffffffffffff811115612441575f80fd5b602083019150836020828501011115612458575f80fd5b9250929050565b5f805f60408486031215612471575f80fd5b833567ffffffffffffffff80821115612488575f80fd5b61249487838801612404565b945060208601359150808211156124a9575f80fd5b506124b68682870161241a565b9497909650939450505050565b5f8083601f8401126124d3575f80fd5b50813567ffffffffffffffff8111156124ea575f80fd5b6020830191508360208260051b8501011115612458575f80fd5b5f8060208385031215612515575f80fd5b823567ffffffffffffffff81111561252b575f80fd5b612537858286016124c3565b90969095509350505050565b5f805f8060408587031215612556575f80fd5b843567ffffffffffffffff8082111561256d575f80fd5b612579888389016124c3565b90965094506020870135915080821115612591575f80fd5b5061259e8782880161241a565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b80356125d6816125aa565b919050565b5f602082840312156125eb575f80fd5b81356125f6816125aa565b9392505050565b5f6020828403121561260d575f80fd5b813567ffffffffffffffff811115612623575f80fd5b611f8184828501612404565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156126a357818101518382015260200161268b565b50505f910152565b5f81518084526126c2816020860160208601612689565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b83811015612752578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612707565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d06101a08501826126ab565b9050602083015161280e6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282682826126f4565b915050606083015184820360a086015261284082826126ab565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b838110156128ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128b886835161275d565b9550938201939082019060010161287e565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261294c575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612989575f80fd5b83018035915067ffffffffffffffff8211156129a3575f80fd5b602001915036819003821315612458575f80fd5b60405160c0810167ffffffffffffffff811182821017156129da576129da61262f565b60405290565b6040516060810167ffffffffffffffff811182821017156129da576129da61262f565b6040516080810167ffffffffffffffff811182821017156129da576129da61262f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a6d57612a6d61262f565b604052919050565b5f82601f830112612a84575f80fd5b813567ffffffffffffffff811115612a9e57612a9e61262f565b612acf60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a26565b818152846020838601011115612ae3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215612b0f575f80fd5b612b176129b7565b90508135612b24816125aa565b81526020820135612b34816125aa565b8060208301525060408201356040820152606082013560608201526080820135612b5d816125aa565b608082015260a082013567ffffffffffffffff811115612b7b575f80fd5b612b8784828501612a75565b60a08301525092915050565b5f60608284031215612ba3575f80fd5b612bab6129e0565b90508135612bb8816125aa565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612bef57612bef61262f565b5060051b60200190565b5f82601f830112612c08575f80fd5b81356020612c1d612c1883612bd6565b612a26565b82815260079290921b84018101918181019086841115612c3b575f80fd5b8286015b84811015612c9e5760808189031215612c56575f80fd5b612c5e612a03565b8135612c69816125aa565b8152818501358582015260408083013590820152606080830135612c8c816125aa565b90820152835291830191608001612c3f565b509695505050505050565b5f60c08284031215612cb9575f80fd5b612cc16129b7565b905081358152602080830135818301526040830135612cdf816125aa565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d13575f80fd5b8301601f81018513612d23575f80fd5b8035612d31612c1882612bd6565b81815260059190911b82018301908381019087831115612d4f575f80fd5b928401925b82841015612d6d57833582529284019290840190612d54565b60a0860152509295945050505050565b5f60208284031215612d8d575f80fd5b813567ffffffffffffffff80821115612da4575f80fd5b908301906101008286031215612db8575f80fd5b612dc06129b7565b823582811115612dce575f80fd5b612dda87828601612aff565b825250612de9602084016125cb565b6020820152612dfb8660408501612b93565b604082015260a083013582811115612e11575f80fd5b612e1d87828601612bf9565b60608301525060c083013582811115612e34575f80fd5b612e4087828601612ca9565b60808301525060e083013582811115612e57575f80fd5b612e6387828601612a75565b60a08301525095945050505050565b5f8451612e83818460208901612689565b845190830190612e97818360208901612689565b8451910190612eaa818360208801612689565b0195945050505050565b5f8060408385031215612ec5575f80fd5b505080516020909101519092909150565b5f602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c0808601528181518084526101008701915084830193505f92505b80831015612c9e5783518252928401926001929092019190840190612f44565b8281525f8251612f7b816020850160208701612689565b919091016020019392505050565b602081525f6125f6602083018461275d565b5f6020808385031215612fac575f80fd5b825167ffffffffffffffff811115612fc2575f80fd5b8301601f81018513612fd2575f80fd5b8051612fe0612c1882612bd6565b81815260609182028301840191848201919088841115612ffe575f80fd5b938501935b838510156130585780858a031215613019575f80fd5b6130216129e0565b855161302c816125aa565b81528587015187820152604080870151613045816125aa565b9082015283529384019391850191613003565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561217a5761217a613064565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611f81604083018461275d565b7f563244757463684f72646572207769746e65737329000000000000000000000081525f8551613109816015850160208a01612689565b855190830190613120816015840160208a01612689565b8551910190613136816015840160208901612689565b845191019061314c816015840160208801612689565b016015019695505050505050565b5f610140613189838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131ca6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526131ff818401866126ab565b90508281036101208401526123f781856126ab565b8181038181111561217a5761217a613064565b8181035f83128015838313168383128216171561324657613246613064565b5092915050565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361327d5761327d613064565b505f0390565b8082018281125f8312801582168215821617156132a2576132a2613064565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220102b8a41af3e3ee0b3f412e829dc602991bc894dd17ff58ec5883953c3db934f64736f6c63430008180033a264697066735822122065782daff27750276e396e855b0fe8c22348f7f8f340d0b73a7efb2b6cb8a41864736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pa;w\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x89W[`\0\x80\xFD[\0[a\0Pa\0\xACV[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x9C\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x80V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01YW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01}\x91\x90a\x04\x93V[\x90Pa\x01\xBE`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02)W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02=W=`\0\x80>=`\0\xFD[PPPP`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02d\x90a\x04\x86V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02\xA8W=`\0\x80>=`\0\xFD[P\x90Pa\x02\xEA`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03UW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03iW=`\0\x80>=`\0\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04U\x82\x82`@Q`$\x01a\x03\xDA\x92\x91\x90a\x04\xD0V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04YV[PPV[a\x04b\x81a\x04eV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a5\xE8\x80a\x05Z\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x04\xA5W`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xC9W`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0\x83Q\x80`@\x84\x01R`\0[\x81\x81\x10\x15a\x04\xFEW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xE1V[P`\0``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x005\xE88\x03\x80b\x005\xE8\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa4\xCFb\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x1AS\x01Ra4\xCF`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$\xE4V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a%\x92V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%\xD4V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a&rV[a\x06\x83V[a\0\xB9a\x01l6`\x04a&\x96V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a&rV[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&\xFAV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xBEV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\xC3V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BmV[a\x04\xB5\x81a\x0B\xBEV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xBEV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&\xFAV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BmV[a\x08\x86\x81a\x0B\xBEV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a*\x01V[\x81\x01\x90a\n|\x91\x90a.@V[\x90P`\0a\n\x89\x82a\r\x11V[\x90Pa\n\x95\x81\x83a\x0FCV[a\n\x9E\x82a\x11BV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xCF\x92\x90\x91\x90a\x12\xA2V[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xF3\x92\x91\x90a\x13tV[\x81R` \x01\x85\x80` \x01\x90a\x0B\x08\x91\x90a*\x01V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0Bf\x92\x86\x92\x90a\x14[V[PP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x8EWa\x0B\x8Ea&\xFAV[` \x02` \x01\x01Q\x90Pa\x0B\xA1\x81a\x14hV[a\x0B\xAB\x813a\x19XV[a\x0B\xB5\x813a\x1AQV[P`\x01\x01a\x0BrV[\x80Q`\0[\x81\x81\x10\x15a\r\0W`\0\x83\x82\x81Q\x81\x10a\x0B\xDFWa\x0B\xDFa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C`W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x16Wa\x0C\x16a&\xFAV[` \x02` \x01\x01Q\x90Pa\x0CW\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D]\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xF6V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\xA9Wa\x0C\xA9a&\xFAV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xEE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xC3V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1D\xA4V[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\0\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a3\x8D` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q` \x01a\x0E\x91\x93\x92\x91\x90a/=V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\xB4\x83`\0\x01Qa\x1E>V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xDA\x90a\x1E\xD8V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0F\x8AW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0F\xA5\x91\x90a/\x80V[\x91P\x91P`\0\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\xC2Wa\x0F\xC2a&\xFAV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P`\0`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xEC\x91\x90a/\xA4V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10(\x92\x91` \x01a04V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10\xA4W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x11\x03WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11:W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11\xABW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11\x99W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xF2W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0[\x81``\x01QQ\x81\x10\x15a\x04\xC1W`\0\x82``\x01Q\x82\x81Q\x81\x10a\x12\x1AWa\x12\x1Aa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12@Wa\x12@a&\xFAV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12\x98W\x81` \x01Q\x81\x10\x15a\x12\x90W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xF5V[a\x12\xDC`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x13\x1EW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x134\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x92Wa\x13\x92a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB0W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x14RWa\x14-\x86\x82\x81Q\x81\x10a\x14\x1EWa\x14\x1Ea&\xFAV[` \x02` \x01\x01Q\x86\x86a\x1F\xF3V[\x83\x82\x81Q\x81\x10a\x14?Wa\x14?a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x01V[PP\x93\x92PPPV[a\x06}\x84\x84\x84\x84Ba \xC3V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14\x88WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\xDF\x90\x85\x90`\x04\x01a0ZV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xFCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a0mV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x15Z\x82\x84a1lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15rWa\x15ra&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\xDBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15\x90W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x16,W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xFFWa\x15\xFFa&\xFAV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x19Wa\x16\x19a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\xE1V[P`\0\x80`\0[\x84\x81\x10\x15a\x19GW`\0\x87\x82\x81Q\x81\x10a\x16OWa\x16Oa&\xFAV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\rW\x88\x81\x81Q\x81\x10a\x16vWa\x16va&\xFAV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x05W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x16\\V[P`\0\x80[\x88\x81\x10\x15a\x17\xCEW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x172Wa\x172a&\xFAV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xC5W\x85\x15a\x17\xAFW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17\xBE\x90\x84a1lV[\x92P`\x01\x96P[P`\x01\x01a\x17\x12V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18GW\x84\x15a\x18.W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18@\x90\x82a1lV[\x90P`\x01\x93P[\x80`\0\x03a\x18\x9CW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18\xAA\x81`\x05a'\x10a!oV[\x82` \x01Q\x11\x15a\x19\x1DW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x192Wa\x192a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x163V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19\xA9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A%\x90\x84\x90\x86\x90`\x04\x01a1\x7FV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A=W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x11\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1B\x1B\x85\x85a!\xABV[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a3\xDF`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xC2\x94\x93\x92\x91` \x01a1\xAEV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1D/\x96\x95\x94\x93\x92`\x04\x01a27V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1DIW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D\x82Wa\x03_\x82\x82a\x1D\xA4V[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xF2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1E\x03V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0F&\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xF8Wa\x1E\xF8a&\xCBV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1F\"W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1FgW`\0a\x1FU\x85\x83\x81Q\x81\x10a\x1FHWa\x1FHa&\xFAV[` \x02` \x01\x01Qa\"\xDDV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1F(V[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x83\x85\x03a\x1F\x86WP\x83a\x1F\xEBV[\x82\x82\x11a\x1F\xBFW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1F\xCDWP\x82a\x1F\xEBV[B\x83\x10a\x1F\xDBWP\x83a\x1F\xEBV[a\x1F\xE8\x83\x83B\x88\x88a#TV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a RW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a h\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a \xCE\x84\x84\x83a#oV[a!hW\x81a!\tW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a!eW`\0\x82\x82\x81Q\x81\x10a!.Wa!.a&\xFAV[` \x02` \x01\x01Q\x90Pa!W\x85a'\x10a!I\x91\x90a1lV[` \x83\x01Q\x90a'\x10a#\xBAV[` \x90\x91\x01R`\x01\x01a!\x11V[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xA4W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a!hW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0F&\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0a#c\x86\x86\x86\x86\x86a#\xFEV[\x90P[\x95\x94PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x93WP\x82\x82\x11[\x80a\x1F\xEBWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xEFW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a$\x0EWP\x80a#fV[`\0a$\x1A\x87\x86a2\xF2V[\x90P`\0a$(\x88\x88a2\xF2V[\x90P`\0\x85\x85\x12\x15a$ZWa$J\x83\x83a$C\x88\x8Aa3\x05V[\x91\x90a!oV[a$S\x90a3,V[\x90Pa$lV[a$i\x83\x83a$C\x89\x89a3\x05V[\x90P[a$v\x81\x87a3dV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a$\x95W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\xADW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xC5W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$\xF9W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%\x11W`\0\x80\xFD[a%\x1D\x87\x83\x88\x01a$\x83V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a%3W`\0\x80\xFD[Pa%@\x86\x82\x87\x01a$\x9BV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a%_W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%wW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\xA5W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xBCW`\0\x80\xFD[a%\xC8\x85\x82\x86\x01a%MV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%\xEAW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a&\x02W`\0\x80\xFD[a&\x0E\x88\x83\x89\x01a%MV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a&'W`\0\x80\xFD[Pa&4\x87\x82\x88\x01a$\x9BV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a&m\x81a&@V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a&\x84W`\0\x80\xFD[\x815a&\x8F\x81a&@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a&\xA8W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\xBFW`\0\x80\xFD[a\x1F\xEB\x84\x82\x85\x01a$\x83V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a'DW\x81\x81\x01Q\x83\x82\x01R` \x01a',V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra'e\x81` \x86\x01` \x86\x01a')V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'\xF7W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\xACV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra(va\x01\xA0\x85\x01\x82a'MV[\x90P` \x83\x01Qa(\xB4` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(\xCC\x82\x82a'\x97V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(\xE6\x82\x82a'MV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a)rW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra)`\x86\x83Qa(\x02V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a)&V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)\xF7W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a*6W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*QW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$\xDDW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a+\x1CWa+\x1Ca&\xCBV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a+5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+OWa+Oa&\xCBV[a+\x80` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*\xD5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a+\x95W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+\xC4W`\0\x80\xFD[a+\xCCa*fV[\x90P\x815a+\xD9\x81a&@V[\x81R` \x82\x015a+\xE9\x81a&@V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a,\x12\x81a&@V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,1W`\0\x80\xFD[a,=\x84\x82\x85\x01a+$V[`\xA0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a,[W`\0\x80\xFD[a,ca*\x8FV[\x90P\x815a,p\x81a&@V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xA8Wa,\xA8a&\xCBV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,\xC3W`\0\x80\xFD[\x815` a,\xD8a,\xD3\x83a,\x8EV[a*\xD5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\xF7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a-\\W`\x80\x81\x89\x03\x12\x15a-\x14W`\0\x80\x81\xFD[a-\x1Ca*\xB2V[\x815a-'\x81a&@V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a-J\x81a&@V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,\xFBV[P\x96\x95PPPPPPV[`\0`\xC0\x82\x84\x03\x12\x15a-yW`\0\x80\xFD[a-\x81a*fV[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a-\x9F\x81a&@V[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\xD4W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-\xE5W`\0\x80\xFD[\x805a-\xF3a,\xD3\x82a,\x8EV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a.\x12W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a.0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a.\x17V[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.RW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a.jW`\0\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a.\x7FW`\0\x80\xFD[a.\x87a*fV[\x825\x82\x81\x11\x15a.\x96W`\0\x80\xFD[a.\xA2\x87\x82\x86\x01a+\xB2V[\x82RPa.\xB1` \x84\x01a&bV[` \x82\x01Ra.\xC3\x86`@\x85\x01a,IV[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\xDAW`\0\x80\xFD[a.\xE6\x87\x82\x86\x01a,\xB2V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.\xFEW`\0\x80\xFD[a/\n\x87\x82\x86\x01a-gV[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a/\"W`\0\x80\xFD[a/.\x87\x82\x86\x01a+$V[`\xA0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa/O\x81\x84` \x89\x01a')V[\x84Q\x90\x83\x01\x90a/c\x81\x83` \x89\x01a')V[\x84Q\x91\x01\x90a/v\x81\x83` \x88\x01a')V[\x01\x95\x94PPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a/\x93W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a-\\W\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a0\x14V[\x82\x81R`\0\x82Qa0L\x81` \x85\x01` \x87\x01a')V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R`\0a&\x8F` \x83\x01\x84a(\x02V[`\0` \x80\x83\x85\x03\x12\x15a0\x80W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\x97W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a0\xA8W`\0\x80\xFD[\x80Qa0\xB6a,\xD3\x82a,\x8EV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a0\xD5W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a11W\x80\x85\x8A\x03\x12\x15a0\xF2W`\0\x80\x81\xFD[a0\xFAa*\x8FV[\x85Qa1\x05\x81a&@V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa1\x1E\x81a&@V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\xDAV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a!\xECWa!\xECa1=V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1F\xEB`@\x83\x01\x84a(\x02V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x85Qa1\xE6\x81`\x15\x85\x01` \x8A\x01a')V[\x85Q\x90\x83\x01\x90a1\xFD\x81`\x15\x84\x01` \x8A\x01a')V[\x85Q\x91\x01\x90a2\x13\x81`\x15\x84\x01` \x89\x01a')V[\x84Q\x91\x01\x90a2)\x81`\x15\x84\x01` \x88\x01a')V[\x01`\x15\x01\x96\x95PPPPPPV[`\0a\x01@a2g\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra2\xA8`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra2\xDD\x81\x84\x01\x86a'MV[\x90P\x82\x81\x03a\x01 \x84\x01Ra$v\x81\x85a'MV[\x81\x81\x03\x81\x81\x11\x15a!\xECWa!\xECa1=V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a3%Wa3%a1=V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a3]Wa3]a1=V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a3\x84Wa3\x84a1=V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x1B}A\xA2\x88\x87 \x94\xE2d=\x8E\xFD-}/\xA9{d22U\0\xB0\x02\x9B\x8B\x9A@].DdsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xD9w8|q\x93=7\xA9^\xE4#\xC1\xCB\x17R\x88\x1F\xA0D\x82\xEA\x06\x02Q3\x1D\xD8\xED\xD9\xBB\xF9dsolcC\0\x08\x18\x003", + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[Pa:m\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x86W[_\x80\xFD[\0[a\0Ma\0\xA9V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x99\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0}V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01RW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01v\x91\x90a\x04yV[\x90Pa\x01\xB7`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\x1EW_\x80\xFD[PZ\xF1\x15\x80\x15a\x020W=_\x80>=_\xFD[PPPP_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02U\x90a\x04lV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02\x96W=_\x80>=_\xFD[P\x90Pa\x02\xD8`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03?W_\x80\xFD[PZ\xF1\x15\x80\x15a\x03QW=_\x80>=_\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04=\x82\x82`@Q`$\x01a\x03\xC2\x92\x91\x90a\x04\xB3V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04AV[PPV[a\x04J\x81a\x04MV[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a4\xFE\x80a\x05:\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x04\x89W_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xACW_\x80\xFD[\x93\x92PPPV[`@\x81R_\x83Q\x80`@\x84\x01R_[\x81\x81\x10\x15a\x04\xDFW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xC2V[P_``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x004\xFE8\x03\x80b\x004\xFE\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa3\xEDb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x19\xF9\x01Ra3\xED_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a$_V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a%\x04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a%CV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%\xDBV[a\x06eV[a\0\xB4a\x01e6`\x04a%\xFDV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%\xDBV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a&\\V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x95V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a)\x1AV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0BFV[a\x04\x9F\x81a\x0B\x95V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x95V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga&\\V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0BFV[a\x08d\x81a\x0B\x95V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a)VV[\x81\x01\x90a\nW\x91\x90a-}V[\x90P_a\nc\x82a\x0C\xE0V[\x90Pa\no\x81\x83a\x0F\x10V[a\nx\x82a\x11\tV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xA9\x92\x90\x91\x90a\x12eV[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xCD\x92\x91\x90a\x133V[\x81R` \x01\x85\x80` \x01\x90a\n\xE2\x91\x90a)VV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0B?\x92\x86\x92\x90a\x14\x18V[PP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea&\\V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x14%V[a\x0B\x82\x813a\x19\x02V[a\x0B\x8C\x813a\x19\xF7V[P`\x01\x01a\x0BJV[\x80Q_[\x81\x81\x10\x15a\x0C\xCFW_\x83\x82\x81Q\x81\x10a\x0B\xB4Wa\x0B\xB4a&\\V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C1W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xE8Wa\x0B\xE8a&\\V[` \x02` \x01\x01Q\x90Pa\x0C(\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xFC\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xC9V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CyWa\x0Cya&\\V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xBD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x99V[PG\x15a\x04\xABWa\x04\xAB3Ga\x1DCV[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R_\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a2\xAB` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q` \x01a\x0E_\x93\x92\x91\x90a.rV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\x81\x83_\x01Qa\x1D\xD9V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xA7\x90a\x1ErV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0FWW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0Fq\x91\x90a.\xB4V[\x91P\x91P_\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\x8DWa\x0F\x8Da&\\V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P_`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xB6\x91\x90a.\xD6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\xF2\x92\x91` \x01a/dV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 _\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10kW=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x10\xCAWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11\x01W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11rW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xB9W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x81``\x01QQ\x81\x10\x15a\x04\xABW_\x82``\x01Q\x82\x81Q\x81\x10a\x11\xDFWa\x11\xDFa&\\V[` \x02` \x01\x01Q\x90P_\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12\x04Wa\x12\x04a&\\V[` \x02` \x01\x01Q\x90P\x80_\x14a\x12[W\x81` \x01Q\x81\x10\x15a\x12SW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xBBV[a\x12\x9C`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x12\xDEW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x12\xF3\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13QWa\x13Qa&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xB9W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13oW\x90P[P\x91P_[\x81\x81\x10\x15a\x14\x0FWa\x13\xEA\x86\x82\x81Q\x81\x10a\x13\xDBWa\x13\xDBa&\\V[` \x02` \x01\x01Q\x86\x86a\x1F\x89V[\x83\x82\x81Q\x81\x10a\x13\xFCWa\x13\xFCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBEV[PP\x93\x92PPPV[a\x06_\x84\x84\x84\x84Ba VV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14EWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\x9B\x90\x85\x90`\x04\x01a/\x89V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xB5W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xFA\x91\x90\x81\x01\x90a/\x9BV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\x11\x82\x84a0\x91V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15)Wa\x15)a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\x91W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15GW\x90P[P\x90P_[\x83\x81\x10\x15a\x15\xE1W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xB4Wa\x15\xB4a&\\V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xCEWa\x15\xCEa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\x96V[P_\x80_[\x84\x81\x10\x15a\x18\xF1W_\x87\x82\x81Q\x81\x10a\x16\x01Wa\x16\x01a&\\V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16\xBCW\x88\x81\x81Q\x81\x10a\x16'Wa\x16'a&\\V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\xB4W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\rV[P_\x80[\x88\x81\x10\x15a\x17yW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xDFWa\x16\xDFa&\\V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17pW\x85\x15a\x17ZW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17i\x90\x84a0\x91V[\x92P`\x01\x96P[P`\x01\x01a\x16\xC0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xF2W\x84\x15a\x17\xD9W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xEB\x90\x82a0\x91V[\x90P`\x01\x93P[\x80_\x03a\x18FW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x18T\x81`\x05a'\x10a!\0V[\x82` \x01Q\x11\x15a\x18\xC7W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xDCWa\x18\xDCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xE6V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19SW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xCF\x90\x84\x90\x86\x90`\x04\x01a0\xA4V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xE5W_\x80\xFD[PZ\xFA\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xB6\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1A\xC0\x85\x85a!:V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\xFD`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1Cf\x94\x93\x92\x91` \x01a0\xD2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xD3\x96\x95\x94\x93\x92`\x04\x01a1ZV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xEAW_\x80\xFD[PZ\xF1\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D!Wa\x03L\x82\x82a\x1DCV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\x80V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\x99W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\x9EV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0E\xF3\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\x91Wa\x1E\x91a&/V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xBBW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xFEW_a\x1E\xEC\x85\x83\x81Q\x81\x10a\x1E\xDFWa\x1E\xDFa&\\V[` \x02` \x01\x01Qa\"gV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xC0V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x83\x85\x03a\x1F\x1CWP\x83a\x1F\x81V[\x82\x82\x11a\x1FUW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1FcWP\x82a\x1F\x81V[B\x83\x10a\x1FqWP\x83a\x1F\x81V[a\x1F~\x83\x83B\x88\x88a\"\xDDV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1F\xE7W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xFC\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a a\x84\x84\x83a\"\xF7V[a \xF9W\x81a \x9CW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a \xF6W_\x82\x82\x81Q\x81\x10a \xBFWa \xBFa&\\V[` \x02` \x01\x01Q\x90Pa \xE8\x85a'\x10a \xDA\x91\x90a0\x91V[` \x83\x01Q\x90a'\x10a#AV[` \x90\x91\x01R`\x01\x01a \xA3V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!3W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a \xF9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0E\xF3\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_a\"\xEB\x86\x86\x86\x86\x86a#\x83V[\x90P[\x95\x94PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x1AWP\x82\x82\x11[\x80a\x1F\x81WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#tW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a#\x92WP\x80a\"\xEEV[_a#\x9D\x87\x86a2\x14V[\x90P_a#\xAA\x88\x88a2\x14V[\x90P_\x85\x85\x12\x15a#\xDBWa#\xCB\x83\x83a#\xC4\x88\x8Aa2'V[\x91\x90a!\0V[a#\xD4\x90a2MV[\x90Pa#\xEDV[a#\xEA\x83\x83a#\xC4\x89\x89a2'V[\x90P[a#\xF7\x81\x87a2\x83V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a$\x14W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a$*W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$AW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$XW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a$qW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\x88W_\x80\xFD[a$\x94\x87\x83\x88\x01a$\x04V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\xA9W_\x80\xFD[Pa$\xB6\x86\x82\x87\x01a$\x1AV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$\xD3W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xEAW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$XW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a%\x15W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%+W_\x80\xFD[a%7\x85\x82\x86\x01a$\xC3V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a%VW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%mW_\x80\xFD[a%y\x88\x83\x89\x01a$\xC3V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x91W_\x80\xFD[Pa%\x9E\x87\x82\x88\x01a$\x1AV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a%\xD6\x81a%\xAAV[\x91\x90PV[_` \x82\x84\x03\x12\x15a%\xEBW_\x80\xFD[\x815a%\xF6\x81a%\xAAV[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a&\rW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&#W_\x80\xFD[a\x1F\x81\x84\x82\x85\x01a$\x04V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&\xC2\x81` \x86\x01` \x86\x01a&\x89V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a'RW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x07V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD0a\x01\xA0\x85\x01\x82a&\xABV[\x90P` \x83\x01Qa(\x0E` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(&\x82\x82a&\xF4V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(@\x82\x82a&\xABV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(\xCAW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xB8\x86\x83Qa']V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(~V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)LW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x89W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xA3W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$XW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*mWa*ma&/V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a*\x84W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\x9EWa*\x9Ea&/V[a*\xCF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*&V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xE3W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a+\x0FW_\x80\xFD[a+\x17a)\xB7V[\x90P\x815a+$\x81a%\xAAV[\x81R` \x82\x015a+4\x81a%\xAAV[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a+]\x81a%\xAAV[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+{W_\x80\xFD[a+\x87\x84\x82\x85\x01a*uV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+\xA3W_\x80\xFD[a+\xABa)\xE0V[\x90P\x815a+\xB8\x81a%\xAAV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+\xEFWa+\xEFa&/V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a,\x08W_\x80\xFD[\x815` a,\x1Da,\x18\x83a+\xD6V[a*&V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,;W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\x9EW`\x80\x81\x89\x03\x12\x15a,VW_\x80\xFD[a,^a*\x03V[\x815a,i\x81a%\xAAV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x8C\x81a%\xAAV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,?V[P\x96\x95PPPPPPV[_`\xC0\x82\x84\x03\x12\x15a,\xB9W_\x80\xFD[a,\xC1a)\xB7V[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a,\xDF\x81a%\xAAV[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\x13W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-#W_\x80\xFD[\x805a-1a,\x18\x82a+\xD6V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a-OW_\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a-mW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a-TV[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-\x8DW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-\xA4W_\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a-\xB8W_\x80\xFD[a-\xC0a)\xB7V[\x825\x82\x81\x11\x15a-\xCEW_\x80\xFD[a-\xDA\x87\x82\x86\x01a*\xFFV[\x82RPa-\xE9` \x84\x01a%\xCBV[` \x82\x01Ra-\xFB\x86`@\x85\x01a+\x93V[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\x11W_\x80\xFD[a.\x1D\x87\x82\x86\x01a+\xF9V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.4W_\x80\xFD[a.@\x87\x82\x86\x01a,\xA9V[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a.WW_\x80\xFD[a.c\x87\x82\x86\x01a*uV[`\xA0\x83\x01RP\x95\x94PPPPPV[_\x84Qa.\x83\x81\x84` \x89\x01a&\x89V[\x84Q\x90\x83\x01\x90a.\x97\x81\x83` \x89\x01a&\x89V[\x84Q\x91\x01\x90a.\xAA\x81\x83` \x88\x01a&\x89V[\x01\x95\x94PPPPPV[_\x80`@\x83\x85\x03\x12\x15a.\xC5W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[_` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a,\x9EW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a/DV[\x82\x81R_\x82Qa/{\x81` \x85\x01` \x87\x01a&\x89V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R_a%\xF6` \x83\x01\x84a']V[_` \x80\x83\x85\x03\x12\x15a/\xACW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/\xC2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD2W_\x80\xFD[\x80Qa/\xE0a,\x18\x82a+\xD6V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/\xFEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a0XW\x80\x85\x8A\x03\x12\x15a0\x19W_\x80\xFD[a0!a)\xE0V[\x85Qa0,\x81a%\xAAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa0E\x81a%\xAAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\x03V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a!zWa!za0dV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1F\x81`@\x83\x01\x84a']V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_\x85Qa1\t\x81`\x15\x85\x01` \x8A\x01a&\x89V[\x85Q\x90\x83\x01\x90a1 \x81`\x15\x84\x01` \x8A\x01a&\x89V[\x85Q\x91\x01\x90a16\x81`\x15\x84\x01` \x89\x01a&\x89V[\x84Q\x91\x01\x90a1L\x81`\x15\x84\x01` \x88\x01a&\x89V[\x01`\x15\x01\x96\x95PPPPPPV[_a\x01@a1\x89\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\xCA`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1\xFF\x81\x84\x01\x86a&\xABV[\x90P\x82\x81\x03a\x01 \x84\x01Ra#\xF7\x81\x85a&\xABV[\x81\x81\x03\x81\x81\x11\x15a!zWa!za0dV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a2FWa2Fa0dV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a2}Wa2}a0dV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a2\xA2Wa2\xA2a0dV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x10+\x8AA\xAF>>\xE0\xB3\xF4\x12\xE8)\xDC`)\x91\xBC\x89M\xD1\x7F\xF5\x8E\xC5\x889S\xC3\xDB\x93OdsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 ex-\xAF\xF2wP'n9n\x85[\x0F\xE8\xC2#H\xF7\xF8\xF3@\xD0\xB7:~\xFB+l\xB8\xA4\x18dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610089575b600080fd5b005b6100506100ac565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252015b60405180910390f35b600c5461009c9062010000900460ff1681565b6040519015158152602001610080565b60408051808201909152600080825260208201526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e455200000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017d9190610493565b90506101be6040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561022957600080fd5b505af115801561023d573d6000803e3d6000fd5b5050505060008060001b6e22d473030f116ddee9f6b43ac78ba38360405161026490610486565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156102a8573d6000803e3d6000fd5b5090506102ea6040518060400160405280600781526020017f52656163746f7200000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035557600080fd5b505af1158015610369573d6000803e3d6000fd5b5050505060405180604001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b61045582826040516024016103da9291906104d0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610459565b5050565b61046281610465565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6135e88061055a83390190565b6000602082840312156104a557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104c957600080fd5b9392505050565b604081526000835180604084015260005b818110156104fe57602081870181015160608684010152016104e1565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b50604051620035e8380380620035e88339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b6080516134cf620001196000396000818160e00152611a5301526134cf6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046124e4565b6101eb565b005b6100b96100c9366004612592565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96101393660046125d4565b6104c5565b34801561014a57600080fd5b506100b9610159366004612672565b610683565b6100b961016c366004612696565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612672565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56126fa565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016128fd565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff811115610388576103886126cb565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666126fa565b905060200281019061047891906129c3565b6109f6565b82828151811061048f5761048f6126fa565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e96126cb565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666126fa565b8282815181106105d9576105d96126fa565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016128fd565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696126fa565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612a01565b810190610a7c9190612e40565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b089190612a01565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e6126fa565b60200260200101519050610ba181611468565b610bab8133611958565b610bb58133611a51565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf6126fa565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c166126fa565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d5d9092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca96126fa565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611da4565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061338d60208301396040518060c00160405280608d815260200161340d608d9139604051602001610e9193929190612f3d565b60405160208183030381529060405280519060200120610eb48360000151611e3e565b6020808501516040808701518051938101519101516060880151929392610eda90611ed8565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612f80565b9150915060008360a00151604081518110610fc257610fc26126fa565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612fa4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001613034565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a6126fa565b602002602001015190506000836080015160a001518381518110611240576112406126fa565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686611f76565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611392576113926126cb565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e6126fa565b60200260200101518686611ff3565b83828151811061143f5761143f6126fa565b6020908102919091010152600101611401565b50509392505050565b61067d84848484426120c3565b60015473ffffffffffffffffffffffffffffffffffffffff166114885750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906114df90859060040161305a565b600060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611542919081019061306d565b604083015151815191925090600061155a828461316c565b67ffffffffffffffff811115611572576115726126cb565b6040519080825280602002602001820160405280156115db57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115905790505b50905060005b8381101561162c57856040015181815181106115ff576115ff6126fa565b6020026020010151828281518110611619576116196126fa565b60209081029190910101526001016115e1565b5060008060005b8481101561194757600087828151811061164f5761164f6126fa565b6020026020010151905060005b8281101561170d57888181518110611676576116766126fa565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117055781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161165c565b506000805b888110156117ce5760008b604001518281518110611732576117326126fa565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036117c55785156117af576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117be908461316c565b9250600196505b50600101611712565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361184757841561182e576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b01510151611840908261316c565b9050600193505b8060000361189c5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6118aa81600561271061216f565b8260200151111561191d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611932576119326126fa565b60209081029190910101525050600101611633565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146119a9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611a25908490869060040161317f565b60006040518083038186803b158015611a3d57600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611b11846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b611b1b85856121ab565b856000015160200151866080015160405180608001604052806052815260200161338d605291396040518060c00160405280608d815260200161340d608d91396040518060600160405280602e81526020016133df602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611cc2949392916020016131ae565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611d2f9695949392600401613237565b600060405180830381600087803b158015611d4957600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d825761035f8282611da4565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846121f2565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dfe576040519150601f19603f3d011682016040523d82523d6000602084013e611e03565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d815260200161340d608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ef857611ef86126cb565b6040519080825280601f01601f191660200182016040528015611f22576020820181803683370190505b50905060005b8351811015611f67576000611f55858381518110611f4857611f486126fa565b60200260200101516122dd565b60208381028501015250600101611f28565b50805160209091012092915050565b6000838503611f86575083611feb565b828211611fbf576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611fcd575082611feb565b428310611fdb575083611feb565b611fe88383428888612354565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612052576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612068856020015186604001518686611f76565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b6120ce84848361236f565b6121685781612109576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561216557600082828151811061212e5761212e6126fa565b6020026020010151905061215785612710612149919061316c565b6020830151906127106123ba565b602090910152600101612111565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026121a457600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b600060405180608001604052806052815260200161338d60529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600061236386868686866123fe565b90505b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416158061239357508282115b80611feb575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123ef57600080fd5b50910281810615159190040190565b600084841061240e575080612366565b600061241a87866132f2565b9050600061242888886132f2565b905060008585121561245a5761244a8383612443888a613305565b919061216f565b6124539061332c565b905061246c565b61246983836124438989613305565b90505b6124768187613364565b9998505050505050505050565b60006040828403121561249557600080fd5b50919050565b60008083601f8401126124ad57600080fd5b50813567ffffffffffffffff8111156124c557600080fd5b6020830191508360208285010111156124dd57600080fd5b9250929050565b6000806000604084860312156124f957600080fd5b833567ffffffffffffffff8082111561251157600080fd5b61251d87838801612483565b9450602086013591508082111561253357600080fd5b506125408682870161249b565b9497909650939450505050565b60008083601f84011261255f57600080fd5b50813567ffffffffffffffff81111561257757600080fd5b6020830191508360208260051b85010111156124dd57600080fd5b600080602083850312156125a557600080fd5b823567ffffffffffffffff8111156125bc57600080fd5b6125c88582860161254d565b90969095509350505050565b600080600080604085870312156125ea57600080fd5b843567ffffffffffffffff8082111561260257600080fd5b61260e8883890161254d565b9096509450602087013591508082111561262757600080fd5b506126348782880161249b565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b803561266d81612640565b919050565b60006020828403121561268457600080fd5b813561268f81612640565b9392505050565b6000602082840312156126a857600080fd5b813567ffffffffffffffff8111156126bf57600080fd5b611feb84828501612483565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561274457818101518382015260200161272c565b50506000910152565b60008151808452612765816020860160208601612729565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156127f7578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016127ac565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526128766101a085018261274d565b905060208301516128b46020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128cc8282612797565b915050606083015184820360a08601526128e6828261274d565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612960868351612802565b95509382019390820190600101612926565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126129f757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a3657600080fd5b83018035915067ffffffffffffffff821115612a5157600080fd5b6020019150368190038213156124dd57600080fd5b60405160c0810167ffffffffffffffff81118282101715612a8957612a896126cb565b60405290565b6040516060810167ffffffffffffffff81118282101715612a8957612a896126cb565b6040516080810167ffffffffffffffff81118282101715612a8957612a896126cb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b1c57612b1c6126cb565b604052919050565b600082601f830112612b3557600080fd5b813567ffffffffffffffff811115612b4f57612b4f6126cb565b612b8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ad5565b818152846020838601011115612b9557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612bc457600080fd5b612bcc612a66565b90508135612bd981612640565b81526020820135612be981612640565b8060208301525060408201356040820152606082013560608201526080820135612c1281612640565b608082015260a082013567ffffffffffffffff811115612c3157600080fd5b612c3d84828501612b24565b60a08301525092915050565b600060608284031215612c5b57600080fd5b612c63612a8f565b90508135612c7081612640565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612ca857612ca86126cb565b5060051b60200190565b600082601f830112612cc357600080fd5b81356020612cd8612cd383612c8e565b612ad5565b82815260079290921b84018101918181019086841115612cf757600080fd5b8286015b84811015612d5c5760808189031215612d145760008081fd5b612d1c612ab2565b8135612d2781612640565b8152818501358582015260408083013590820152606080830135612d4a81612640565b90820152835291830191608001612cfb565b509695505050505050565b600060c08284031215612d7957600080fd5b612d81612a66565b905081358152602080830135818301526040830135612d9f81612640565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612dd457600080fd5b8301601f81018513612de557600080fd5b8035612df3612cd382612c8e565b81815260059190911b82018301908381019087831115612e1257600080fd5b928401925b82841015612e3057833582529284019290840190612e17565b60a0860152509295945050505050565b600060208284031215612e5257600080fd5b813567ffffffffffffffff80821115612e6a57600080fd5b908301906101008286031215612e7f57600080fd5b612e87612a66565b823582811115612e9657600080fd5b612ea287828601612bb2565b825250612eb160208401612662565b6020820152612ec38660408501612c49565b604082015260a083013582811115612eda57600080fd5b612ee687828601612cb2565b60608301525060c083013582811115612efe57600080fd5b612f0a87828601612d67565b60808301525060e083013582811115612f2257600080fd5b612f2e87828601612b24565b60a08301525095945050505050565b60008451612f4f818460208901612729565b845190830190612f63818360208901612729565b8451910190612f76818360208801612729565b0195945050505050565b60008060408385031215612f9357600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612d5c5783518252928401926001929092019190840190613014565b8281526000825161304c816020850160208701612729565b919091016020019392505050565b60208152600061268f6020830184612802565b6000602080838503121561308057600080fd5b825167ffffffffffffffff81111561309757600080fd5b8301601f810185136130a857600080fd5b80516130b6612cd382612c8e565b818152606091820283018401918482019190888411156130d557600080fd5b938501935b838510156131315780858a0312156130f25760008081fd5b6130fa612a8f565b855161310581612640565b8152858701518782015260408087015161311e81612640565b90820152835293840193918501916130da565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156121ec576121ec61313d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611feb6040830184612802565b7f563244757463684f72646572207769746e6573732900000000000000000000008152600085516131e6816015850160208a01612729565b8551908301906131fd816015840160208a01612729565b8551910190613213816015840160208901612729565b8451910190613229816015840160208801612729565b016015019695505050505050565b6000610140613267838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526132a86080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526132dd8184018661274d565b9050828103610120840152612476818561274d565b818103818111156121ec576121ec61313d565b81810360008312801583831316838312821617156133255761332561313d565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361335d5761335d61313d565b5060000390565b80820182811260008312801582168215821617156133845761338461313d565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212201b7d41a288872094e2643d8efd2d7d2fa97b6432325500b0029b8b9a405d2e4464736f6c63430008180033a2646970667358221220d977387c71933d37a95ee423c1cb1752881fa04482ea060251331dd8edd9bbf964736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610086575b5f80fd5b005b61004d6100a9565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252015b60405180910390f35b600c546100999062010000900460ff1681565b604051901515815260200161007d565b604080518082019091525f80825260208201526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e4552000000000000000000000060448201525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610152573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101769190610479565b90506101b76040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250826103ac565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561021e575f80fd5b505af1158015610230573d5f803e3d5ffd5b505050505f805f1b6e22d473030f116ddee9f6b43ac78ba3836040516102559061046c565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103905ff5905080158015610296573d5f803e3d5ffd5b5090506102d86040518060400160405280600781526020017f52656163746f7200000000000000000000000000000000000000000000000000815250826103ac565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561033f575f80fd5b505af1158015610351573d5f803e3d5ffd5b5050505060405180604001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b61043d82826040516024016103c29291906104b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610441565b5050565b61044a8161044d565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6134fe8061053a83390190565b5f60208284031215610489575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104ac575f80fd5b9392505050565b604081525f83518060408401525f5b818110156104df57602081870181015160608684010152016104c2565b505f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a060405234801562000010575f80fd5b50604051620034fe380380620034fe8339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b6080516133ed620001115f395f818160da01526119f901526133ed5ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af36600461245f565b6101e0565b005b6100b46100c4366004612504565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004612543565b6104af565b348015610143575f80fd5b506100b46101523660046125db565b610665565b6100b46101653660046125fd565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db3660046125db565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b761265c565b60200260200101819052506102cb81610b46565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b90849087908790600401612857565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b95565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff8111156103745761037461262f565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c576104678585838181106104505761045061265c565b9050602002810190610462919061291a565b6109d2565b8282815181106104795761047961265c565b6020908102919091010152600101610433565b5061049681610b46565b61049f81610b95565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d261262f565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae8787838181106104505761045061265c565b8282815181106105c0576105c061265c565b6020908102919091010152600101610591565b506105dd81610b46565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d90849088908890600401612857565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b95565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f815181106108475761084761265c565b602002602001018190525061085b81610b46565b61086481610b95565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a8380612956565b810190610a579190612d7d565b90505f610a6382610ce0565b9050610a6f8183610f10565b610a7882611109565b6040805160a081018252835181526080840151805160209182015193860151929391840192610aa992909190611265565b81526080840151805160209182015160608701519290930192610acd929190611333565b8152602001858060200190610ae29190612956565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001829052608083015160408101518151606090920151929550610b3f92869290611418565b5050919050565b80515f5b8181101561034c575f838281518110610b6557610b6561265c565b60200260200101519050610b7881611425565b610b828133611902565b610b8c81336119f7565b50600101610b4a565b80515f5b81811015610ccf575f838281518110610bb457610bb461265c565b602002602001015190505f81604001515190505f5b81811015610c31575f83604001518281518110610be857610be861265c565b60200260200101519050610c2881604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611cfc9092919063ffffffff16565b50600101610bc9565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c7957610c7961265c565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610cbd91815260200190565b60405180910390a45050600101610b99565b5047156104ab576104ab3347611d43565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c8201525f9060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181526080830190915260528083529091906132ab60208301396040518060c00160405280608d815260200161332b608d9139604051602001610e5f93929190612e72565b60405160208183030381529060405280519060200120610e81835f0151611dd9565b6020808501516040808701518051938101519101516060880151929392610ea790611e72565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f57576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808260a00151806020019051810190610f719190612eb4565b915091505f8360a00151604081518110610f8d57610f8d61265c565b602001015160f81c60f81b60f81c90505f6001868660800151604051602001610fb69190612ed6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ff29291602001612f64565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa15801561106b573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161415806110ca575073ffffffffffffffffffffffffffffffffffffffff8116155b15611101576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b608080820151015115611172578060400151602001518160800151608001511115611160576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111b9576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8160600151518110156104ab575f826060015182815181106111df576111df61265c565b602002602001015190505f836080015160a0015183815181106112045761120461265c565b60200260200101519050805f1461125b578160200151811015611253576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111bb565b61129c60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b8360400151846020015111156112de576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6112f3856020015186604001518686611f0d565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff8111156113515761135161262f565b6040519080825280602002602001820160405280156113b957816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161136f5790505b5091505f5b8181101561140f576113ea8682815181106113db576113db61265c565b60200260200101518686611f89565b8382815181106113fc576113fc61265c565b60209081029190910101526001016113be565b50509392505050565b61065f8484848442612056565b60015473ffffffffffffffffffffffffffffffffffffffff166114455750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061149b908590600401612f89565b5f60405180830381865afa1580156114b5573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114fa9190810190612f9b565b6040830151518151919250905f6115118284613091565b67ffffffffffffffff8111156115295761152961262f565b60405190808252806020026020018201604052801561159157816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115475790505b5090505f5b838110156115e157856040015181815181106115b4576115b461265c565b60200260200101518282815181106115ce576115ce61265c565b6020908102919091010152600101611596565b505f805f5b848110156118f1575f8782815181106116015761160161265c565b602002602001015190505f5b828110156116bc578881815181106116275761162761265c565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036116b45781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b60010161160d565b505f805b88811015611779575f8b6040015182815181106116df576116df61265c565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff160361177057851561175a576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117699084613091565b9250600196505b506001016116c0565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117f25784156117d9576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117eb9082613091565b9050600193505b805f036118465781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b611854816005612710612100565b826020015111156118c7578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a01815181106118dc576118dc61265c565b602090810291909101015250506001016115e6565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611953576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119cf90849086906004016130a4565b5f6040518083038186803b1580156119e5575f80fd5b505afa158015611101573d5f803e3d5ffd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611ab6846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b611ac0858561213a565b855f01516020015186608001516040518060800160405280605281526020016132ab605291396040518060c00160405280608d815260200161332b608d91396040518060600160405280602e81526020016132fd602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611c66949392916020016130d2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cd3969594939260040161315a565b5f604051808303815f87803b158015611cea575f80fd5b505af1158015611101573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611d215761034c8282611d43565b61034c73ffffffffffffffffffffffffffffffffffffffff8416338484612180565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611d99576040519150601f19603f3d011682016040523d82523d5f602084013e611d9e565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060c00160405280608d815260200161332b608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610ef398939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115611e9157611e9161262f565b6040519080825280601f01601f191660200182016040528015611ebb576020820181803683370190505b5090505f5b8351811015611efe575f611eec858381518110611edf57611edf61265c565b6020026020010151612267565b60208381028501015250600101611ec0565b50805160209091012092915050565b5f838503611f1c575083611f81565b828211611f55576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611f63575082611f81565b428310611f71575083611f81565b611f7e83834288886122dd565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611fe7576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ffc856020015186604001518686611f0d565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b6120618484836122f7565b6120f9578161209c576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b81518110156120f6575f8282815181106120bf576120bf61265c565b602002602001015190506120e8856127106120da9190613091565b602083015190612710612341565b6020909101526001016120a3565b50505b5050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612133575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806120f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5f6040518060800160405280605281526020016132ab60529139805160209182012083518483015160408087015160608801519151610ef3969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f6122eb8686868686612383565b90505b95945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416158061231a57508282115b80611f81575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612374575f80fd5b50910281810615159190040190565b5f8484106123925750806122ee565b5f61239d8786613214565b90505f6123aa8888613214565b90505f858512156123db576123cb83836123c4888a613227565b9190612100565b6123d49061324d565b90506123ed565b6123ea83836123c48989613227565b90505b6123f78187613283565b9998505050505050505050565b5f60408284031215612414575f80fd5b50919050565b5f8083601f84011261242a575f80fd5b50813567ffffffffffffffff811115612441575f80fd5b602083019150836020828501011115612458575f80fd5b9250929050565b5f805f60408486031215612471575f80fd5b833567ffffffffffffffff80821115612488575f80fd5b61249487838801612404565b945060208601359150808211156124a9575f80fd5b506124b68682870161241a565b9497909650939450505050565b5f8083601f8401126124d3575f80fd5b50813567ffffffffffffffff8111156124ea575f80fd5b6020830191508360208260051b8501011115612458575f80fd5b5f8060208385031215612515575f80fd5b823567ffffffffffffffff81111561252b575f80fd5b612537858286016124c3565b90969095509350505050565b5f805f8060408587031215612556575f80fd5b843567ffffffffffffffff8082111561256d575f80fd5b612579888389016124c3565b90965094506020870135915080821115612591575f80fd5b5061259e8782880161241a565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b80356125d6816125aa565b919050565b5f602082840312156125eb575f80fd5b81356125f6816125aa565b9392505050565b5f6020828403121561260d575f80fd5b813567ffffffffffffffff811115612623575f80fd5b611f8184828501612404565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156126a357818101518382015260200161268b565b50505f910152565b5f81518084526126c2816020860160208601612689565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b83811015612752578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612707565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d06101a08501826126ab565b9050602083015161280e6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282682826126f4565b915050606083015184820360a086015261284082826126ab565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b838110156128ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128b886835161275d565b9550938201939082019060010161287e565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261294c575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612989575f80fd5b83018035915067ffffffffffffffff8211156129a3575f80fd5b602001915036819003821315612458575f80fd5b60405160c0810167ffffffffffffffff811182821017156129da576129da61262f565b60405290565b6040516060810167ffffffffffffffff811182821017156129da576129da61262f565b6040516080810167ffffffffffffffff811182821017156129da576129da61262f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a6d57612a6d61262f565b604052919050565b5f82601f830112612a84575f80fd5b813567ffffffffffffffff811115612a9e57612a9e61262f565b612acf60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a26565b818152846020838601011115612ae3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215612b0f575f80fd5b612b176129b7565b90508135612b24816125aa565b81526020820135612b34816125aa565b8060208301525060408201356040820152606082013560608201526080820135612b5d816125aa565b608082015260a082013567ffffffffffffffff811115612b7b575f80fd5b612b8784828501612a75565b60a08301525092915050565b5f60608284031215612ba3575f80fd5b612bab6129e0565b90508135612bb8816125aa565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612bef57612bef61262f565b5060051b60200190565b5f82601f830112612c08575f80fd5b81356020612c1d612c1883612bd6565b612a26565b82815260079290921b84018101918181019086841115612c3b575f80fd5b8286015b84811015612c9e5760808189031215612c56575f80fd5b612c5e612a03565b8135612c69816125aa565b8152818501358582015260408083013590820152606080830135612c8c816125aa565b90820152835291830191608001612c3f565b509695505050505050565b5f60c08284031215612cb9575f80fd5b612cc16129b7565b905081358152602080830135818301526040830135612cdf816125aa565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d13575f80fd5b8301601f81018513612d23575f80fd5b8035612d31612c1882612bd6565b81815260059190911b82018301908381019087831115612d4f575f80fd5b928401925b82841015612d6d57833582529284019290840190612d54565b60a0860152509295945050505050565b5f60208284031215612d8d575f80fd5b813567ffffffffffffffff80821115612da4575f80fd5b908301906101008286031215612db8575f80fd5b612dc06129b7565b823582811115612dce575f80fd5b612dda87828601612aff565b825250612de9602084016125cb565b6020820152612dfb8660408501612b93565b604082015260a083013582811115612e11575f80fd5b612e1d87828601612bf9565b60608301525060c083013582811115612e34575f80fd5b612e4087828601612ca9565b60808301525060e083013582811115612e57575f80fd5b612e6387828601612a75565b60a08301525095945050505050565b5f8451612e83818460208901612689565b845190830190612e97818360208901612689565b8451910190612eaa818360208801612689565b0195945050505050565b5f8060408385031215612ec5575f80fd5b505080516020909101519092909150565b5f602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c0808601528181518084526101008701915084830193505f92505b80831015612c9e5783518252928401926001929092019190840190612f44565b8281525f8251612f7b816020850160208701612689565b919091016020019392505050565b602081525f6125f6602083018461275d565b5f6020808385031215612fac575f80fd5b825167ffffffffffffffff811115612fc2575f80fd5b8301601f81018513612fd2575f80fd5b8051612fe0612c1882612bd6565b81815260609182028301840191848201919088841115612ffe575f80fd5b938501935b838510156130585780858a031215613019575f80fd5b6130216129e0565b855161302c816125aa565b81528587015187820152604080870151613045816125aa565b9082015283529384019391850191613003565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561217a5761217a613064565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611f81604083018461275d565b7f563244757463684f72646572207769746e65737329000000000000000000000081525f8551613109816015850160208a01612689565b855190830190613120816015840160208a01612689565b8551910190613136816015840160208901612689565b845191019061314c816015840160208801612689565b016015019695505050505050565b5f610140613189838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131ca6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526131ff818401866126ab565b90508281036101208401526123f781856126ab565b8181038181111561217a5761217a613064565b8181035f83128015838313168383128216171561324657613246613064565b5092915050565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361327d5761327d613064565b505f0390565b8082018281125f8312801582168215821617156132a2576132a2613064565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220102b8a41af3e3ee0b3f412e829dc602991bc894dd17ff58ec5883953c3db934f64736f6c63430008180033a264697066735822122065782daff27750276e396e855b0fe8c22348f7f8f340d0b73a7efb2b6cb8a41864736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x89W[`\0\x80\xFD[\0[a\0Pa\0\xACV[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x9C\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x80V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01YW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01}\x91\x90a\x04\x93V[\x90Pa\x01\xBE`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02)W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02=W=`\0\x80>=`\0\xFD[PPPP`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02d\x90a\x04\x86V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02\xA8W=`\0\x80>=`\0\xFD[P\x90Pa\x02\xEA`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03UW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03iW=`\0\x80>=`\0\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04U\x82\x82`@Q`$\x01a\x03\xDA\x92\x91\x90a\x04\xD0V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04YV[PPV[a\x04b\x81a\x04eV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a5\xE8\x80a\x05Z\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x04\xA5W`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xC9W`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0\x83Q\x80`@\x84\x01R`\0[\x81\x81\x10\x15a\x04\xFEW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xE1V[P`\0``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x005\xE88\x03\x80b\x005\xE8\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa4\xCFb\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x1AS\x01Ra4\xCF`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$\xE4V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a%\x92V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%\xD4V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a&rV[a\x06\x83V[a\0\xB9a\x01l6`\x04a&\x96V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a&rV[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&\xFAV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xBEV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\xC3V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BmV[a\x04\xB5\x81a\x0B\xBEV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xBEV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&\xFAV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BmV[a\x08\x86\x81a\x0B\xBEV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a*\x01V[\x81\x01\x90a\n|\x91\x90a.@V[\x90P`\0a\n\x89\x82a\r\x11V[\x90Pa\n\x95\x81\x83a\x0FCV[a\n\x9E\x82a\x11BV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xCF\x92\x90\x91\x90a\x12\xA2V[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xF3\x92\x91\x90a\x13tV[\x81R` \x01\x85\x80` \x01\x90a\x0B\x08\x91\x90a*\x01V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0Bf\x92\x86\x92\x90a\x14[V[PP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x8EWa\x0B\x8Ea&\xFAV[` \x02` \x01\x01Q\x90Pa\x0B\xA1\x81a\x14hV[a\x0B\xAB\x813a\x19XV[a\x0B\xB5\x813a\x1AQV[P`\x01\x01a\x0BrV[\x80Q`\0[\x81\x81\x10\x15a\r\0W`\0\x83\x82\x81Q\x81\x10a\x0B\xDFWa\x0B\xDFa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C`W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x16Wa\x0C\x16a&\xFAV[` \x02` \x01\x01Q\x90Pa\x0CW\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D]\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xF6V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\xA9Wa\x0C\xA9a&\xFAV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xEE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xC3V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1D\xA4V[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\0\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a3\x8D` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q` \x01a\x0E\x91\x93\x92\x91\x90a/=V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\xB4\x83`\0\x01Qa\x1E>V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xDA\x90a\x1E\xD8V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0F\x8AW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0F\xA5\x91\x90a/\x80V[\x91P\x91P`\0\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\xC2Wa\x0F\xC2a&\xFAV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P`\0`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xEC\x91\x90a/\xA4V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10(\x92\x91` \x01a04V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10\xA4W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x11\x03WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11:W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11\xABW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11\x99W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xF2W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0[\x81``\x01QQ\x81\x10\x15a\x04\xC1W`\0\x82``\x01Q\x82\x81Q\x81\x10a\x12\x1AWa\x12\x1Aa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12@Wa\x12@a&\xFAV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12\x98W\x81` \x01Q\x81\x10\x15a\x12\x90W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xF5V[a\x12\xDC`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x13\x1EW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x134\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x92Wa\x13\x92a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB0W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x14RWa\x14-\x86\x82\x81Q\x81\x10a\x14\x1EWa\x14\x1Ea&\xFAV[` \x02` \x01\x01Q\x86\x86a\x1F\xF3V[\x83\x82\x81Q\x81\x10a\x14?Wa\x14?a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x01V[PP\x93\x92PPPV[a\x06}\x84\x84\x84\x84Ba \xC3V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14\x88WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\xDF\x90\x85\x90`\x04\x01a0ZV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xFCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a0mV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x15Z\x82\x84a1lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15rWa\x15ra&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\xDBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15\x90W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x16,W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xFFWa\x15\xFFa&\xFAV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x19Wa\x16\x19a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\xE1V[P`\0\x80`\0[\x84\x81\x10\x15a\x19GW`\0\x87\x82\x81Q\x81\x10a\x16OWa\x16Oa&\xFAV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\rW\x88\x81\x81Q\x81\x10a\x16vWa\x16va&\xFAV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x05W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x16\\V[P`\0\x80[\x88\x81\x10\x15a\x17\xCEW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x172Wa\x172a&\xFAV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xC5W\x85\x15a\x17\xAFW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17\xBE\x90\x84a1lV[\x92P`\x01\x96P[P`\x01\x01a\x17\x12V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18GW\x84\x15a\x18.W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18@\x90\x82a1lV[\x90P`\x01\x93P[\x80`\0\x03a\x18\x9CW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18\xAA\x81`\x05a'\x10a!oV[\x82` \x01Q\x11\x15a\x19\x1DW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x192Wa\x192a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x163V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19\xA9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A%\x90\x84\x90\x86\x90`\x04\x01a1\x7FV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A=W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x11\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1B\x1B\x85\x85a!\xABV[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a3\xDF`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xC2\x94\x93\x92\x91` \x01a1\xAEV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1D/\x96\x95\x94\x93\x92`\x04\x01a27V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1DIW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D\x82Wa\x03_\x82\x82a\x1D\xA4V[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xF2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1E\x03V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0F&\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xF8Wa\x1E\xF8a&\xCBV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1F\"W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1FgW`\0a\x1FU\x85\x83\x81Q\x81\x10a\x1FHWa\x1FHa&\xFAV[` \x02` \x01\x01Qa\"\xDDV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1F(V[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x83\x85\x03a\x1F\x86WP\x83a\x1F\xEBV[\x82\x82\x11a\x1F\xBFW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1F\xCDWP\x82a\x1F\xEBV[B\x83\x10a\x1F\xDBWP\x83a\x1F\xEBV[a\x1F\xE8\x83\x83B\x88\x88a#TV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a RW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a h\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a \xCE\x84\x84\x83a#oV[a!hW\x81a!\tW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a!eW`\0\x82\x82\x81Q\x81\x10a!.Wa!.a&\xFAV[` \x02` \x01\x01Q\x90Pa!W\x85a'\x10a!I\x91\x90a1lV[` \x83\x01Q\x90a'\x10a#\xBAV[` \x90\x91\x01R`\x01\x01a!\x11V[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xA4W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a!hW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0F&\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0a#c\x86\x86\x86\x86\x86a#\xFEV[\x90P[\x95\x94PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x93WP\x82\x82\x11[\x80a\x1F\xEBWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xEFW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a$\x0EWP\x80a#fV[`\0a$\x1A\x87\x86a2\xF2V[\x90P`\0a$(\x88\x88a2\xF2V[\x90P`\0\x85\x85\x12\x15a$ZWa$J\x83\x83a$C\x88\x8Aa3\x05V[\x91\x90a!oV[a$S\x90a3,V[\x90Pa$lV[a$i\x83\x83a$C\x89\x89a3\x05V[\x90P[a$v\x81\x87a3dV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a$\x95W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\xADW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xC5W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$\xF9W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%\x11W`\0\x80\xFD[a%\x1D\x87\x83\x88\x01a$\x83V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a%3W`\0\x80\xFD[Pa%@\x86\x82\x87\x01a$\x9BV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a%_W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%wW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\xA5W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xBCW`\0\x80\xFD[a%\xC8\x85\x82\x86\x01a%MV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%\xEAW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a&\x02W`\0\x80\xFD[a&\x0E\x88\x83\x89\x01a%MV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a&'W`\0\x80\xFD[Pa&4\x87\x82\x88\x01a$\x9BV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a&m\x81a&@V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a&\x84W`\0\x80\xFD[\x815a&\x8F\x81a&@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a&\xA8W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\xBFW`\0\x80\xFD[a\x1F\xEB\x84\x82\x85\x01a$\x83V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a'DW\x81\x81\x01Q\x83\x82\x01R` \x01a',V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra'e\x81` \x86\x01` \x86\x01a')V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'\xF7W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\xACV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra(va\x01\xA0\x85\x01\x82a'MV[\x90P` \x83\x01Qa(\xB4` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(\xCC\x82\x82a'\x97V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(\xE6\x82\x82a'MV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a)rW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra)`\x86\x83Qa(\x02V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a)&V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)\xF7W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a*6W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*QW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$\xDDW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a+\x1CWa+\x1Ca&\xCBV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a+5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+OWa+Oa&\xCBV[a+\x80` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*\xD5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a+\x95W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+\xC4W`\0\x80\xFD[a+\xCCa*fV[\x90P\x815a+\xD9\x81a&@V[\x81R` \x82\x015a+\xE9\x81a&@V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a,\x12\x81a&@V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,1W`\0\x80\xFD[a,=\x84\x82\x85\x01a+$V[`\xA0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a,[W`\0\x80\xFD[a,ca*\x8FV[\x90P\x815a,p\x81a&@V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xA8Wa,\xA8a&\xCBV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,\xC3W`\0\x80\xFD[\x815` a,\xD8a,\xD3\x83a,\x8EV[a*\xD5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\xF7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a-\\W`\x80\x81\x89\x03\x12\x15a-\x14W`\0\x80\x81\xFD[a-\x1Ca*\xB2V[\x815a-'\x81a&@V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a-J\x81a&@V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,\xFBV[P\x96\x95PPPPPPV[`\0`\xC0\x82\x84\x03\x12\x15a-yW`\0\x80\xFD[a-\x81a*fV[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a-\x9F\x81a&@V[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\xD4W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-\xE5W`\0\x80\xFD[\x805a-\xF3a,\xD3\x82a,\x8EV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a.\x12W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a.0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a.\x17V[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.RW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a.jW`\0\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a.\x7FW`\0\x80\xFD[a.\x87a*fV[\x825\x82\x81\x11\x15a.\x96W`\0\x80\xFD[a.\xA2\x87\x82\x86\x01a+\xB2V[\x82RPa.\xB1` \x84\x01a&bV[` \x82\x01Ra.\xC3\x86`@\x85\x01a,IV[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\xDAW`\0\x80\xFD[a.\xE6\x87\x82\x86\x01a,\xB2V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.\xFEW`\0\x80\xFD[a/\n\x87\x82\x86\x01a-gV[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a/\"W`\0\x80\xFD[a/.\x87\x82\x86\x01a+$V[`\xA0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa/O\x81\x84` \x89\x01a')V[\x84Q\x90\x83\x01\x90a/c\x81\x83` \x89\x01a')V[\x84Q\x91\x01\x90a/v\x81\x83` \x88\x01a')V[\x01\x95\x94PPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a/\x93W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a-\\W\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a0\x14V[\x82\x81R`\0\x82Qa0L\x81` \x85\x01` \x87\x01a')V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R`\0a&\x8F` \x83\x01\x84a(\x02V[`\0` \x80\x83\x85\x03\x12\x15a0\x80W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\x97W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a0\xA8W`\0\x80\xFD[\x80Qa0\xB6a,\xD3\x82a,\x8EV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a0\xD5W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a11W\x80\x85\x8A\x03\x12\x15a0\xF2W`\0\x80\x81\xFD[a0\xFAa*\x8FV[\x85Qa1\x05\x81a&@V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa1\x1E\x81a&@V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\xDAV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a!\xECWa!\xECa1=V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1F\xEB`@\x83\x01\x84a(\x02V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x85Qa1\xE6\x81`\x15\x85\x01` \x8A\x01a')V[\x85Q\x90\x83\x01\x90a1\xFD\x81`\x15\x84\x01` \x8A\x01a')V[\x85Q\x91\x01\x90a2\x13\x81`\x15\x84\x01` \x89\x01a')V[\x84Q\x91\x01\x90a2)\x81`\x15\x84\x01` \x88\x01a')V[\x01`\x15\x01\x96\x95PPPPPPV[`\0a\x01@a2g\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra2\xA8`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra2\xDD\x81\x84\x01\x86a'MV[\x90P\x82\x81\x03a\x01 \x84\x01Ra$v\x81\x85a'MV[\x81\x81\x03\x81\x81\x11\x15a!\xECWa!\xECa1=V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a3%Wa3%a1=V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a3]Wa3]a1=V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a3\x84Wa3\x84a1=V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x1B}A\xA2\x88\x87 \x94\xE2d=\x8E\xFD-}/\xA9{d22U\0\xB0\x02\x9B\x8B\x9A@].DdsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xD9w8|q\x93=7\xA9^\xE4#\xC1\xCB\x17R\x88\x1F\xA0D\x82\xEA\x06\x02Q3\x1D\xD8\xED\xD9\xBB\xF9dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x86W[_\x80\xFD[\0[a\0Ma\0\xA9V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x99\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0}V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01RW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01v\x91\x90a\x04yV[\x90Pa\x01\xB7`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\x1EW_\x80\xFD[PZ\xF1\x15\x80\x15a\x020W=_\x80>=_\xFD[PPPP_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02U\x90a\x04lV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02\x96W=_\x80>=_\xFD[P\x90Pa\x02\xD8`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03?W_\x80\xFD[PZ\xF1\x15\x80\x15a\x03QW=_\x80>=_\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04=\x82\x82`@Q`$\x01a\x03\xC2\x92\x91\x90a\x04\xB3V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04AV[PPV[a\x04J\x81a\x04MV[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a4\xFE\x80a\x05:\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x04\x89W_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xACW_\x80\xFD[\x93\x92PPPV[`@\x81R_\x83Q\x80`@\x84\x01R_[\x81\x81\x10\x15a\x04\xDFW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xC2V[P_``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x004\xFE8\x03\x80b\x004\xFE\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa3\xEDb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x19\xF9\x01Ra3\xED_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a$_V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a%\x04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a%CV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%\xDBV[a\x06eV[a\0\xB4a\x01e6`\x04a%\xFDV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%\xDBV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a&\\V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x95V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a)\x1AV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0BFV[a\x04\x9F\x81a\x0B\x95V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x95V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga&\\V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0BFV[a\x08d\x81a\x0B\x95V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a)VV[\x81\x01\x90a\nW\x91\x90a-}V[\x90P_a\nc\x82a\x0C\xE0V[\x90Pa\no\x81\x83a\x0F\x10V[a\nx\x82a\x11\tV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xA9\x92\x90\x91\x90a\x12eV[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xCD\x92\x91\x90a\x133V[\x81R` \x01\x85\x80` \x01\x90a\n\xE2\x91\x90a)VV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0B?\x92\x86\x92\x90a\x14\x18V[PP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea&\\V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x14%V[a\x0B\x82\x813a\x19\x02V[a\x0B\x8C\x813a\x19\xF7V[P`\x01\x01a\x0BJV[\x80Q_[\x81\x81\x10\x15a\x0C\xCFW_\x83\x82\x81Q\x81\x10a\x0B\xB4Wa\x0B\xB4a&\\V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C1W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xE8Wa\x0B\xE8a&\\V[` \x02` \x01\x01Q\x90Pa\x0C(\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xFC\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xC9V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CyWa\x0Cya&\\V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xBD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x99V[PG\x15a\x04\xABWa\x04\xAB3Ga\x1DCV[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R_\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a2\xAB` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q` \x01a\x0E_\x93\x92\x91\x90a.rV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\x81\x83_\x01Qa\x1D\xD9V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xA7\x90a\x1ErV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0FWW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0Fq\x91\x90a.\xB4V[\x91P\x91P_\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\x8DWa\x0F\x8Da&\\V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P_`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xB6\x91\x90a.\xD6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\xF2\x92\x91` \x01a/dV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 _\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10kW=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x10\xCAWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11\x01W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11rW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xB9W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x81``\x01QQ\x81\x10\x15a\x04\xABW_\x82``\x01Q\x82\x81Q\x81\x10a\x11\xDFWa\x11\xDFa&\\V[` \x02` \x01\x01Q\x90P_\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12\x04Wa\x12\x04a&\\V[` \x02` \x01\x01Q\x90P\x80_\x14a\x12[W\x81` \x01Q\x81\x10\x15a\x12SW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xBBV[a\x12\x9C`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x12\xDEW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x12\xF3\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13QWa\x13Qa&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xB9W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13oW\x90P[P\x91P_[\x81\x81\x10\x15a\x14\x0FWa\x13\xEA\x86\x82\x81Q\x81\x10a\x13\xDBWa\x13\xDBa&\\V[` \x02` \x01\x01Q\x86\x86a\x1F\x89V[\x83\x82\x81Q\x81\x10a\x13\xFCWa\x13\xFCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBEV[PP\x93\x92PPPV[a\x06_\x84\x84\x84\x84Ba VV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14EWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\x9B\x90\x85\x90`\x04\x01a/\x89V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xB5W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xFA\x91\x90\x81\x01\x90a/\x9BV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\x11\x82\x84a0\x91V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15)Wa\x15)a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\x91W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15GW\x90P[P\x90P_[\x83\x81\x10\x15a\x15\xE1W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xB4Wa\x15\xB4a&\\V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xCEWa\x15\xCEa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\x96V[P_\x80_[\x84\x81\x10\x15a\x18\xF1W_\x87\x82\x81Q\x81\x10a\x16\x01Wa\x16\x01a&\\V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16\xBCW\x88\x81\x81Q\x81\x10a\x16'Wa\x16'a&\\V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\xB4W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\rV[P_\x80[\x88\x81\x10\x15a\x17yW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xDFWa\x16\xDFa&\\V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17pW\x85\x15a\x17ZW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17i\x90\x84a0\x91V[\x92P`\x01\x96P[P`\x01\x01a\x16\xC0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xF2W\x84\x15a\x17\xD9W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xEB\x90\x82a0\x91V[\x90P`\x01\x93P[\x80_\x03a\x18FW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x18T\x81`\x05a'\x10a!\0V[\x82` \x01Q\x11\x15a\x18\xC7W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xDCWa\x18\xDCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xE6V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19SW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xCF\x90\x84\x90\x86\x90`\x04\x01a0\xA4V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xE5W_\x80\xFD[PZ\xFA\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xB6\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1A\xC0\x85\x85a!:V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\xFD`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1Cf\x94\x93\x92\x91` \x01a0\xD2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xD3\x96\x95\x94\x93\x92`\x04\x01a1ZV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xEAW_\x80\xFD[PZ\xF1\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D!Wa\x03L\x82\x82a\x1DCV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\x80V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\x99W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\x9EV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0E\xF3\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\x91Wa\x1E\x91a&/V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xBBW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xFEW_a\x1E\xEC\x85\x83\x81Q\x81\x10a\x1E\xDFWa\x1E\xDFa&\\V[` \x02` \x01\x01Qa\"gV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xC0V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x83\x85\x03a\x1F\x1CWP\x83a\x1F\x81V[\x82\x82\x11a\x1FUW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1FcWP\x82a\x1F\x81V[B\x83\x10a\x1FqWP\x83a\x1F\x81V[a\x1F~\x83\x83B\x88\x88a\"\xDDV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1F\xE7W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xFC\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a a\x84\x84\x83a\"\xF7V[a \xF9W\x81a \x9CW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a \xF6W_\x82\x82\x81Q\x81\x10a \xBFWa \xBFa&\\V[` \x02` \x01\x01Q\x90Pa \xE8\x85a'\x10a \xDA\x91\x90a0\x91V[` \x83\x01Q\x90a'\x10a#AV[` \x90\x91\x01R`\x01\x01a \xA3V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!3W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a \xF9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0E\xF3\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_a\"\xEB\x86\x86\x86\x86\x86a#\x83V[\x90P[\x95\x94PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x1AWP\x82\x82\x11[\x80a\x1F\x81WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#tW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a#\x92WP\x80a\"\xEEV[_a#\x9D\x87\x86a2\x14V[\x90P_a#\xAA\x88\x88a2\x14V[\x90P_\x85\x85\x12\x15a#\xDBWa#\xCB\x83\x83a#\xC4\x88\x8Aa2'V[\x91\x90a!\0V[a#\xD4\x90a2MV[\x90Pa#\xEDV[a#\xEA\x83\x83a#\xC4\x89\x89a2'V[\x90P[a#\xF7\x81\x87a2\x83V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a$\x14W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a$*W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$AW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$XW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a$qW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\x88W_\x80\xFD[a$\x94\x87\x83\x88\x01a$\x04V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\xA9W_\x80\xFD[Pa$\xB6\x86\x82\x87\x01a$\x1AV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$\xD3W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xEAW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$XW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a%\x15W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%+W_\x80\xFD[a%7\x85\x82\x86\x01a$\xC3V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a%VW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%mW_\x80\xFD[a%y\x88\x83\x89\x01a$\xC3V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x91W_\x80\xFD[Pa%\x9E\x87\x82\x88\x01a$\x1AV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a%\xD6\x81a%\xAAV[\x91\x90PV[_` \x82\x84\x03\x12\x15a%\xEBW_\x80\xFD[\x815a%\xF6\x81a%\xAAV[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a&\rW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&#W_\x80\xFD[a\x1F\x81\x84\x82\x85\x01a$\x04V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&\xC2\x81` \x86\x01` \x86\x01a&\x89V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a'RW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x07V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD0a\x01\xA0\x85\x01\x82a&\xABV[\x90P` \x83\x01Qa(\x0E` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(&\x82\x82a&\xF4V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(@\x82\x82a&\xABV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(\xCAW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xB8\x86\x83Qa']V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(~V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)LW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x89W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xA3W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$XW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*mWa*ma&/V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a*\x84W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\x9EWa*\x9Ea&/V[a*\xCF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*&V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xE3W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a+\x0FW_\x80\xFD[a+\x17a)\xB7V[\x90P\x815a+$\x81a%\xAAV[\x81R` \x82\x015a+4\x81a%\xAAV[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a+]\x81a%\xAAV[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+{W_\x80\xFD[a+\x87\x84\x82\x85\x01a*uV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+\xA3W_\x80\xFD[a+\xABa)\xE0V[\x90P\x815a+\xB8\x81a%\xAAV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+\xEFWa+\xEFa&/V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a,\x08W_\x80\xFD[\x815` a,\x1Da,\x18\x83a+\xD6V[a*&V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,;W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\x9EW`\x80\x81\x89\x03\x12\x15a,VW_\x80\xFD[a,^a*\x03V[\x815a,i\x81a%\xAAV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x8C\x81a%\xAAV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,?V[P\x96\x95PPPPPPV[_`\xC0\x82\x84\x03\x12\x15a,\xB9W_\x80\xFD[a,\xC1a)\xB7V[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a,\xDF\x81a%\xAAV[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\x13W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-#W_\x80\xFD[\x805a-1a,\x18\x82a+\xD6V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a-OW_\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a-mW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a-TV[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-\x8DW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-\xA4W_\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a-\xB8W_\x80\xFD[a-\xC0a)\xB7V[\x825\x82\x81\x11\x15a-\xCEW_\x80\xFD[a-\xDA\x87\x82\x86\x01a*\xFFV[\x82RPa-\xE9` \x84\x01a%\xCBV[` \x82\x01Ra-\xFB\x86`@\x85\x01a+\x93V[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\x11W_\x80\xFD[a.\x1D\x87\x82\x86\x01a+\xF9V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.4W_\x80\xFD[a.@\x87\x82\x86\x01a,\xA9V[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a.WW_\x80\xFD[a.c\x87\x82\x86\x01a*uV[`\xA0\x83\x01RP\x95\x94PPPPPV[_\x84Qa.\x83\x81\x84` \x89\x01a&\x89V[\x84Q\x90\x83\x01\x90a.\x97\x81\x83` \x89\x01a&\x89V[\x84Q\x91\x01\x90a.\xAA\x81\x83` \x88\x01a&\x89V[\x01\x95\x94PPPPPV[_\x80`@\x83\x85\x03\x12\x15a.\xC5W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[_` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a,\x9EW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a/DV[\x82\x81R_\x82Qa/{\x81` \x85\x01` \x87\x01a&\x89V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R_a%\xF6` \x83\x01\x84a']V[_` \x80\x83\x85\x03\x12\x15a/\xACW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/\xC2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD2W_\x80\xFD[\x80Qa/\xE0a,\x18\x82a+\xD6V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/\xFEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a0XW\x80\x85\x8A\x03\x12\x15a0\x19W_\x80\xFD[a0!a)\xE0V[\x85Qa0,\x81a%\xAAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa0E\x81a%\xAAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\x03V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a!zWa!za0dV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1F\x81`@\x83\x01\x84a']V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_\x85Qa1\t\x81`\x15\x85\x01` \x8A\x01a&\x89V[\x85Q\x90\x83\x01\x90a1 \x81`\x15\x84\x01` \x8A\x01a&\x89V[\x85Q\x91\x01\x90a16\x81`\x15\x84\x01` \x89\x01a&\x89V[\x84Q\x91\x01\x90a1L\x81`\x15\x84\x01` \x88\x01a&\x89V[\x01`\x15\x01\x96\x95PPPPPPV[_a\x01@a1\x89\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\xCA`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1\xFF\x81\x84\x01\x86a&\xABV[\x90P\x82\x81\x03a\x01 \x84\x01Ra#\xF7\x81\x85a&\xABV[\x81\x81\x03\x81\x81\x11\x15a!zWa!za0dV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a2FWa2Fa0dV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a2}Wa2}a0dV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a2\xA2Wa2\xA2a0dV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x10+\x8AA\xAF>>\xE0\xB3\xF4\x12\xE8)\xDC`)\x91\xBC\x89M\xD1\x7F\xF5\x8E\xC5\x889S\xC3\xDB\x93OdsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 ex-\xAF\xF2wP'n9n\x85[\x0F\xE8\xC2#H\xF7\xF8\xF3@\xD0\xB7:~\xFB+l\xB8\xA4\x18dsolcC\0\x08\x18\x003", ); /**```solidity struct V2DutchOrderDeployment { address permit2; address reactor; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct V2DutchOrderDeployment { + #[allow(missing_docs)] pub permit2: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -303,16 +316,22 @@ struct V2DutchOrderDeployment { address permit2; address reactor; } ```solidity function IS_SCRIPT() external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTCall {} ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -416,16 +435,22 @@ function IS_SCRIPT() external view returns (bool); ```solidity function run() external returns (V2DutchOrderDeployment memory deployment); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct runCall {} ///Container type for the return parameters of the [`run()`](runCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct runReturn { + #[allow(missing_docs)] pub deployment: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -531,14 +556,19 @@ function run() external returns (V2DutchOrderDeployment memory deployment); ```solidity function setUp() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUpCall {} ///Container type for the return parameters of the [`setUp()`](setUpCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUpReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -640,8 +670,11 @@ function setUp() external; }; ///Container for all the [`DeployDutchV2`](self) function calls. pub enum DeployDutchV2Calls { + #[allow(missing_docs)] IS_SCRIPT(IS_SCRIPTCall), + #[allow(missing_docs)] run(runCall), + #[allow(missing_docs)] setUp(setUpCall), } #[automatically_derived] @@ -682,7 +715,7 @@ function setUp() external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -740,7 +773,7 @@ function setUp() external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/deploydutchv3.rs b/crates/bindings-uniswapx/src/deploydutchv3.rs index 169e3eb..2094011 100644 --- a/crates/bindings-uniswapx/src/deploydutchv3.rs +++ b/crates/bindings-uniswapx/src/deploydutchv3.rs @@ -64,40 +64,53 @@ interface DeployDutchV3 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod DeployDutchV3 { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50614c53806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610089575b600080fd5b005b6100506100ac565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252015b60405180910390f35b600c5461009c9062010000900460ff1681565b6040519015158152602001610080565b60408051808201909152600080825260208201526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e455200000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017d9190610493565b90506101be6040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561022957600080fd5b505af115801561023d573d6000803e3d6000fd5b5050505060008060001b6e22d473030f116ddee9f6b43ac78ba38360405161026490610486565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156102a8573d6000803e3d6000fd5b5090506102ea6040518060400160405280600781526020017f52656163746f7200000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035557600080fd5b505af1158015610369573d6000803e3d6000fd5b5050505060405180604001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b61045582826040516024016103da9291906104d0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610459565b5050565b61046281610465565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6146c48061055a83390190565b6000602082840312156104a557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104c957600080fd5b9392505050565b604081526000835180604084015260005b818110156104fe57602081870181015160608684010152016104e1565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60c06040523480156200001157600080fd5b50604051620046c4380380620046c483398101604081905262000034916200016a565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805261a4b0194601620000bf576001600160401b0362000985620000e060201b171660a052620000d8565b6001600160401b03620009fc6200014d60201b171660a0525b5050620001c3565b600060646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001489190620001a9565b905090565b4390565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b600060208284031215620001bc57600080fd5b5051919050565b60805160a0516144d5620001ef6000396000610b2901526000818160e00152611b3201526144d56000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004613047565b6101eb565b005b6100b96100c93660046130f5565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004613137565b6104c5565b34801561014a57600080fd5b506100b96101593660046131d5565b610683565b6100b961016c3660046131f2565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046131d5565b610894565b6101f3610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b284610a71565b816000815181106102c5576102c5613256565b60200260200101819052506102d981610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401613459565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610c73565b5061035f6001600255565b505050565b61036c610a00565b8060008167ffffffffffffffff81111561038857610388613227565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466613256565b9050602002810190610478919061351f565b610a71565b82828151811061048f5761048f613256565b6020908102919091010152600101610449565b506104ac81610c22565b6104b581610c73565b50506104c16001600255565b5050565b6104cd610a00565b8260008167ffffffffffffffff8111156104e9576104e9613227565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466613256565b8282815181106105d9576105d9613256565b60209081029190910101526001016105aa565b506105f681610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401613459565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610c73565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae57905050905061085682610a71565b8160008151811061086957610869613256565b602002602001018190525061087d81610c22565b61088681610c73565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f7919061355d565b905090565b4390565b6002805403610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610aea8380613576565b810190610af79190613b44565b90506000610b0482610dc6565b9050610b1081836110ac565b610b1982611108565b610b228261126c565b6000610b507f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b90506040518060a0016040528084600001518152602001610b888560a00151600001518487606001516113799092919063ffffffff16565b815260a0850151516080860151602090920191610ba59185611444565b8152602001868060200190610bba9190613576565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602090810184905260a0850151908101518151604090920151929650610c1a928792908561152b565b505050919050565b805160005b8181101561035f576000838281518110610c4357610c43613256565b60200260200101519050610c568161153f565b610c608133611a2f565b610c6a8133611b30565b50600101610c27565b805160005b81811015610db5576000838281518110610c9457610c94613256565b602002602001015190506000816040015151905060005b81811015610d1557600083604001518281518110610ccb57610ccb613256565b60200260200101519050610d0c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611f329092919063ffffffff16565b50600101610cab565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610d5e57610d5e613256565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610da391815260200190565b60405180910390a45050600101610c78565b5047156104c1576104c13347611f79565b6040517f563344757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8201527f56334475746368496e7075742062617365496e7075742c00000000000000000060658201527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c820152600090609801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208301527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348301527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b83015290606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906144136020830139604051602001610fa990613c5c565b604051602081830303815290604052604051602001610fc790613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110069594939291602001613ea6565b604051602081830303815290604052805190602001206110298360000151612013565b8360200151846040015161104086606001516120ad565b61104d87608001516121fe565b60408051602081019790975286019490945273ffffffffffffffffffffffffffffffffffffffff9092166060850152608084015260a083015260c082015260e0015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110eb576040517fb08ce5b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516104c1906110fe838561229f565b8360c00151612314565b60a08101516060015115611174578060600151602001518160a00151606001511115611160576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160609081015190820151602001525b8060800151518160a001516080015151146111bb576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808101515160005b8181101561035f576000836080015182815181106111e4576111e4613256565b6020026020010151905060008460a0015160800151838151811061120a5761120a613256565b602002602001015190508060001461126257816020015181101561125a576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111c4565b600061128582604001514861243c90919063ffffffff16565b90508160600151608001516000146112e05760006112ab83606001516080015183612477565b90506112d58160008560600151606001518660600151602001516124b0909392919063ffffffff16565b606084015160200152505b60808201515160005b8181101561067d5760008460800151828151811061130957611309613256565b602002602001015190508060a0015160001461137057600061132f8260a0015186612477565b60808301516020840151919250611369919083907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6124d0565b6020830152505b506001016112e9565b6113b36040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001600081526020018660600151815260200161256281525090506000611404826125ee565b6040805160608082018352895173ffffffffffffffffffffffffffffffffffffffff16825260208201939093529790910151908701525093949350505050565b82516060908067ffffffffffffffff81111561146257611462613227565b6040519080825280602002602001820160405280156114cb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114805790505b50915060005b81811015611522576114fd8682815181106114ee576114ee613256565b602002602001015186866126fa565b83828151811061150f5761150f613256565b60209081029190910101526001016114d1565b50509392505050565b61153885858585856127e3565b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661155f5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906115b6908590600401613f11565b600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116199190810190613f24565b60408301515181519192509060006116318284614023565b67ffffffffffffffff81111561164957611649613227565b6040519080825280602002602001820160405280156116b257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116675790505b50905060005b8381101561170357856040015181815181106116d6576116d6613256565b60200260200101518282815181106116f0576116f0613256565b60209081029190910101526001016116b8565b5060008060005b84811015611a1e57600087828151811061172657611726613256565b6020026020010151905060005b828110156117e45788818151811061174d5761174d613256565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117dc5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b600101611733565b506000805b888110156118a55760008b60400151828151811061180957611809613256565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361189c578515611886576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118959084614023565b9250600196505b506001016117e9565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361191e578415611905576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516119179082614023565b9050600193505b806000036119735781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611981816005612710612885565b826020015111156119f4578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611a0957611a09613256565b6020908102919091010152505060010161170a565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a80576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611afc9084908690600401614036565b60006040518083038186803b158015611b1457600080fd5b505afa158015611b28573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611bf0846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051602001611cbd907f4e6f6e6c696e656172447574636844656361792800000000000000000000000081527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060148201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000602b82015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061441360208301396040518060600160405280602e81526020016143e5602e9139604051602001611d2790613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f563344757463684f72646572280000000000000000000000000000000000000060208401527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8401527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8401527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8401527f56334475746368496e7075742062617365496e7075742c00000000000000000060658401527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c840152815160788185030181526098840190925291611e579060b801613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e97969594939291602001614065565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611f049695949392600401614118565b600060405180830381600087803b158015611f1e57600080fd5b505af1158015611b28573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611f575761035f8282611f79565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846128c1565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611fd3576040519150601f19603f3d011682016040523d82523d6000602084013e611fd8565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001614413608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161108f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040516020016120be90613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b840152815160448185030181526064840190925261217e929091906084016141d3565b60405160208183030381529060405280519060200120826000015183602001516121ab85604001516129ac565b60608087015160808089015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff909716968801969096529186019390935284015260a083015260c082015260e00161108f565b600080825160200267ffffffffffffffff81111561221e5761221e613227565b6040519080825280601f01601f191660200182016040528015612248576020820181803683370190505b50835190915060005b8181101561228f57600061227d86838151811061227057612270613256565b6020026020010151612aaa565b60208381028601015250600101612251565b5050805160209091012092915050565b600081468460a001516040516020016122b89190614202565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526122f5939291602001614287565b6040516020818303038152906040528051906020012090505b92915050565b6000808280602001905181019061232b91906142b4565b9150915060008360408151811061234457612344613256565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156123a1573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415806123fc575073ffffffffffffffffffffffffffffffffffffffff8116155b15612433576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b60008183101561246a5761245861245384846142d8565b612c0e565b6124639060006142eb565b905061230e565b61246361245383856142d8565b600080821261248f576124638383633b9aca00612885565b6124a761249b83614312565b8490633b9aca00612cc4565b61246390614312565b60006124c7856124c086846142eb565b85856124d0565b95945050505050565b6000808412156125335760006124e585614312565b905085612512827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6142d8565b1015612521578291505061255a565b61252b8187614023565b91505061254f565b8385101561254257508161255a565b61254c84866142d8565b90505b6124c7818484612d08565b949350505050565b60008484106125725750806124c7565b600061257e87866142d8565b9050600061258c88886142d8565b90506000858512156125be576125ae83836125a7888a6142eb565b9190612885565b6125b790614312565b90506125d7565b6125d483836125cd89896142eb565b9190612cc4565b90505b6125e1818761434a565b9998505050505050505050565b60006010826000015160200151511115612634576040517f0e99676600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160600151826040015110158061264f575081516020015151155b1561266e57608082015160a0830151602084015161230e929091612d08565b600061268f8360400151846060015161268791906142d8565b61ffff612d19565b90506000806000806126a5876000015186612d31565b935093509350935060006126d08561ffff168561ffff168861ffff1686868d60c0015163ffffffff16565b608089015160a08a015160208b01519293506126ee929184916124d0565b98975050505050505050565b604080516060810182526000808252602082018190529181019190915260006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001866080015181526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001612ef381525090506000612787826125ee565b90506040518060600160405280876000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001876060015173ffffffffffffffffffffffffffffffffffffffff16815250925050509392505050565b6127ee848483612f47565b6115385781612829576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561243357600082828151811061284e5761284e613256565b60200260200101519050612877856127106128699190614023565b602083015190612710612cc4565b602090910152600101612831565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026128ba57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b6040517f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208201527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8201526000906064016040516020818303038152906040528051906020012082600001518360200151604051602001612a579190614372565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830194909452810191909152606081019190915260800161108f565b6000604051602001612abb90613d6e565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8401528151604481850301815260648401909252612b7b929091906084016141d3565b6040516020818303038152906040528051906020012082600001518360200151612ba885604001516129ac565b60608087015160808089015160a0808b015160408051602081019b909b5273ffffffffffffffffffffffffffffffffffffffff998a16908b01529489019690965290870193909352939093169184019190915260c083015260e08201526101000161108f565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401610700565b5090565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612cf957600080fd5b50910281810615159190040190565b600061255a612d178585612f93565b835b6000818310612d285781612d2a565b825b9392505050565b6000806000806000612d44876000015190565b905061ffff8616612d56826000612fa2565b61ffff1610612d9a576000612d6b8282612fa2565b60008960200151600081518110612d8457612d84613256565b6020026020010151945094509450945050612eea565b60006001886020015151612dae91906143a8565b905060015b8161ffff168161ffff1611612e7e578761ffff16612dde8261ffff1685612fa290919063ffffffff16565b61ffff1610612e6c57612e00612df56001836143a8565b849061ffff16612fa2565b612e0e8461ffff8416612fa2565b60208b0151612e1e6001856143a8565b61ffff1681518110612e3257612e32613256565b60200260200101518b602001518461ffff1681518110612e5457612e54613256565b60200260200101519650965096509650505050612eea565b80612e76816143c3565b915050612db3565b50612e8d8261ffff8316612fa2565b612e9b8361ffff8416612fa2565b89602001518361ffff1681518110612eb557612eb5613256565b60200260200101518a602001518461ffff1681518110612ed757612ed7613256565b6020026020010151955095509550955050505b92959194509250565b6000848410612f035750806124c7565b6000612f0f87866142d8565b90506000612f1d88886142d8565b9050600085851215612f38576125ae83836125cd888a6142eb565b6125d483836125a789896142eb565b600073ffffffffffffffffffffffffffffffffffffffff84161580612f6b57508282115b8061255a575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b6000818311612d285781612d2a565b600060108210612fde576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506010021c90565b600060408284031215612ff857600080fd5b50919050565b60008083601f84011261301057600080fd5b50813567ffffffffffffffff81111561302857600080fd5b60208301915083602082850101111561304057600080fd5b9250929050565b60008060006040848603121561305c57600080fd5b833567ffffffffffffffff8082111561307457600080fd5b61308087838801612fe6565b9450602086013591508082111561309657600080fd5b506130a386828701612ffe565b9497909650939450505050565b60008083601f8401126130c257600080fd5b50813567ffffffffffffffff8111156130da57600080fd5b6020830191508360208260051b850101111561304057600080fd5b6000806020838503121561310857600080fd5b823567ffffffffffffffff81111561311f57600080fd5b61312b858286016130b0565b90969095509350505050565b6000806000806040858703121561314d57600080fd5b843567ffffffffffffffff8082111561316557600080fd5b613171888389016130b0565b9096509450602087013591508082111561318a57600080fd5b5061319787828801612ffe565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356131d0816131a3565b919050565b6000602082840312156131e757600080fd5b8135612d2a816131a3565b60006020828403121561320457600080fd5b813567ffffffffffffffff81111561321b57600080fd5b61255a84828501612fe6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156132a0578181015183820152602001613288565b50506000910152565b600081518084526132c1816020860160208601613285565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015613353578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101613308565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526133d26101a08501826132a9565b905060208301516134106020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261342882826132f3565b915050606083015184820360a086015261344282826132a9565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156134ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526134bc86835161335e565b95509382019390820190600101613482565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261355357600080fd5b9190910192915050565b60006020828403121561356f57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135ab57600080fd5b83018035915067ffffffffffffffff8211156135c657600080fd5b60200191503681900382131561304057600080fd5b60405160c0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405290565b6040805190810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160a0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160e0810167ffffffffffffffff811182821017156135fe576135fe613227565b6040516060810167ffffffffffffffff811182821017156135fe576135fe613227565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156136d7576136d7613227565b604052919050565b600082601f8301126136f057600080fd5b813567ffffffffffffffff81111561370a5761370a613227565b61373b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613690565b81815284602083860101111561375057600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561377f57600080fd5b6137876135db565b90508135613794816131a3565b815260208201356137a4816131a3565b80602083015250604082013560408201526060820135606082015260808201356137cd816131a3565b608082015260a082013567ffffffffffffffff8111156137ec57600080fd5b6137f8848285016136df565b60a08301525092915050565b600067ffffffffffffffff82111561381e5761381e613227565b5060051b60200190565b60006040828403121561383a57600080fd5b613842613604565b90508135815260208083013567ffffffffffffffff81111561386357600080fd5b8301601f8101851361387457600080fd5b803561388761388282613804565b613690565b81815260059190911b820183019083810190878311156138a657600080fd5b928401925b828410156138c4578335825292840192908401906138ab565b8085870152505050505092915050565b600060a082840312156138e657600080fd5b6138ee613627565b905081356138fb816131a3565b815260208281013590820152604082013567ffffffffffffffff81111561392157600080fd5b61392d84828501613828565b604083015250606082013560608201526080820135608082015292915050565b600082601f83011261395e57600080fd5b8135602061396e61388283613804565b82815260059290921b8401810191818101908684111561398d57600080fd5b8286015b84811015613a6a57803567ffffffffffffffff808211156139b25760008081fd5b818901915060c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156139eb5760008081fd5b6139f36135db565b87840135613a00816131a3565b81526040848101358983015260608086013585811115613a205760008081fd5b613a2e8f8c838a0101613828565b838501525060809450848601359150613a46826131a3565b82015260a08481013593820193909352920135908201528352918301918301613991565b509695505050505050565b600060a08284031215613a8757600080fd5b613a8f613627565b905081358152602080830135613aa4816131a3565b8082840152506040830135604083015260608301356060830152608083013567ffffffffffffffff811115613ad857600080fd5b8301601f81018513613ae957600080fd5b8035613af761388282613804565b81815260059190911b82018301908381019087831115613b1657600080fd5b928401925b82841015613b3457833582529284019290840190613b1b565b6080860152509295945050505050565b600060208284031215613b5657600080fd5b813567ffffffffffffffff80821115613b6e57600080fd5b9083019060e08286031215613b8257600080fd5b613b8a61364a565b823582811115613b9957600080fd5b613ba58782860161376d565b825250613bb4602084016131c5565b602082015260408301356040820152606083013582811115613bd557600080fd5b613be1878286016138d4565b606083015250608083013582811115613bf957600080fd5b613c058782860161394d565b60808301525060a083013582811115613c1d57600080fd5b613c2987828601613a75565b60a08301525060c083013582811115613c4157600080fd5b613c4d878286016136df565b60c08301525095945050505050565b7f56334475746368496e707574280000000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600d8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601b8201527f4e6f6e6c696e656172447574636844656361792063757276652c000000000000602f8201527f75696e74323536206d6178416d6f756e742c000000000000000000000000000060498201527f75696e743235362061646a7573746d656e745065724777656942617365466565605b8201527f2900000000000000000000000000000000000000000000000000000000000000607b8201526000607c820161230e565b7f563344757463684f75747075742800000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600e8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601c8201527f4e6f6e6c696e656172447574636844656361792063757276652c00000000000060308201527f6164647265737320726563697069656e742c0000000000000000000000000000604a8201527f75696e74323536206d696e416d6f756e742c0000000000000000000000000000605c8201527f75696e743235362061646a7573746d656e745065724777656942617365466565606e8201527f2900000000000000000000000000000000000000000000000000000000000000608e8201526000608f820161230e565b60008651613eb8818460208b01613285565b865190830190613ecc818360208b01613285565b8651910190613edf818360208a01613285565b8551910190613ef2818360208901613285565b8451910190613f05818360208801613285565b01979650505050505050565b602081526000612d2a602083018461335e565b60006020808385031215613f3757600080fd5b825167ffffffffffffffff811115613f4e57600080fd5b8301601f81018513613f5f57600080fd5b8051613f6d61388282613804565b81815260609182028301840191848201919088841115613f8c57600080fd5b938501935b83851015613fe85780858a031215613fa95760008081fd5b613fb161366d565b8551613fbc816131a3565b81528587015187820152604080870151613fd5816131a3565b9082015283529384019391850191613f91565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561230e5761230e613ff4565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061255a604083018461335e565b7f563344757463684f72646572207769746e6573732900000000000000000000008152600060158851602061409f82848701838e01613285565b8951918501916140b481858501848e01613285565b89519201916140c881858501848d01613285565b88519201916140dc81858501848c01613285565b87519201916140f081858501848b01613285565b865192019161410481858501848a01613285565b919091019091019998505050505050505050565b6000610140614148838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526141896080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526141be818401866132a9565b90508281036101208401526125e181856132a9565b600083516141e5818460208801613285565b8351908301906141f9818360208801613285565b01949350505050565b6000602080835260c0830184518285015273ffffffffffffffffffffffffffffffffffffffff828601511660408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e0870191508483019350600092505b80831015613a6a5783518252928401926001929092019190840190614267565b838152826020820152600082516142a5816040850160208701613285565b91909101604001949350505050565b600080604083850312156142c757600080fd5b505080516020909101519092909150565b8181038181111561230e5761230e613ff4565b818103600083128015838313168383128216171561430b5761430b613ff4565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361434357614343613ff4565b5060000390565b808201828112600083128015821682158216171561436a5761436a613ff4565b505092915050565b815160009082906020808601845b8381101561439c57815185529382019390820190600101614380565b50929695505050505050565b61ffff82811682821603908082111561430b5761430b613ff4565b600061ffff8083168181036143da576143da613ff4565b600101939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220a83088cf8ce7734a1a4fd473e15da5dd40de922f9f237cdcd5a3258bdb21af8564736f6c63430008180033a2646970667358221220a94a4ff36a9a74240a86219b7d2500442f7f9fe2277bbc043279ed4e146a578464736f6c63430008180033 + ///0x6080604052600c805462ff00ff191662010001179055348015610020575f80fd5b50614afe8061002e5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610086575b5f80fd5b005b61004d6100a9565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252015b60405180910390f35b600c546100999062010000900460ff1681565b604051901515815260200161007d565b604080518082019091525f80825260208201526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e4552000000000000000000000060448201525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610152573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101769190610479565b90506101b76040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250826103ac565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561021e575f80fd5b505af1158015610230573d5f803e3d5ffd5b505050505f805f1b6e22d473030f116ddee9f6b43ac78ba3836040516102559061046c565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103905ff5905080158015610296573d5f803e3d5ffd5b5090506102d86040518060400160405280600781526020017f52656163746f7200000000000000000000000000000000000000000000000000815250826103ac565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561033f575f80fd5b505af1158015610351573d5f803e3d5ffd5b5050505060405180604001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b61043d82826040516024016103c29291906104b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610441565b5050565b61044a8161044d565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b61458f8061053a83390190565b5f60208284031215610489575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104ac575f80fd5b9392505050565b604081525f83518060408401525f5b818110156104df57602081870181015160608684010152016104c2565b505f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60c060405234801562000010575f80fd5b506040516200458f3803806200458f833981016040819052620000339162000164565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805261a4b0194601620000bd576001600160401b0362000961620000de60201b171660a052620000d6565b6001600160401b03620009d56200014860201b171660a0525b5050620001b9565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001439190620001a1565b905090565b4390565b6001600160a01b038116811462000161575f80fd5b50565b5f806040838503121562000176575f80fd5b825162000183816200014c565b602084015190925062000196816200014c565b809150509250929050565b5f60208284031215620001b2575f80fd5b5051919050565b60805160a0516143ae620001e15f395f610aff01525f818160da0152611ace01526143ae5ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af366004612f8f565b6101e0565b005b6100b46100c4366004613034565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004613073565b6104af565b348015610143575f80fd5b506100b461015236600461310b565b610665565b6100b4610165366004613126565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db36600461310b565b610872565b6101e86109d9565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a584610a4a565b815f815181106102b7576102b7613185565b60200260200101819052506102cb81610bf5565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b90849087908790600401613380565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610c44565b5061034c6001600255565b505050565b6103596109d9565b805f8167ffffffffffffffff81111561037457610374613158565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c5761046785858381811061045057610450613185565b90506020028101906104629190613443565b610a4a565b82828151811061047957610479613185565b6020908102919091010152600101610433565b5061049681610bf5565b61049f81610c44565b50506104ab6001600255565b5050565b6104b76109d9565b825f8167ffffffffffffffff8111156104d2576104d2613158565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae87878381811061045057610450613185565b8282815181106105c0576105c0613185565b6020908102919091010152600101610591565b506105dd81610bf5565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d90849088908890600401613380565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610c44565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b6107786109d9565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e57905050905061083582610a4a565b815f8151811061084757610847613185565b602002602001018190525061085b81610bf5565b61086481610c44565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d0919061347f565b905090565b4390565b6002805403610a44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610ac28380613496565b810190610acf9190613a42565b90505f610adb82610d8f565b9050610ae78183611073565b610af0826110cf565b610af98261122f565b5f610b267f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b90506040518060a00160405280845f01518152602001610b5c8560a001515f01518487606001516113349092919063ffffffff16565b815260a0850151516080860151602090920191610b7991856113f9565b8152602001868060200190610b8e9190613496565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810184905260a0850151908101518151604090920151929650610bed92879290856114de565b505050919050565b80515f5b8181101561034c575f838281518110610c1457610c14613185565b60200260200101519050610c27816114f2565b610c3181336119cf565b610c3b8133611acc565b50600101610bf9565b80515f5b81811015610d7e575f838281518110610c6357610c63613185565b602002602001015190505f81604001515190505f5b81811015610ce0575f83604001518281518110610c9757610c97613185565b60200260200101519050610cd781604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611ec69092919063ffffffff16565b50600101610c78565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610d2857610d28613185565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610d6c91815260200190565b60405180910390a45050600101610c48565b5047156104ab576104ab3347611f0d565b6040517f563344757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8201527f56334475746368496e7075742062617365496e7075742c00000000000000000060658201527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c8201525f90609801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208301527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348301527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b83015290606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906142ec6020830139604051602001610f7190613b51565b604051602081830303815290604052604051602001610f8f90613c62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fce9594939291602001613d99565b60405160208183030381529060405280519060200120610ff0835f0151611fa3565b83602001518460400151611007866060015161203c565b611014876080015161218b565b60408051602081019790975286019490945273ffffffffffffffffffffffffffffffffffffffff9092166060850152608084015260a083015260c082015260e0015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110b2576040517fb08ce5b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516104ab906110c58385612229565b8360c0015161229d565b60a0810151606001511561113b578060600151602001518160a00151606001511115611127576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160609081015190820151602001525b8060800151518160a00151608001515114611182576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080810151515f5b8181101561034c575f836080015182815181106111a9576111a9613185565b602002602001015190505f8460a001516080015183815181106111ce576111ce613185565b60200260200101519050805f1461122557816020015181101561121d576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b505060010161118a565b5f6112478260400151486123c090919063ffffffff16565b90508160600151608001515f1461129f575f61126b836060015160800151836123f9565b9050611294815f856060015160600151866060015160200151612431909392919063ffffffff16565b606084015160200152505b6080820151515f5b8181101561065f575f846080015182815181106112c6576112c6613185565b602002602001015190508060a001515f1461132b575f6112ea8260a00151866123f9565b60808301516020840151919250611324919083907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612450565b6020830152505b506001016112a7565b61136b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f6040518060e0016040528086604001518152602001866020015181526020018581526020018481526020015f8152602001866060015181526020016124e081525090505f6113b982612568565b6040805160608082018352895173ffffffffffffffffffffffffffffffffffffffff16825260208201939093529790910151908701525093949350505050565b82516060908067ffffffffffffffff81111561141757611417613158565b60405190808252806020026020018201604052801561147f57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114355790505b5091505f5b818110156114d5576114b08682815181106114a1576114a1613185565b6020026020010151868661266d565b8382815181106114c2576114c2613185565b6020908102919091010152600101611484565b50509392505050565b6114eb8585858585612752565b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff166115125750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611568908590600401613e03565b5f60405180830381865afa158015611582573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115c79190810190613e15565b6040830151518151919250905f6115de8284613f0b565b67ffffffffffffffff8111156115f6576115f6613158565b60405190808252806020026020018201604052801561165e57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116145790505b5090505f5b838110156116ae578560400151818151811061168157611681613185565b602002602001015182828151811061169b5761169b613185565b6020908102919091010152600101611663565b505f805f5b848110156119be575f8782815181106116ce576116ce613185565b602002602001015190505f5b82811015611789578881815181106116f4576116f4613185565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036117815781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6001016116da565b505f805b88811015611846575f8b6040015182815181106117ac576117ac613185565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff160361183d578515611827576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118369084613f0b565b9250600196505b5060010161178d565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036118bf5784156118a6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516118b89082613f0b565b9050600193505b805f036119135781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6119218160056127106127f2565b82602001511115611994578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a01815181106119a9576119a9613185565b602090810291909101015250506001016116b3565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a20576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611a9c9084908690600401613f1e565b5f6040518083038186803b158015611ab2575f80fd5b505afa158015611ac4573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611b8b846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff861682528087015181015190820152855f0151602001518660800151604051602001611c56907f4e6f6e6c696e656172447574636844656361792800000000000000000000000081527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060148201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000602b82015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906142ec60208301396040518060600160405280602e81526020016142be602e9139604051602001611cc090613b51565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f563344757463684f72646572280000000000000000000000000000000000000060208401527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8401527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8401527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8401527f56334475746368496e7075742062617365496e7075742c00000000000000000060658401527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c840152815160788185030181526098840190925291611df09060b801613c62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e30969594939291602001613f4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611e9d9695949392600401613ffe565b5f604051808303815f87803b158015611eb4575f80fd5b505af1158015611ac4573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611eeb5761034c8282611f0d565b61034c73ffffffffffffffffffffffffffffffffffffffff841633848461282c565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611f63576040519150601f19603f3d011682016040523d82523d5f602084013e611f68565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060c00160405280608d81526020016142ec608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161105698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f60405160200161204c90613b51565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b840152815160448185030181526064840190925261210c929091906084016140b8565b60405160208183030381529060405280519060200120825f015183602001516121388560400151612913565b60608087015160808089015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff909716968801969096529186019390935284015260a083015260c082015260e001611056565b5f80825160200267ffffffffffffffff8111156121aa576121aa613158565b6040519080825280601f01601f1916602001820160405280156121d4576020820181803683370190505b5083519091505f5b81811015612219575f6122078683815181106121fa576121fa613185565b6020026020010151612a0f565b602083810286010152506001016121dc565b5050805160209091012092915050565b5f81468460a0015160405160200161224191906140e6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261227e939291602001614169565b6040516020818303038152906040528051906020012090505b92915050565b5f80828060200190518101906122b39190614195565b915091505f836040815181106122cb576122cb613185565b01602090810151604080515f80825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa158015612325573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612380575073ffffffffffffffffffffffffffffffffffffffff8116155b156123b7576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b5f818310156123ec576123db6123d684846141b7565b612b71565b6123e5905f6141ca565b9050612297565b6123e56123d683856141b7565b5f808212612410576123e58383633b9aca006127f2565b61242861241c836141f0565b8490633b9aca00612c26565b6123e5906141f0565b5f6124478561244086846141ca565b8585612450565b95945050505050565b5f808412156124b1575f612463856141f0565b905085612490827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6141b7565b101561249f57829150506124d8565b6124a98187613f0b565b9150506124cd565b838510156124c05750816124d8565b6124ca84866141b7565b90505b612447818484612c68565b949350505050565b5f8484106124ef575080612447565b5f6124fa87866141b7565b90505f61250788886141b7565b90505f85851215612538576125288383612521888a6141ca565b91906127f2565b612531906141f0565b9050612551565b61254e838361254789896141ca565b9190612c26565b90505b61255b8187614226565b9998505050505050505050565b5f6010825f0151602001515111156125ac576040517f0e99676600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816060015182604001511015806125c7575081516020015151155b156125e657608082015160a08301516020840151612297929091612c68565b5f612606836040015184606001516125fe91906141b7565b61ffff612c78565b90505f805f80612619875f015186612c8f565b93509350935093505f6126438561ffff168561ffff168861ffff1686868d60c0015163ffffffff16565b608089015160a08a015160208b015192935061266192918491612450565b98975050505050505050565b604080516060810182525f80825260208201819052918101919091525f6040518060e001604052808660400151815260200186602001518152602001858152602001848152602001866080015181526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001612e4881525090505f6126f782612568565b90506040518060600160405280875f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001876060015173ffffffffffffffffffffffffffffffffffffffff16815250925050509392505050565b61275d848483612e98565b6114eb5781612798576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b81518110156123b7575f8282815181106127bb576127bb613185565b602002602001015190506127e4856127106127d69190613f0b565b602083015190612710612c26565b60209091015260010161279f565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612825575f80fd5b5091020490565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806114eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b6040517f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208201527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8201525f9060640160405160208183030381529060405280519060200120825f015183602001516040516020016129bc919061424d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120908301949094528101919091526060810191909152608001611056565b5f604051602001612a1f90613c62565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8401528151604481850301815260648401909252612adf929091906084016140b8565b60405160208183030381529060405280519060200120825f01518360200151612b0b8560400151612913565b60608087015160808089015160a0808b015160408051602081019b909b5273ffffffffffffffffffffffffffffffffffffffff998a16908b01529489019690965290870193909352939093169184019190915260c083015260e082015261010001611056565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612c22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e7432353600000000000000000000000000000000000000000000000060648201526084016106e1565b5090565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612c59575f80fd5b50910281810615159190040190565b5f6124d8612c768585612ee3565b835b5f818310612c865781612c88565b825b9392505050565b5f805f805f612c9e875f015190565b905061ffff8616612caf825f612ef1565b61ffff1610612cf0575f612cc38282612ef1565b5f89602001515f81518110612cda57612cda613185565b6020026020010151945094509450945050612e3f565b5f6001886020015151612d039190614282565b905060015b8161ffff168161ffff1611612dd3578761ffff16612d338261ffff1685612ef190919063ffffffff16565b61ffff1610612dc157612d55612d4a600183614282565b849061ffff16612ef1565b612d638461ffff8416612ef1565b60208b0151612d73600185614282565b61ffff1681518110612d8757612d87613185565b60200260200101518b602001518461ffff1681518110612da957612da9613185565b60200260200101519650965096509650505050612e3f565b80612dcb8161429d565b915050612d08565b50612de28261ffff8316612ef1565b612df08361ffff8416612ef1565b89602001518361ffff1681518110612e0a57612e0a613185565b60200260200101518a602001518461ffff1681518110612e2c57612e2c613185565b6020026020010151955095509550955050505b92959194509250565b5f848410612e57575080612447565b5f612e6287866141b7565b90505f612e6f88886141b7565b90505f85851215612e89576125288383612547888a6141ca565b61254e838361252189896141ca565b5f73ffffffffffffffffffffffffffffffffffffffff84161580612ebb57508282115b806124d8575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b5f818311612c865781612c88565b5f60108210612f2c576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506010021c90565b5f60408284031215612f44575f80fd5b50919050565b5f8083601f840112612f5a575f80fd5b50813567ffffffffffffffff811115612f71575f80fd5b602083019150836020828501011115612f88575f80fd5b9250929050565b5f805f60408486031215612fa1575f80fd5b833567ffffffffffffffff80821115612fb8575f80fd5b612fc487838801612f34565b94506020860135915080821115612fd9575f80fd5b50612fe686828701612f4a565b9497909650939450505050565b5f8083601f840112613003575f80fd5b50813567ffffffffffffffff81111561301a575f80fd5b6020830191508360208260051b8501011115612f88575f80fd5b5f8060208385031215613045575f80fd5b823567ffffffffffffffff81111561305b575f80fd5b61306785828601612ff3565b90969095509350505050565b5f805f8060408587031215613086575f80fd5b843567ffffffffffffffff8082111561309d575f80fd5b6130a988838901612ff3565b909650945060208701359150808211156130c1575f80fd5b506130ce87828801612f4a565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b8035613106816130da565b919050565b5f6020828403121561311b575f80fd5b8135612c88816130da565b5f60208284031215613136575f80fd5b813567ffffffffffffffff81111561314c575f80fd5b6124d884828501612f34565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156131cc5781810151838201526020016131b4565b50505f910152565b5f81518084526131eb8160208601602086016131b2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b8381101561327b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101613230565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526132f96101a08501826131d4565b905060208301516133376020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261334f828261321d565b915050606083015184820360a086015261336982826131d4565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b838110156133f3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526133e1868351613286565b955093820193908201906001016133a7565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613475575f80fd5b9190910192915050565b5f6020828403121561348f575f80fd5b5051919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126134c9575f80fd5b83018035915067ffffffffffffffff8211156134e3575f80fd5b602001915036819003821315612f88575f80fd5b60405160c0810167ffffffffffffffff8111828210171561351a5761351a613158565b60405290565b6040805190810167ffffffffffffffff8111828210171561351a5761351a613158565b60405160a0810167ffffffffffffffff8111828210171561351a5761351a613158565b60405160e0810167ffffffffffffffff8111828210171561351a5761351a613158565b6040516060810167ffffffffffffffff8111828210171561351a5761351a613158565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156135f3576135f3613158565b604052919050565b5f82601f83011261360a575f80fd5b813567ffffffffffffffff81111561362457613624613158565b61365560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016135ac565b818152846020838601011115613669575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215613695575f80fd5b61369d6134f7565b905081356136aa816130da565b815260208201356136ba816130da565b80602083015250604082013560408201526060820135606082015260808201356136e3816130da565b608082015260a082013567ffffffffffffffff811115613701575f80fd5b61370d848285016135fb565b60a08301525092915050565b5f67ffffffffffffffff82111561373257613732613158565b5060051b60200190565b5f6040828403121561374c575f80fd5b613754613520565b90508135815260208083013567ffffffffffffffff811115613774575f80fd5b8301601f81018513613784575f80fd5b803561379761379282613719565b6135ac565b81815260059190911b820183019083810190878311156137b5575f80fd5b928401925b828410156137d3578335825292840192908401906137ba565b8085870152505050505092915050565b5f60a082840312156137f3575f80fd5b6137fb613543565b90508135613808816130da565b815260208281013590820152604082013567ffffffffffffffff81111561382d575f80fd5b6138398482850161373c565b604083015250606082013560608201526080820135608082015292915050565b5f82601f830112613868575f80fd5b8135602061387861379283613719565b82815260059290921b84018101918181019086841115613896575f80fd5b8286015b8481101561396d57803567ffffffffffffffff808211156138b9575f80fd5b818901915060c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156138f0575f80fd5b6138f86134f7565b87840135613905816130da565b81526040848101358983015260608086013585811115613923575f80fd5b6139318f8c838a010161373c565b838501525060809450848601359150613949826130da565b82015260a0848101359382019390935292013590820152835291830191830161389a565b509695505050505050565b5f60a08284031215613988575f80fd5b613990613543565b9050813581526020808301356139a5816130da565b8082840152506040830135604083015260608301356060830152608083013567ffffffffffffffff8111156139d8575f80fd5b8301601f810185136139e8575f80fd5b80356139f661379282613719565b81815260059190911b82018301908381019087831115613a14575f80fd5b928401925b82841015613a3257833582529284019290840190613a19565b6080860152509295945050505050565b5f60208284031215613a52575f80fd5b813567ffffffffffffffff80821115613a69575f80fd5b9083019060e08286031215613a7c575f80fd5b613a84613566565b823582811115613a92575f80fd5b613a9e87828601613685565b825250613aad602084016130fb565b602082015260408301356040820152606083013582811115613acd575f80fd5b613ad9878286016137e3565b606083015250608083013582811115613af0575f80fd5b613afc87828601613859565b60808301525060a083013582811115613b13575f80fd5b613b1f87828601613978565b60a08301525060c083013582811115613b36575f80fd5b613b42878286016135fb565b60c08301525095945050505050565b7f56334475746368496e707574280000000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600d8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601b8201527f4e6f6e6c696e656172447574636844656361792063757276652c000000000000602f8201527f75696e74323536206d6178416d6f756e742c000000000000000000000000000060498201527f75696e743235362061646a7573746d656e745065724777656942617365466565605b8201527f2900000000000000000000000000000000000000000000000000000000000000607b8201525f607c8201612297565b7f563344757463684f75747075742800000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600e8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601c8201527f4e6f6e6c696e656172447574636844656361792063757276652c00000000000060308201527f6164647265737320726563697069656e742c0000000000000000000000000000604a8201527f75696e74323536206d696e416d6f756e742c0000000000000000000000000000605c8201527f75696e743235362061646a7573746d656e745065724777656942617365466565606e8201527f2900000000000000000000000000000000000000000000000000000000000000608e8201525f608f8201612297565b5f8651613daa818460208b016131b2565b865190830190613dbe818360208b016131b2565b8651910190613dd1818360208a016131b2565b8551910190613de48183602089016131b2565b8451910190613df78183602088016131b2565b01979650505050505050565b602081525f612c886020830184613286565b5f6020808385031215613e26575f80fd5b825167ffffffffffffffff811115613e3c575f80fd5b8301601f81018513613e4c575f80fd5b8051613e5a61379282613719565b81815260609182028301840191848201919088841115613e78575f80fd5b938501935b83851015613ed25780858a031215613e93575f80fd5b613e9b613589565b8551613ea6816130da565b81528587015187820152604080870151613ebf816130da565b9082015283529384019391850191613e7d565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561229757612297613ede565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6124d86040830184613286565b7f563344757463684f72646572207769746e65737329000000000000000000000081525f601588516020613f8582848701838e016131b2565b895191850191613f9a81858501848e016131b2565b8951920191613fae81858501848d016131b2565b8851920191613fc281858501848c016131b2565b8751920191613fd681858501848b016131b2565b8651920191613fea81858501848a016131b2565b919091019091019998505050505050505050565b5f61014061402d838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261406e6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526140a3818401866131d4565b905082810361012084015261255b81856131d4565b5f83516140c98184602088016131b2565b8351908301906140dd8183602088016131b2565b01949350505050565b5f602080835260c0830184518285015273ffffffffffffffffffffffffffffffffffffffff828601511660408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e08701915084830193505f92505b8083101561396d5783518252928401926001929092019190840190614149565b8381528260208201525f82516141868160408501602087016131b2565b91909101604001949350505050565b5f80604083850312156141a6575f80fd5b505080516020909101519092909150565b8181038181111561229757612297613ede565b8181035f8312801583831316838312821617156141e9576141e9613ede565b5092915050565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361422057614220613ede565b505f0390565b8082018281125f83128015821682158216171561424557614245613ede565b505092915050565b81515f9082906020808601845b838110156142765781518552938201939082019060010161425a565b50929695505050505050565b61ffff8281168282160390808211156141e9576141e9613ede565b5f61ffff8083168181036142b3576142b3613ede565b600101939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122076eb64bf241a3d263ec5a72de29639edadafd9dc347b19b4925bf5d973d562ef64736f6c63430008180033a264697066735822122069bd87debd2e3c9612d9a36d808481c3e385dd6d05b9a2ac802cab9dbffba61b64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[PaLS\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x89W[`\0\x80\xFD[\0[a\0Pa\0\xACV[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x9C\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x80V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01YW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01}\x91\x90a\x04\x93V[\x90Pa\x01\xBE`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02)W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02=W=`\0\x80>=`\0\xFD[PPPP`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02d\x90a\x04\x86V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02\xA8W=`\0\x80>=`\0\xFD[P\x90Pa\x02\xEA`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03UW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03iW=`\0\x80>=`\0\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04U\x82\x82`@Q`$\x01a\x03\xDA\x92\x91\x90a\x04\xD0V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04YV[PPV[a\x04b\x81a\x04eV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[aF\xC4\x80a\x05Z\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x04\xA5W`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xC9W`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0\x83Q\x80`@\x84\x01R`\0[\x81\x81\x10\x15a\x04\xFEW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xE1V[P`\0``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0F\xC48\x03\x80b\0F\xC4\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01jV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\xA4\xB0\x19F\x01b\0\0\xBFW`\x01`\x01`@\x1B\x03b\0\t\x85b\0\0\xE0` \x1B\x17\x16`\xA0Rb\0\0\xD8V[`\x01`\x01`@\x1B\x03b\0\t\xFCb\0\x01M` \x1B\x17\x16`\xA0R[PPb\0\x01\xC3V[`\0`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01H\x91\x90b\0\x01\xA9V[\x90P\x90V[C\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01gW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\x01~W`\0\x80\xFD[\x82Qb\0\x01\x8B\x81b\0\x01QV[` \x84\x01Q\x90\x92Pb\0\x01\x9E\x81b\0\x01QV[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15b\0\x01\xBCW`\0\x80\xFD[PQ\x91\x90PV[`\x80Q`\xA0QaD\xD5b\0\x01\xEF`\09`\0a\x0B)\x01R`\0\x81\x81`\xE0\x01Ra\x1B2\x01RaD\xD5`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a0GV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a0\xF5V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a17V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a1\xD5V[a\x06\x83V[a\0\xB9a\x01l6`\x04a1\xF2V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a1\xD5V[a\x08\x94V[a\x01\xF3a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\nqV[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a2VV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0CsV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\n\0V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a5\x1FV[a\nqV[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0C\"V[a\x04\xB5\x81a\x0CsV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\n\0V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0CsV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\nqV[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia2VV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0C\"V[a\x08\x86\x81a\x0CsV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF7\x91\x90a5]V[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nkW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xEA\x83\x80a5vV[\x81\x01\x90a\n\xF7\x91\x90a;DV[\x90P`\0a\x0B\x04\x82a\r\xC6V[\x90Pa\x0B\x10\x81\x83a\x10\xACV[a\x0B\x19\x82a\x11\x08V[a\x0B\"\x82a\x12lV[`\0a\x0BP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\x0B\x88\x85`\xA0\x01Q`\0\x01Q\x84\x87``\x01Qa\x13y\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0B\xA5\x91\x85a\x14DV[\x81R` \x01\x86\x80` \x01\x90a\x0B\xBA\x91\x90a5vV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0C\x1A\x92\x87\x92\x90\x85a\x15+V[PPP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0CCWa\x0CCa2VV[` \x02` \x01\x01Q\x90Pa\x0CV\x81a\x15?V[a\x0C`\x813a\x1A/V[a\x0Cj\x813a\x1B0V[P`\x01\x01a\x0C'V[\x80Q`\0[\x81\x81\x10\x15a\r\xB5W`\0\x83\x82\x81Q\x81\x10a\x0C\x94Wa\x0C\x94a2VV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\r\x15W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\xCBWa\x0C\xCBa2VV[` \x02` \x01\x01Q\x90Pa\r\x0C\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1F2\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0C\xABV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r^Wa\r^a2VV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\r\xA3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CxV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1FyV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R`\0\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q` \x01a\x0F\xA9\x90a<\\V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\xC7\x90a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10\x06\x95\x94\x93\x92\x91` \x01a>\xA6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x10)\x83`\0\x01Qa \x13V[\x83` \x01Q\x84`@\x01Qa\x10@\x86``\x01Qa \xADV[a\x10M\x87`\x80\x01Qa!\xFEV[`@\x80Q` \x81\x01\x97\x90\x97R\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16``\x85\x01R`\x80\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xEBW`@Q\x7F\xB0\x8C\xE5\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x04\xC1\x90a\x10\xFE\x83\x85a\"\x9FV[\x83`\xC0\x01Qa#\x14V[`\xA0\x81\x01Q``\x01Q\x15a\x11tW\x80``\x01Q` \x01Q\x81`\xA0\x01Q``\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q``\x90\x81\x01Q\x90\x82\x01Q` \x01R[\x80`\x80\x01QQ\x81`\xA0\x01Q`\x80\x01QQ\x14a\x11\xBBW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x81\x01QQ`\0[\x81\x81\x10\x15a\x03_W`\0\x83`\x80\x01Q\x82\x81Q\x81\x10a\x11\xE4Wa\x11\xE4a2VV[` \x02` \x01\x01Q\x90P`\0\x84`\xA0\x01Q`\x80\x01Q\x83\x81Q\x81\x10a\x12\nWa\x12\na2VV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12bW\x81` \x01Q\x81\x10\x15a\x12ZW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xC4V[`\0a\x12\x85\x82`@\x01QHa$<\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x81``\x01Q`\x80\x01Q`\0\x14a\x12\xE0W`\0a\x12\xAB\x83``\x01Q`\x80\x01Q\x83a$wV[\x90Pa\x12\xD5\x81`\0\x85``\x01Q``\x01Q\x86``\x01Q` \x01Qa$\xB0\x90\x93\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[``\x84\x01Q` \x01RP[`\x80\x82\x01QQ`\0[\x81\x81\x10\x15a\x06}W`\0\x84`\x80\x01Q\x82\x81Q\x81\x10a\x13\tWa\x13\ta2VV[` \x02` \x01\x01Q\x90P\x80`\xA0\x01Q`\0\x14a\x13pW`\0a\x13/\x82`\xA0\x01Q\x86a$wV[`\x80\x83\x01Q` \x84\x01Q\x91\x92Pa\x13i\x91\x90\x83\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa$\xD0V[` \x83\x01RP[P`\x01\x01a\x12\xE9V[a\x13\xB3`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01`\0\x81R` \x01\x86``\x01Q\x81R` \x01a%b\x81RP\x90P`\0a\x14\x04\x82a%\xEEV[`@\x80Q``\x80\x82\x01\x83R\x89Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x82\x01\x93\x90\x93R\x97\x90\x91\x01Q\x90\x87\x01RP\x93\x94\x93PPPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14bWa\x14ba2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x14\xCBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\x80W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x15\"Wa\x14\xFD\x86\x82\x81Q\x81\x10a\x14\xEEWa\x14\xEEa2VV[` \x02` \x01\x01Q\x86\x86a&\xFAV[\x83\x82\x81Q\x81\x10a\x15\x0FWa\x15\x0Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\xD1V[PP\x93\x92PPPV[a\x158\x85\x85\x85\x85\x85a'\xE3V[PPPPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15_WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x15\xB6\x90\x85\x90`\x04\x01a?\x11V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x16\x19\x91\x90\x81\x01\x90a?$V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x161\x82\x84a@#V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16IWa\x16Ia2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16\xB2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16gW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x17\x03W\x85`@\x01Q\x81\x81Q\x81\x10a\x16\xD6Wa\x16\xD6a2VV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\xF0Wa\x16\xF0a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16\xB8V[P`\0\x80`\0[\x84\x81\x10\x15a\x1A\x1EW`\0\x87\x82\x81Q\x81\x10a\x17&Wa\x17&a2VV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\xE4W\x88\x81\x81Q\x81\x10a\x17MWa\x17Ma2VV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xDCW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x173V[P`\0\x80[\x88\x81\x10\x15a\x18\xA5W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x18\tWa\x18\ta2VV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18\x9CW\x85\x15a\x18\x86W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x18\x95\x90\x84a@#V[\x92P`\x01\x96P[P`\x01\x01a\x17\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x19\x1EW\x84\x15a\x19\x05W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x19\x17\x90\x82a@#V[\x90P`\x01\x93P[\x80`\0\x03a\x19sW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x19\x81\x81`\x05a'\x10a(\x85V[\x82` \x01Q\x11\x15a\x19\xF4W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x1A\tWa\x1A\ta2VV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x17\nV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A\x80W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\xFC\x90\x84\x90\x86\x90`\x04\x01a@6V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1B\x14W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\xF0\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1C\xBD\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aC\xE5`.\x919`@Q` \x01a\x1D'\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1EW\x90`\xB8\x01a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x97\x96\x95\x94\x93\x92\x91` \x01a@eV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1F\x04\x96\x95\x94\x93\x92`\x04\x01aA\x18V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x1EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1FWWa\x03_\x82\x82a\x1FyV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(\xC1V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1F\xD3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xD8V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aD\x13`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x8F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q` \x01a \xBE\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!~\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa!\xAB\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10\x8FV[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x1EWa\"\x1Ea2'V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\"HW` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P`\0[\x81\x81\x10\x15a\"\x8FW`\0a\"}\x86\x83\x81Q\x81\x10a\"pWa\"pa2VV[` \x02` \x01\x01Qa*\xAAV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a\"QV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xA0\x01Q`@Q` \x01a\"\xB8\x91\x90aB\x02V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xF5\x93\x92\x91` \x01aB\x87V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a#+\x91\x90aB\xB4V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a#DWa#Da2VV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#\xA1W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\xFCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a$3W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x81\x83\x10\x15a$jWa$Xa$S\x84\x84aB\xD8V[a,\x0EV[a$c\x90`\0aB\xEBV[\x90Pa#\x0EV[a$ca$S\x83\x85aB\xD8V[`\0\x80\x82\x12a$\x8FWa$c\x83\x83c;\x9A\xCA\0a(\x85V[a$\xA7a$\x9B\x83aC\x12V[\x84\x90c;\x9A\xCA\0a,\xC4V[a$c\x90aC\x12V[`\0a$\xC7\x85a$\xC0\x86\x84aB\xEBV[\x85\x85a$\xD0V[\x95\x94PPPPPV[`\0\x80\x84\x12\x15a%3W`\0a$\xE5\x85aC\x12V[\x90P\x85a%\x12\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaB\xD8V[\x10\x15a%!W\x82\x91PPa%ZV[a%+\x81\x87a@#V[\x91PPa%OV[\x83\x85\x10\x15a%BWP\x81a%ZV[a%L\x84\x86aB\xD8V[\x90P[a$\xC7\x81\x84\x84a-\x08V[\x94\x93PPPPV[`\0\x84\x84\x10a%rWP\x80a$\xC7V[`\0a%~\x87\x86aB\xD8V[\x90P`\0a%\x8C\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a%\xBEWa%\xAE\x83\x83a%\xA7\x88\x8AaB\xEBV[\x91\x90a(\x85V[a%\xB7\x90aC\x12V[\x90Pa%\xD7V[a%\xD4\x83\x83a%\xCD\x89\x89aB\xEBV[\x91\x90a,\xC4V[\x90P[a%\xE1\x81\x87aCJV[\x99\x98PPPPPPPPPV[`\0`\x10\x82`\0\x01Q` \x01QQ\x11\x15a&4W`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a&OWP\x81Q` \x01QQ\x15[\x15a&nW`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa#\x0E\x92\x90\x91a-\x08V[`\0a&\x8F\x83`@\x01Q\x84``\x01Qa&\x87\x91\x90aB\xD8V[a\xFF\xFFa-\x19V[\x90P`\0\x80`\0\x80a&\xA5\x87`\0\x01Q\x86a-1V[\x93P\x93P\x93P\x93P`\0a&\xD0\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&\xEE\x92\x91\x84\x91a$\xD0V[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.\xF3\x81RP\x90P`\0a'\x87\x82a%\xEEV[\x90P`@Q\x80``\x01`@R\x80\x87`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a'\xEE\x84\x84\x83a/GV[a\x158W\x81a()W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a$3W`\0\x82\x82\x81Q\x81\x10a(NWa(Na2VV[` \x02` \x01\x01Q\x90Pa(w\x85a'\x10a(i\x91\x90a@#V[` \x83\x01Q\x90a'\x10a,\xC4V[` \x90\x91\x01R`\x01\x01a(1V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(\xBAW`\0\x80\xFD[P\x91\x02\x04\x90V[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x158W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R`\0\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Q`@Q` \x01a*W\x91\x90aCrV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10\x8FV[`\0`@Q` \x01a*\xBB\x90a=nV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra+{\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa+\xA8\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`\xA0\x80\x8B\x01Q`@\x80Q` \x81\x01\x9B\x90\x9BRs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\x8A\x16\x90\x8B\x01R\x94\x89\x01\x96\x90\x96R\x90\x87\x01\x93\x90\x93R\x93\x90\x93\x16\x91\x84\x01\x91\x90\x91R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01a\x10\x8FV[`\0\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xC0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FSafeCast: value doesn't fit in a`D\x82\x01R\x7Fn int256\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x07\0V[P\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a,\xF9W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0a%Za-\x17\x85\x85a/\x93V[\x83[`\0\x81\x83\x10a-(W\x81a-*V[\x82[\x93\x92PPPV[`\0\x80`\0\x80`\0a-D\x87`\0\x01Q\x90V[\x90Pa\xFF\xFF\x86\x16a-V\x82`\0a/\xA2V[a\xFF\xFF\x16\x10a-\x9AW`\0a-k\x82\x82a/\xA2V[`\0\x89` \x01Q`\0\x81Q\x81\x10a-\x84Wa-\x84a2VV[` \x02` \x01\x01Q\x94P\x94P\x94P\x94PPa.\xEAV[`\0`\x01\x88` \x01QQa-\xAE\x91\x90aC\xA8V[\x90P`\x01[\x81a\xFF\xFF\x16\x81a\xFF\xFF\x16\x11a.~W\x87a\xFF\xFF\x16a-\xDE\x82a\xFF\xFF\x16\x85a/\xA2\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[a\xFF\xFF\x16\x10a.lWa.\0a-\xF5`\x01\x83aC\xA8V[\x84\x90a\xFF\xFF\x16a/\xA2V[a.\x0E\x84a\xFF\xFF\x84\x16a/\xA2V[` \x8B\x01Qa.\x1E`\x01\x85aC\xA8V[a\xFF\xFF\x16\x81Q\x81\x10a.2Wa.2a2VV[` \x02` \x01\x01Q\x8B` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.TWa.Ta2VV[` \x02` \x01\x01Q\x96P\x96P\x96P\x96PPPPa.\xEAV[\x80a.v\x81aC\xC3V[\x91PPa-\xB3V[Pa.\x8D\x82a\xFF\xFF\x83\x16a/\xA2V[a.\x9B\x83a\xFF\xFF\x84\x16a/\xA2V[\x89` \x01Q\x83a\xFF\xFF\x16\x81Q\x81\x10a.\xB5Wa.\xB5a2VV[` \x02` \x01\x01Q\x8A` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.\xD7Wa.\xD7a2VV[` \x02` \x01\x01Q\x95P\x95P\x95P\x95PPP[\x92\x95\x91\x94P\x92PV[`\0\x84\x84\x10a/\x03WP\x80a$\xC7V[`\0a/\x0F\x87\x86aB\xD8V[\x90P`\0a/\x1D\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a/8Wa%\xAE\x83\x83a%\xCD\x88\x8AaB\xEBV[a%\xD4\x83\x83a%\xA7\x89\x89aB\xEBV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a/kWP\x82\x82\x11[\x80a%ZWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[`\0\x81\x83\x11a-(W\x81a-*V[`\0`\x10\x82\x10a/\xDEW`@Q\x7FN#\xD05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x10\x02\x1C\x90V[`\0`@\x82\x84\x03\x12\x15a/\xF8W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a0\x10W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0(W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\\W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a0tW`\0\x80\xFD[a0\x80\x87\x83\x88\x01a/\xE6V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a0\x96W`\0\x80\xFD[Pa0\xA3\x86\x82\x87\x01a/\xFEV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a0\xC2W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\xDAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a1\x08W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\x1FW`\0\x80\xFD[a1+\x85\x82\x86\x01a0\xB0V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a1MW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a1eW`\0\x80\xFD[a1q\x88\x83\x89\x01a0\xB0V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a1\x8AW`\0\x80\xFD[Pa1\x97\x87\x82\x88\x01a/\xFEV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a1\xD0\x81a1\xA3V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a1\xE7W`\0\x80\xFD[\x815a-*\x81a1\xA3V[`\0` \x82\x84\x03\x12\x15a2\x04W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a2\x1BW`\0\x80\xFD[a%Z\x84\x82\x85\x01a/\xE6V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a2\xA0W\x81\x81\x01Q\x83\x82\x01R` \x01a2\x88V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra2\xC1\x81` \x86\x01` \x86\x01a2\x85V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a3SW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a3\x08V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra3\xD2a\x01\xA0\x85\x01\x82a2\xA9V[\x90P` \x83\x01Qa4\x10` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra4(\x82\x82a2\xF3V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra4B\x82\x82a2\xA9V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a4\xCEW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra4\xBC\x86\x83Qa3^V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a4\x82V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a5SW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a5oW`\0\x80\xFD[PQ\x91\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a5\xABW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a5\xC6W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a0@W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@R\x90V[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a6\xD7Wa6\xD7a2'V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a6\xF0W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\nWa7\na2'V[a7;` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a6\x90V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a7PW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a7\x7FW`\0\x80\xFD[a7\x87a5\xDBV[\x90P\x815a7\x94\x81a1\xA3V[\x81R` \x82\x015a7\xA4\x81a1\xA3V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a7\xCD\x81a1\xA3V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\xECW`\0\x80\xFD[a7\xF8\x84\x82\x85\x01a6\xDFV[`\xA0\x83\x01RP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a8\x1EWa8\x1Ea2'V[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15a8:W`\0\x80\xFD[a8Ba6\x04V[\x90P\x815\x81R` \x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a8cW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a8tW`\0\x80\xFD[\x805a8\x87a8\x82\x82a8\x04V[a6\x90V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a8\xA6W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a8\xC4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a8\xABV[\x80\x85\x87\x01RPPPPP\x92\x91PPV[`\0`\xA0\x82\x84\x03\x12\x15a8\xE6W`\0\x80\xFD[a8\xEEa6'V[\x90P\x815a8\xFB\x81a1\xA3V[\x81R` \x82\x81\x015\x90\x82\x01R`@\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a9!W`\0\x80\xFD[a9-\x84\x82\x85\x01a8(V[`@\x83\x01RP``\x82\x015``\x82\x01R`\x80\x82\x015`\x80\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a9^W`\0\x80\xFD[\x815` a9na8\x82\x83a8\x04V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a9\x8DW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a:jW\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a9\xB2W`\0\x80\x81\xFD[\x81\x89\x01\x91P`\xC0\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x84\x8D\x03\x01\x12\x15a9\xEBW`\0\x80\x81\xFD[a9\xF3a5\xDBV[\x87\x84\x015a:\0\x81a1\xA3V[\x81R`@\x84\x81\x015\x89\x83\x01R``\x80\x86\x015\x85\x81\x11\x15a: W`\0\x80\x81\xFD[a:.\x8F\x8C\x83\x8A\x01\x01a8(V[\x83\x85\x01RP`\x80\x94P\x84\x86\x015\x91Pa:F\x82a1\xA3V[\x82\x01R`\xA0\x84\x81\x015\x93\x82\x01\x93\x90\x93R\x92\x015\x90\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a9\x91V[P\x96\x95PPPPPPV[`\0`\xA0\x82\x84\x03\x12\x15a:\x87W`\0\x80\xFD[a:\x8Fa6'V[\x90P\x815\x81R` \x80\x83\x015a:\xA4\x81a1\xA3V[\x80\x82\x84\x01RP`@\x83\x015`@\x83\x01R``\x83\x015``\x83\x01R`\x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a:\xD8W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a:\xE9W`\0\x80\xFD[\x805a:\xF7a8\x82\x82a8\x04V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a;\x16W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a;4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a;\x1BV[`\x80\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a;VW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a;nW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a;\x82W`\0\x80\xFD[a;\x8Aa6JV[\x825\x82\x81\x11\x15a;\x99W`\0\x80\xFD[a;\xA5\x87\x82\x86\x01a7mV[\x82RPa;\xB4` \x84\x01a1\xC5V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015\x82\x81\x11\x15a;\xD5W`\0\x80\xFD[a;\xE1\x87\x82\x86\x01a8\xD4V[``\x83\x01RP`\x80\x83\x015\x82\x81\x11\x15a;\xF9W`\0\x80\xFD[a<\x05\x87\x82\x86\x01a9MV[`\x80\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a<\x1DW`\0\x80\xFD[a<)\x87\x82\x86\x01a:uV[`\xA0\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a\xB8\x81\x84` \x8B\x01a2\x85V[\x86Q\x90\x83\x01\x90a>\xCC\x81\x83` \x8B\x01a2\x85V[\x86Q\x91\x01\x90a>\xDF\x81\x83` \x8A\x01a2\x85V[\x85Q\x91\x01\x90a>\xF2\x81\x83` \x89\x01a2\x85V[\x84Q\x91\x01\x90a?\x05\x81\x83` \x88\x01a2\x85V[\x01\x97\x96PPPPPPPV[` \x81R`\0a-*` \x83\x01\x84a3^V[`\0` \x80\x83\x85\x03\x12\x15a?7W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a?NW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a?_W`\0\x80\xFD[\x80Qa?ma8\x82\x82a8\x04V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a?\x8CW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a?\xE8W\x80\x85\x8A\x03\x12\x15a?\xA9W`\0\x80\x81\xFD[a?\xB1a6mV[\x85Qa?\xBC\x81a1\xA3V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa?\xD5\x81a1\xA3V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a?\x91V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a#\x0EWa#\x0Ea?\xF4V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a%Z`@\x83\x01\x84a3^V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x15\x88Q` a@\x9F\x82\x84\x87\x01\x83\x8E\x01a2\x85V[\x89Q\x91\x85\x01\x91a@\xB4\x81\x85\x85\x01\x84\x8E\x01a2\x85V[\x89Q\x92\x01\x91a@\xC8\x81\x85\x85\x01\x84\x8D\x01a2\x85V[\x88Q\x92\x01\x91a@\xDC\x81\x85\x85\x01\x84\x8C\x01a2\x85V[\x87Q\x92\x01\x91a@\xF0\x81\x85\x85\x01\x84\x8B\x01a2\x85V[\x86Q\x92\x01\x91aA\x04\x81\x85\x85\x01\x84\x8A\x01a2\x85V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[`\0a\x01@aAH\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01RaA\x89`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01RaA\xBE\x81\x84\x01\x86a2\xA9V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%\xE1\x81\x85a2\xA9V[`\0\x83QaA\xE5\x81\x84` \x88\x01a2\x85V[\x83Q\x90\x83\x01\x90aA\xF9\x81\x83` \x88\x01a2\x85V[\x01\x94\x93PPPPV[`\0` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a:jW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aBgV[\x83\x81R\x82` \x82\x01R`\0\x82QaB\xA5\x81`@\x85\x01` \x87\x01a2\x85V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15aB\xC7W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a#\x0EWa#\x0Ea?\xF4V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aC\x0BWaC\x0Ba?\xF4V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aCCWaCCa?\xF4V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aCjWaCja?\xF4V[PP\x92\x91PPV[\x81Q`\0\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aC\x9CW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aC\x80V[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aC\x0BWaC\x0Ba?\xF4V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x03aC\xDAWaC\xDAa?\xF4V[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xA80\x88\xCF\x8C\xE7sJ\x1AO\xD4s\xE1]\xA5\xDD@\xDE\x92/\x9F#|\xDC\xD5\xA3%\x8B\xDB!\xAF\x85dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xA9JO\xF3j\x9At$\n\x86!\x9B}%\0D/\x7F\x9F\xE2'{\xBC\x042y\xEDN\x14jW\x84dsolcC\0\x08\x18\x003", + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[PaJ\xFE\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x86W[_\x80\xFD[\0[a\0Ma\0\xA9V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x99\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0}V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01RW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01v\x91\x90a\x04yV[\x90Pa\x01\xB7`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\x1EW_\x80\xFD[PZ\xF1\x15\x80\x15a\x020W=_\x80>=_\xFD[PPPP_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02U\x90a\x04lV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02\x96W=_\x80>=_\xFD[P\x90Pa\x02\xD8`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03?W_\x80\xFD[PZ\xF1\x15\x80\x15a\x03QW=_\x80>=_\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04=\x82\x82`@Q`$\x01a\x03\xC2\x92\x91\x90a\x04\xB3V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04AV[PPV[a\x04J\x81a\x04MV[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[aE\x8F\x80a\x05:\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x04\x89W_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xACW_\x80\xFD[\x93\x92PPPV[`@\x81R_\x83Q\x80`@\x84\x01R_[\x81\x81\x10\x15a\x04\xDFW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xC2V[P_``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xC0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0E\x8F8\x03\x80b\0E\x8F\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01dV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\xA4\xB0\x19F\x01b\0\0\xBDW`\x01`\x01`@\x1B\x03b\0\tab\0\0\xDE` \x1B\x17\x16`\xA0Rb\0\0\xD6V[`\x01`\x01`@\x1B\x03b\0\t\xD5b\0\x01H` \x1B\x17\x16`\xA0R[PPb\0\x01\xB9V[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\x1DW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01C\x91\x90b\0\x01\xA1V[\x90P\x90V[C\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01aW_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\x01vW_\x80\xFD[\x82Qb\0\x01\x83\x81b\0\x01LV[` \x84\x01Q\x90\x92Pb\0\x01\x96\x81b\0\x01LV[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15b\0\x01\xB2W_\x80\xFD[PQ\x91\x90PV[`\x80Q`\xA0QaC\xAEb\0\x01\xE1_9_a\n\xFF\x01R_\x81\x81`\xDA\x01Ra\x1A\xCE\x01RaC\xAE_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a/\x8FV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a0sV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a1\x0BV[a\x06eV[a\0\xB4a\x01e6`\x04a1&V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a1\x0BV[a\x08rV[a\x01\xE8a\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\nJV[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a1\x85V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0CDV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\t\xD9V[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a4CV[a\nJV[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\xF5V[a\x04\x9F\x81a\x0CDV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\t\xD9V[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0CDV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\nJV[\x81_\x81Q\x81\x10a\x08GWa\x08Ga1\x85V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\xF5V[a\x08d\x81a\x0CDV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xACW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xD0\x91\x90a4\x7FV[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xC2\x83\x80a4\x96V[\x81\x01\x90a\n\xCF\x91\x90a:BV[\x90P_a\n\xDB\x82a\r\x8FV[\x90Pa\n\xE7\x81\x83a\x10sV[a\n\xF0\x82a\x10\xCFV[a\n\xF9\x82a\x12/V[_a\x0B&\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\x0B\\\x85`\xA0\x01Q_\x01Q\x84\x87``\x01Qa\x134\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0By\x91\x85a\x13\xF9V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x8E\x91\x90a4\x96V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0B\xED\x92\x87\x92\x90\x85a\x14\xDEV[PPP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0C\x14Wa\x0C\x14a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C'\x81a\x14\xF2V[a\x0C1\x813a\x19\xCFV[a\x0C;\x813a\x1A\xCCV[P`\x01\x01a\x0B\xF9V[\x80Q_[\x81\x81\x10\x15a\r~W_\x83\x82\x81Q\x81\x10a\x0CcWa\x0Cca1\x85V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\xE0W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x97Wa\x0C\x97a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C\xD7\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1E\xC6\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0CxV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r(Wa\r(a1\x85V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\rl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CHV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1F\rV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R_\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q` \x01a\x0Fq\x90a;QV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\x8F\x90a\x03V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x82W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15\xC7\x91\x90\x81\x01\x90a>\x15V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\xDE\x82\x84a?\x0BV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\xF6Wa\x15\xF6a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16\x14W\x90P[P\x90P_[\x83\x81\x10\x15a\x16\xAEW\x85`@\x01Q\x81\x81Q\x81\x10a\x16\x81Wa\x16\x81a1\x85V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x9BWa\x16\x9Ba1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16cV[P_\x80_[\x84\x81\x10\x15a\x19\xBEW_\x87\x82\x81Q\x81\x10a\x16\xCEWa\x16\xCEa1\x85V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x17\x89W\x88\x81\x81Q\x81\x10a\x16\xF4Wa\x16\xF4a1\x85V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x81W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\xDAV[P_\x80[\x88\x81\x10\x15a\x18FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x17\xACWa\x17\xACa1\x85V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18=W\x85\x15a\x18'W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x186\x90\x84a?\x0BV[\x92P`\x01\x96P[P`\x01\x01a\x17\x8DV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18\xBFW\x84\x15a\x18\xA6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18\xB8\x90\x82a?\x0BV[\x90P`\x01\x93P[\x80_\x03a\x19\x13W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x19!\x81`\x05a'\x10a'\xF2V[\x82` \x01Q\x11\x15a\x19\x94W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x19\xA9Wa\x19\xA9a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x16\xB3V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\x9C\x90\x84\x90\x86\x90`\x04\x01a?\x1EV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A\xB2W_\x80\xFD[PZ\xFA\x15\x80\x15a\x1A\xC4W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x8B\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1CV\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aB\xBE`.\x919`@Q` \x01a\x1C\xC0\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1D\xF0\x90`\xB8\x01a=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1E\xEBWa\x03L\x82\x82a\x1F\rV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(,V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1FcW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1FhV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aB\xEC`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10V\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q` \x01a L\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!\x0C\x92\x90\x91\x90`\x84\x01a@\xB8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Qa!8\x85`@\x01Qa)\x13V[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10VV[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xAAWa!\xAAa1XV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a!\xD4W` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P_[\x81\x81\x10\x15a\"\x19W_a\"\x07\x86\x83\x81Q\x81\x10a!\xFAWa!\xFAa1\x85V[` \x02` \x01\x01Qa*\x0FV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a!\xDCV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xA0\x01Q`@Q` \x01a\"A\x91\x90a@\xE6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"~\x93\x92\x91` \x01aAiV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\"\xB3\x91\x90aA\x95V[\x91P\x91P_\x83`@\x81Q\x81\x10a\"\xCBWa\"\xCBa1\x85V[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#%W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\x80WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a#\xB7W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x81\x83\x10\x15a#\xECWa#\xDBa#\xD6\x84\x84aA\xB7V[a+qV[a#\xE5\x90_aA\xCAV[\x90Pa\"\x97V[a#\xE5a#\xD6\x83\x85aA\xB7V[_\x80\x82\x12a$\x10Wa#\xE5\x83\x83c;\x9A\xCA\0a'\xF2V[a$(a$\x1C\x83aA\xF0V[\x84\x90c;\x9A\xCA\0a,&V[a#\xE5\x90aA\xF0V[_a$G\x85a$@\x86\x84aA\xCAV[\x85\x85a$PV[\x95\x94PPPPPV[_\x80\x84\x12\x15a$\xB1W_a$c\x85aA\xF0V[\x90P\x85a$\x90\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaA\xB7V[\x10\x15a$\x9FW\x82\x91PPa$\xD8V[a$\xA9\x81\x87a?\x0BV[\x91PPa$\xCDV[\x83\x85\x10\x15a$\xC0WP\x81a$\xD8V[a$\xCA\x84\x86aA\xB7V[\x90P[a$G\x81\x84\x84a,hV[\x94\x93PPPPV[_\x84\x84\x10a$\xEFWP\x80a$GV[_a$\xFA\x87\x86aA\xB7V[\x90P_a%\x07\x88\x88aA\xB7V[\x90P_\x85\x85\x12\x15a%8Wa%(\x83\x83a%!\x88\x8AaA\xCAV[\x91\x90a'\xF2V[a%1\x90aA\xF0V[\x90Pa%QV[a%N\x83\x83a%G\x89\x89aA\xCAV[\x91\x90a,&V[\x90P[a%[\x81\x87aB&V[\x99\x98PPPPPPPPPV[_`\x10\x82_\x01Q` \x01QQ\x11\x15a%\xACW`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a%\xC7WP\x81Q` \x01QQ\x15[\x15a%\xE6W`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa\"\x97\x92\x90\x91a,hV[_a&\x06\x83`@\x01Q\x84``\x01Qa%\xFE\x91\x90aA\xB7V[a\xFF\xFFa,xV[\x90P_\x80_\x80a&\x19\x87_\x01Q\x86a,\x8FV[\x93P\x93P\x93P\x93P_a&C\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&a\x92\x91\x84\x91a$PV[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.H\x81RP\x90P_a&\xF7\x82a%hV[\x90P`@Q\x80``\x01`@R\x80\x87_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a']\x84\x84\x83a.\x98V[a\x14\xEBW\x81a'\x98W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a#\xB7W_\x82\x82\x81Q\x81\x10a'\xBBWa'\xBBa1\x85V[` \x02` \x01\x01Q\x90Pa'\xE4\x85a'\x10a'\xD6\x91\x90a?\x0BV[` \x83\x01Q\x90a'\x10a,&V[` \x90\x91\x01R`\x01\x01a'\x9FV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(%W_\x80\xFD[P\x91\x02\x04\x90V[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x14\xEBW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R_\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Q`@Q` \x01a)\xBC\x91\x90aBMV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10VV[_`@Q` \x01a*\x1F\x90a&W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a>LW_\x80\xFD[\x80Qa>Za7\x92\x82a7\x19V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a>xW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a>\xD2W\x80\x85\x8A\x03\x12\x15a>\x93W_\x80\xFD[a>\x9Ba5\x89V[\x85Qa>\xA6\x81a0\xDAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa>\xBF\x81a0\xDAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a>}V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\"\x97Wa\"\x97a>\xDEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a$\xD8`@\x83\x01\x84a2\x86V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_`\x15\x88Q` a?\x85\x82\x84\x87\x01\x83\x8E\x01a1\xB2V[\x89Q\x91\x85\x01\x91a?\x9A\x81\x85\x85\x01\x84\x8E\x01a1\xB2V[\x89Q\x92\x01\x91a?\xAE\x81\x85\x85\x01\x84\x8D\x01a1\xB2V[\x88Q\x92\x01\x91a?\xC2\x81\x85\x85\x01\x84\x8C\x01a1\xB2V[\x87Q\x92\x01\x91a?\xD6\x81\x85\x85\x01\x84\x8B\x01a1\xB2V[\x86Q\x92\x01\x91a?\xEA\x81\x85\x85\x01\x84\x8A\x01a1\xB2V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[_a\x01@a@-\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra@n`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra@\xA3\x81\x84\x01\x86a1\xD4V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%[\x81\x85a1\xD4V[_\x83Qa@\xC9\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xDD\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[_` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a9mW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aAIV[\x83\x81R\x82` \x82\x01R_\x82QaA\x86\x81`@\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[_\x80`@\x83\x85\x03\x12\x15aA\xA6W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a\"\x97Wa\"\x97a>\xDEV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aA\xE9WaA\xE9a>\xDEV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aB WaB a>\xDEV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aBEWaBEa>\xDEV[PP\x92\x91PPV[\x81Q_\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aBvW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aBZV[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aA\xE9WaA\xE9a>\xDEV[_a\xFF\xFF\x80\x83\x16\x81\x81\x03aB\xB3WaB\xB3a>\xDEV[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 v\xEBd\xBF$\x1A=&>\xC5\xA7-\xE2\x969\xED\xAD\xAF\xD9\xDC4{\x19\xB4\x92[\xF5\xD9s\xD5b\xEFdsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 i\xBD\x87\xDE\xBD.<\x96\x12\xD9\xA3m\x80\x84\x81\xC3\xE3\x85\xDDm\x05\xB9\xA2\xAC\x80,\xAB\x9D\xBF\xFB\xA6\x1BdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610089575b600080fd5b005b6100506100ac565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252015b60405180910390f35b600c5461009c9062010000900460ff1681565b6040519015158152602001610080565b60408051808201909152600080825260208201526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e455200000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017d9190610493565b90506101be6040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561022957600080fd5b505af115801561023d573d6000803e3d6000fd5b5050505060008060001b6e22d473030f116ddee9f6b43ac78ba38360405161026490610486565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156102a8573d6000803e3d6000fd5b5090506102ea6040518060400160405280600781526020017f52656163746f7200000000000000000000000000000000000000000000000000815250826103c4565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561035557600080fd5b505af1158015610369573d6000803e3d6000fd5b5050505060405180604001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b61045582826040516024016103da9291906104d0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610459565b5050565b61046281610465565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6146c48061055a83390190565b6000602082840312156104a557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104c957600080fd5b9392505050565b604081526000835180604084015260005b818110156104fe57602081870181015160608684010152016104e1565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60c06040523480156200001157600080fd5b50604051620046c4380380620046c483398101604081905262000034916200016a565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805261a4b0194601620000bf576001600160401b0362000985620000e060201b171660a052620000d8565b6001600160401b03620009fc6200014d60201b171660a0525b5050620001c3565b600060646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001489190620001a9565b905090565b4390565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b600060208284031215620001bc57600080fd5b5051919050565b60805160a0516144d5620001ef6000396000610b2901526000818160e00152611b3201526144d56000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004613047565b6101eb565b005b6100b96100c93660046130f5565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004613137565b6104c5565b34801561014a57600080fd5b506100b96101593660046131d5565b610683565b6100b961016c3660046131f2565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046131d5565b610894565b6101f3610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b284610a71565b816000815181106102c5576102c5613256565b60200260200101819052506102d981610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401613459565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610c73565b5061035f6001600255565b505050565b61036c610a00565b8060008167ffffffffffffffff81111561038857610388613227565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466613256565b9050602002810190610478919061351f565b610a71565b82828151811061048f5761048f613256565b6020908102919091010152600101610449565b506104ac81610c22565b6104b581610c73565b50506104c16001600255565b5050565b6104cd610a00565b8260008167ffffffffffffffff8111156104e9576104e9613227565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466613256565b8282815181106105d9576105d9613256565b60209081029190910101526001016105aa565b506105f681610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401613459565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610c73565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae57905050905061085682610a71565b8160008151811061086957610869613256565b602002602001018190525061087d81610c22565b61088681610c73565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f7919061355d565b905090565b4390565b6002805403610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610aea8380613576565b810190610af79190613b44565b90506000610b0482610dc6565b9050610b1081836110ac565b610b1982611108565b610b228261126c565b6000610b507f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b90506040518060a0016040528084600001518152602001610b888560a00151600001518487606001516113799092919063ffffffff16565b815260a0850151516080860151602090920191610ba59185611444565b8152602001868060200190610bba9190613576565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602090810184905260a0850151908101518151604090920151929650610c1a928792908561152b565b505050919050565b805160005b8181101561035f576000838281518110610c4357610c43613256565b60200260200101519050610c568161153f565b610c608133611a2f565b610c6a8133611b30565b50600101610c27565b805160005b81811015610db5576000838281518110610c9457610c94613256565b602002602001015190506000816040015151905060005b81811015610d1557600083604001518281518110610ccb57610ccb613256565b60200260200101519050610d0c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611f329092919063ffffffff16565b50600101610cab565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610d5e57610d5e613256565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610da391815260200190565b60405180910390a45050600101610c78565b5047156104c1576104c13347611f79565b6040517f563344757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8201527f56334475746368496e7075742062617365496e7075742c00000000000000000060658201527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c820152600090609801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208301527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348301527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b83015290606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906144136020830139604051602001610fa990613c5c565b604051602081830303815290604052604051602001610fc790613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110069594939291602001613ea6565b604051602081830303815290604052805190602001206110298360000151612013565b8360200151846040015161104086606001516120ad565b61104d87608001516121fe565b60408051602081019790975286019490945273ffffffffffffffffffffffffffffffffffffffff9092166060850152608084015260a083015260c082015260e0015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110eb576040517fb08ce5b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516104c1906110fe838561229f565b8360c00151612314565b60a08101516060015115611174578060600151602001518160a00151606001511115611160576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160609081015190820151602001525b8060800151518160a001516080015151146111bb576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808101515160005b8181101561035f576000836080015182815181106111e4576111e4613256565b6020026020010151905060008460a0015160800151838151811061120a5761120a613256565b602002602001015190508060001461126257816020015181101561125a576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111c4565b600061128582604001514861243c90919063ffffffff16565b90508160600151608001516000146112e05760006112ab83606001516080015183612477565b90506112d58160008560600151606001518660600151602001516124b0909392919063ffffffff16565b606084015160200152505b60808201515160005b8181101561067d5760008460800151828151811061130957611309613256565b602002602001015190508060a0015160001461137057600061132f8260a0015186612477565b60808301516020840151919250611369919083907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6124d0565b6020830152505b506001016112e9565b6113b36040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001600081526020018660600151815260200161256281525090506000611404826125ee565b6040805160608082018352895173ffffffffffffffffffffffffffffffffffffffff16825260208201939093529790910151908701525093949350505050565b82516060908067ffffffffffffffff81111561146257611462613227565b6040519080825280602002602001820160405280156114cb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114805790505b50915060005b81811015611522576114fd8682815181106114ee576114ee613256565b602002602001015186866126fa565b83828151811061150f5761150f613256565b60209081029190910101526001016114d1565b50509392505050565b61153885858585856127e3565b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661155f5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906115b6908590600401613f11565b600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116199190810190613f24565b60408301515181519192509060006116318284614023565b67ffffffffffffffff81111561164957611649613227565b6040519080825280602002602001820160405280156116b257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116675790505b50905060005b8381101561170357856040015181815181106116d6576116d6613256565b60200260200101518282815181106116f0576116f0613256565b60209081029190910101526001016116b8565b5060008060005b84811015611a1e57600087828151811061172657611726613256565b6020026020010151905060005b828110156117e45788818151811061174d5761174d613256565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117dc5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b600101611733565b506000805b888110156118a55760008b60400151828151811061180957611809613256565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361189c578515611886576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118959084614023565b9250600196505b506001016117e9565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361191e578415611905576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516119179082614023565b9050600193505b806000036119735781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611981816005612710612885565b826020015111156119f4578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611a0957611a09613256565b6020908102919091010152505060010161170a565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a80576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611afc9084908690600401614036565b60006040518083038186803b158015611b1457600080fd5b505afa158015611b28573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611bf0846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051602001611cbd907f4e6f6e6c696e656172447574636844656361792800000000000000000000000081527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060148201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000602b82015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061441360208301396040518060600160405280602e81526020016143e5602e9139604051602001611d2790613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f563344757463684f72646572280000000000000000000000000000000000000060208401527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8401527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8401527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8401527f56334475746368496e7075742062617365496e7075742c00000000000000000060658401527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c840152815160788185030181526098840190925291611e579060b801613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e97969594939291602001614065565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611f049695949392600401614118565b600060405180830381600087803b158015611f1e57600080fd5b505af1158015611b28573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611f575761035f8282611f79565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846128c1565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611fd3576040519150601f19603f3d011682016040523d82523d6000602084013e611fd8565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001614413608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161108f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040516020016120be90613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b840152815160448185030181526064840190925261217e929091906084016141d3565b60405160208183030381529060405280519060200120826000015183602001516121ab85604001516129ac565b60608087015160808089015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff909716968801969096529186019390935284015260a083015260c082015260e00161108f565b600080825160200267ffffffffffffffff81111561221e5761221e613227565b6040519080825280601f01601f191660200182016040528015612248576020820181803683370190505b50835190915060005b8181101561228f57600061227d86838151811061227057612270613256565b6020026020010151612aaa565b60208381028601015250600101612251565b5050805160209091012092915050565b600081468460a001516040516020016122b89190614202565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526122f5939291602001614287565b6040516020818303038152906040528051906020012090505b92915050565b6000808280602001905181019061232b91906142b4565b9150915060008360408151811061234457612344613256565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156123a1573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415806123fc575073ffffffffffffffffffffffffffffffffffffffff8116155b15612433576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b60008183101561246a5761245861245384846142d8565b612c0e565b6124639060006142eb565b905061230e565b61246361245383856142d8565b600080821261248f576124638383633b9aca00612885565b6124a761249b83614312565b8490633b9aca00612cc4565b61246390614312565b60006124c7856124c086846142eb565b85856124d0565b95945050505050565b6000808412156125335760006124e585614312565b905085612512827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6142d8565b1015612521578291505061255a565b61252b8187614023565b91505061254f565b8385101561254257508161255a565b61254c84866142d8565b90505b6124c7818484612d08565b949350505050565b60008484106125725750806124c7565b600061257e87866142d8565b9050600061258c88886142d8565b90506000858512156125be576125ae83836125a7888a6142eb565b9190612885565b6125b790614312565b90506125d7565b6125d483836125cd89896142eb565b9190612cc4565b90505b6125e1818761434a565b9998505050505050505050565b60006010826000015160200151511115612634576040517f0e99676600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160600151826040015110158061264f575081516020015151155b1561266e57608082015160a0830151602084015161230e929091612d08565b600061268f8360400151846060015161268791906142d8565b61ffff612d19565b90506000806000806126a5876000015186612d31565b935093509350935060006126d08561ffff168561ffff168861ffff1686868d60c0015163ffffffff16565b608089015160a08a015160208b01519293506126ee929184916124d0565b98975050505050505050565b604080516060810182526000808252602082018190529181019190915260006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001866080015181526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001612ef381525090506000612787826125ee565b90506040518060600160405280876000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001876060015173ffffffffffffffffffffffffffffffffffffffff16815250925050509392505050565b6127ee848483612f47565b6115385781612829576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561243357600082828151811061284e5761284e613256565b60200260200101519050612877856127106128699190614023565b602083015190612710612cc4565b602090910152600101612831565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026128ba57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b6040517f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208201527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8201526000906064016040516020818303038152906040528051906020012082600001518360200151604051602001612a579190614372565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830194909452810191909152606081019190915260800161108f565b6000604051602001612abb90613d6e565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8401528151604481850301815260648401909252612b7b929091906084016141d3565b6040516020818303038152906040528051906020012082600001518360200151612ba885604001516129ac565b60608087015160808089015160a0808b015160408051602081019b909b5273ffffffffffffffffffffffffffffffffffffffff998a16908b01529489019690965290870193909352939093169184019190915260c083015260e08201526101000161108f565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401610700565b5090565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612cf957600080fd5b50910281810615159190040190565b600061255a612d178585612f93565b835b6000818310612d285781612d2a565b825b9392505050565b6000806000806000612d44876000015190565b905061ffff8616612d56826000612fa2565b61ffff1610612d9a576000612d6b8282612fa2565b60008960200151600081518110612d8457612d84613256565b6020026020010151945094509450945050612eea565b60006001886020015151612dae91906143a8565b905060015b8161ffff168161ffff1611612e7e578761ffff16612dde8261ffff1685612fa290919063ffffffff16565b61ffff1610612e6c57612e00612df56001836143a8565b849061ffff16612fa2565b612e0e8461ffff8416612fa2565b60208b0151612e1e6001856143a8565b61ffff1681518110612e3257612e32613256565b60200260200101518b602001518461ffff1681518110612e5457612e54613256565b60200260200101519650965096509650505050612eea565b80612e76816143c3565b915050612db3565b50612e8d8261ffff8316612fa2565b612e9b8361ffff8416612fa2565b89602001518361ffff1681518110612eb557612eb5613256565b60200260200101518a602001518461ffff1681518110612ed757612ed7613256565b6020026020010151955095509550955050505b92959194509250565b6000848410612f035750806124c7565b6000612f0f87866142d8565b90506000612f1d88886142d8565b9050600085851215612f38576125ae83836125cd888a6142eb565b6125d483836125a789896142eb565b600073ffffffffffffffffffffffffffffffffffffffff84161580612f6b57508282115b8061255a575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b6000818311612d285781612d2a565b600060108210612fde576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506010021c90565b600060408284031215612ff857600080fd5b50919050565b60008083601f84011261301057600080fd5b50813567ffffffffffffffff81111561302857600080fd5b60208301915083602082850101111561304057600080fd5b9250929050565b60008060006040848603121561305c57600080fd5b833567ffffffffffffffff8082111561307457600080fd5b61308087838801612fe6565b9450602086013591508082111561309657600080fd5b506130a386828701612ffe565b9497909650939450505050565b60008083601f8401126130c257600080fd5b50813567ffffffffffffffff8111156130da57600080fd5b6020830191508360208260051b850101111561304057600080fd5b6000806020838503121561310857600080fd5b823567ffffffffffffffff81111561311f57600080fd5b61312b858286016130b0565b90969095509350505050565b6000806000806040858703121561314d57600080fd5b843567ffffffffffffffff8082111561316557600080fd5b613171888389016130b0565b9096509450602087013591508082111561318a57600080fd5b5061319787828801612ffe565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356131d0816131a3565b919050565b6000602082840312156131e757600080fd5b8135612d2a816131a3565b60006020828403121561320457600080fd5b813567ffffffffffffffff81111561321b57600080fd5b61255a84828501612fe6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156132a0578181015183820152602001613288565b50506000910152565b600081518084526132c1816020860160208601613285565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015613353578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101613308565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526133d26101a08501826132a9565b905060208301516134106020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261342882826132f3565b915050606083015184820360a086015261344282826132a9565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156134ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526134bc86835161335e565b95509382019390820190600101613482565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261355357600080fd5b9190910192915050565b60006020828403121561356f57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135ab57600080fd5b83018035915067ffffffffffffffff8211156135c657600080fd5b60200191503681900382131561304057600080fd5b60405160c0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405290565b6040805190810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160a0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160e0810167ffffffffffffffff811182821017156135fe576135fe613227565b6040516060810167ffffffffffffffff811182821017156135fe576135fe613227565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156136d7576136d7613227565b604052919050565b600082601f8301126136f057600080fd5b813567ffffffffffffffff81111561370a5761370a613227565b61373b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613690565b81815284602083860101111561375057600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561377f57600080fd5b6137876135db565b90508135613794816131a3565b815260208201356137a4816131a3565b80602083015250604082013560408201526060820135606082015260808201356137cd816131a3565b608082015260a082013567ffffffffffffffff8111156137ec57600080fd5b6137f8848285016136df565b60a08301525092915050565b600067ffffffffffffffff82111561381e5761381e613227565b5060051b60200190565b60006040828403121561383a57600080fd5b613842613604565b90508135815260208083013567ffffffffffffffff81111561386357600080fd5b8301601f8101851361387457600080fd5b803561388761388282613804565b613690565b81815260059190911b820183019083810190878311156138a657600080fd5b928401925b828410156138c4578335825292840192908401906138ab565b8085870152505050505092915050565b600060a082840312156138e657600080fd5b6138ee613627565b905081356138fb816131a3565b815260208281013590820152604082013567ffffffffffffffff81111561392157600080fd5b61392d84828501613828565b604083015250606082013560608201526080820135608082015292915050565b600082601f83011261395e57600080fd5b8135602061396e61388283613804565b82815260059290921b8401810191818101908684111561398d57600080fd5b8286015b84811015613a6a57803567ffffffffffffffff808211156139b25760008081fd5b818901915060c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156139eb5760008081fd5b6139f36135db565b87840135613a00816131a3565b81526040848101358983015260608086013585811115613a205760008081fd5b613a2e8f8c838a0101613828565b838501525060809450848601359150613a46826131a3565b82015260a08481013593820193909352920135908201528352918301918301613991565b509695505050505050565b600060a08284031215613a8757600080fd5b613a8f613627565b905081358152602080830135613aa4816131a3565b8082840152506040830135604083015260608301356060830152608083013567ffffffffffffffff811115613ad857600080fd5b8301601f81018513613ae957600080fd5b8035613af761388282613804565b81815260059190911b82018301908381019087831115613b1657600080fd5b928401925b82841015613b3457833582529284019290840190613b1b565b6080860152509295945050505050565b600060208284031215613b5657600080fd5b813567ffffffffffffffff80821115613b6e57600080fd5b9083019060e08286031215613b8257600080fd5b613b8a61364a565b823582811115613b9957600080fd5b613ba58782860161376d565b825250613bb4602084016131c5565b602082015260408301356040820152606083013582811115613bd557600080fd5b613be1878286016138d4565b606083015250608083013582811115613bf957600080fd5b613c058782860161394d565b60808301525060a083013582811115613c1d57600080fd5b613c2987828601613a75565b60a08301525060c083013582811115613c4157600080fd5b613c4d878286016136df565b60c08301525095945050505050565b7f56334475746368496e707574280000000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600d8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601b8201527f4e6f6e6c696e656172447574636844656361792063757276652c000000000000602f8201527f75696e74323536206d6178416d6f756e742c000000000000000000000000000060498201527f75696e743235362061646a7573746d656e745065724777656942617365466565605b8201527f2900000000000000000000000000000000000000000000000000000000000000607b8201526000607c820161230e565b7f563344757463684f75747075742800000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600e8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601c8201527f4e6f6e6c696e656172447574636844656361792063757276652c00000000000060308201527f6164647265737320726563697069656e742c0000000000000000000000000000604a8201527f75696e74323536206d696e416d6f756e742c0000000000000000000000000000605c8201527f75696e743235362061646a7573746d656e745065724777656942617365466565606e8201527f2900000000000000000000000000000000000000000000000000000000000000608e8201526000608f820161230e565b60008651613eb8818460208b01613285565b865190830190613ecc818360208b01613285565b8651910190613edf818360208a01613285565b8551910190613ef2818360208901613285565b8451910190613f05818360208801613285565b01979650505050505050565b602081526000612d2a602083018461335e565b60006020808385031215613f3757600080fd5b825167ffffffffffffffff811115613f4e57600080fd5b8301601f81018513613f5f57600080fd5b8051613f6d61388282613804565b81815260609182028301840191848201919088841115613f8c57600080fd5b938501935b83851015613fe85780858a031215613fa95760008081fd5b613fb161366d565b8551613fbc816131a3565b81528587015187820152604080870151613fd5816131a3565b9082015283529384019391850191613f91565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561230e5761230e613ff4565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061255a604083018461335e565b7f563344757463684f72646572207769746e6573732900000000000000000000008152600060158851602061409f82848701838e01613285565b8951918501916140b481858501848e01613285565b89519201916140c881858501848d01613285565b88519201916140dc81858501848c01613285565b87519201916140f081858501848b01613285565b865192019161410481858501848a01613285565b919091019091019998505050505050505050565b6000610140614148838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526141896080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526141be818401866132a9565b90508281036101208401526125e181856132a9565b600083516141e5818460208801613285565b8351908301906141f9818360208801613285565b01949350505050565b6000602080835260c0830184518285015273ffffffffffffffffffffffffffffffffffffffff828601511660408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e0870191508483019350600092505b80831015613a6a5783518252928401926001929092019190840190614267565b838152826020820152600082516142a5816040850160208701613285565b91909101604001949350505050565b600080604083850312156142c757600080fd5b505080516020909101519092909150565b8181038181111561230e5761230e613ff4565b818103600083128015838313168383128216171561430b5761430b613ff4565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361434357614343613ff4565b5060000390565b808201828112600083128015821682158216171561436a5761436a613ff4565b505092915050565b815160009082906020808601845b8381101561439c57815185529382019390820190600101614380565b50929695505050505050565b61ffff82811682821603908082111561430b5761430b613ff4565b600061ffff8083168181036143da576143da613ff4565b600101939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220a83088cf8ce7734a1a4fd473e15da5dd40de922f9f237cdcd5a3258bdb21af8564736f6c63430008180033a2646970667358221220a94a4ff36a9a74240a86219b7d2500442f7f9fe2277bbc043279ed4e146a578464736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610086575b5f80fd5b005b61004d6100a9565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252015b60405180910390f35b600c546100999062010000900460ff1681565b604051901515815260200161007d565b604080518082019091525f80825260208201526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e4552000000000000000000000060448201525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610152573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101769190610479565b90506101b76040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250826103ac565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561021e575f80fd5b505af1158015610230573d5f803e3d5ffd5b505050505f805f1b6e22d473030f116ddee9f6b43ac78ba3836040516102559061046c565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103905ff5905080158015610296573d5f803e3d5ffd5b5090506102d86040518060400160405280600781526020017f52656163746f7200000000000000000000000000000000000000000000000000815250826103ac565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561033f575f80fd5b505af1158015610351573d5f803e3d5ffd5b5050505060405180604001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b61043d82826040516024016103c29291906104b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610441565b5050565b61044a8161044d565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b61458f8061053a83390190565b5f60208284031215610489575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146104ac575f80fd5b9392505050565b604081525f83518060408401525f5b818110156104df57602081870181015160608684010152016104c2565b505f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60c060405234801562000010575f80fd5b506040516200458f3803806200458f833981016040819052620000339162000164565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805261a4b0194601620000bd576001600160401b0362000961620000de60201b171660a052620000d6565b6001600160401b03620009d56200014860201b171660a0525b5050620001b9565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001439190620001a1565b905090565b4390565b6001600160a01b038116811462000161575f80fd5b50565b5f806040838503121562000176575f80fd5b825162000183816200014c565b602084015190925062000196816200014c565b809150509250929050565b5f60208284031215620001b2575f80fd5b5051919050565b60805160a0516143ae620001e15f395f610aff01525f818160da0152611ace01526143ae5ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af366004612f8f565b6101e0565b005b6100b46100c4366004613034565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004613073565b6104af565b348015610143575f80fd5b506100b461015236600461310b565b610665565b6100b4610165366004613126565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db36600461310b565b610872565b6101e86109d9565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a584610a4a565b815f815181106102b7576102b7613185565b60200260200101819052506102cb81610bf5565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b90849087908790600401613380565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610c44565b5061034c6001600255565b505050565b6103596109d9565b805f8167ffffffffffffffff81111561037457610374613158565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c5761046785858381811061045057610450613185565b90506020028101906104629190613443565b610a4a565b82828151811061047957610479613185565b6020908102919091010152600101610433565b5061049681610bf5565b61049f81610c44565b50506104ab6001600255565b5050565b6104b76109d9565b825f8167ffffffffffffffff8111156104d2576104d2613158565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae87878381811061045057610450613185565b8282815181106105c0576105c0613185565b6020908102919091010152600101610591565b506105dd81610bf5565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d90849088908890600401613380565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610c44565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b6107786109d9565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e57905050905061083582610a4a565b815f8151811061084757610847613185565b602002602001018190525061085b81610bf5565b61086481610c44565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d0919061347f565b905090565b4390565b6002805403610a44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610ac28380613496565b810190610acf9190613a42565b90505f610adb82610d8f565b9050610ae78183611073565b610af0826110cf565b610af98261122f565b5f610b267f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b90506040518060a00160405280845f01518152602001610b5c8560a001515f01518487606001516113349092919063ffffffff16565b815260a0850151516080860151602090920191610b7991856113f9565b8152602001868060200190610b8e9190613496565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810184905260a0850151908101518151604090920151929650610bed92879290856114de565b505050919050565b80515f5b8181101561034c575f838281518110610c1457610c14613185565b60200260200101519050610c27816114f2565b610c3181336119cf565b610c3b8133611acc565b50600101610bf9565b80515f5b81811015610d7e575f838281518110610c6357610c63613185565b602002602001015190505f81604001515190505f5b81811015610ce0575f83604001518281518110610c9757610c97613185565b60200260200101519050610cd781604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611ec69092919063ffffffff16565b50600101610c78565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610d2857610d28613185565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610d6c91815260200190565b60405180910390a45050600101610c48565b5047156104ab576104ab3347611f0d565b6040517f563344757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8201527f56334475746368496e7075742062617365496e7075742c00000000000000000060658201527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c8201525f90609801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208301527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348301527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b83015290606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906142ec6020830139604051602001610f7190613b51565b604051602081830303815290604052604051602001610f8f90613c62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fce9594939291602001613d99565b60405160208183030381529060405280519060200120610ff0835f0151611fa3565b83602001518460400151611007866060015161203c565b611014876080015161218b565b60408051602081019790975286019490945273ffffffffffffffffffffffffffffffffffffffff9092166060850152608084015260a083015260c082015260e0015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110b2576040517fb08ce5b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516104ab906110c58385612229565b8360c0015161229d565b60a0810151606001511561113b578060600151602001518160a00151606001511115611127576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160609081015190820151602001525b8060800151518160a00151608001515114611182576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080810151515f5b8181101561034c575f836080015182815181106111a9576111a9613185565b602002602001015190505f8460a001516080015183815181106111ce576111ce613185565b60200260200101519050805f1461122557816020015181101561121d576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b505060010161118a565b5f6112478260400151486123c090919063ffffffff16565b90508160600151608001515f1461129f575f61126b836060015160800151836123f9565b9050611294815f856060015160600151866060015160200151612431909392919063ffffffff16565b606084015160200152505b6080820151515f5b8181101561065f575f846080015182815181106112c6576112c6613185565b602002602001015190508060a001515f1461132b575f6112ea8260a00151866123f9565b60808301516020840151919250611324919083907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612450565b6020830152505b506001016112a7565b61136b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f6040518060e0016040528086604001518152602001866020015181526020018581526020018481526020015f8152602001866060015181526020016124e081525090505f6113b982612568565b6040805160608082018352895173ffffffffffffffffffffffffffffffffffffffff16825260208201939093529790910151908701525093949350505050565b82516060908067ffffffffffffffff81111561141757611417613158565b60405190808252806020026020018201604052801561147f57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114355790505b5091505f5b818110156114d5576114b08682815181106114a1576114a1613185565b6020026020010151868661266d565b8382815181106114c2576114c2613185565b6020908102919091010152600101611484565b50509392505050565b6114eb8585858585612752565b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff166115125750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611568908590600401613e03565b5f60405180830381865afa158015611582573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115c79190810190613e15565b6040830151518151919250905f6115de8284613f0b565b67ffffffffffffffff8111156115f6576115f6613158565b60405190808252806020026020018201604052801561165e57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116145790505b5090505f5b838110156116ae578560400151818151811061168157611681613185565b602002602001015182828151811061169b5761169b613185565b6020908102919091010152600101611663565b505f805f5b848110156119be575f8782815181106116ce576116ce613185565b602002602001015190505f5b82811015611789578881815181106116f4576116f4613185565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036117815781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6001016116da565b505f805b88811015611846575f8b6040015182815181106117ac576117ac613185565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff160361183d578515611827576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118369084613f0b565b9250600196505b5060010161178d565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036118bf5784156118a6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516118b89082613f0b565b9050600193505b805f036119135781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6119218160056127106127f2565b82602001511115611994578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a01815181106119a9576119a9613185565b602090810291909101015250506001016116b3565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a20576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611a9c9084908690600401613f1e565b5f6040518083038186803b158015611ab2575f80fd5b505afa158015611ac4573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611b8b846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff861682528087015181015190820152855f0151602001518660800151604051602001611c56907f4e6f6e6c696e656172447574636844656361792800000000000000000000000081527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060148201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000602b82015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906142ec60208301396040518060600160405280602e81526020016142be602e9139604051602001611cc090613b51565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f563344757463684f72646572280000000000000000000000000000000000000060208401527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8401527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8401527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8401527f56334475746368496e7075742062617365496e7075742c00000000000000000060658401527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c840152815160788185030181526098840190925291611df09060b801613c62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e30969594939291602001613f4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611e9d9695949392600401613ffe565b5f604051808303815f87803b158015611eb4575f80fd5b505af1158015611ac4573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611eeb5761034c8282611f0d565b61034c73ffffffffffffffffffffffffffffffffffffffff841633848461282c565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611f63576040519150601f19603f3d011682016040523d82523d5f602084013e611f68565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060c00160405280608d81526020016142ec608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161105698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f60405160200161204c90613b51565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b840152815160448185030181526064840190925261210c929091906084016140b8565b60405160208183030381529060405280519060200120825f015183602001516121388560400151612913565b60608087015160808089015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff909716968801969096529186019390935284015260a083015260c082015260e001611056565b5f80825160200267ffffffffffffffff8111156121aa576121aa613158565b6040519080825280601f01601f1916602001820160405280156121d4576020820181803683370190505b5083519091505f5b81811015612219575f6122078683815181106121fa576121fa613185565b6020026020010151612a0f565b602083810286010152506001016121dc565b5050805160209091012092915050565b5f81468460a0015160405160200161224191906140e6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261227e939291602001614169565b6040516020818303038152906040528051906020012090505b92915050565b5f80828060200190518101906122b39190614195565b915091505f836040815181106122cb576122cb613185565b01602090810151604080515f80825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa158015612325573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612380575073ffffffffffffffffffffffffffffffffffffffff8116155b156123b7576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b5f818310156123ec576123db6123d684846141b7565b612b71565b6123e5905f6141ca565b9050612297565b6123e56123d683856141b7565b5f808212612410576123e58383633b9aca006127f2565b61242861241c836141f0565b8490633b9aca00612c26565b6123e5906141f0565b5f6124478561244086846141ca565b8585612450565b95945050505050565b5f808412156124b1575f612463856141f0565b905085612490827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6141b7565b101561249f57829150506124d8565b6124a98187613f0b565b9150506124cd565b838510156124c05750816124d8565b6124ca84866141b7565b90505b612447818484612c68565b949350505050565b5f8484106124ef575080612447565b5f6124fa87866141b7565b90505f61250788886141b7565b90505f85851215612538576125288383612521888a6141ca565b91906127f2565b612531906141f0565b9050612551565b61254e838361254789896141ca565b9190612c26565b90505b61255b8187614226565b9998505050505050505050565b5f6010825f0151602001515111156125ac576040517f0e99676600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816060015182604001511015806125c7575081516020015151155b156125e657608082015160a08301516020840151612297929091612c68565b5f612606836040015184606001516125fe91906141b7565b61ffff612c78565b90505f805f80612619875f015186612c8f565b93509350935093505f6126438561ffff168561ffff168861ffff1686868d60c0015163ffffffff16565b608089015160a08a015160208b015192935061266192918491612450565b98975050505050505050565b604080516060810182525f80825260208201819052918101919091525f6040518060e001604052808660400151815260200186602001518152602001858152602001848152602001866080015181526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001612e4881525090505f6126f782612568565b90506040518060600160405280875f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001876060015173ffffffffffffffffffffffffffffffffffffffff16815250925050509392505050565b61275d848483612e98565b6114eb5781612798576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b81518110156123b7575f8282815181106127bb576127bb613185565b602002602001015190506127e4856127106127d69190613f0b565b602083015190612710612c26565b60209091015260010161279f565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612825575f80fd5b5091020490565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806114eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b6040517f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208201527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8201525f9060640160405160208183030381529060405280519060200120825f015183602001516040516020016129bc919061424d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120908301949094528101919091526060810191909152608001611056565b5f604051602001612a1f90613c62565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8401528151604481850301815260648401909252612adf929091906084016140b8565b60405160208183030381529060405280519060200120825f01518360200151612b0b8560400151612913565b60608087015160808089015160a0808b015160408051602081019b909b5273ffffffffffffffffffffffffffffffffffffffff998a16908b01529489019690965290870193909352939093169184019190915260c083015260e082015261010001611056565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612c22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e7432353600000000000000000000000000000000000000000000000060648201526084016106e1565b5090565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612c59575f80fd5b50910281810615159190040190565b5f6124d8612c768585612ee3565b835b5f818310612c865781612c88565b825b9392505050565b5f805f805f612c9e875f015190565b905061ffff8616612caf825f612ef1565b61ffff1610612cf0575f612cc38282612ef1565b5f89602001515f81518110612cda57612cda613185565b6020026020010151945094509450945050612e3f565b5f6001886020015151612d039190614282565b905060015b8161ffff168161ffff1611612dd3578761ffff16612d338261ffff1685612ef190919063ffffffff16565b61ffff1610612dc157612d55612d4a600183614282565b849061ffff16612ef1565b612d638461ffff8416612ef1565b60208b0151612d73600185614282565b61ffff1681518110612d8757612d87613185565b60200260200101518b602001518461ffff1681518110612da957612da9613185565b60200260200101519650965096509650505050612e3f565b80612dcb8161429d565b915050612d08565b50612de28261ffff8316612ef1565b612df08361ffff8416612ef1565b89602001518361ffff1681518110612e0a57612e0a613185565b60200260200101518a602001518461ffff1681518110612e2c57612e2c613185565b6020026020010151955095509550955050505b92959194509250565b5f848410612e57575080612447565b5f612e6287866141b7565b90505f612e6f88886141b7565b90505f85851215612e89576125288383612547888a6141ca565b61254e838361252189896141ca565b5f73ffffffffffffffffffffffffffffffffffffffff84161580612ebb57508282115b806124d8575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b5f818311612c865781612c88565b5f60108210612f2c576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506010021c90565b5f60408284031215612f44575f80fd5b50919050565b5f8083601f840112612f5a575f80fd5b50813567ffffffffffffffff811115612f71575f80fd5b602083019150836020828501011115612f88575f80fd5b9250929050565b5f805f60408486031215612fa1575f80fd5b833567ffffffffffffffff80821115612fb8575f80fd5b612fc487838801612f34565b94506020860135915080821115612fd9575f80fd5b50612fe686828701612f4a565b9497909650939450505050565b5f8083601f840112613003575f80fd5b50813567ffffffffffffffff81111561301a575f80fd5b6020830191508360208260051b8501011115612f88575f80fd5b5f8060208385031215613045575f80fd5b823567ffffffffffffffff81111561305b575f80fd5b61306785828601612ff3565b90969095509350505050565b5f805f8060408587031215613086575f80fd5b843567ffffffffffffffff8082111561309d575f80fd5b6130a988838901612ff3565b909650945060208701359150808211156130c1575f80fd5b506130ce87828801612f4a565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b8035613106816130da565b919050565b5f6020828403121561311b575f80fd5b8135612c88816130da565b5f60208284031215613136575f80fd5b813567ffffffffffffffff81111561314c575f80fd5b6124d884828501612f34565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156131cc5781810151838201526020016131b4565b50505f910152565b5f81518084526131eb8160208601602086016131b2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b8381101561327b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101613230565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526132f96101a08501826131d4565b905060208301516133376020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261334f828261321d565b915050606083015184820360a086015261336982826131d4565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b838110156133f3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526133e1868351613286565b955093820193908201906001016133a7565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613475575f80fd5b9190910192915050565b5f6020828403121561348f575f80fd5b5051919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126134c9575f80fd5b83018035915067ffffffffffffffff8211156134e3575f80fd5b602001915036819003821315612f88575f80fd5b60405160c0810167ffffffffffffffff8111828210171561351a5761351a613158565b60405290565b6040805190810167ffffffffffffffff8111828210171561351a5761351a613158565b60405160a0810167ffffffffffffffff8111828210171561351a5761351a613158565b60405160e0810167ffffffffffffffff8111828210171561351a5761351a613158565b6040516060810167ffffffffffffffff8111828210171561351a5761351a613158565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156135f3576135f3613158565b604052919050565b5f82601f83011261360a575f80fd5b813567ffffffffffffffff81111561362457613624613158565b61365560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016135ac565b818152846020838601011115613669575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215613695575f80fd5b61369d6134f7565b905081356136aa816130da565b815260208201356136ba816130da565b80602083015250604082013560408201526060820135606082015260808201356136e3816130da565b608082015260a082013567ffffffffffffffff811115613701575f80fd5b61370d848285016135fb565b60a08301525092915050565b5f67ffffffffffffffff82111561373257613732613158565b5060051b60200190565b5f6040828403121561374c575f80fd5b613754613520565b90508135815260208083013567ffffffffffffffff811115613774575f80fd5b8301601f81018513613784575f80fd5b803561379761379282613719565b6135ac565b81815260059190911b820183019083810190878311156137b5575f80fd5b928401925b828410156137d3578335825292840192908401906137ba565b8085870152505050505092915050565b5f60a082840312156137f3575f80fd5b6137fb613543565b90508135613808816130da565b815260208281013590820152604082013567ffffffffffffffff81111561382d575f80fd5b6138398482850161373c565b604083015250606082013560608201526080820135608082015292915050565b5f82601f830112613868575f80fd5b8135602061387861379283613719565b82815260059290921b84018101918181019086841115613896575f80fd5b8286015b8481101561396d57803567ffffffffffffffff808211156138b9575f80fd5b818901915060c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156138f0575f80fd5b6138f86134f7565b87840135613905816130da565b81526040848101358983015260608086013585811115613923575f80fd5b6139318f8c838a010161373c565b838501525060809450848601359150613949826130da565b82015260a0848101359382019390935292013590820152835291830191830161389a565b509695505050505050565b5f60a08284031215613988575f80fd5b613990613543565b9050813581526020808301356139a5816130da565b8082840152506040830135604083015260608301356060830152608083013567ffffffffffffffff8111156139d8575f80fd5b8301601f810185136139e8575f80fd5b80356139f661379282613719565b81815260059190911b82018301908381019087831115613a14575f80fd5b928401925b82841015613a3257833582529284019290840190613a19565b6080860152509295945050505050565b5f60208284031215613a52575f80fd5b813567ffffffffffffffff80821115613a69575f80fd5b9083019060e08286031215613a7c575f80fd5b613a84613566565b823582811115613a92575f80fd5b613a9e87828601613685565b825250613aad602084016130fb565b602082015260408301356040820152606083013582811115613acd575f80fd5b613ad9878286016137e3565b606083015250608083013582811115613af0575f80fd5b613afc87828601613859565b60808301525060a083013582811115613b13575f80fd5b613b1f87828601613978565b60a08301525060c083013582811115613b36575f80fd5b613b42878286016135fb565b60c08301525095945050505050565b7f56334475746368496e707574280000000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600d8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601b8201527f4e6f6e6c696e656172447574636844656361792063757276652c000000000000602f8201527f75696e74323536206d6178416d6f756e742c000000000000000000000000000060498201527f75696e743235362061646a7573746d656e745065724777656942617365466565605b8201527f2900000000000000000000000000000000000000000000000000000000000000607b8201525f607c8201612297565b7f563344757463684f75747075742800000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600e8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601c8201527f4e6f6e6c696e656172447574636844656361792063757276652c00000000000060308201527f6164647265737320726563697069656e742c0000000000000000000000000000604a8201527f75696e74323536206d696e416d6f756e742c0000000000000000000000000000605c8201527f75696e743235362061646a7573746d656e745065724777656942617365466565606e8201527f2900000000000000000000000000000000000000000000000000000000000000608e8201525f608f8201612297565b5f8651613daa818460208b016131b2565b865190830190613dbe818360208b016131b2565b8651910190613dd1818360208a016131b2565b8551910190613de48183602089016131b2565b8451910190613df78183602088016131b2565b01979650505050505050565b602081525f612c886020830184613286565b5f6020808385031215613e26575f80fd5b825167ffffffffffffffff811115613e3c575f80fd5b8301601f81018513613e4c575f80fd5b8051613e5a61379282613719565b81815260609182028301840191848201919088841115613e78575f80fd5b938501935b83851015613ed25780858a031215613e93575f80fd5b613e9b613589565b8551613ea6816130da565b81528587015187820152604080870151613ebf816130da565b9082015283529384019391850191613e7d565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561229757612297613ede565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6124d86040830184613286565b7f563344757463684f72646572207769746e65737329000000000000000000000081525f601588516020613f8582848701838e016131b2565b895191850191613f9a81858501848e016131b2565b8951920191613fae81858501848d016131b2565b8851920191613fc281858501848c016131b2565b8751920191613fd681858501848b016131b2565b8651920191613fea81858501848a016131b2565b919091019091019998505050505050505050565b5f61014061402d838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261406e6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526140a3818401866131d4565b905082810361012084015261255b81856131d4565b5f83516140c98184602088016131b2565b8351908301906140dd8183602088016131b2565b01949350505050565b5f602080835260c0830184518285015273ffffffffffffffffffffffffffffffffffffffff828601511660408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e08701915084830193505f92505b8083101561396d5783518252928401926001929092019190840190614149565b8381528260208201525f82516141868160408501602087016131b2565b91909101604001949350505050565b5f80604083850312156141a6575f80fd5b505080516020909101519092909150565b8181038181111561229757612297613ede565b8181035f8312801583831316838312821617156141e9576141e9613ede565b5092915050565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361422057614220613ede565b505f0390565b8082018281125f83128015821682158216171561424557614245613ede565b505092915050565b81515f9082906020808601845b838110156142765781518552938201939082019060010161425a565b50929695505050505050565b61ffff8281168282160390808211156141e9576141e9613ede565b5f61ffff8083168181036142b3576142b3613ede565b600101939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122076eb64bf241a3d263ec5a72de29639edadafd9dc347b19b4925bf5d973d562ef64736f6c63430008180033a264697066735822122069bd87debd2e3c9612d9a36d808481c3e385dd6d05b9a2ac802cab9dbffba61b64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x89W[`\0\x80\xFD[\0[a\0Pa\0\xACV[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x9C\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x80V[`@\x80Q\x80\x82\x01\x90\x91R`\0\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01YW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01}\x91\x90a\x04\x93V[\x90Pa\x01\xBE`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x02)W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02=W=`\0\x80>=`\0\xFD[PPPP`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02d\x90a\x04\x86V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02\xA8W=`\0\x80>=`\0\xFD[P\x90Pa\x02\xEA`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xC4V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03UW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03iW=`\0\x80>=`\0\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04U\x82\x82`@Q`$\x01a\x03\xDA\x92\x91\x90a\x04\xD0V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04YV[PPV[a\x04b\x81a\x04eV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[aF\xC4\x80a\x05Z\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x04\xA5W`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xC9W`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0\x83Q\x80`@\x84\x01R`\0[\x81\x81\x10\x15a\x04\xFEW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xE1V[P`\0``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0F\xC48\x03\x80b\0F\xC4\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01jV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\xA4\xB0\x19F\x01b\0\0\xBFW`\x01`\x01`@\x1B\x03b\0\t\x85b\0\0\xE0` \x1B\x17\x16`\xA0Rb\0\0\xD8V[`\x01`\x01`@\x1B\x03b\0\t\xFCb\0\x01M` \x1B\x17\x16`\xA0R[PPb\0\x01\xC3V[`\0`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01H\x91\x90b\0\x01\xA9V[\x90P\x90V[C\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01gW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\x01~W`\0\x80\xFD[\x82Qb\0\x01\x8B\x81b\0\x01QV[` \x84\x01Q\x90\x92Pb\0\x01\x9E\x81b\0\x01QV[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15b\0\x01\xBCW`\0\x80\xFD[PQ\x91\x90PV[`\x80Q`\xA0QaD\xD5b\0\x01\xEF`\09`\0a\x0B)\x01R`\0\x81\x81`\xE0\x01Ra\x1B2\x01RaD\xD5`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a0GV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a0\xF5V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a17V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a1\xD5V[a\x06\x83V[a\0\xB9a\x01l6`\x04a1\xF2V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a1\xD5V[a\x08\x94V[a\x01\xF3a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\nqV[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a2VV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0CsV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\n\0V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a5\x1FV[a\nqV[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0C\"V[a\x04\xB5\x81a\x0CsV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\n\0V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0CsV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\nqV[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia2VV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0C\"V[a\x08\x86\x81a\x0CsV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF7\x91\x90a5]V[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nkW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xEA\x83\x80a5vV[\x81\x01\x90a\n\xF7\x91\x90a;DV[\x90P`\0a\x0B\x04\x82a\r\xC6V[\x90Pa\x0B\x10\x81\x83a\x10\xACV[a\x0B\x19\x82a\x11\x08V[a\x0B\"\x82a\x12lV[`\0a\x0BP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\x0B\x88\x85`\xA0\x01Q`\0\x01Q\x84\x87``\x01Qa\x13y\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0B\xA5\x91\x85a\x14DV[\x81R` \x01\x86\x80` \x01\x90a\x0B\xBA\x91\x90a5vV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0C\x1A\x92\x87\x92\x90\x85a\x15+V[PPP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0CCWa\x0CCa2VV[` \x02` \x01\x01Q\x90Pa\x0CV\x81a\x15?V[a\x0C`\x813a\x1A/V[a\x0Cj\x813a\x1B0V[P`\x01\x01a\x0C'V[\x80Q`\0[\x81\x81\x10\x15a\r\xB5W`\0\x83\x82\x81Q\x81\x10a\x0C\x94Wa\x0C\x94a2VV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\r\x15W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\xCBWa\x0C\xCBa2VV[` \x02` \x01\x01Q\x90Pa\r\x0C\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1F2\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0C\xABV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r^Wa\r^a2VV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\r\xA3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CxV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1FyV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R`\0\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q` \x01a\x0F\xA9\x90a<\\V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\xC7\x90a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10\x06\x95\x94\x93\x92\x91` \x01a>\xA6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x10)\x83`\0\x01Qa \x13V[\x83` \x01Q\x84`@\x01Qa\x10@\x86``\x01Qa \xADV[a\x10M\x87`\x80\x01Qa!\xFEV[`@\x80Q` \x81\x01\x97\x90\x97R\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16``\x85\x01R`\x80\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xEBW`@Q\x7F\xB0\x8C\xE5\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x04\xC1\x90a\x10\xFE\x83\x85a\"\x9FV[\x83`\xC0\x01Qa#\x14V[`\xA0\x81\x01Q``\x01Q\x15a\x11tW\x80``\x01Q` \x01Q\x81`\xA0\x01Q``\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q``\x90\x81\x01Q\x90\x82\x01Q` \x01R[\x80`\x80\x01QQ\x81`\xA0\x01Q`\x80\x01QQ\x14a\x11\xBBW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x81\x01QQ`\0[\x81\x81\x10\x15a\x03_W`\0\x83`\x80\x01Q\x82\x81Q\x81\x10a\x11\xE4Wa\x11\xE4a2VV[` \x02` \x01\x01Q\x90P`\0\x84`\xA0\x01Q`\x80\x01Q\x83\x81Q\x81\x10a\x12\nWa\x12\na2VV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12bW\x81` \x01Q\x81\x10\x15a\x12ZW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xC4V[`\0a\x12\x85\x82`@\x01QHa$<\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x81``\x01Q`\x80\x01Q`\0\x14a\x12\xE0W`\0a\x12\xAB\x83``\x01Q`\x80\x01Q\x83a$wV[\x90Pa\x12\xD5\x81`\0\x85``\x01Q``\x01Q\x86``\x01Q` \x01Qa$\xB0\x90\x93\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[``\x84\x01Q` \x01RP[`\x80\x82\x01QQ`\0[\x81\x81\x10\x15a\x06}W`\0\x84`\x80\x01Q\x82\x81Q\x81\x10a\x13\tWa\x13\ta2VV[` \x02` \x01\x01Q\x90P\x80`\xA0\x01Q`\0\x14a\x13pW`\0a\x13/\x82`\xA0\x01Q\x86a$wV[`\x80\x83\x01Q` \x84\x01Q\x91\x92Pa\x13i\x91\x90\x83\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa$\xD0V[` \x83\x01RP[P`\x01\x01a\x12\xE9V[a\x13\xB3`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01`\0\x81R` \x01\x86``\x01Q\x81R` \x01a%b\x81RP\x90P`\0a\x14\x04\x82a%\xEEV[`@\x80Q``\x80\x82\x01\x83R\x89Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x82\x01\x93\x90\x93R\x97\x90\x91\x01Q\x90\x87\x01RP\x93\x94\x93PPPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14bWa\x14ba2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x14\xCBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\x80W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x15\"Wa\x14\xFD\x86\x82\x81Q\x81\x10a\x14\xEEWa\x14\xEEa2VV[` \x02` \x01\x01Q\x86\x86a&\xFAV[\x83\x82\x81Q\x81\x10a\x15\x0FWa\x15\x0Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\xD1V[PP\x93\x92PPPV[a\x158\x85\x85\x85\x85\x85a'\xE3V[PPPPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15_WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x15\xB6\x90\x85\x90`\x04\x01a?\x11V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x16\x19\x91\x90\x81\x01\x90a?$V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x161\x82\x84a@#V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16IWa\x16Ia2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16\xB2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16gW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x17\x03W\x85`@\x01Q\x81\x81Q\x81\x10a\x16\xD6Wa\x16\xD6a2VV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\xF0Wa\x16\xF0a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16\xB8V[P`\0\x80`\0[\x84\x81\x10\x15a\x1A\x1EW`\0\x87\x82\x81Q\x81\x10a\x17&Wa\x17&a2VV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\xE4W\x88\x81\x81Q\x81\x10a\x17MWa\x17Ma2VV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xDCW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x173V[P`\0\x80[\x88\x81\x10\x15a\x18\xA5W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x18\tWa\x18\ta2VV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18\x9CW\x85\x15a\x18\x86W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x18\x95\x90\x84a@#V[\x92P`\x01\x96P[P`\x01\x01a\x17\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x19\x1EW\x84\x15a\x19\x05W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x19\x17\x90\x82a@#V[\x90P`\x01\x93P[\x80`\0\x03a\x19sW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x19\x81\x81`\x05a'\x10a(\x85V[\x82` \x01Q\x11\x15a\x19\xF4W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x1A\tWa\x1A\ta2VV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x17\nV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A\x80W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\xFC\x90\x84\x90\x86\x90`\x04\x01a@6V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1B\x14W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\xF0\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1C\xBD\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aC\xE5`.\x919`@Q` \x01a\x1D'\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1EW\x90`\xB8\x01a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x97\x96\x95\x94\x93\x92\x91` \x01a@eV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1F\x04\x96\x95\x94\x93\x92`\x04\x01aA\x18V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x1EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1FWWa\x03_\x82\x82a\x1FyV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(\xC1V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1F\xD3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xD8V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aD\x13`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x8F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q` \x01a \xBE\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!~\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa!\xAB\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10\x8FV[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x1EWa\"\x1Ea2'V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\"HW` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P`\0[\x81\x81\x10\x15a\"\x8FW`\0a\"}\x86\x83\x81Q\x81\x10a\"pWa\"pa2VV[` \x02` \x01\x01Qa*\xAAV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a\"QV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xA0\x01Q`@Q` \x01a\"\xB8\x91\x90aB\x02V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xF5\x93\x92\x91` \x01aB\x87V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a#+\x91\x90aB\xB4V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a#DWa#Da2VV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#\xA1W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\xFCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a$3W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x81\x83\x10\x15a$jWa$Xa$S\x84\x84aB\xD8V[a,\x0EV[a$c\x90`\0aB\xEBV[\x90Pa#\x0EV[a$ca$S\x83\x85aB\xD8V[`\0\x80\x82\x12a$\x8FWa$c\x83\x83c;\x9A\xCA\0a(\x85V[a$\xA7a$\x9B\x83aC\x12V[\x84\x90c;\x9A\xCA\0a,\xC4V[a$c\x90aC\x12V[`\0a$\xC7\x85a$\xC0\x86\x84aB\xEBV[\x85\x85a$\xD0V[\x95\x94PPPPPV[`\0\x80\x84\x12\x15a%3W`\0a$\xE5\x85aC\x12V[\x90P\x85a%\x12\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaB\xD8V[\x10\x15a%!W\x82\x91PPa%ZV[a%+\x81\x87a@#V[\x91PPa%OV[\x83\x85\x10\x15a%BWP\x81a%ZV[a%L\x84\x86aB\xD8V[\x90P[a$\xC7\x81\x84\x84a-\x08V[\x94\x93PPPPV[`\0\x84\x84\x10a%rWP\x80a$\xC7V[`\0a%~\x87\x86aB\xD8V[\x90P`\0a%\x8C\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a%\xBEWa%\xAE\x83\x83a%\xA7\x88\x8AaB\xEBV[\x91\x90a(\x85V[a%\xB7\x90aC\x12V[\x90Pa%\xD7V[a%\xD4\x83\x83a%\xCD\x89\x89aB\xEBV[\x91\x90a,\xC4V[\x90P[a%\xE1\x81\x87aCJV[\x99\x98PPPPPPPPPV[`\0`\x10\x82`\0\x01Q` \x01QQ\x11\x15a&4W`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a&OWP\x81Q` \x01QQ\x15[\x15a&nW`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa#\x0E\x92\x90\x91a-\x08V[`\0a&\x8F\x83`@\x01Q\x84``\x01Qa&\x87\x91\x90aB\xD8V[a\xFF\xFFa-\x19V[\x90P`\0\x80`\0\x80a&\xA5\x87`\0\x01Q\x86a-1V[\x93P\x93P\x93P\x93P`\0a&\xD0\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&\xEE\x92\x91\x84\x91a$\xD0V[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.\xF3\x81RP\x90P`\0a'\x87\x82a%\xEEV[\x90P`@Q\x80``\x01`@R\x80\x87`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a'\xEE\x84\x84\x83a/GV[a\x158W\x81a()W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a$3W`\0\x82\x82\x81Q\x81\x10a(NWa(Na2VV[` \x02` \x01\x01Q\x90Pa(w\x85a'\x10a(i\x91\x90a@#V[` \x83\x01Q\x90a'\x10a,\xC4V[` \x90\x91\x01R`\x01\x01a(1V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(\xBAW`\0\x80\xFD[P\x91\x02\x04\x90V[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x158W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R`\0\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Q`@Q` \x01a*W\x91\x90aCrV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10\x8FV[`\0`@Q` \x01a*\xBB\x90a=nV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra+{\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa+\xA8\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`\xA0\x80\x8B\x01Q`@\x80Q` \x81\x01\x9B\x90\x9BRs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\x8A\x16\x90\x8B\x01R\x94\x89\x01\x96\x90\x96R\x90\x87\x01\x93\x90\x93R\x93\x90\x93\x16\x91\x84\x01\x91\x90\x91R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01a\x10\x8FV[`\0\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xC0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FSafeCast: value doesn't fit in a`D\x82\x01R\x7Fn int256\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x07\0V[P\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a,\xF9W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0a%Za-\x17\x85\x85a/\x93V[\x83[`\0\x81\x83\x10a-(W\x81a-*V[\x82[\x93\x92PPPV[`\0\x80`\0\x80`\0a-D\x87`\0\x01Q\x90V[\x90Pa\xFF\xFF\x86\x16a-V\x82`\0a/\xA2V[a\xFF\xFF\x16\x10a-\x9AW`\0a-k\x82\x82a/\xA2V[`\0\x89` \x01Q`\0\x81Q\x81\x10a-\x84Wa-\x84a2VV[` \x02` \x01\x01Q\x94P\x94P\x94P\x94PPa.\xEAV[`\0`\x01\x88` \x01QQa-\xAE\x91\x90aC\xA8V[\x90P`\x01[\x81a\xFF\xFF\x16\x81a\xFF\xFF\x16\x11a.~W\x87a\xFF\xFF\x16a-\xDE\x82a\xFF\xFF\x16\x85a/\xA2\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[a\xFF\xFF\x16\x10a.lWa.\0a-\xF5`\x01\x83aC\xA8V[\x84\x90a\xFF\xFF\x16a/\xA2V[a.\x0E\x84a\xFF\xFF\x84\x16a/\xA2V[` \x8B\x01Qa.\x1E`\x01\x85aC\xA8V[a\xFF\xFF\x16\x81Q\x81\x10a.2Wa.2a2VV[` \x02` \x01\x01Q\x8B` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.TWa.Ta2VV[` \x02` \x01\x01Q\x96P\x96P\x96P\x96PPPPa.\xEAV[\x80a.v\x81aC\xC3V[\x91PPa-\xB3V[Pa.\x8D\x82a\xFF\xFF\x83\x16a/\xA2V[a.\x9B\x83a\xFF\xFF\x84\x16a/\xA2V[\x89` \x01Q\x83a\xFF\xFF\x16\x81Q\x81\x10a.\xB5Wa.\xB5a2VV[` \x02` \x01\x01Q\x8A` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.\xD7Wa.\xD7a2VV[` \x02` \x01\x01Q\x95P\x95P\x95P\x95PPP[\x92\x95\x91\x94P\x92PV[`\0\x84\x84\x10a/\x03WP\x80a$\xC7V[`\0a/\x0F\x87\x86aB\xD8V[\x90P`\0a/\x1D\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a/8Wa%\xAE\x83\x83a%\xCD\x88\x8AaB\xEBV[a%\xD4\x83\x83a%\xA7\x89\x89aB\xEBV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a/kWP\x82\x82\x11[\x80a%ZWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[`\0\x81\x83\x11a-(W\x81a-*V[`\0`\x10\x82\x10a/\xDEW`@Q\x7FN#\xD05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x10\x02\x1C\x90V[`\0`@\x82\x84\x03\x12\x15a/\xF8W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a0\x10W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0(W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\\W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a0tW`\0\x80\xFD[a0\x80\x87\x83\x88\x01a/\xE6V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a0\x96W`\0\x80\xFD[Pa0\xA3\x86\x82\x87\x01a/\xFEV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a0\xC2W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\xDAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a1\x08W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\x1FW`\0\x80\xFD[a1+\x85\x82\x86\x01a0\xB0V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a1MW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a1eW`\0\x80\xFD[a1q\x88\x83\x89\x01a0\xB0V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a1\x8AW`\0\x80\xFD[Pa1\x97\x87\x82\x88\x01a/\xFEV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a1\xD0\x81a1\xA3V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a1\xE7W`\0\x80\xFD[\x815a-*\x81a1\xA3V[`\0` \x82\x84\x03\x12\x15a2\x04W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a2\x1BW`\0\x80\xFD[a%Z\x84\x82\x85\x01a/\xE6V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a2\xA0W\x81\x81\x01Q\x83\x82\x01R` \x01a2\x88V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra2\xC1\x81` \x86\x01` \x86\x01a2\x85V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a3SW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a3\x08V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra3\xD2a\x01\xA0\x85\x01\x82a2\xA9V[\x90P` \x83\x01Qa4\x10` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra4(\x82\x82a2\xF3V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra4B\x82\x82a2\xA9V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a4\xCEW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra4\xBC\x86\x83Qa3^V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a4\x82V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a5SW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a5oW`\0\x80\xFD[PQ\x91\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a5\xABW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a5\xC6W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a0@W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@R\x90V[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a6\xD7Wa6\xD7a2'V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a6\xF0W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\nWa7\na2'V[a7;` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a6\x90V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a7PW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a7\x7FW`\0\x80\xFD[a7\x87a5\xDBV[\x90P\x815a7\x94\x81a1\xA3V[\x81R` \x82\x015a7\xA4\x81a1\xA3V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a7\xCD\x81a1\xA3V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\xECW`\0\x80\xFD[a7\xF8\x84\x82\x85\x01a6\xDFV[`\xA0\x83\x01RP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a8\x1EWa8\x1Ea2'V[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15a8:W`\0\x80\xFD[a8Ba6\x04V[\x90P\x815\x81R` \x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a8cW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a8tW`\0\x80\xFD[\x805a8\x87a8\x82\x82a8\x04V[a6\x90V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a8\xA6W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a8\xC4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a8\xABV[\x80\x85\x87\x01RPPPPP\x92\x91PPV[`\0`\xA0\x82\x84\x03\x12\x15a8\xE6W`\0\x80\xFD[a8\xEEa6'V[\x90P\x815a8\xFB\x81a1\xA3V[\x81R` \x82\x81\x015\x90\x82\x01R`@\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a9!W`\0\x80\xFD[a9-\x84\x82\x85\x01a8(V[`@\x83\x01RP``\x82\x015``\x82\x01R`\x80\x82\x015`\x80\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a9^W`\0\x80\xFD[\x815` a9na8\x82\x83a8\x04V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a9\x8DW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a:jW\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a9\xB2W`\0\x80\x81\xFD[\x81\x89\x01\x91P`\xC0\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x84\x8D\x03\x01\x12\x15a9\xEBW`\0\x80\x81\xFD[a9\xF3a5\xDBV[\x87\x84\x015a:\0\x81a1\xA3V[\x81R`@\x84\x81\x015\x89\x83\x01R``\x80\x86\x015\x85\x81\x11\x15a: W`\0\x80\x81\xFD[a:.\x8F\x8C\x83\x8A\x01\x01a8(V[\x83\x85\x01RP`\x80\x94P\x84\x86\x015\x91Pa:F\x82a1\xA3V[\x82\x01R`\xA0\x84\x81\x015\x93\x82\x01\x93\x90\x93R\x92\x015\x90\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a9\x91V[P\x96\x95PPPPPPV[`\0`\xA0\x82\x84\x03\x12\x15a:\x87W`\0\x80\xFD[a:\x8Fa6'V[\x90P\x815\x81R` \x80\x83\x015a:\xA4\x81a1\xA3V[\x80\x82\x84\x01RP`@\x83\x015`@\x83\x01R``\x83\x015``\x83\x01R`\x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a:\xD8W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a:\xE9W`\0\x80\xFD[\x805a:\xF7a8\x82\x82a8\x04V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a;\x16W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a;4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a;\x1BV[`\x80\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a;VW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a;nW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a;\x82W`\0\x80\xFD[a;\x8Aa6JV[\x825\x82\x81\x11\x15a;\x99W`\0\x80\xFD[a;\xA5\x87\x82\x86\x01a7mV[\x82RPa;\xB4` \x84\x01a1\xC5V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015\x82\x81\x11\x15a;\xD5W`\0\x80\xFD[a;\xE1\x87\x82\x86\x01a8\xD4V[``\x83\x01RP`\x80\x83\x015\x82\x81\x11\x15a;\xF9W`\0\x80\xFD[a<\x05\x87\x82\x86\x01a9MV[`\x80\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a<\x1DW`\0\x80\xFD[a<)\x87\x82\x86\x01a:uV[`\xA0\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a\xB8\x81\x84` \x8B\x01a2\x85V[\x86Q\x90\x83\x01\x90a>\xCC\x81\x83` \x8B\x01a2\x85V[\x86Q\x91\x01\x90a>\xDF\x81\x83` \x8A\x01a2\x85V[\x85Q\x91\x01\x90a>\xF2\x81\x83` \x89\x01a2\x85V[\x84Q\x91\x01\x90a?\x05\x81\x83` \x88\x01a2\x85V[\x01\x97\x96PPPPPPPV[` \x81R`\0a-*` \x83\x01\x84a3^V[`\0` \x80\x83\x85\x03\x12\x15a?7W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a?NW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a?_W`\0\x80\xFD[\x80Qa?ma8\x82\x82a8\x04V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a?\x8CW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a?\xE8W\x80\x85\x8A\x03\x12\x15a?\xA9W`\0\x80\x81\xFD[a?\xB1a6mV[\x85Qa?\xBC\x81a1\xA3V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa?\xD5\x81a1\xA3V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a?\x91V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a#\x0EWa#\x0Ea?\xF4V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a%Z`@\x83\x01\x84a3^V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x15\x88Q` a@\x9F\x82\x84\x87\x01\x83\x8E\x01a2\x85V[\x89Q\x91\x85\x01\x91a@\xB4\x81\x85\x85\x01\x84\x8E\x01a2\x85V[\x89Q\x92\x01\x91a@\xC8\x81\x85\x85\x01\x84\x8D\x01a2\x85V[\x88Q\x92\x01\x91a@\xDC\x81\x85\x85\x01\x84\x8C\x01a2\x85V[\x87Q\x92\x01\x91a@\xF0\x81\x85\x85\x01\x84\x8B\x01a2\x85V[\x86Q\x92\x01\x91aA\x04\x81\x85\x85\x01\x84\x8A\x01a2\x85V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[`\0a\x01@aAH\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01RaA\x89`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01RaA\xBE\x81\x84\x01\x86a2\xA9V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%\xE1\x81\x85a2\xA9V[`\0\x83QaA\xE5\x81\x84` \x88\x01a2\x85V[\x83Q\x90\x83\x01\x90aA\xF9\x81\x83` \x88\x01a2\x85V[\x01\x94\x93PPPPV[`\0` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a:jW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aBgV[\x83\x81R\x82` \x82\x01R`\0\x82QaB\xA5\x81`@\x85\x01` \x87\x01a2\x85V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15aB\xC7W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a#\x0EWa#\x0Ea?\xF4V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aC\x0BWaC\x0Ba?\xF4V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aCCWaCCa?\xF4V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aCjWaCja?\xF4V[PP\x92\x91PPV[\x81Q`\0\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aC\x9CW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aC\x80V[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aC\x0BWaC\x0Ba?\xF4V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x03aC\xDAWaC\xDAa?\xF4V[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xA80\x88\xCF\x8C\xE7sJ\x1AO\xD4s\xE1]\xA5\xDD@\xDE\x92/\x9F#|\xDC\xD5\xA3%\x8B\xDB!\xAF\x85dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xA9JO\xF3j\x9At$\n\x86!\x9B}%\0D/\x7F\x9F\xE2'{\xBC\x042y\xEDN\x14jW\x84dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x86W[_\x80\xFD[\0[a\0Ma\0\xA9V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x93\x84\x01Q\x16\x92\x81\x01\x92\x90\x92R\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x99\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0}V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01RW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01v\x91\x90a\x04yV[\x90Pa\x01\xB7`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\x1EW_\x80\xFD[PZ\xF1\x15\x80\x15a\x020W=_\x80>=_\xFD[PPPP_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02U\x90a\x04lV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02\x96W=_\x80>=_\xFD[P\x90Pa\x02\xD8`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x03\xACV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03?W_\x80\xFD[PZ\xF1\x15\x80\x15a\x03QW=_\x80>=_\xFD[PPPP`@Q\x80`@\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[a\x04=\x82\x82`@Q`$\x01a\x03\xC2\x92\x91\x90a\x04\xB3V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04AV[PPV[a\x04J\x81a\x04MV[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[aE\x8F\x80a\x05:\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x04\x89W_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\xACW_\x80\xFD[\x93\x92PPPV[`@\x81R_\x83Q\x80`@\x84\x01R_[\x81\x81\x10\x15a\x04\xDFW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x04\xC2V[P_``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xC0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0E\x8F8\x03\x80b\0E\x8F\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01dV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\xA4\xB0\x19F\x01b\0\0\xBDW`\x01`\x01`@\x1B\x03b\0\tab\0\0\xDE` \x1B\x17\x16`\xA0Rb\0\0\xD6V[`\x01`\x01`@\x1B\x03b\0\t\xD5b\0\x01H` \x1B\x17\x16`\xA0R[PPb\0\x01\xB9V[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\x1DW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01C\x91\x90b\0\x01\xA1V[\x90P\x90V[C\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01aW_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\x01vW_\x80\xFD[\x82Qb\0\x01\x83\x81b\0\x01LV[` \x84\x01Q\x90\x92Pb\0\x01\x96\x81b\0\x01LV[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15b\0\x01\xB2W_\x80\xFD[PQ\x91\x90PV[`\x80Q`\xA0QaC\xAEb\0\x01\xE1_9_a\n\xFF\x01R_\x81\x81`\xDA\x01Ra\x1A\xCE\x01RaC\xAE_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a/\x8FV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a0sV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a1\x0BV[a\x06eV[a\0\xB4a\x01e6`\x04a1&V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a1\x0BV[a\x08rV[a\x01\xE8a\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\nJV[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a1\x85V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0CDV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\t\xD9V[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a4CV[a\nJV[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\xF5V[a\x04\x9F\x81a\x0CDV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\t\xD9V[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0CDV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\nJV[\x81_\x81Q\x81\x10a\x08GWa\x08Ga1\x85V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\xF5V[a\x08d\x81a\x0CDV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xACW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xD0\x91\x90a4\x7FV[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xC2\x83\x80a4\x96V[\x81\x01\x90a\n\xCF\x91\x90a:BV[\x90P_a\n\xDB\x82a\r\x8FV[\x90Pa\n\xE7\x81\x83a\x10sV[a\n\xF0\x82a\x10\xCFV[a\n\xF9\x82a\x12/V[_a\x0B&\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\x0B\\\x85`\xA0\x01Q_\x01Q\x84\x87``\x01Qa\x134\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0By\x91\x85a\x13\xF9V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x8E\x91\x90a4\x96V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0B\xED\x92\x87\x92\x90\x85a\x14\xDEV[PPP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0C\x14Wa\x0C\x14a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C'\x81a\x14\xF2V[a\x0C1\x813a\x19\xCFV[a\x0C;\x813a\x1A\xCCV[P`\x01\x01a\x0B\xF9V[\x80Q_[\x81\x81\x10\x15a\r~W_\x83\x82\x81Q\x81\x10a\x0CcWa\x0Cca1\x85V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\xE0W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x97Wa\x0C\x97a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C\xD7\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1E\xC6\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0CxV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r(Wa\r(a1\x85V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\rl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CHV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1F\rV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R_\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q` \x01a\x0Fq\x90a;QV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\x8F\x90a\x03V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x82W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15\xC7\x91\x90\x81\x01\x90a>\x15V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\xDE\x82\x84a?\x0BV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\xF6Wa\x15\xF6a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16\x14W\x90P[P\x90P_[\x83\x81\x10\x15a\x16\xAEW\x85`@\x01Q\x81\x81Q\x81\x10a\x16\x81Wa\x16\x81a1\x85V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x9BWa\x16\x9Ba1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16cV[P_\x80_[\x84\x81\x10\x15a\x19\xBEW_\x87\x82\x81Q\x81\x10a\x16\xCEWa\x16\xCEa1\x85V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x17\x89W\x88\x81\x81Q\x81\x10a\x16\xF4Wa\x16\xF4a1\x85V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x81W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\xDAV[P_\x80[\x88\x81\x10\x15a\x18FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x17\xACWa\x17\xACa1\x85V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18=W\x85\x15a\x18'W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x186\x90\x84a?\x0BV[\x92P`\x01\x96P[P`\x01\x01a\x17\x8DV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18\xBFW\x84\x15a\x18\xA6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18\xB8\x90\x82a?\x0BV[\x90P`\x01\x93P[\x80_\x03a\x19\x13W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x19!\x81`\x05a'\x10a'\xF2V[\x82` \x01Q\x11\x15a\x19\x94W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x19\xA9Wa\x19\xA9a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x16\xB3V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\x9C\x90\x84\x90\x86\x90`\x04\x01a?\x1EV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A\xB2W_\x80\xFD[PZ\xFA\x15\x80\x15a\x1A\xC4W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x8B\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1CV\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aB\xBE`.\x919`@Q` \x01a\x1C\xC0\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1D\xF0\x90`\xB8\x01a=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1E\xEBWa\x03L\x82\x82a\x1F\rV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(,V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1FcW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1FhV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aB\xEC`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10V\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q` \x01a L\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!\x0C\x92\x90\x91\x90`\x84\x01a@\xB8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Qa!8\x85`@\x01Qa)\x13V[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10VV[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xAAWa!\xAAa1XV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a!\xD4W` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P_[\x81\x81\x10\x15a\"\x19W_a\"\x07\x86\x83\x81Q\x81\x10a!\xFAWa!\xFAa1\x85V[` \x02` \x01\x01Qa*\x0FV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a!\xDCV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xA0\x01Q`@Q` \x01a\"A\x91\x90a@\xE6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"~\x93\x92\x91` \x01aAiV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\"\xB3\x91\x90aA\x95V[\x91P\x91P_\x83`@\x81Q\x81\x10a\"\xCBWa\"\xCBa1\x85V[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#%W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\x80WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a#\xB7W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x81\x83\x10\x15a#\xECWa#\xDBa#\xD6\x84\x84aA\xB7V[a+qV[a#\xE5\x90_aA\xCAV[\x90Pa\"\x97V[a#\xE5a#\xD6\x83\x85aA\xB7V[_\x80\x82\x12a$\x10Wa#\xE5\x83\x83c;\x9A\xCA\0a'\xF2V[a$(a$\x1C\x83aA\xF0V[\x84\x90c;\x9A\xCA\0a,&V[a#\xE5\x90aA\xF0V[_a$G\x85a$@\x86\x84aA\xCAV[\x85\x85a$PV[\x95\x94PPPPPV[_\x80\x84\x12\x15a$\xB1W_a$c\x85aA\xF0V[\x90P\x85a$\x90\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaA\xB7V[\x10\x15a$\x9FW\x82\x91PPa$\xD8V[a$\xA9\x81\x87a?\x0BV[\x91PPa$\xCDV[\x83\x85\x10\x15a$\xC0WP\x81a$\xD8V[a$\xCA\x84\x86aA\xB7V[\x90P[a$G\x81\x84\x84a,hV[\x94\x93PPPPV[_\x84\x84\x10a$\xEFWP\x80a$GV[_a$\xFA\x87\x86aA\xB7V[\x90P_a%\x07\x88\x88aA\xB7V[\x90P_\x85\x85\x12\x15a%8Wa%(\x83\x83a%!\x88\x8AaA\xCAV[\x91\x90a'\xF2V[a%1\x90aA\xF0V[\x90Pa%QV[a%N\x83\x83a%G\x89\x89aA\xCAV[\x91\x90a,&V[\x90P[a%[\x81\x87aB&V[\x99\x98PPPPPPPPPV[_`\x10\x82_\x01Q` \x01QQ\x11\x15a%\xACW`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a%\xC7WP\x81Q` \x01QQ\x15[\x15a%\xE6W`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa\"\x97\x92\x90\x91a,hV[_a&\x06\x83`@\x01Q\x84``\x01Qa%\xFE\x91\x90aA\xB7V[a\xFF\xFFa,xV[\x90P_\x80_\x80a&\x19\x87_\x01Q\x86a,\x8FV[\x93P\x93P\x93P\x93P_a&C\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&a\x92\x91\x84\x91a$PV[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.H\x81RP\x90P_a&\xF7\x82a%hV[\x90P`@Q\x80``\x01`@R\x80\x87_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a']\x84\x84\x83a.\x98V[a\x14\xEBW\x81a'\x98W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a#\xB7W_\x82\x82\x81Q\x81\x10a'\xBBWa'\xBBa1\x85V[` \x02` \x01\x01Q\x90Pa'\xE4\x85a'\x10a'\xD6\x91\x90a?\x0BV[` \x83\x01Q\x90a'\x10a,&V[` \x90\x91\x01R`\x01\x01a'\x9FV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(%W_\x80\xFD[P\x91\x02\x04\x90V[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x14\xEBW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R_\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Q`@Q` \x01a)\xBC\x91\x90aBMV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10VV[_`@Q` \x01a*\x1F\x90a&W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a>LW_\x80\xFD[\x80Qa>Za7\x92\x82a7\x19V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a>xW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a>\xD2W\x80\x85\x8A\x03\x12\x15a>\x93W_\x80\xFD[a>\x9Ba5\x89V[\x85Qa>\xA6\x81a0\xDAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa>\xBF\x81a0\xDAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a>}V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\"\x97Wa\"\x97a>\xDEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a$\xD8`@\x83\x01\x84a2\x86V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_`\x15\x88Q` a?\x85\x82\x84\x87\x01\x83\x8E\x01a1\xB2V[\x89Q\x91\x85\x01\x91a?\x9A\x81\x85\x85\x01\x84\x8E\x01a1\xB2V[\x89Q\x92\x01\x91a?\xAE\x81\x85\x85\x01\x84\x8D\x01a1\xB2V[\x88Q\x92\x01\x91a?\xC2\x81\x85\x85\x01\x84\x8C\x01a1\xB2V[\x87Q\x92\x01\x91a?\xD6\x81\x85\x85\x01\x84\x8B\x01a1\xB2V[\x86Q\x92\x01\x91a?\xEA\x81\x85\x85\x01\x84\x8A\x01a1\xB2V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[_a\x01@a@-\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra@n`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra@\xA3\x81\x84\x01\x86a1\xD4V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%[\x81\x85a1\xD4V[_\x83Qa@\xC9\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xDD\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[_` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a9mW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aAIV[\x83\x81R\x82` \x82\x01R_\x82QaA\x86\x81`@\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[_\x80`@\x83\x85\x03\x12\x15aA\xA6W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a\"\x97Wa\"\x97a>\xDEV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aA\xE9WaA\xE9a>\xDEV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aB WaB a>\xDEV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aBEWaBEa>\xDEV[PP\x92\x91PPV[\x81Q_\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aBvW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aBZV[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aA\xE9WaA\xE9a>\xDEV[_a\xFF\xFF\x80\x83\x16\x81\x81\x03aB\xB3WaB\xB3a>\xDEV[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 v\xEBd\xBF$\x1A=&>\xC5\xA7-\xE2\x969\xED\xAD\xAF\xD9\xDC4{\x19\xB4\x92[\xF5\xD9s\xD5b\xEFdsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 i\xBD\x87\xDE\xBD.<\x96\x12\xD9\xA3m\x80\x84\x81\xC3\xE3\x85\xDDm\x05\xB9\xA2\xAC\x80,\xAB\x9D\xBF\xFB\xA6\x1BdsolcC\0\x08\x18\x003", ); /**```solidity struct V3DutchOrderDeployment { address permit2; address reactor; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct V3DutchOrderDeployment { + #[allow(missing_docs)] pub permit2: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -303,16 +316,22 @@ struct V3DutchOrderDeployment { address permit2; address reactor; } ```solidity function IS_SCRIPT() external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTCall {} ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -416,16 +435,22 @@ function IS_SCRIPT() external view returns (bool); ```solidity function run() external returns (V3DutchOrderDeployment memory deployment); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct runCall {} ///Container type for the return parameters of the [`run()`](runCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct runReturn { + #[allow(missing_docs)] pub deployment: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -531,14 +556,19 @@ function run() external returns (V3DutchOrderDeployment memory deployment); ```solidity function setUp() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUpCall {} ///Container type for the return parameters of the [`setUp()`](setUpCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUpReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -640,8 +670,11 @@ function setUp() external; }; ///Container for all the [`DeployDutchV3`](self) function calls. pub enum DeployDutchV3Calls { + #[allow(missing_docs)] IS_SCRIPT(IS_SCRIPTCall), + #[allow(missing_docs)] run(runCall), + #[allow(missing_docs)] setUp(setUpCall), } #[automatically_derived] @@ -682,7 +715,7 @@ function setUp() external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -740,7 +773,7 @@ function setUp() external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/deployexclusivedutch.rs b/crates/bindings-uniswapx/src/deployexclusivedutch.rs index ab0a5e7..2a2b4d1 100644 --- a/crates/bindings-uniswapx/src/deployexclusivedutch.rs +++ b/crates/bindings-uniswapx/src/deployexclusivedutch.rs @@ -70,41 +70,55 @@ interface DeployExclusiveDutch { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod DeployExclusiveDutch { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50616acd806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610094575b600080fd5b005b6100506100b7565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a79062010000900460ff1681565b604051901515815260200161008b565b60408051606081018252600080825260208201819052918101919091527f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561013f57600080fd5b505af1158015610153573d6000803e3d6000fd5b5050506e22d473030f116ddee9f6b43ac78ba33b600003905061017a576101786103a1565b505b60008060001b6e22d473030f116ddee9f6b43ac78ba3731a9c8182c09f50c8318d769245bea52c32be35bc6040516101b19061052e565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156101f5573d6000803e3d6000fd5b5090506102376040518060400160405280600781526020017f52656163746f72000000000000000000000000000000000000000000000000008152508261046c565b60008060001b6040516102499061053b565b8190604051809103906000f5905080158015610269573d6000803e3d6000fd5b5090506102ab6040518060400160405280600681526020017f51756f74657200000000000000000000000000000000000000000000000000008152508261046c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561031657600080fd5b505af115801561032a573d6000803e3d6000fd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b600080604051806123e001604052806123c081526020016146d86123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290610424906e22d473030f116ddee9f6b43ac78ba39085906004016105ac565b600060405180830381600087803b15801561043e57600080fd5b505af1158015610452573d6000803e3d6000fd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6104fd82826040516024016104829291906105e3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610501565b5050565b61050a8161050d565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6132a38061061c83390190565b610e19806138bf83390190565b6000815180845260005b8181101561056e57602081850181015186830182015201610552565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006105db6040830184610548565b949350505050565b6040815260006105f66040830185610548565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b50604051620032a3380380620032a38339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b60805161318a620001196000396000818160e0015261187c015261318a6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612358565b6101eb565b005b6100b96100c9366004612406565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612448565b6104c5565b34801561014a57600080fd5b506100b96101593660046124e6565b610683565b6100b961016c36600461250a565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046124e6565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561256e565b60200260200101819052506102d981610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612771565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb3565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861253f565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661256e565b90506020028101906104789190612837565b6109f6565b82828151811061048f5761048f61256e565b6020908102919091010152600101610449565b506104ac81610b62565b6104b581610bb3565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961253f565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661256e565b8282815181106105d9576105d961256e565b60209081029190910101526001016105aa565b506105f681610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612771565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb3565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961256e565b602002602001018190525061087d81610b62565b61088681610bb3565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612875565b810190610a7c9190612bfe565b9050610a8781610d06565b6040518060a0016040528082600001518152602001610abd836020015184604001518560a00151610df19092919063ffffffff16565b8152602001610ae3836020015184604001518560c00151610ec39092919063ffffffff16565b8152602001848060200190610af89190612875565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610faa565b9052606082015160208301516080840151929450610b5c928592919061127c565b50919050565b805160005b8181101561035f576000838281518110610b8357610b8361256e565b60200260200101519050610b9681611289565b610ba08133611779565b610baa813361187a565b50600101610b67565b805160005b81811015610cf5576000838281518110610bd457610bd461256e565b602002602001015190506000816040015151905060005b81811015610c5557600083604001518281518110610c0b57610c0b61256e565b60200260200101519050610c4c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611bd79092919063ffffffff16565b50600101610beb565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9e57610c9e61256e565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce391815260200190565b60405180910390a45050600101610bb8565b5047156104c1576104c13347611c1e565b60408101518151606001511015610d49576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a08101516040810151602090910151146108915760005b8160c00151518110156104c1578160c001518181518110610d8457610d8461256e565b6020026020010151604001518260c001518281518110610da657610da661256e565b60200260200101516020015114610de9576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d61565b610e2b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e6d576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e83856020015186604001518686611cb8565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ee157610ee161253f565b604051908082528060200260200182016040528015610f4a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eff5790505b50915060005b81811015610fa157610f7c868281518110610f6d57610f6d61256e565b60200260200101518686611d35565b838281518110610f8e57610f8e61256e565b6020908102919091010152600101610f50565b50509392505050565b6040517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e982015260009060ff01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061304860208301396040518060c00160405280608d81526020016130c8608d913960405160200161119c93929190612cd2565b604051602081830303815290604052805190602001206111bf8360000151611e05565b83602001518460400151856060015186608001518760a00151600001518860a00151602001518960a00151604001516111fb8b60c00151611e9f565b60408051602081019b909b528a01989098526060890196909652608088019490945273ffffffffffffffffffffffffffffffffffffffff92831660a088015260c08701919091521660e0850152610100840152610120830152610140820152610160015b604051602081830303815290604052805190602001209050919050565b61067d8484848442611f3d565b60015473ffffffffffffffffffffffffffffffffffffffff166112a95750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611300908590600401612d15565b600060405180830381865afa15801561131d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113639190810190612d28565b604083015151815191925090600061137b8284612e27565b67ffffffffffffffff8111156113935761139361253f565b6040519080825280602002602001820160405280156113fc57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b15790505b50905060005b8381101561144d57856040015181815181106114205761142061256e565b602002602001015182828151811061143a5761143a61256e565b6020908102919091010152600101611402565b5060008060005b848110156117685760008782815181106114705761147061256e565b6020026020010151905060005b8281101561152e578881815181106114975761149761256e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036115265781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161147d565b506000805b888110156115ef5760008b6040015182815181106115535761155361256e565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036115e65785156115d0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516115df9084612e27565b9250600196505b50600101611533565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361166857841561164f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116619082612e27565b9050600193505b806000036116bd5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6116cb816005612710611fe9565b8260200151111561173e578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106117535761175361256e565b60209081029190910101525050600101611454565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146117ca576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906118469084908690600401612e3a565b60006040518083038186803b15801561185e57600080fd5b505afa158015611872573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61193a846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6119448585612025565b856000015160200151866080015160405180608001604052806052815260200161304860529139604080517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e9820152815160df8183030181526101bf8201909252608d60ff8201818152916130c89061011f01396040518060600160405280602e815260200161309a602e9139604051602001611b3c9493929190612e69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611ba99695949392600401612ef2565b600060405180830381600087803b158015611bc357600080fd5b505af1158015611872573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611bfc5761035f8282611c1e565b61035f73ffffffffffffffffffffffffffffffffffffffff841633848461206c565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611c78576040519150601f19603f3d011682016040523d82523d6000602084013e611c7d565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611cc8575083611d2d565b828211611d01576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611d0f575082611d2d565b428310611d1d575083611d2d565b611d2a8383428888612157565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d94576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611daa856020015186604001518686611cb8565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d81526020016130c8608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161125f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ebf57611ebf61253f565b6040519080825280601f01601f191660200182016040528015611ee9576020820181803683370190505b50905060005b8351811015611f2e576000611f1c858381518110611f0f57611f0f61256e565b6020026020010151612172565b60208381028501015250600101611eef565b50805160209091012092915050565b611f488484836121e9565b611fe25781611f83576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b8151811015611fdf576000828281518110611fa857611fa861256e565b60200260200101519050611fd185612710611fc39190612e27565b602083015190612710612234565b602090910152600101611f8b565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261201e57600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b60006121668686868686612278565b90505b95945050505050565b60006040518060800160405280605281526020016130486052913980516020918201208351848301516040808701516060880151915161125f969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600073ffffffffffffffffffffffffffffffffffffffff8416158061220d57508282115b80611d2d575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261226957600080fd5b50910281810615159190040190565b6000848410612288575080612169565b60006122948786612fad565b905060006122a28888612fad565b90506000858512156122d4576122c483836122bd888a612fc0565b9190611fe9565b6122cd90612fe7565b90506122e6565b6122e383836122bd8989612fc0565b90505b6122f0818761301f565b9998505050505050505050565b600060408284031215610b5c57600080fd5b60008083601f84011261232157600080fd5b50813567ffffffffffffffff81111561233957600080fd5b60208301915083602082850101111561235157600080fd5b9250929050565b60008060006040848603121561236d57600080fd5b833567ffffffffffffffff8082111561238557600080fd5b612391878388016122fd565b945060208601359150808211156123a757600080fd5b506123b48682870161230f565b9497909650939450505050565b60008083601f8401126123d357600080fd5b50813567ffffffffffffffff8111156123eb57600080fd5b6020830191508360208260051b850101111561235157600080fd5b6000806020838503121561241957600080fd5b823567ffffffffffffffff81111561243057600080fd5b61243c858286016123c1565b90969095509350505050565b6000806000806040858703121561245e57600080fd5b843567ffffffffffffffff8082111561247657600080fd5b612482888389016123c1565b9096509450602087013591508082111561249b57600080fd5b506124a88782880161230f565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356124e1816124b4565b919050565b6000602082840312156124f857600080fd5b8135612503816124b4565b9392505050565b60006020828403121561251c57600080fd5b813567ffffffffffffffff81111561253357600080fd5b611d2d848285016122fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156125b85781810151838201526020016125a0565b50506000910152565b600081518084526125d981602086016020860161259d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b8381101561266b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612620565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526126ea6101a08501826125c1565b905060208301516127286020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612740828261260b565b915050606083015184820360a086015261275a82826125c1565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156127e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526127d4868351612676565b9550938201939082019060010161279a565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261286b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128aa57600080fd5b83018035915067ffffffffffffffff8211156128c557600080fd5b60200191503681900382131561235157600080fd5b6040516060810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405290565b6040516080810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405160e0810167ffffffffffffffff811182821017156128fd576128fd61253f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129905761299061253f565b604052919050565b600082601f8301126129a957600080fd5b813567ffffffffffffffff8111156129c3576129c361253f565b6129f460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612949565b818152846020838601011115612a0957600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612a3857600080fd5b60405160c0810167ffffffffffffffff8282108183111715612a5c57612a5c61253f565b8160405282935084359150612a70826124b4565b908252602084013590612a82826124b4565b816020840152604085013560408401526060850135606084015260808501359150612aac826124b4565b81608084015260a0850135915080821115612ac657600080fd5b50612ad385828601612998565b60a0830152505092915050565b600060608284031215612af257600080fd5b612afa6128da565b90508135612b07816124b4565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612b3f57612b3f61253f565b5060051b60200190565b600082601f830112612b5a57600080fd5b81356020612b6f612b6a83612b25565b612949565b82815260079290921b84018101918181019086841115612b8e57600080fd5b8286015b84811015612bf35760808189031215612bab5760008081fd5b612bb3612903565b8135612bbe816124b4565b8152818501358582015260408083013590820152606080830135612be1816124b4565b90820152835291830191608001612b92565b509695505050505050565b600060208284031215612c1057600080fd5b813567ffffffffffffffff80821115612c2857600080fd5b908301906101208286031215612c3d57600080fd5b612c45612926565b823582811115612c5457600080fd5b612c6087828601612a26565b8252506020830135602082015260408301356040820152612c83606084016124d6565b606082015260808301356080820152612c9f8660a08501612ae0565b60a082015261010083013582811115612cb757600080fd5b612cc387828601612b49565b60c08301525095945050505050565b60008451612ce481846020890161259d565b845190830190612cf881836020890161259d565b8451910190612d0b81836020880161259d565b0195945050505050565b6020815260006125036020830184612676565b60006020808385031215612d3b57600080fd5b825167ffffffffffffffff811115612d5257600080fd5b8301601f81018513612d6357600080fd5b8051612d71612b6a82612b25565b81815260609182028301840191848201919088841115612d9057600080fd5b938501935b83851015612dec5780858a031215612dad5760008081fd5b612db56128da565b8551612dc0816124b4565b81528587015187820152604080870151612dd9816124b4565b9082015283529384019391850191612d95565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561206657612066612df8565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611d2d6040830184612676565b7f4578636c757369766544757463684f72646572207769746e6573732900000000815260008551612ea181601c850160208a0161259d565b855190830190612eb881601c840160208a0161259d565b8551910190612ece81601c84016020890161259d565b8451910190612ee481601c84016020880161259d565b01601c019695505050505050565b6000610140612f22838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612f636080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612f98818401866125c1565b90508281036101208401526122f081856125c1565b8181038181111561206657612066612df8565b8181036000831280158383131683831282161715612fe057612fe0612df8565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361301857613018612df8565b5060000390565b808201828112600083128015821682158216171561303f5761303f612df8565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220bc5333daef38e70e8a6ea612125c596542d6e839278b2c906bbabc6c6e70329b64736f6c63430008180033608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212204be2476098894d6ec3c58573f3d1bb2c5345602a6172512ca6fdf7ae53f7f66164736f6c63430008180033 + ///0x6080604052600c805462ff00ff191662010001179055348015610020575f80fd5b506169798061002e5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610091575b5f80fd5b005b61004d6100b4565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a49062010000900460ff1681565b6040519015158152602001610088565b604080516060810182525f80825260208201819052918101919091527f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610137575f80fd5b505af1158015610149573d5f803e3d5ffd5b5050506e22d473030f116ddee9f6b43ac78ba33b5f03905061016f5761016d610386565b505b5f805f1b6e22d473030f116ddee9f6b43ac78ba3731a9c8182c09f50c8318d769245bea52c32be35bc6040516101a49061050b565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103905ff59050801580156101e5573d5f803e3d5ffd5b5090506102276040518060400160405280600781526020017f52656163746f72000000000000000000000000000000000000000000000000008152508261044b565b5f805f1b60405161023790610518565b8190604051809103905ff5905080158015610254573d5f803e3d5ffd5b5090506102966040518060400160405280600681526020017f51756f74657200000000000000000000000000000000000000000000000000008152508261044b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156102fd575f80fd5b505af115801561030f573d5f803e3d5ffd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b5f80604051806123e001604052806123c081526020016145846123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290610408906e22d473030f116ddee9f6b43ac78ba3908590600401610586565b5f604051808303815f87803b15801561041f575f80fd5b505af1158015610431573d5f803e3d5ffd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6104dc82826040516024016104619291906105bc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526104e0565b5050565b6104e9816104ec565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6131cd806105f483390190565b610dc3806137c183390190565b5f81518084525f5b818110156105495760208185018101518683018201520161052d565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105b46040830184610525565b949350505050565b604081525f6105ce6040830185610525565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a060405234801562000010575f80fd5b50604051620031cd380380620031cd8339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b6080516130bc620001115f395f818160da015261182a01526130bc5ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af3660046122db565b6101e0565b005b6100b46100c4366004612380565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46101333660046123bf565b6104af565b348015610143575f80fd5b506100b4610152366004612457565b610665565b6100b4610165366004612479565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db366004612457565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b76124d8565b60200260200101819052506102cb81610b3b565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b908490879087906004016126d3565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b8a565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff811115610374576103746124ab565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c57610467858583818110610450576104506124d8565b90506020028101906104629190612796565b6109d2565b828281518110610479576104796124d8565b6020908102919091010152600101610433565b5061049681610b3b565b61049f81610b8a565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d26124ab565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae878783818110610450576104506124d8565b8282815181106105c0576105c06124d8565b6020908102919091010152600101610591565b506105dd81610b3b565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d908490889088906004016126d3565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b8a565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f81518110610847576108476124d8565b602002602001018190525061085b81610b3b565b61086481610b8a565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a83806127d2565b810190610a579190612b48565b9050610a6281610cd5565b6040518060a00160405280825f01518152602001610a97836020015184604001518560a00151610dbf9092919063ffffffff16565b8152602001610abd836020015184604001518560c00151610e8d9092919063ffffffff16565b8152602001848060200190610ad291906127d2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610b1483610f72565b9052606082015160208301516080840151929450610b359285929190611241565b50919050565b80515f5b8181101561034c575f838281518110610b5a57610b5a6124d8565b60200260200101519050610b6d8161124e565b610b77813361172b565b610b818133611828565b50600101610b3f565b80515f5b81811015610cc4575f838281518110610ba957610ba96124d8565b602002602001015190505f81604001515190505f5b81811015610c26575f83604001518281518110610bdd57610bdd6124d8565b60200260200101519050610c1d81604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611b7e9092919063ffffffff16565b50600101610bbe565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c6e57610c6e6124d8565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610cb291815260200190565b60405180910390a45050600101610b8e565b5047156104ab576104ab3347611bc5565b60408101518151606001511015610d18576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160408101516020909101511461086f575f5b8160c00151518110156104ab578160c001518181518110610d5257610d526124d8565b6020026020010151604001518260c001518281518110610d7457610d746124d8565b60200260200101516020015114610db7576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d2f565b610df660405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b836040015184602001511115610e38576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e4d856020015186604001518686611c5b565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610eab57610eab6124ab565b604051908082528060200260200182016040528015610f1357816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ec95790505b5091505f5b81811015610f6957610f44868281518110610f3557610f356124d8565b60200260200101518686611cd7565b838281518110610f5657610f566124d8565b6020908102919091010152600101610f18565b50509392505050565b6040517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e98201525f9060ff01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612f7a60208301396040518060c00160405280608d8152602001612ffa608d913960405160200161116393929190612c16565b60405160208183030381529060405280519060200120611185835f0151611da4565b83602001518460400151856060015186608001518760a001515f01518860a00151602001518960a00151604001516111c08b60c00151611e3d565b60408051602081019b909b528a01989098526060890196909652608088019490945273ffffffffffffffffffffffffffffffffffffffff92831660a088015260c08701919091521660e0850152610100840152610120830152610140820152610160015b604051602081830303815290604052805190602001209050919050565b61065f8484848442611ed8565b60015473ffffffffffffffffffffffffffffffffffffffff1661126e5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906112c4908590600401612c58565b5f60405180830381865afa1580156112de573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113239190810190612c6a565b6040830151518151919250905f61133a8284612d60565b67ffffffffffffffff811115611352576113526124ab565b6040519080825280602002602001820160405280156113ba57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113705790505b5090505f5b8381101561140a57856040015181815181106113dd576113dd6124d8565b60200260200101518282815181106113f7576113f76124d8565b60209081029190910101526001016113bf565b505f805f5b8481101561171a575f87828151811061142a5761142a6124d8565b602002602001015190505f5b828110156114e557888181518110611450576114506124d8565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036114dd5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b600101611436565b505f805b888110156115a2575f8b604001518281518110611508576115086124d8565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1603611599578515611583576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516115929084612d60565b9250600196505b506001016114e9565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361161b578415611602576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116149082612d60565b9050600193505b805f0361166f5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b61167d816005612710611f82565b826020015111156116f0578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a0181518110611705576117056124d8565b6020908102919091010152505060010161140f565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff16301461177c576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117f89084908690600401612d73565b5f6040518083038186803b15801561180e575f80fd5b505afa158015611820573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6118e7846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6118f18585611fbc565b855f0151602001518660800151604051806080016040528060528152602001612f7a60529139604080517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e9820152815160df8183030181526101bf8201909252608d60ff820181815291612ffa9061011f01396040518060600160405280602e8152602001612fcc602e9139604051602001611ae89493929190612da1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611b559695949392600401612e29565b5f604051808303815f87803b158015611b6c575f80fd5b505af1158015611820573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611ba35761034c8282611bc5565b61034c73ffffffffffffffffffffffffffffffffffffffff8416338484612002565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611c1b576040519150601f19603f3d011682016040523d82523d5f602084013e611c20565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f838503611c6a575083611ccf565b828211611ca3576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611cb1575082611ccf565b428310611cbf575083611ccf565b611ccc83834288886120e9565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611d35576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611d4a856020015186604001518686611c5b565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b5f6040518060c00160405280608d8152602001612ffa608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161122498939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115611e5c57611e5c6124ab565b6040519080825280601f01601f191660200182016040528015611e86576020820181803683370190505b5090505f5b8351811015611ec9575f611eb7858381518110611eaa57611eaa6124d8565b6020026020010151612103565b60208381028501015250600101611e8b565b50805160209091012092915050565b611ee3848483612179565b611f7b5781611f1e576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b8151811015611f78575f828281518110611f4157611f416124d8565b60200260200101519050611f6a85612710611f5c9190612d60565b6020830151906127106121c3565b602090910152600101611f25565b50505b5050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611fb5575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611f7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5f6120f78686868686612205565b90505b95945050505050565b5f604051806080016040528060528152602001612f7a60529139805160209182012083518483015160408087015160608801519151611224969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f73ffffffffffffffffffffffffffffffffffffffff8416158061219c57508282115b80611ccf575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026121f6575f80fd5b50910281810615159190040190565b5f8484106122145750806120fa565b5f61221f8786612ee3565b90505f61222c8888612ee3565b90505f8585121561225d5761224d8383612246888a612ef6565b9190611f82565b61225690612f1c565b905061226f565b61226c83836122468989612ef6565b90505b6122798187612f52565b9998505050505050505050565b5f60408284031215610b35575f80fd5b5f8083601f8401126122a6575f80fd5b50813567ffffffffffffffff8111156122bd575f80fd5b6020830191508360208285010111156122d4575f80fd5b9250929050565b5f805f604084860312156122ed575f80fd5b833567ffffffffffffffff80821115612304575f80fd5b61231087838801612286565b94506020860135915080821115612325575f80fd5b5061233286828701612296565b9497909650939450505050565b5f8083601f84011261234f575f80fd5b50813567ffffffffffffffff811115612366575f80fd5b6020830191508360208260051b85010111156122d4575f80fd5b5f8060208385031215612391575f80fd5b823567ffffffffffffffff8111156123a7575f80fd5b6123b38582860161233f565b90969095509350505050565b5f805f80604085870312156123d2575f80fd5b843567ffffffffffffffff808211156123e9575f80fd5b6123f58883890161233f565b9096509450602087013591508082111561240d575f80fd5b5061241a87828801612296565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b803561245281612426565b919050565b5f60208284031215612467575f80fd5b813561247281612426565b9392505050565b5f60208284031215612489575f80fd5b813567ffffffffffffffff81111561249f575f80fd5b611ccf84828501612286565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b8381101561251f578181015183820152602001612507565b50505f910152565b5f815180845261253e816020860160208601612505565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156125ce578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612583565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c061018085015261264c6101a0850182612527565b9050602083015161268a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526126a28282612570565b915050606083015184820360a08601526126bc8282612527565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b83811015612746577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526127348683516125d9565b955093820193908201906001016126fa565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126127c8575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612805575f80fd5b83018035915067ffffffffffffffff82111561281f575f80fd5b6020019150368190038213156122d4575f80fd5b6040516060810167ffffffffffffffff81118282101715612856576128566124ab565b60405290565b6040516080810167ffffffffffffffff81118282101715612856576128566124ab565b60405160e0810167ffffffffffffffff81118282101715612856576128566124ab565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156128e9576128e96124ab565b604052919050565b5f82601f830112612900575f80fd5b813567ffffffffffffffff81111561291a5761291a6124ab565b61294b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128a2565b81815284602083860101111561295f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c0828403121561298b575f80fd5b60405160c0810167ffffffffffffffff82821081831117156129af576129af6124ab565b81604052829350843591506129c382612426565b9082526020840135906129d582612426565b8160208401526040850135604084015260608501356060840152608085013591506129ff82612426565b81608084015260a0850135915080821115612a18575f80fd5b50612a25858286016128f1565b60a0830152505092915050565b5f60608284031215612a42575f80fd5b612a4a612833565b90508135612a5781612426565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612a8e57612a8e6124ab565b5060051b60200190565b5f82601f830112612aa7575f80fd5b81356020612abc612ab783612a75565b6128a2565b82815260079290921b84018101918181019086841115612ada575f80fd5b8286015b84811015612b3d5760808189031215612af5575f80fd5b612afd61285c565b8135612b0881612426565b8152818501358582015260408083013590820152606080830135612b2b81612426565b90820152835291830191608001612ade565b509695505050505050565b5f60208284031215612b58575f80fd5b813567ffffffffffffffff80821115612b6f575f80fd5b908301906101208286031215612b83575f80fd5b612b8b61287f565b823582811115612b99575f80fd5b612ba58782860161297b565b8252506020830135602082015260408301356040820152612bc860608401612447565b606082015260808301356080820152612be48660a08501612a32565b60a082015261010083013582811115612bfb575f80fd5b612c0787828601612a98565b60c08301525095945050505050565b5f8451612c27818460208901612505565b845190830190612c3b818360208901612505565b8451910190612c4e818360208801612505565b0195945050505050565b602081525f61247260208301846125d9565b5f6020808385031215612c7b575f80fd5b825167ffffffffffffffff811115612c91575f80fd5b8301601f81018513612ca1575f80fd5b8051612caf612ab782612a75565b81815260609182028301840191848201919088841115612ccd575f80fd5b938501935b83851015612d275780858a031215612ce8575f80fd5b612cf0612833565b8551612cfb81612426565b81528587015187820152604080870151612d1481612426565b9082015283529384019391850191612cd2565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611ffc57611ffc612d33565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611ccf60408301846125d9565b7f4578636c757369766544757463684f72646572207769746e657373290000000081525f8551612dd881601c850160208a01612505565b855190830190612def81601c840160208a01612505565b8551910190612e0581601c840160208901612505565b8451910190612e1b81601c840160208801612505565b01601c019695505050505050565b5f610140612e58838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612e996080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612ece81840186612527565b90508281036101208401526122798185612527565b81810381811115611ffc57611ffc612d33565b8181035f831280158383131683831282161715612f1557612f15612d33565b5092915050565b5f7f80000000000000000000000000000000000000000000000000000000000000008203612f4c57612f4c612d33565b505f0390565b8082018281125f831280158216821582161715612f7157612f71612d33565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122053753b762fd0a1c6d1a34225b2303e861c3555666e99f14fd2b1d876fe939e7164736f6c63430008180033608060405234801561000f575f80fd5b50610da68061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806341d88d6914610043578063585da6281461006c5780637671d07b14610081575b5f80fd5b6100566100513660046104a8565b6100c2565b60405161006391906105dc565b60405180910390f35b61007f61007a3660046108c4565b610218565b005b61009d61008f366004610a2a565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610063565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183525f815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101aa9291600401610a64565b5f604051808303815f87803b1580156101c1575f80fd5b505af19250505080156101d2575060015b610212573d8080156101ff576040519150601f19603f3d011682016040523d82523d5f602084013e610204565b606091505b5061020e81610297565b9150505b92915050565b8151600114610253576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f825f8151811061026657610266610ad7565b602002602001015160405160200161027e91906105dc565b6040516020818303038152906040529050805181602001fd5b60408051610160810182525f60a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031257815182602001fd5b818060200190518101906102129190610ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561037657610376610326565b60405290565b6040516060810167ffffffffffffffff8111828210171561037657610376610326565b60405160a0810167ffffffffffffffff8111828210171561037657610376610326565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561040957610409610326565b604052919050565b5f67ffffffffffffffff82111561042a5761042a610326565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610465575f80fd5b813561047861047382610411565b6103c2565b81815284602083860101111561048c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156104b9575f80fd5b823567ffffffffffffffff808211156104d0575f80fd5b6104dc86838701610456565b935060208501359150808211156104f1575f80fd5b506104fe85828601610456565b9150509250929050565b5f5b8381101561052257818101518382015260200161050a565b50505f910152565b5f8151808452610541816020860160208601610508565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156105d1578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101610586565b509495945050505050565b602081525f825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106576101c084018261052a565b905060208401516106956040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106d08383610573565b925060608601519150808584030160c0860152506106ee828261052a565b915050608084015160e08401528091505092915050565b5f67ffffffffffffffff82111561071e5761071e610326565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610749575f80fd5b50565b5f60c0828403121561075c575f80fd5b610764610353565b9050813561077181610728565b8152602082013561078181610728565b80602083015250604082013560408201526060820135606082015260808201356107aa81610728565b608082015260a082013567ffffffffffffffff8111156107c8575f80fd5b6107d484828501610456565b60a08301525092915050565b5f606082840312156107f0575f80fd5b6107f861037c565b9050813561080581610728565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610832575f80fd5b8135602061084261047383610705565b82815260609283028501820192828201919087851115610860575f80fd5b8387015b858110156108b75781818a03121561087a575f80fd5b61088261037c565b813561088d81610728565b815281860135868201526040808301356108a681610728565b908201528452928401928101610864565b5090979650505050505050565b5f80604083850312156108d5575f80fd5b823567ffffffffffffffff808211156108ec575f80fd5b818501915085601f8301126108ff575f80fd5b8135602061090f61047383610705565b82815260059290921b8401810191818101908984111561092d575f80fd5b8286015b84811015610a1457803586811115610947575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181131561097b575f80fd5b61098361039f565b8683013589811115610993575f80fd5b6109a18f898387010161074c565b8252506109b18e604085016107e0565b8782015260a0830135898111156109c6575f80fd5b6109d48f8983870101610823565b60408301525060c0830135898111156109eb575f80fd5b6109f98f8983870101610456565b60608301525091013560808201528352918301918301610931565b50965050860135925050808211156104f1575f80fd5b5f60208284031215610a3a575f80fd5b813567ffffffffffffffff811115610a50575f80fd5b610a5c84828501610456565b949350505050565b604081525f8351604080840152610a7e608084018261052a565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610ab9828261052a565b9150508281036020840152610ace818561052a565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82601f830112610b13575f80fd5b8151610b2161047382610411565b818152846020838601011115610b35575f80fd5b610a5c826020830160208701610508565b5f60c08284031215610b56575f80fd5b610b5e610353565b90508151610b6b81610728565b81526020820151610b7b81610728565b8060208301525060408201516040820152606082015160608201526080820151610ba481610728565b608082015260a082015167ffffffffffffffff811115610bc2575f80fd5b6107d484828501610b04565b5f60608284031215610bde575f80fd5b610be661037c565b90508151610bf381610728565b80825250602082015160208201526040820151604082015292915050565b5f82601f830112610c20575f80fd5b81516020610c3061047383610705565b82815260609283028501820192828201919087851115610c4e575f80fd5b8387015b858110156108b75781818a031215610c68575f80fd5b610c7061037c565b8151610c7b81610728565b81528186015186820152604080830151610c9481610728565b908201528452928401928101610c52565b5f60208284031215610cb5575f80fd5b815167ffffffffffffffff80821115610ccc575f80fd5b9083019060e08286031215610cdf575f80fd5b610ce761039f565b825182811115610cf5575f80fd5b610d0187828601610b46565b825250610d118660208501610bce565b6020820152608083015182811115610d27575f80fd5b610d3387828601610c11565b60408301525060a083015182811115610d4a575f80fd5b610d5687828601610b04565b60608301525060c09290920151608083015250939250505056fea2646970667358221220b0816c51d51c5ab3947bad3df8fedfb8758eb6ce0ed20b8fc1844c9926a031be64736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa2646970667358221220321ec73cef72ca71a617df1a2d60331c43239712409bc94ca03054f8a384416564736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Paj\xCD\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x94W[`\0\x80\xFD[\0[a\0Pa\0\xB7V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA7\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8BV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01?W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01SW=`\0\x80>=`\0\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;`\0\x03\x90Pa\x01zWa\x01xa\x03\xA1V[P[`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xB1\x90a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x01\xF5W=`\0\x80>=`\0\xFD[P\x90Pa\x027`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[`\0\x80`\0\x1B`@Qa\x02I\x90a\x05;V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02iW=`\0\x80>=`\0\xFD[P\x90Pa\x02\xAB`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\x16W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03*W=`\0\x80>=`\0\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[`\0\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aF\xD8a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04$\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\xACV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04>W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04RW=`\0\x80>=`\0\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xFD\x82\x82`@Q`$\x01a\x04\x82\x92\x91\x90a\x05\xE3V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x05\x01V[PPV[a\x05\n\x81a\x05\rV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a2\xA3\x80a\x06\x1C\x839\x01\x90V[a\x0E\x19\x80a8\xBF\x839\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x05nW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05RV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x05\xDB`@\x83\x01\x84a\x05HV[\x94\x93PPPPV[`@\x81R`\0a\x05\xF6`@\x83\x01\x85a\x05HV[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x002\xA38\x03\x80b\x002\xA3\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa1\x8Ab\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x18|\x01Ra1\x8A`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a#XV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\x06V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a$HV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a$\xE6V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\nV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a$\xE6V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a%nV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB3V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a(7V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BbV[a\x04\xB5\x81a\x0B\xB3V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB3V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia%nV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BbV[a\x08\x86\x81a\x0B\xB3V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a(uV[\x81\x01\x90a\n|\x91\x90a+\xFEV[\x90Pa\n\x87\x81a\r\x06V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xF1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\xC3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a(uV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\xAAV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B\\\x92\x85\x92\x91\x90a\x12|V[P\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x83Wa\x0B\x83a%nV[` \x02` \x01\x01Q\x90Pa\x0B\x96\x81a\x12\x89V[a\x0B\xA0\x813a\x17yV[a\x0B\xAA\x813a\x18zV[P`\x01\x01a\x0BgV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF5W`\0\x83\x82\x81Q\x81\x10a\x0B\xD4Wa\x0B\xD4a%nV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CUW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x0BWa\x0C\x0Ba%nV[` \x02` \x01\x01Q\x90Pa\x0CL\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B\xD7\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xEBV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9EWa\x0C\x9Ea%nV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB8V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1C\x1EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\rIW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xC1W\x81`\xC0\x01Q\x81\x81Q\x81\x10a\r\x84Wa\r\x84a%nV[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\r\xA6Wa\r\xA6a%nV[` \x02` \x01\x01Q` \x01Q\x14a\r\xE9W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\raV[a\x0E+`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EmW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0E\x83\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xE1Wa\x0E\xE1a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0FJW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xFFW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\xA1Wa\x0F|\x86\x82\x81Q\x81\x10a\x0FmWa\x0Fma%nV[` \x02` \x01\x01Q\x86\x86a\x1D5V[\x83\x82\x81Q\x81\x10a\x0F\x8EWa\x0F\x8Ea%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0FPV[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R`\0\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a0H` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919`@Q` \x01a\x11\x9C\x93\x92\x91\x90a,\xD2V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\xBF\x83`\0\x01Qa\x1E\x05V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q`\0\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xFB\x8B`\xC0\x01Qa\x1E\x9FV[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06}\x84\x84\x84\x84Ba\x1F=V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\xA9WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x13\0\x90\x85\x90`\x04\x01a-\x15V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13c\x91\x90\x81\x01\x90a-(V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x13{\x82\x84a.'V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x93Wa\x13\x93a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFCW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB1W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x14MW\x85`@\x01Q\x81\x81Q\x81\x10a\x14 Wa\x14 a%nV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x14:Wa\x14:a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x02V[P`\0\x80`\0[\x84\x81\x10\x15a\x17hW`\0\x87\x82\x81Q\x81\x10a\x14pWa\x14pa%nV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x15.W\x88\x81\x81Q\x81\x10a\x14\x97Wa\x14\x97a%nV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15&W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x14}V[P`\0\x80[\x88\x81\x10\x15a\x15\xEFW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x15SWa\x15Sa%nV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\xE6W\x85\x15a\x15\xD0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\xDF\x90\x84a.'V[\x92P`\x01\x96P[P`\x01\x01a\x153V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16hW\x84\x15a\x16OW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16a\x90\x82a.'V[\x90P`\x01\x93P[\x80`\0\x03a\x16\xBDW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x16\xCB\x81`\x05a'\x10a\x1F\xE9V[\x82` \x01Q\x11\x15a\x17>W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17SWa\x17Sa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14TV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17\xCAW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x18F\x90\x84\x90\x86\x90`\x04\x01a.:V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18^W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x19:\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x19D\x85\x85a %V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a0\xC8\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a0\x9A`.\x919`@Q` \x01a\x1B<\x94\x93\x92\x91\x90a.iV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B\xA9\x96\x95\x94\x93\x92`\x04\x01a.\xF2V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1B\xC3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xFCWa\x03_\x82\x82a\x1C\x1EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a lV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1CxW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1C}V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1C\xC8WP\x83a\x1D-V[\x82\x82\x11a\x1D\x01W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1D\x0FWP\x82a\x1D-V[B\x83\x10a\x1D\x1DWP\x83a\x1D-V[a\x1D*\x83\x83B\x88\x88a!WV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x94W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D\xAA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12_\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBFWa\x1E\xBFa%?V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE9W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F.W`\0a\x1F\x1C\x85\x83\x81Q\x81\x10a\x1F\x0FWa\x1F\x0Fa%nV[` \x02` \x01\x01Qa!rV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xEFV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1FH\x84\x84\x83a!\xE9V[a\x1F\xE2W\x81a\x1F\x83W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a\x1F\xDFW`\0\x82\x82\x81Q\x81\x10a\x1F\xA8Wa\x1F\xA8a%nV[` \x02` \x01\x01Q\x90Pa\x1F\xD1\x85a'\x10a\x1F\xC3\x91\x90a.'V[` \x83\x01Q\x90a'\x10a\"4V[` \x90\x91\x01R`\x01\x01a\x1F\x8BV[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a \x1EW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x1F\xE2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0a!f\x86\x86\x86\x86\x86a\"xV[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12_\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\"\rWP\x82\x82\x11[\x80a\x1D-WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\"iW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a\"\x88WP\x80a!iV[`\0a\"\x94\x87\x86a/\xADV[\x90P`\0a\"\xA2\x88\x88a/\xADV[\x90P`\0\x85\x85\x12\x15a\"\xD4Wa\"\xC4\x83\x83a\"\xBD\x88\x8Aa/\xC0V[\x91\x90a\x1F\xE9V[a\"\xCD\x90a/\xE7V[\x90Pa\"\xE6V[a\"\xE3\x83\x83a\"\xBD\x89\x89a/\xC0V[\x90P[a\"\xF0\x81\x87a0\x1FV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a\x0B\\W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a#!W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a#mW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x85W`\0\x80\xFD[a#\x91\x87\x83\x88\x01a\"\xFDV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#\xA7W`\0\x80\xFD[Pa#\xB4\x86\x82\x87\x01a#\x0FV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a#\xD3W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xEBW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a$\x19W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$0W`\0\x80\xFD[a$<\x85\x82\x86\x01a#\xC1V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a$^W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$vW`\0\x80\xFD[a$\x82\x88\x83\x89\x01a#\xC1V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\x9BW`\0\x80\xFD[Pa$\xA8\x87\x82\x88\x01a#\x0FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a$\xE1\x81a$\xB4V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a$\xF8W`\0\x80\xFD[\x815a%\x03\x81a$\xB4V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\x1CW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%3W`\0\x80\xFD[a\x1D-\x84\x82\x85\x01a\"\xFDV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a%\xB8W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xA0V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra%\xD9\x81` \x86\x01` \x86\x01a%\x9DV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a&kW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a& V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&\xEAa\x01\xA0\x85\x01\x82a%\xC1V[\x90P` \x83\x01Qa'(` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'@\x82\x82a&\x0BV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'Z\x82\x82a%\xC1V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a'\xE6W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'\xD4\x86\x83Qa&vV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\x9AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(kW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xAAW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xC5W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#QW`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\x90Wa)\x90a%?V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a)\xA9W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\xC3Wa)\xC3a%?V[a)\xF4` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)IV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\tW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a*8W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\\Wa*\\a%?V[\x81`@R\x82\x93P\x845\x91Pa*p\x82a$\xB4V[\x90\x82R` \x84\x015\x90a*\x82\x82a$\xB4V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xAC\x82a$\xB4V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xC6W`\0\x80\xFD[Pa*\xD3\x85\x82\x86\x01a)\x98V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a*\xF2W`\0\x80\xFD[a*\xFAa(\xDAV[\x90P\x815a+\x07\x81a$\xB4V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+?Wa+?a%?V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a+ZW`\0\x80\xFD[\x815` a+oa+j\x83a+%V[a)IV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\x8EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+\xF3W`\x80\x81\x89\x03\x12\x15a+\xABW`\0\x80\x81\xFD[a+\xB3a)\x03V[\x815a+\xBE\x81a$\xB4V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a+\xE1\x81a$\xB4V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\x92V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\x10W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,(W`\0\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a,=W`\0\x80\xFD[a,Ea)&V[\x825\x82\x81\x11\x15a,TW`\0\x80\xFD[a,`\x87\x82\x86\x01a*&V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra,\x83``\x84\x01a$\xD6V[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra,\x9F\x86`\xA0\x85\x01a*\xE0V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a,\xB7W`\0\x80\xFD[a,\xC3\x87\x82\x86\x01a+IV[`\xC0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa,\xE4\x81\x84` \x89\x01a%\x9DV[\x84Q\x90\x83\x01\x90a,\xF8\x81\x83` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a-\x0B\x81\x83` \x88\x01a%\x9DV[\x01\x95\x94PPPPPV[` \x81R`\0a%\x03` \x83\x01\x84a&vV[`\0` \x80\x83\x85\x03\x12\x15a-;W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-RW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-cW`\0\x80\xFD[\x80Qa-qa+j\x82a+%V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a-\x90W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-\xECW\x80\x85\x8A\x03\x12\x15a-\xADW`\0\x80\x81\xFD[a-\xB5a(\xDAV[\x85Qa-\xC0\x81a$\xB4V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\xD9\x81a$\xB4V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a-\x95V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a fWa fa-\xF8V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1D-`@\x83\x01\x84a&vV[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R`\0\x85Qa.\xA1\x81`\x1C\x85\x01` \x8A\x01a%\x9DV[\x85Q\x90\x83\x01\x90a.\xB8\x81`\x1C\x84\x01` \x8A\x01a%\x9DV[\x85Q\x91\x01\x90a.\xCE\x81`\x1C\x84\x01` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a.\xE4\x81`\x1C\x84\x01` \x88\x01a%\x9DV[\x01`\x1C\x01\x96\x95PPPPPPV[`\0a\x01@a/\"\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra/c`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra/\x98\x81\x84\x01\x86a%\xC1V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"\xF0\x81\x85a%\xC1V[\x81\x81\x03\x81\x81\x11\x15a fWa fa-\xF8V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\xE0Wa/\xE0a-\xF8V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a0\x18Wa0\x18a-\xF8V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a0?Wa0?a-\xF8V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xBCS3\xDA\xEF8\xE7\x0E\x8An\xA6\x12\x12\\YeB\xD6\xE89'\x8B,\x90k\xBA\xBClnp2\x9BdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 K\xE2G`\x98\x89Mn\xC3\xC5\x85s\xF3\xD1\xBB,SE`*arQ,\xA6\xFD\xF7\xAES\xF7\xF6adsolcC\0\x08\x18\x003", + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[Paiy\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x91W[_\x80\xFD[\0[a\0Ma\0\xB4V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x88V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x017W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01IW=_\x80>=_\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;_\x03\x90Pa\x01oWa\x01ma\x03\x86V[P[_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xA4\x90a\x05\x0BV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x01\xE5W=_\x80>=_\xFD[P\x90Pa\x02'`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[_\x80_\x1B`@Qa\x027\x90a\x05\x18V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02TW=_\x80>=_\xFD[P\x90Pa\x02\x96`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\xFDW_\x80\xFD[PZ\xF1\x15\x80\x15a\x03\x0FW=_\x80>=_\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[_\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aE\x84a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04\x08\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\x86V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x1FW_\x80\xFD[PZ\xF1\x15\x80\x15a\x041W=_\x80>=_\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xDC\x82\x82`@Q`$\x01a\x04a\x92\x91\x90a\x05\xBCV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04\xE0V[PPV[a\x04\xE9\x81a\x04\xECV[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a1\xCD\x80a\x05\xF4\x839\x01\x90V[a\r\xC3\x80a7\xC1\x839\x01\x90V[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x05IW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05-V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x05\xB4`@\x83\x01\x84a\x05%V[\x94\x93PPPPV[`@\x81R_a\x05\xCE`@\x83\x01\x85a\x05%V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x001\xCD8\x03\x80b\x001\xCD\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa0\xBCb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x18*\x01Ra0\xBC_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a\"\xDBV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a#\x80V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a#\xBFV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a$WV[a\x06eV[a\0\xB4a\x01e6`\x04a$yV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a$WV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a$\xD8V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x8AV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a'\x96V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B;V[a\x04\x9F\x81a\x0B\x8AV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x8AV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga$\xD8V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B;V[a\x08d\x81a\x0B\x8AV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a'\xD2V[\x81\x01\x90a\nW\x91\x90a+HV[\x90Pa\nb\x81a\x0C\xD5V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\x8D\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a'\xD2V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FrV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B5\x92\x85\x92\x91\x90a\x12AV[P\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BZWa\x0BZa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0Bm\x81a\x12NV[a\x0Bw\x813a\x17+V[a\x0B\x81\x813a\x18(V[P`\x01\x01a\x0B?V[\x80Q_[\x81\x81\x10\x15a\x0C\xC4W_\x83\x82\x81Q\x81\x10a\x0B\xA9Wa\x0B\xA9a$\xD8V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C&W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xDDWa\x0B\xDDa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0C\x1D\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B~\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBEV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CnWa\x0Cna$\xD8V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xB2\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8EV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1B\xC5V[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r\x18W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08oW_[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xABW\x81`\xC0\x01Q\x81\x81Q\x81\x10a\rRWa\rRa$\xD8V[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\rtWa\rta$\xD8V[` \x02` \x01\x01Q` \x01Q\x14a\r\xB7W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\r/V[a\r\xF6`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0E8W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x0EM\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xABWa\x0E\xABa$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\x13W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xC9W\x90P[P\x91P_[\x81\x81\x10\x15a\x0FiWa\x0FD\x86\x82\x81Q\x81\x10a\x0F5Wa\x0F5a$\xD8V[` \x02` \x01\x01Q\x86\x86a\x1C\xD7V[\x83\x82\x81Q\x81\x10a\x0FVWa\x0FVa$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F\x18V[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R_\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/z` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919`@Q` \x01a\x11c\x93\x92\x91\x90a,\x16V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\x85\x83_\x01Qa\x1D\xA4V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q_\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xC0\x8B`\xC0\x01Qa\x1E=V[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06_\x84\x84\x84\x84Ba\x1E\xD8V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12nWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12\xC4\x90\x85\x90`\x04\x01a,XV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xDEW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13#\x91\x90\x81\x01\x90a,jV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x13:\x82\x84a-`V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13RWa\x13Ra$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBAW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13pW\x90P[P\x90P_[\x83\x81\x10\x15a\x14\nW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\xDDWa\x13\xDDa$\xD8V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xF7Wa\x13\xF7a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBFV[P_\x80_[\x84\x81\x10\x15a\x17\x1AW_\x87\x82\x81Q\x81\x10a\x14*Wa\x14*a$\xD8V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14\xE5W\x88\x81\x81Q\x81\x10a\x14PWa\x14Pa$\xD8V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\xDDW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x146V[P_\x80[\x88\x81\x10\x15a\x15\xA2W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x15\x08Wa\x15\x08a$\xD8V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x99W\x85\x15a\x15\x83W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\x92\x90\x84a-`V[\x92P`\x01\x96P[P`\x01\x01a\x14\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16\x1BW\x84\x15a\x16\x02W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16\x14\x90\x82a-`V[\x90P`\x01\x93P[\x80_\x03a\x16oW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x16}\x81`\x05a'\x10a\x1F\x82V[\x82` \x01Q\x11\x15a\x16\xF0W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17\x05Wa\x17\x05a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14\x0FV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17|W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xF8\x90\x84\x90\x86\x90`\x04\x01a-sV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18\x0EW_\x80\xFD[PZ\xFA\x15\x80\x15a\x18 W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xE7\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xF1\x85\x85a\x1F\xBCV[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a/\xFA\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a/\xCC`.\x919`@Q` \x01a\x1A\xE8\x94\x93\x92\x91\x90a-\xA1V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1BU\x96\x95\x94\x93\x92`\x04\x01a.)V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1BlW_\x80\xFD[PZ\xF1\x15\x80\x15a\x18 W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xA3Wa\x03L\x82\x82a\x1B\xC5V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a \x02V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1C\x1BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1CjWP\x83a\x1C\xCFV[\x82\x82\x11a\x1C\xA3W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\xB1WP\x82a\x1C\xCFV[B\x83\x10a\x1C\xBFWP\x83a\x1C\xCFV[a\x1C\xCC\x83\x83B\x88\x88a \xE9V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1DJ\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12$\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\\Wa\x1E\\a$\xABV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x86W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xC9W_a\x1E\xB7\x85\x83\x81Q\x81\x10a\x1E\xAAWa\x1E\xAAa$\xD8V[` \x02` \x01\x01Qa!\x03V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x8BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1E\xE3\x84\x84\x83a!yV[a\x1F{W\x81a\x1F\x1EW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a\x1FxW_\x82\x82\x81Q\x81\x10a\x1FAWa\x1FAa$\xD8V[` \x02` \x01\x01Q\x90Pa\x1Fj\x85a'\x10a\x1F\\\x91\x90a-`V[` \x83\x01Q\x90a'\x10a!\xC3V[` \x90\x91\x01R`\x01\x01a\x1F%V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1F\xB5W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F{W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_a \xF7\x86\x86\x86\x86\x86a\"\x05V[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12$\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a!\x9CWP\x82\x82\x11[\x80a\x1C\xCFWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xF6W_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a\"\x14WP\x80a \xFAV[_a\"\x1F\x87\x86a.\xE3V[\x90P_a\",\x88\x88a.\xE3V[\x90P_\x85\x85\x12\x15a\"]Wa\"M\x83\x83a\"F\x88\x8Aa.\xF6V[\x91\x90a\x1F\x82V[a\"V\x90a/\x1CV[\x90Pa\"oV[a\"l\x83\x83a\"F\x89\x89a.\xF6V[\x90P[a\"y\x81\x87a/RV[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a\x0B5W_\x80\xFD[_\x80\x83`\x1F\x84\x01\x12a\"\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\"\xEDW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x04W_\x80\xFD[a#\x10\x87\x83\x88\x01a\"\x86V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#%W_\x80\xFD[Pa#2\x86\x82\x87\x01a\"\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a#OW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#fW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a#\x91W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xA7W_\x80\xFD[a#\xB3\x85\x82\x86\x01a#?V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a#\xD2W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE9W_\x80\xFD[a#\xF5\x88\x83\x89\x01a#?V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\rW_\x80\xFD[Pa$\x1A\x87\x82\x88\x01a\"\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a$R\x81a$&V[\x91\x90PV[_` \x82\x84\x03\x12\x15a$gW_\x80\xFD[\x815a$r\x81a$&V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a$\x89W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x9FW_\x80\xFD[a\x1C\xCF\x84\x82\x85\x01a\"\x86V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a%\x1FW\x81\x81\x01Q\x83\x82\x01R` \x01a%\x07V[PP_\x91\x01RV[_\x81Q\x80\x84Ra%>\x81` \x86\x01` \x86\x01a%\x05V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a%\xCEW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a%\x83V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&La\x01\xA0\x85\x01\x82a%'V[\x90P` \x83\x01Qa&\x8A` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra&\xA2\x82\x82a%pV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra&\xBC\x82\x82a%'V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a'FW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'4\x86\x83Qa%\xD9V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a&\xFAV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'\xC8W_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\x05W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\x1FW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"\xD4W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xE9Wa(\xE9a$\xABV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\x1AWa)\x1Aa$\xABV[a)K` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(\xA2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)_W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a)\x8BW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a)\xAFWa)\xAFa$\xABV[\x81`@R\x82\x93P\x845\x91Pa)\xC3\x82a$&V[\x90\x82R` \x84\x015\x90a)\xD5\x82a$&V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa)\xFF\x82a$&V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\x18W_\x80\xFD[Pa*%\x85\x82\x86\x01a(\xF1V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a*BW_\x80\xFD[a*Ja(3V[\x90P\x815a*W\x81a$&V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*\x8EWa*\x8Ea$\xABV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a*\xA7W_\x80\xFD[\x815` a*\xBCa*\xB7\x83a*uV[a(\xA2V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a*\xDAW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+=W`\x80\x81\x89\x03\x12\x15a*\xF5W_\x80\xFD[a*\xFDa(\\V[\x815a+\x08\x81a$&V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a++\x81a$&V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a*\xDEV[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a+XW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a+oW_\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a+\x83W_\x80\xFD[a+\x8Ba(\x7FV[\x825\x82\x81\x11\x15a+\x99W_\x80\xFD[a+\xA5\x87\x82\x86\x01a){V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+\xC8``\x84\x01a$GV[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra+\xE4\x86`\xA0\x85\x01a*2V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a+\xFBW_\x80\xFD[a,\x07\x87\x82\x86\x01a*\x98V[`\xC0\x83\x01RP\x95\x94PPPPPV[_\x84Qa,'\x81\x84` \x89\x01a%\x05V[\x84Q\x90\x83\x01\x90a,;\x81\x83` \x89\x01a%\x05V[\x84Q\x91\x01\x90a,N\x81\x83` \x88\x01a%\x05V[\x01\x95\x94PPPPPV[` \x81R_a$r` \x83\x01\x84a%\xD9V[_` \x80\x83\x85\x03\x12\x15a,{W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,\x91W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xA1W_\x80\xFD[\x80Qa,\xAFa*\xB7\x82a*uV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a,\xCDW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-'W\x80\x85\x8A\x03\x12\x15a,\xE8W_\x80\xFD[a,\xF0a(3V[\x85Qa,\xFB\x81a$&V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\x14\x81a$&V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a,\xD2V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1C\xCF`@\x83\x01\x84a%\xD9V[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R_\x85Qa-\xD8\x81`\x1C\x85\x01` \x8A\x01a%\x05V[\x85Q\x90\x83\x01\x90a-\xEF\x81`\x1C\x84\x01` \x8A\x01a%\x05V[\x85Q\x91\x01\x90a.\x05\x81`\x1C\x84\x01` \x89\x01a%\x05V[\x84Q\x91\x01\x90a.\x1B\x81`\x1C\x84\x01` \x88\x01a%\x05V[\x01`\x1C\x01\x96\x95PPPPPPV[_a\x01@a.X\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra.\x99`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra.\xCE\x81\x84\x01\x86a%'V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"y\x81\x85a%'V[\x81\x81\x03\x81\x81\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\x15Wa/\x15a-3V[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a/LWa/La-3V[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a/qWa/qa-3V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 Su;v/\xD0\xA1\xC6\xD1\xA3B%\xB20>\x86\x1C5Ufn\x99\xF1O\xD2\xB1\xD8v\xFE\x93\x9EqdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\r\xA6\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cA\xD8\x8Di\x14a\0CW\x80cX]\xA6(\x14a\0lW\x80cvq\xD0{\x14a\0\x81W[_\x80\xFD[a\0Va\0Q6`\x04a\x04\xA8V[a\0\xC2V[`@Qa\0c\x91\x90a\x05\xDCV[`@Q\x80\x91\x03\x90\xF3[a\0\x7Fa\0z6`\x04a\x08\xC4V[a\x02\x18V[\0[a\0\x9Da\0\x8F6`\x04a\n*V[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R_\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAA\x92\x91`\x04\x01a\ndV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC1W_\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xD2WP`\x01[a\x02\x12W=\x80\x80\x15a\x01\xFFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xB0\x81lQ\xD5\x1CZ\xB3\x94{\xAD=\xF8\xFE\xDF\xB8u\x8E\xB6\xCE\x0E\xD2\x0B\x8F\xC1\x84L\x99&\xA01\xBEdsolcC\0\x08\x18\x003`@`\x80\x81R`\x04\x90\x816\x10\x15a\0\x15W`\0\x80\xFD[`\0\x90\x815`\xE0\x1C\x80c\rX\xB1\xDB\x14a\x12lW\x80c\x13|)\xFE\x14a\x10uW\x80c*-\x80\xD1\x14a\r\xB7W\x80c+g\xB5p\x14a\x0B\xDEW\x80c0\xF2\x8Bz\x14a\n\xDEW\x80c6D\xE5\x15\x14a\n\x9DW\x80c6\xC7\x85\x16\x14a\n(W\x80c?\xF9\xDC\xB1\x14a\t\xA8W\x80cO\xE0+D\x14a\t?W\x80ce\xD9r<\x14a\x07\xACW\x80c\x87Q|E\x14a\x06zW\x80c\x92}\xA1\x05\x14a\x05\xC3W\x80c\xCCS(\x7F\x14a\x04\xA3W\x80c\xED\xD9DK\x14a\x03:Wc\xFE\x8E\xC1\xA7\x14a\0\xC6W`\0\x80\xFD[4a\x036W`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x835\x81\x81\x11a\x032Wa\x01\x14\x906\x90\x86\x01a\x16KV[`$5\x82\x81\x11a\x03.Wa\x01+\x906\x90\x87\x01a\x16\x1AV[a\x013a\x14\xE6V[\x91`\x845\x85\x81\x11a\x03*Wa\x01K\x906\x90\x8A\x01a\x15\xC1V[\x98\x90\x95`\xA45\x90\x81\x11a\x03&Wa\x01d\x916\x91\x01a\x15\xC1V[\x96\x90\x95\x81Q\x90a\x01s\x82a\x13\xFFV[`k\x82R\x7FPermitBatchWitnessTransferFrom(T` \x83\x01R\x7FokenPermissions[] permitted,addr\x83\x83\x01R\x7Fess spender,uint256 nonce,uint25``\x83\x01R\x7F6 deadline,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x82Q\x9A\x8B\x91\x81a\x02\"` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8A\x81R\x03\x99a\x02[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x9B\x8C\x81\x01\x83R\x82a\x147V[Q\x90 \x90\x85QQa\x02k\x81a\x1E\xBBV[\x90\x8A[\x81\x81\x10a\x02\xF9WPPa\x02\xF6\x99\x9Aa\x02\xED\x91\x83Qa\x02\xA0\x81a\x02\x94` \x82\x01\x80\x95a\x1FfV[\x03\x84\x81\x01\x83R\x82a\x147V[Q\x90 ` \x89\x81\x01Q\x85\x8B\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`d5`\xC0\x84\x01R\x82`\xE0\x81\x01[\x03\x90\x81\x01\x83R\x82a\x147V[Q\x90 \x93a\x1C\xF7V[\x80\xF3[\x80a\x03\x11a\x03\x0Ba\x03!\x93\x8CQa\x17^V[Qa TV[a\x03\x1B\x82\x86a\x17^V[Ra\x1F\nV[a\x02nV[\x88\x80\xFD[\x87\x80\xFD[\x84\x80\xFD[\x83\x80\xFD[P\x80\xFD[P\x914a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x805\x82\x81\x11a\x032Wa\x03\x8B\x906\x90\x83\x01a\x16KV[`$5\x83\x81\x11a\x03.Wa\x03\xA2\x906\x90\x84\x01a\x16\x1AV[\x93\x90\x92a\x03\xADa\x14\xE6V[\x91`d5\x90\x81\x11a\x04\x9FWa\x03\xC4\x916\x91\x01a\x15\xC1V[\x94\x90\x93\x83QQ\x97a\x03\xD4\x89a\x1E\xBBV[\x98\x88[\x81\x81\x10a\x04}WPPa\x02\xF6\x97\x98\x81Qa\x04%\x81a\x03\xF9` \x82\x01\x80\x95a\x1FfV[\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x01\x83R\x82a\x147V[Q\x90 ` \x86\x01Q\x82\x87\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\xFC\xF3_Z\xC6\xA2\xC2\x88h\xDCD\xC3\x02\x16dp&b9\x19_\x02\xB0\xEE@\x834\x82\x933\xB7f\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x02\xED\x81a\x14\x1BV[\x80\x8Ba\x03\x1B\x82a\x04\x94a\x03\x0Ba\x04\x9A\x96\x8DQa\x17^V[\x92a\x17^V[a\x03\xD7V[\x86\x80\xFD[P\x824a\x05\xBFW` \x90\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x03.Wa\x04\xF4\x916\x91\x01a\x16\x1AV[\x92\x90\x91\x84[\x84\x81\x10a\x05\x04W\x85\x80\xF3[\x80a\x05\x1Aa\x05\x15`\x01\x93\x88\x88a\x19lV[a\x19|V[a\x05/\x84a\x05)\x84\x8A\x8Aa\x19lV[\x01a\x19|V[3\x89R\x83\x85R\x85\x89 \x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x92\x83\x8BR\x86R\x86\x8A \x91\x16\x90\x81\x8AR\x85R\x85\x89 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81T\x16\x90U\x85Q\x91\x82R\x84\x82\x01R\x7F\x89\xB1\xAD\xD1^\xFFV\xB3\xDF\xE2\x99\xAD\x94\xE0\x1F+R\xFB\xCB\x80\xAE\x1A;\xAE\xA6\xAE\x8C\x04\xCB+\x98\xA4\x853\x92\xA2\x01a\x04\xF9V[\x82\x80\xFD[P4a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06v\x81a\x05\xFFa\x14\xA0V[\x93a\x06\x08a\x14\xC3V[a\x06\x10a\x14\xE6V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16\x83R`\x01` \x90\x81R\x84\x84 \x92\x88\x16\x84R\x91\x82R\x83\x83 \x90\x87\x16\x83R\x81R\x91\x90 T\x92Q\x93\x83\x16\x84R`\xA0\x83\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x84\x01R`\xD0\x91\x90\x91\x1C`@\x83\x01R\x81\x90``\x82\x01\x90V[\x03\x90\xF3[P4a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06\xB2a\x14\xA0V[\x90a\x06\xBBa\x14\xC3V[\x91a\x06\xC4a\x14\xE6V[e\xFF\xFF\xFF\xFF\xFF\xFF\x92`d5\x84\x81\x16\x90\x81\x81\x03a\x03*Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x7F\xDA\x9F\xA7\xC1\xB0\x04\x02\xC1}\x01a\xB2I\xB1\xAB\x8B\xBE\xC0G\xC5\xA5\"\x07\xB9\xC1\x12\xDE\xFF\xD8\x17\x03k\x943\x8AR`\x01` R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x8B \x98s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x94\x16\x99\x8A\x8DR` R\x83\x87\x8D \x9B\x16\x9A\x8B\x8DR` R\x86\x8C \x94\x86\x15`\0\x14a\x07\xA4WPB\x16\x92[\x84T\x92\x16\x97\x88\x93`\xA0\x1B\x16\x91\x16\x17\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA4\x80\xF3[\x90P\x92a\x07\x83V[P\x824a\x05\xBFW``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x07\xE5a\x14\xA0V[\x90a\x07\xEEa\x14\xC3V[\x92e\xFF\xFF\xFF\xFF\xFF\xFF`D5\x81\x81\x16\x93\x90\x84\x81\x03a\x03*W3\x88R` \x91`\x01\x83R\x84\x89 \x96s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x97\x88\x8BR\x84R\x85\x8A \x98\x16\x97\x88\x8AR\x83R\x84\x89 T`\xD0\x1C\x93\x84\x87\x11\x15a\t\x17Wa\xFF\xFF\x90\x85\x84\x03\x16\x11a\x08\xF0WP\x90\x7FU\xEB\x90\xD8\x10\xE1p\x0B5\xA8\xE7\xE2S\x95\xFF\x7F+\"Y\xAB\xD7A\\\xA2(M\xFB\x1C$d\x18\xF3\x93\x92\x913\x89R`\x01\x82R\x83\x89 \x87\x8AR\x82R\x83\x89 \x88\x8AR\x82R\x83\x89 \x90y\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83T\x92`\xD0\x1B\x16\x91\x16\x17\x90U\x82Q\x94\x85R\x84\x01R3\x92\xA4\x80\xF3[\x84Q\x7F$\xD3Z&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P4a\x036W\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W\x80` \x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\x8Fa\x14\xA0V[\x16\x81R\x80\x84R\x81\x81 `$5\x82R\x84R T\x90Q\x90\x81R\xF3[P\x824a\x05\xBFW\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFW\x7F7\x04\x90/\x967f\xA4\xE5a\xBB\xAA\xB6\xE6\xCD\xC1\xB1\xDD\x12\xF6\xE9\xE9\x96H\xDA\x88C\xB3\xF4k\x91\x8D\x905\x91`$53\x85R\x84` R\x81\x85 \x84\x86R` R\x81\x85 \x81\x81T\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA2\x80\xF3[\x824a\n\x9AW`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\n\x9AWa\n`a\x14\xA0V[a\nha\x14\xC3V[a\npa\x14\xE6V[`d5\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x83\x03a\x03.Wa\x02\xF6\x93a\x17\xA1V[\x80\xFD[P4a\x036W\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W` \x90a\n\xD7a\x1B\x1EV[\x90Q\x90\x81R\xF3[P\x82\x904a\x05\xBFWa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x0B\x1A6a\x15*V[\x90\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x0BLa\x14xV[\x91`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\xDAWa\x02\xF6\x94a\x0Bo\x916\x91\x01a\x15\xC1V[\x93\x90\x92a\x0B|\x83Qa TV[` \x84\x01Q\x82\x85\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\x93\x9C!\xA4\x8A\x8D\xBE:\x9A$\x04\xA1\xD4f\x91\xE4\xD3\x9Fe\x83\xD6\xECk5qF\x04\xC9\x86\xD8\x01\x06\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x0B\xD1\x81a\x14\x1BV[Q\x90 \x91a\x1C%V[\x85\x80\xFD[P\x914a\x036Wa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x0C\x18a\x14\xA0V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC6\x01`\xC0\x81\x12a\x032W`\x80\x85Q\x91a\x0CQ\x83a\x13\xE3V[\x12a\x032W\x84Q\x90a\x0Cb\x82a\x13\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91`$5\x83\x81\x16\x81\x03a\x04\x9FW\x81R`D5\x83\x81\x16\x81\x03a\x04\x9FW` \x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF`d5\x81\x81\x16\x81\x03a\x03*W\x88\x83\x01R`\x845\x90\x81\x16\x81\x03a\x04\x9FW``\x82\x01R\x81R`\xA45\x93\x82\x85\x16\x85\x03a\x0B\xDAW` \x82\x01\x94\x85R`\xC45\x90\x87\x83\x01\x82\x81R`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x03&Wa\x0C\xFE\x906\x90\x84\x01a\x15\xC1V[\x92\x90\x93\x80B\x11a\r\x88WPP\x91\x85\x91a\rxa\x02\xF6\x99\x9Aa\r~\x95a\r#\x88Qa\x1F\xBEV[\x90\x89\x8CQ\x16\x90Q\x90\x83Q\x92` \x84\x01\x94\x7F\xF3\x84\x1C\xD1\xFF\0\x85\x02jc'\xB6 \xB6y\x97\xCE@\xF2\x82\xC8\x8A\x8E\x90ZzV&\xE3\x10\xF3\xD0\x86R\x84\x01R``\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x90 a\x1B\xD9V[\x91a \xC7V[Q\x92Q\x16\x91a\x19\x9DV[`$\x92P\x8AQ\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[P\x914a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x93\x81\x856\x01\x12a\x032Wa\r\xF3a\x14\xA0V[\x92`$\x90\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x85\x11a\x03*W\x85\x90\x856\x03\x01\x12a\x04\x9FW\x80Q\x97\x85\x89\x01\x89\x81\x10\x82\x82\x11\x17a\x10JW\x82R\x84\x83\x015\x81\x81\x11a\x03&W\x85\x01\x906`#\x83\x01\x12\x15a\x03&W\x83\x82\x015\x91a\x0EP\x83a\x15\xEFV[\x90a\x0E]\x85Q\x92\x83a\x147V[\x83\x82R` \x93\x87\x85\x84\x01\x91`\x07\x1B\x83\x01\x01\x916\x83\x11a\x10FW\x88\x01\x90[\x82\x82\x10a\x0F\xE9WPPP\x8AR`Da\x0E\x93\x86\x88\x01a\x15\tV[\x96\x83\x8C\x01\x97\x88R\x015\x94\x83\x8B\x01\x91\x86\x83R`D5\x90\x81\x11a\x0F\xE5Wa\x0E\xBB\x906\x90\x87\x01a\x15\xC1V[\x95\x90\x96\x80B\x11a\x0F\xBAWPPP\x89\x98\x99QQa\x0E\xD6\x81a\x1E\xBBV[\x90\x8B[\x81\x81\x10a\x0F\x97WPP\x92\x88\x94\x92a\rx\x92a\x0Fd\x97\x95\x83Qa\x0F\x02\x81a\x03\xF9\x86\x82\x01\x80\x95a\x1FfV[Q\x90 \x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x8B\x8BQ\x16\x91Q\x92\x85Q\x94\x85\x01\x95\x7F\xAF\x1B\r0\xD2\xCA\xB08\x0Eh\xF0h\x90\x07\xE3%I\x93\xC5\x96\xF2\xFD\xD0\xAA\xA7\xF4\xD0OyD\x08c\x87R\x85\x01R\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x16\x90\x82QQ\x92\x84[\x84\x81\x10a\x0FxW\x85\x80\xF3[\x80a\x0F\x91\x85\x85a\x0F\x8B`\x01\x95\x87Qa\x17^V[Qa\x19\x9DV[\x01a\x0FmV[\x80a\x03\x11a\x0F\xAC\x8E\x9F\x9E\x93a\x0F\xB2\x94Qa\x17^V[Qa\x1F\xBEV[\x9B\x9A\x9Ba\x0E\xD9V[\x85Q\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[\x8A\x80\xFD[`\x80\x826\x03\x12a\x10FW\x85`\x80\x91\x88Qa\x10\x02\x81a\x13\x98V[a\x10\x0B\x85a\x15\tV[\x81Ra\x10\x18\x83\x86\x01a\x15\tV[\x83\x82\x01Ra\x10'\x8A\x86\x01a\x16\x07V[\x8A\x82\x01R\x8Da\x107\x81\x87\x01a\x16\x07V[\x90\x82\x01R\x81R\x01\x91\x01\x90a\x0EzV[\x8C\x80\xFD[\x84\x89`A\x86\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83RR\xFD[P\x824a\x05\xBFWa\x01@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x10\xB06a\x15*V[\x91\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x10\xE2a\x14xV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90a\x01\x045\x85\x81\x11a\x04\x9FWa\x11\x05\x906\x90\x86\x01a\x15\xC1V[\x90\x93a\x01$5\x96\x87\x11a\x03*Wa\x11%a\x0B\xD1\x96a\x02\xF6\x986\x91\x01a\x15\xC1V[\x96\x90\x95\x82Q\x90a\x114\x82a\x13\xFFV[`d\x82R\x7FPermitWitnessTransferFrom(TokenP` \x83\x01R\x7Fermissions permitted,address spe\x84\x83\x01R\x7Fnder,uint256 nonce,uint256 deadl``\x83\x01R\x7Fine,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x83Q\x94\x85\x91\x81a\x11\xE3` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8B\x81R\x03\x93a\x12\x1C\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x95\x86\x81\x01\x83R\x82a\x147V[Q\x90 \x92a\x12*\x86Qa TV[` \x87\x81\x01Q\x85\x89\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`\xE45`\xC0\x84\x01R\x82`\xE0\x81\x01a\x02\xE1V[P\x824a\x05\xBFW` \x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x0B\xDAW6`#\x83\x01\x12\x15a\x0B\xDAW\x81\x015\x92\x83\x11a\x03.W`$\x90`\x076\x83\x86\x83\x1B\x84\x01\x01\x11a\x04\x9FW\x86[\x85\x81\x10a\x12\xE5W\x87\x80\xF3[\x80\x82\x1B\x83\x01\x90`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\x836\x03\x01\x12a\x03&Wa\x13\x92\x88\x87`\x01\x94``\x83Qa\x13,\x81a\x13\x98V[a\x13h`\x84a\x13<\x8D\x86\x01a\x15\tV[\x94\x85\x84Ra\x13L`D\x82\x01a\x15\tV[\x80\x97\x85\x01Ra\x13]`d\x82\x01a\x15\tV[\x80\x98\x85\x01R\x01a\x15\tV[\x91\x82\x91\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x80\x80\x93\x16\x95\x16\x93\x16\x91\x16a\x17\xA1V[\x01a\x12\xDAV[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC45\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`\0\x80\xFD[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`D5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x01\x90`\x80\x82\x12a\x14\x9BW`@\x80Q\x90a\x15c\x82a\x13\xE3V[\x80\x82\x94\x12a\x14\x9BW\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W\x82R`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x81R`$5` \x82\x01R\x82R`D5` \x83\x01R`d5\x91\x01RV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x83\x81\x86\x01\x95\x01\x01\x11a\x14\x9BWV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x13\xB4W`\x05\x1B` \x01\x90V[5\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x80\x85\x01\x94\x84`\x06\x1B\x01\x01\x11a\x14\x9BWV[\x91\x90\x91``\x81\x84\x03\x12a\x14\x9BW`@\x80Q\x91a\x16f\x83a\x13\xE3V[\x82\x94\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x81\x11a\x14\x9BW\x83\x01\x82`\x1F\x82\x01\x12\x15a\x14\x9BW\x805a\x16\x93\x81a\x15\xEFV[\x92a\x16\xA0\x87Q\x94\x85a\x147V[\x81\x84R` \x94\x85\x80\x86\x01\x93`\x06\x1B\x85\x01\x01\x93\x81\x85\x11a\x14\x9BW\x90\x86\x89\x98\x97\x96\x95\x94\x93\x92\x01\x92[\x84\x84\x10a\x16\xE3WPPPPP\x85R\x80\x82\x015\x90\x85\x01R\x015\x91\x01RV[\x90\x91\x92\x93\x94\x95\x96\x97\x84\x83\x03\x12a\x14\x9BW\x88Q\x90\x89\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17a\x170W\x8A\x92\x89\x92\x84Ra\x17\x14\x87a\x15\tV[\x81R\x82\x87\x015\x83\x82\x01R\x81R\x01\x93\x01\x91\x90\x88\x97\x96\x95\x94\x93a\x16\xC6V[`$`\0\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`A`\x04R\xFD[\x80Q\x82\x10\x15a\x17rW` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x92\x91\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@`\0\x82\x84\x16\x81R`\x01` R\x82\x82\x82 \x96\x16\x95\x86\x82R` R\x81\x81 3\x82R` R \x94\x85T\x95e\xFF\xFF\xFF\xFF\xFF\xFF\x87`\xA0\x1C\x16\x80B\x11a\x18\x84WP\x82\x87\x16\x96\x83\x88\x03a\x18\x12W[PPa\x18\x10\x95P\x16\x92a\x18\xB5V[V[\x87\x84\x84\x16\x11`\0\x14a\x18OW`$\x88`@Q\x90\x7F\xF9o\xB0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x84a\x18\x10\x9A\x03\x16\x91\x16\x17\x90U8\x80a\x18\x02V[`$\x90`@Q\x90\x7F\xD8\x1B/.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90`\0`d\x92` \x95\x82\x95`@Q\x94\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\x04\x86\x01R`$\x85\x01R`D\x84\x01RZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x15a\x19\x0EWV[`d`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R\xFD[\x91\x90\x81\x10\x15a\x17rW`\x06\x1B\x01\x90V[5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x90V[\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81``\x84\x01Q\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x85Q\x16\x94\x82` \x82\x01Q\x16\x92\x80\x86`@\x80\x94\x01Q\x16\x95\x16\x95`\0\x91\x87\x83R`\x01` R\x83\x83 \x89\x84R` R\x83\x83 \x99\x16\x98\x89\x83R` R\x82\x82 \x91\x84\x83T`\xD0\x1C\x03a\x1A\xF5W\x91\x85a\x1A\xCE\x94\x92\x7F\xC6\xA3w\xBF\xC4\xEB\x12\0$\xA8\xAC\x08\xEE\xF2\x05\xBE\x16\xB8\x17\x02\x08\x12\xC72#\xE8\x1D\x1B\xDB\x97\x08\xEC\x98\x97\x96\x94P\x87\x15`\0\x14a\x1A\xD3Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90B\x16[`\xA0\x1B\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01\x86\x01`\xD0\x1B\x16\x17\x17\x90UQ\x93\x84\x93\x84\x91`@\x91\x94\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF``\x85\x01\x96\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x80\x92\x16` \x85\x01R\x16\x91\x01RV[\x03\x90\xA4V[Py\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87a\x1A`V[`\x04\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x1BiW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x82R\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j`@\x82\x01RF``\x82\x01R0`\x80\x82\x01R`\x80\x81Ra\x1B\xD3\x81a\x13\xFFV[Q\x90 \x90V[a\x1B\xE1a\x1B\x1EV[\x90`@Q\x90` \x82\x01\x92\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84R`\"\x83\x01R`B\x82\x01R`B\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x92\x90\x93`\xA45\x93`@\x84\x01Q\x80B\x11a\x1C\xC6WP` \x84Q\x01Q\x80\x86\x11a\x1C\x95WP\x91\x85\x91a\rxa\x1Ce\x94a\x1C`` \x88\x01Q\x86a\x1EGV[a\x1B\xD9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91QQ\x16\x92`\x845\x91\x82\x16\x82\x03a\x14\x9BWa\x18\x10\x93a\x18\xB5V[`$\x90`@Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`$\x90`@Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x95\x90\x93\x95\x80QQ\x95`@\x92\x83\x83\x01Q\x80B\x11a\x1E\x17WP\x84\x88\x03a\x1D\xEEWa\x1D.\x91\x86\x91a\rx` \x9Ba\x1C`\x8D\x88\x01Q\x86a\x1EGV[`\0[\x86\x81\x10a\x1DBWPPPPPPPPV[a\x1DM\x81\x83Qa\x17^V[Q\x88a\x1DZ\x83\x87\x8Aa\x19lV[\x015\x90\x89\x81\x01Q\x80\x83\x11a\x1D\xBEWP\x91\x81\x88\x88\x88`\x01\x96\x85\x96a\x1D\x84W[PPPPPP\x01a\x1D1V[a\x1D\xB3\x95a\x1D\xAD\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x05\x15\x93Q\x16\x95a\x19lV[\x91a\x18\xB5V[\x808\x88\x88\x88\x83a\x1DxV[`$\x90\x86Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`\x04\x84Q\x7F\xFFc:8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`$\x90\x85Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\xFF\x83\x16\x1B\x92\x16`\0R`\0` R`@`\0 \x90`\x08\x1C`\0R` R`@`\0 \x81\x81T\x18\x80\x91U\x16\x15a\x1E\x91WV[`\x04`@Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90a\x1E\xC5\x82a\x15\xEFV[a\x1E\xD2`@Q\x91\x82a\x147V[\x82\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x1F\0\x82\x94a\x15\xEFV[\x01\x90` 6\x91\x017V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x1F7W`\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80Q` \x80\x92\x01\x91`\0[\x82\x81\x10a\x1F\x7FWPPPP\x90V[\x83Q\x85R\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x1FqV[\x90\x81Q\x91`\0[\x83\x81\x10a\x1F\xABWPP\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q\x81\x85\x01R\x01a\x1F\x9AV[`@Q` \x81\x01\x91\x7Febl\xADl\xB9d\x93\xBFo^\xBE\xA2\x87V\xC9f\xF0#\xAB\x9E\x8A\x83\xA7\x10\x18I\xD5W;6x\x83Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`@\x84\x01R` \x82\x01Q\x16``\x83\x01R``e\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82`@\x82\x01Q\x16`\x80\x85\x01R\x01Q\x16`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RQ\x90 \x90V[`@Q` \x80\x82\x01\x92\x7Fa\x83X\xAC=\xB8\xDC'O\x0C\xD8\x82\x9D\xA7\xE24\xBDH\xCDs\xC4\xA7@\xAE\xDE\x1A\xDE\xC9\x84m\x06\xA1\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16`@\x84\x01R\x01Q``\x82\x01R``\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x90\x82`@\x91\x03\x12a\x14\x9BW` \x825\x92\x015\x90V[`\0\x84;a\".WP`A\x82\x03a!\xACWa \xE4\x82\x82\x01\x82a \xB1V[\x93\x90\x92`@\x10\x15a\x17rW` \x93`\0\x93`\xFF`@`\x80\x95\x015`\xF8\x1C[`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a!\xA0Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80`\0Q\x16\x91\x82\x15a!vW\x16\x03a!LWV[`\x04`@Q\x7F\x81^\x1Dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`\x04`@Q\x7F\x8B\xAAW\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`@Q=`\0\x82>=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 2\x1E\xC7<\xEFr\xCAq\xA6\x17\xDF\x1A-`3\x1CC#\x97\x12@\x9B\xC9L\xA00T\xF8\xA3\x84AedsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610094575b600080fd5b005b6100506100b7565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a79062010000900460ff1681565b604051901515815260200161008b565b60408051606081018252600080825260208201819052918101919091527f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561013f57600080fd5b505af1158015610153573d6000803e3d6000fd5b5050506e22d473030f116ddee9f6b43ac78ba33b600003905061017a576101786103a1565b505b60008060001b6e22d473030f116ddee9f6b43ac78ba3731a9c8182c09f50c8318d769245bea52c32be35bc6040516101b19061052e565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156101f5573d6000803e3d6000fd5b5090506102376040518060400160405280600781526020017f52656163746f72000000000000000000000000000000000000000000000000008152508261046c565b60008060001b6040516102499061053b565b8190604051809103906000f5905080158015610269573d6000803e3d6000fd5b5090506102ab6040518060400160405280600681526020017f51756f74657200000000000000000000000000000000000000000000000000008152508261046c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561031657600080fd5b505af115801561032a573d6000803e3d6000fd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b600080604051806123e001604052806123c081526020016146d86123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290610424906e22d473030f116ddee9f6b43ac78ba39085906004016105ac565b600060405180830381600087803b15801561043e57600080fd5b505af1158015610452573d6000803e3d6000fd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6104fd82826040516024016104829291906105e3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af33300000000000000000000000000000000000000000000000000000000179052610501565b5050565b61050a8161050d565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6132a38061061c83390190565b610e19806138bf83390190565b6000815180845260005b8181101561056e57602081850181015186830182015201610552565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006105db6040830184610548565b949350505050565b6040815260006105f66040830185610548565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b50604051620032a3380380620032a38339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b60805161318a620001196000396000818160e0015261187c015261318a6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612358565b6101eb565b005b6100b96100c9366004612406565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612448565b6104c5565b34801561014a57600080fd5b506100b96101593660046124e6565b610683565b6100b961016c36600461250a565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046124e6565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561256e565b60200260200101819052506102d981610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612771565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb3565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861253f565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661256e565b90506020028101906104789190612837565b6109f6565b82828151811061048f5761048f61256e565b6020908102919091010152600101610449565b506104ac81610b62565b6104b581610bb3565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961253f565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661256e565b8282815181106105d9576105d961256e565b60209081029190910101526001016105aa565b506105f681610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612771565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb3565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961256e565b602002602001018190525061087d81610b62565b61088681610bb3565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612875565b810190610a7c9190612bfe565b9050610a8781610d06565b6040518060a0016040528082600001518152602001610abd836020015184604001518560a00151610df19092919063ffffffff16565b8152602001610ae3836020015184604001518560c00151610ec39092919063ffffffff16565b8152602001848060200190610af89190612875565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610faa565b9052606082015160208301516080840151929450610b5c928592919061127c565b50919050565b805160005b8181101561035f576000838281518110610b8357610b8361256e565b60200260200101519050610b9681611289565b610ba08133611779565b610baa813361187a565b50600101610b67565b805160005b81811015610cf5576000838281518110610bd457610bd461256e565b602002602001015190506000816040015151905060005b81811015610c5557600083604001518281518110610c0b57610c0b61256e565b60200260200101519050610c4c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611bd79092919063ffffffff16565b50600101610beb565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9e57610c9e61256e565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce391815260200190565b60405180910390a45050600101610bb8565b5047156104c1576104c13347611c1e565b60408101518151606001511015610d49576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a08101516040810151602090910151146108915760005b8160c00151518110156104c1578160c001518181518110610d8457610d8461256e565b6020026020010151604001518260c001518281518110610da657610da661256e565b60200260200101516020015114610de9576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d61565b610e2b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e6d576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e83856020015186604001518686611cb8565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ee157610ee161253f565b604051908082528060200260200182016040528015610f4a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eff5790505b50915060005b81811015610fa157610f7c868281518110610f6d57610f6d61256e565b60200260200101518686611d35565b838281518110610f8e57610f8e61256e565b6020908102919091010152600101610f50565b50509392505050565b6040517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e982015260009060ff01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061304860208301396040518060c00160405280608d81526020016130c8608d913960405160200161119c93929190612cd2565b604051602081830303815290604052805190602001206111bf8360000151611e05565b83602001518460400151856060015186608001518760a00151600001518860a00151602001518960a00151604001516111fb8b60c00151611e9f565b60408051602081019b909b528a01989098526060890196909652608088019490945273ffffffffffffffffffffffffffffffffffffffff92831660a088015260c08701919091521660e0850152610100840152610120830152610140820152610160015b604051602081830303815290604052805190602001209050919050565b61067d8484848442611f3d565b60015473ffffffffffffffffffffffffffffffffffffffff166112a95750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611300908590600401612d15565b600060405180830381865afa15801561131d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113639190810190612d28565b604083015151815191925090600061137b8284612e27565b67ffffffffffffffff8111156113935761139361253f565b6040519080825280602002602001820160405280156113fc57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b15790505b50905060005b8381101561144d57856040015181815181106114205761142061256e565b602002602001015182828151811061143a5761143a61256e565b6020908102919091010152600101611402565b5060008060005b848110156117685760008782815181106114705761147061256e565b6020026020010151905060005b8281101561152e578881815181106114975761149761256e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036115265781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161147d565b506000805b888110156115ef5760008b6040015182815181106115535761155361256e565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036115e65785156115d0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516115df9084612e27565b9250600196505b50600101611533565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361166857841561164f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116619082612e27565b9050600193505b806000036116bd5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6116cb816005612710611fe9565b8260200151111561173e578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106117535761175361256e565b60209081029190910101525050600101611454565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146117ca576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906118469084908690600401612e3a565b60006040518083038186803b15801561185e57600080fd5b505afa158015611872573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61193a846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6119448585612025565b856000015160200151866080015160405180608001604052806052815260200161304860529139604080517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e9820152815160df8183030181526101bf8201909252608d60ff8201818152916130c89061011f01396040518060600160405280602e815260200161309a602e9139604051602001611b3c9493929190612e69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611ba99695949392600401612ef2565b600060405180830381600087803b158015611bc357600080fd5b505af1158015611872573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611bfc5761035f8282611c1e565b61035f73ffffffffffffffffffffffffffffffffffffffff841633848461206c565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611c78576040519150601f19603f3d011682016040523d82523d6000602084013e611c7d565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611cc8575083611d2d565b828211611d01576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611d0f575082611d2d565b428310611d1d575083611d2d565b611d2a8383428888612157565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d94576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611daa856020015186604001518686611cb8565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d81526020016130c8608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161125f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ebf57611ebf61253f565b6040519080825280601f01601f191660200182016040528015611ee9576020820181803683370190505b50905060005b8351811015611f2e576000611f1c858381518110611f0f57611f0f61256e565b6020026020010151612172565b60208381028501015250600101611eef565b50805160209091012092915050565b611f488484836121e9565b611fe25781611f83576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b8151811015611fdf576000828281518110611fa857611fa861256e565b60200260200101519050611fd185612710611fc39190612e27565b602083015190612710612234565b602090910152600101611f8b565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261201e57600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b60006121668686868686612278565b90505b95945050505050565b60006040518060800160405280605281526020016130486052913980516020918201208351848301516040808701516060880151915161125f969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600073ffffffffffffffffffffffffffffffffffffffff8416158061220d57508282115b80611d2d575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261226957600080fd5b50910281810615159190040190565b6000848410612288575080612169565b60006122948786612fad565b905060006122a28888612fad565b90506000858512156122d4576122c483836122bd888a612fc0565b9190611fe9565b6122cd90612fe7565b90506122e6565b6122e383836122bd8989612fc0565b90505b6122f0818761301f565b9998505050505050505050565b600060408284031215610b5c57600080fd5b60008083601f84011261232157600080fd5b50813567ffffffffffffffff81111561233957600080fd5b60208301915083602082850101111561235157600080fd5b9250929050565b60008060006040848603121561236d57600080fd5b833567ffffffffffffffff8082111561238557600080fd5b612391878388016122fd565b945060208601359150808211156123a757600080fd5b506123b48682870161230f565b9497909650939450505050565b60008083601f8401126123d357600080fd5b50813567ffffffffffffffff8111156123eb57600080fd5b6020830191508360208260051b850101111561235157600080fd5b6000806020838503121561241957600080fd5b823567ffffffffffffffff81111561243057600080fd5b61243c858286016123c1565b90969095509350505050565b6000806000806040858703121561245e57600080fd5b843567ffffffffffffffff8082111561247657600080fd5b612482888389016123c1565b9096509450602087013591508082111561249b57600080fd5b506124a88782880161230f565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356124e1816124b4565b919050565b6000602082840312156124f857600080fd5b8135612503816124b4565b9392505050565b60006020828403121561251c57600080fd5b813567ffffffffffffffff81111561253357600080fd5b611d2d848285016122fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156125b85781810151838201526020016125a0565b50506000910152565b600081518084526125d981602086016020860161259d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b8381101561266b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612620565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526126ea6101a08501826125c1565b905060208301516127286020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612740828261260b565b915050606083015184820360a086015261275a82826125c1565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156127e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526127d4868351612676565b9550938201939082019060010161279a565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261286b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128aa57600080fd5b83018035915067ffffffffffffffff8211156128c557600080fd5b60200191503681900382131561235157600080fd5b6040516060810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405290565b6040516080810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405160e0810167ffffffffffffffff811182821017156128fd576128fd61253f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129905761299061253f565b604052919050565b600082601f8301126129a957600080fd5b813567ffffffffffffffff8111156129c3576129c361253f565b6129f460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612949565b818152846020838601011115612a0957600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612a3857600080fd5b60405160c0810167ffffffffffffffff8282108183111715612a5c57612a5c61253f565b8160405282935084359150612a70826124b4565b908252602084013590612a82826124b4565b816020840152604085013560408401526060850135606084015260808501359150612aac826124b4565b81608084015260a0850135915080821115612ac657600080fd5b50612ad385828601612998565b60a0830152505092915050565b600060608284031215612af257600080fd5b612afa6128da565b90508135612b07816124b4565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612b3f57612b3f61253f565b5060051b60200190565b600082601f830112612b5a57600080fd5b81356020612b6f612b6a83612b25565b612949565b82815260079290921b84018101918181019086841115612b8e57600080fd5b8286015b84811015612bf35760808189031215612bab5760008081fd5b612bb3612903565b8135612bbe816124b4565b8152818501358582015260408083013590820152606080830135612be1816124b4565b90820152835291830191608001612b92565b509695505050505050565b600060208284031215612c1057600080fd5b813567ffffffffffffffff80821115612c2857600080fd5b908301906101208286031215612c3d57600080fd5b612c45612926565b823582811115612c5457600080fd5b612c6087828601612a26565b8252506020830135602082015260408301356040820152612c83606084016124d6565b606082015260808301356080820152612c9f8660a08501612ae0565b60a082015261010083013582811115612cb757600080fd5b612cc387828601612b49565b60c08301525095945050505050565b60008451612ce481846020890161259d565b845190830190612cf881836020890161259d565b8451910190612d0b81836020880161259d565b0195945050505050565b6020815260006125036020830184612676565b60006020808385031215612d3b57600080fd5b825167ffffffffffffffff811115612d5257600080fd5b8301601f81018513612d6357600080fd5b8051612d71612b6a82612b25565b81815260609182028301840191848201919088841115612d9057600080fd5b938501935b83851015612dec5780858a031215612dad5760008081fd5b612db56128da565b8551612dc0816124b4565b81528587015187820152604080870151612dd9816124b4565b9082015283529384019391850191612d95565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561206657612066612df8565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611d2d6040830184612676565b7f4578636c757369766544757463684f72646572207769746e6573732900000000815260008551612ea181601c850160208a0161259d565b855190830190612eb881601c840160208a0161259d565b8551910190612ece81601c84016020890161259d565b8451910190612ee481601c84016020880161259d565b01601c019695505050505050565b6000610140612f22838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612f636080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612f98818401866125c1565b90508281036101208401526122f081856125c1565b8181038181111561206657612066612df8565b8181036000831280158383131683831282161715612fe057612fe0612df8565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361301857613018612df8565b5060000390565b808201828112600083128015821682158216171561303f5761303f612df8565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220bc5333daef38e70e8a6ea612125c596542d6e839278b2c906bbabc6c6e70329b64736f6c63430008180033608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212204be2476098894d6ec3c58573f3d1bb2c5345602a6172512ca6fdf7ae53f7f66164736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610091575b5f80fd5b005b61004d6100b4565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a49062010000900460ff1681565b6040519015158152602001610088565b604080516060810182525f80825260208201819052918101919091527f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610137575f80fd5b505af1158015610149573d5f803e3d5ffd5b5050506e22d473030f116ddee9f6b43ac78ba33b5f03905061016f5761016d610386565b505b5f805f1b6e22d473030f116ddee9f6b43ac78ba3731a9c8182c09f50c8318d769245bea52c32be35bc6040516101a49061050b565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103905ff59050801580156101e5573d5f803e3d5ffd5b5090506102276040518060400160405280600781526020017f52656163746f72000000000000000000000000000000000000000000000000008152508261044b565b5f805f1b60405161023790610518565b8190604051809103905ff5905080158015610254573d5f803e3d5ffd5b5090506102966040518060400160405280600681526020017f51756f74657200000000000000000000000000000000000000000000000000008152508261044b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156102fd575f80fd5b505af115801561030f573d5f803e3d5ffd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152509250505090565b5f80604051806123e001604052806123c081526020016145846123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290610408906e22d473030f116ddee9f6b43ac78ba3908590600401610586565b5f604051808303815f87803b15801561041f575f80fd5b505af1158015610431573d5f803e3d5ffd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6104dc82826040516024016104619291906105bc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526104e0565b5050565b6104e9816104ec565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b6131cd806105f483390190565b610dc3806137c183390190565b5f81518084525f5b818110156105495760208185018101518683018201520161052d565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6105b46040830184610525565b949350505050565b604081525f6105ce6040830185610525565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a060405234801562000010575f80fd5b50604051620031cd380380620031cd8339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b6080516130bc620001115f395f818160da015261182a01526130bc5ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af3660046122db565b6101e0565b005b6100b46100c4366004612380565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46101333660046123bf565b6104af565b348015610143575f80fd5b506100b4610152366004612457565b610665565b6100b4610165366004612479565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db366004612457565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b76124d8565b60200260200101819052506102cb81610b3b565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b908490879087906004016126d3565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b8a565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff811115610374576103746124ab565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c57610467858583818110610450576104506124d8565b90506020028101906104629190612796565b6109d2565b828281518110610479576104796124d8565b6020908102919091010152600101610433565b5061049681610b3b565b61049f81610b8a565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d26124ab565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae878783818110610450576104506124d8565b8282815181106105c0576105c06124d8565b6020908102919091010152600101610591565b506105dd81610b3b565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d908490889088906004016126d3565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b8a565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f81518110610847576108476124d8565b602002602001018190525061085b81610b3b565b61086481610b8a565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a83806127d2565b810190610a579190612b48565b9050610a6281610cd5565b6040518060a00160405280825f01518152602001610a97836020015184604001518560a00151610dbf9092919063ffffffff16565b8152602001610abd836020015184604001518560c00151610e8d9092919063ffffffff16565b8152602001848060200190610ad291906127d2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610b1483610f72565b9052606082015160208301516080840151929450610b359285929190611241565b50919050565b80515f5b8181101561034c575f838281518110610b5a57610b5a6124d8565b60200260200101519050610b6d8161124e565b610b77813361172b565b610b818133611828565b50600101610b3f565b80515f5b81811015610cc4575f838281518110610ba957610ba96124d8565b602002602001015190505f81604001515190505f5b81811015610c26575f83604001518281518110610bdd57610bdd6124d8565b60200260200101519050610c1d81604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611b7e9092919063ffffffff16565b50600101610bbe565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c6e57610c6e6124d8565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610cb291815260200190565b60405180910390a45050600101610b8e565b5047156104ab576104ab3347611bc5565b60408101518151606001511015610d18576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160408101516020909101511461086f575f5b8160c00151518110156104ab578160c001518181518110610d5257610d526124d8565b6020026020010151604001518260c001518281518110610d7457610d746124d8565b60200260200101516020015114610db7576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d2f565b610df660405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b836040015184602001511115610e38576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e4d856020015186604001518686611c5b565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610eab57610eab6124ab565b604051908082528060200260200182016040528015610f1357816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ec95790505b5091505f5b81811015610f6957610f44868281518110610f3557610f356124d8565b60200260200101518686611cd7565b838281518110610f5657610f566124d8565b6020908102919091010152600101610f18565b50509392505050565b6040517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e98201525f9060ff01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612f7a60208301396040518060c00160405280608d8152602001612ffa608d913960405160200161116393929190612c16565b60405160208183030381529060405280519060200120611185835f0151611da4565b83602001518460400151856060015186608001518760a001515f01518860a00151602001518960a00151604001516111c08b60c00151611e3d565b60408051602081019b909b528a01989098526060890196909652608088019490945273ffffffffffffffffffffffffffffffffffffffff92831660a088015260c08701919091521660e0850152610100840152610120830152610140820152610160015b604051602081830303815290604052805190602001209050919050565b61065f8484848442611ed8565b60015473ffffffffffffffffffffffffffffffffffffffff1661126e5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906112c4908590600401612c58565b5f60405180830381865afa1580156112de573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113239190810190612c6a565b6040830151518151919250905f61133a8284612d60565b67ffffffffffffffff811115611352576113526124ab565b6040519080825280602002602001820160405280156113ba57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113705790505b5090505f5b8381101561140a57856040015181815181106113dd576113dd6124d8565b60200260200101518282815181106113f7576113f76124d8565b60209081029190910101526001016113bf565b505f805f5b8481101561171a575f87828151811061142a5761142a6124d8565b602002602001015190505f5b828110156114e557888181518110611450576114506124d8565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036114dd5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b600101611436565b505f805b888110156115a2575f8b604001518281518110611508576115086124d8565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1603611599578515611583576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516115929084612d60565b9250600196505b506001016114e9565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361161b578415611602576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116149082612d60565b9050600193505b805f0361166f5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b61167d816005612710611f82565b826020015111156116f0578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a0181518110611705576117056124d8565b6020908102919091010152505060010161140f565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff16301461177c576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117f89084908690600401612d73565b5f6040518083038186803b15801561180e575f80fd5b505afa158015611820573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6118e7846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6118f18585611fbc565b855f0151602001518660800151604051806080016040528060528152602001612f7a60529139604080517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e9820152815160df8183030181526101bf8201909252608d60ff820181815291612ffa9061011f01396040518060600160405280602e8152602001612fcc602e9139604051602001611ae89493929190612da1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611b559695949392600401612e29565b5f604051808303815f87803b158015611b6c575f80fd5b505af1158015611820573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611ba35761034c8282611bc5565b61034c73ffffffffffffffffffffffffffffffffffffffff8416338484612002565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611c1b576040519150601f19603f3d011682016040523d82523d5f602084013e611c20565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f838503611c6a575083611ccf565b828211611ca3576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611cb1575082611ccf565b428310611cbf575083611ccf565b611ccc83834288886120e9565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611d35576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611d4a856020015186604001518686611c5b565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b5f6040518060c00160405280608d8152602001612ffa608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161122498939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115611e5c57611e5c6124ab565b6040519080825280601f01601f191660200182016040528015611e86576020820181803683370190505b5090505f5b8351811015611ec9575f611eb7858381518110611eaa57611eaa6124d8565b6020026020010151612103565b60208381028501015250600101611e8b565b50805160209091012092915050565b611ee3848483612179565b611f7b5781611f1e576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b8151811015611f78575f828281518110611f4157611f416124d8565b60200260200101519050611f6a85612710611f5c9190612d60565b6020830151906127106121c3565b602090910152600101611f25565b50505b5050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611fb5575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611f7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5f6120f78686868686612205565b90505b95945050505050565b5f604051806080016040528060528152602001612f7a60529139805160209182012083518483015160408087015160608801519151611224969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f73ffffffffffffffffffffffffffffffffffffffff8416158061219c57508282115b80611ccf575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026121f6575f80fd5b50910281810615159190040190565b5f8484106122145750806120fa565b5f61221f8786612ee3565b90505f61222c8888612ee3565b90505f8585121561225d5761224d8383612246888a612ef6565b9190611f82565b61225690612f1c565b905061226f565b61226c83836122468989612ef6565b90505b6122798187612f52565b9998505050505050505050565b5f60408284031215610b35575f80fd5b5f8083601f8401126122a6575f80fd5b50813567ffffffffffffffff8111156122bd575f80fd5b6020830191508360208285010111156122d4575f80fd5b9250929050565b5f805f604084860312156122ed575f80fd5b833567ffffffffffffffff80821115612304575f80fd5b61231087838801612286565b94506020860135915080821115612325575f80fd5b5061233286828701612296565b9497909650939450505050565b5f8083601f84011261234f575f80fd5b50813567ffffffffffffffff811115612366575f80fd5b6020830191508360208260051b85010111156122d4575f80fd5b5f8060208385031215612391575f80fd5b823567ffffffffffffffff8111156123a7575f80fd5b6123b38582860161233f565b90969095509350505050565b5f805f80604085870312156123d2575f80fd5b843567ffffffffffffffff808211156123e9575f80fd5b6123f58883890161233f565b9096509450602087013591508082111561240d575f80fd5b5061241a87828801612296565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b803561245281612426565b919050565b5f60208284031215612467575f80fd5b813561247281612426565b9392505050565b5f60208284031215612489575f80fd5b813567ffffffffffffffff81111561249f575f80fd5b611ccf84828501612286565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b8381101561251f578181015183820152602001612507565b50505f910152565b5f815180845261253e816020860160208601612505565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156125ce578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612583565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c061018085015261264c6101a0850182612527565b9050602083015161268a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526126a28282612570565b915050606083015184820360a08601526126bc8282612527565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b83811015612746577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526127348683516125d9565b955093820193908201906001016126fa565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126127c8575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612805575f80fd5b83018035915067ffffffffffffffff82111561281f575f80fd5b6020019150368190038213156122d4575f80fd5b6040516060810167ffffffffffffffff81118282101715612856576128566124ab565b60405290565b6040516080810167ffffffffffffffff81118282101715612856576128566124ab565b60405160e0810167ffffffffffffffff81118282101715612856576128566124ab565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156128e9576128e96124ab565b604052919050565b5f82601f830112612900575f80fd5b813567ffffffffffffffff81111561291a5761291a6124ab565b61294b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128a2565b81815284602083860101111561295f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c0828403121561298b575f80fd5b60405160c0810167ffffffffffffffff82821081831117156129af576129af6124ab565b81604052829350843591506129c382612426565b9082526020840135906129d582612426565b8160208401526040850135604084015260608501356060840152608085013591506129ff82612426565b81608084015260a0850135915080821115612a18575f80fd5b50612a25858286016128f1565b60a0830152505092915050565b5f60608284031215612a42575f80fd5b612a4a612833565b90508135612a5781612426565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612a8e57612a8e6124ab565b5060051b60200190565b5f82601f830112612aa7575f80fd5b81356020612abc612ab783612a75565b6128a2565b82815260079290921b84018101918181019086841115612ada575f80fd5b8286015b84811015612b3d5760808189031215612af5575f80fd5b612afd61285c565b8135612b0881612426565b8152818501358582015260408083013590820152606080830135612b2b81612426565b90820152835291830191608001612ade565b509695505050505050565b5f60208284031215612b58575f80fd5b813567ffffffffffffffff80821115612b6f575f80fd5b908301906101208286031215612b83575f80fd5b612b8b61287f565b823582811115612b99575f80fd5b612ba58782860161297b565b8252506020830135602082015260408301356040820152612bc860608401612447565b606082015260808301356080820152612be48660a08501612a32565b60a082015261010083013582811115612bfb575f80fd5b612c0787828601612a98565b60c08301525095945050505050565b5f8451612c27818460208901612505565b845190830190612c3b818360208901612505565b8451910190612c4e818360208801612505565b0195945050505050565b602081525f61247260208301846125d9565b5f6020808385031215612c7b575f80fd5b825167ffffffffffffffff811115612c91575f80fd5b8301601f81018513612ca1575f80fd5b8051612caf612ab782612a75565b81815260609182028301840191848201919088841115612ccd575f80fd5b938501935b83851015612d275780858a031215612ce8575f80fd5b612cf0612833565b8551612cfb81612426565b81528587015187820152604080870151612d1481612426565b9082015283529384019391850191612cd2565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611ffc57611ffc612d33565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611ccf60408301846125d9565b7f4578636c757369766544757463684f72646572207769746e657373290000000081525f8551612dd881601c850160208a01612505565b855190830190612def81601c840160208a01612505565b8551910190612e0581601c840160208901612505565b8451910190612e1b81601c840160208801612505565b01601c019695505050505050565b5f610140612e58838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612e996080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612ece81840186612527565b90508281036101208401526122798185612527565b81810381811115611ffc57611ffc612d33565b8181035f831280158383131683831282161715612f1557612f15612d33565b5092915050565b5f7f80000000000000000000000000000000000000000000000000000000000000008203612f4c57612f4c612d33565b505f0390565b8082018281125f831280158216821582161715612f7157612f71612d33565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122053753b762fd0a1c6d1a34225b2303e861c3555666e99f14fd2b1d876fe939e7164736f6c63430008180033608060405234801561000f575f80fd5b50610da68061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806341d88d6914610043578063585da6281461006c5780637671d07b14610081575b5f80fd5b6100566100513660046104a8565b6100c2565b60405161006391906105dc565b60405180910390f35b61007f61007a3660046108c4565b610218565b005b61009d61008f366004610a2a565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610063565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183525f815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101aa9291600401610a64565b5f604051808303815f87803b1580156101c1575f80fd5b505af19250505080156101d2575060015b610212573d8080156101ff576040519150601f19603f3d011682016040523d82523d5f602084013e610204565b606091505b5061020e81610297565b9150505b92915050565b8151600114610253576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f825f8151811061026657610266610ad7565b602002602001015160405160200161027e91906105dc565b6040516020818303038152906040529050805181602001fd5b60408051610160810182525f60a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031257815182602001fd5b818060200190518101906102129190610ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561037657610376610326565b60405290565b6040516060810167ffffffffffffffff8111828210171561037657610376610326565b60405160a0810167ffffffffffffffff8111828210171561037657610376610326565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561040957610409610326565b604052919050565b5f67ffffffffffffffff82111561042a5761042a610326565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610465575f80fd5b813561047861047382610411565b6103c2565b81815284602083860101111561048c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156104b9575f80fd5b823567ffffffffffffffff808211156104d0575f80fd5b6104dc86838701610456565b935060208501359150808211156104f1575f80fd5b506104fe85828601610456565b9150509250929050565b5f5b8381101561052257818101518382015260200161050a565b50505f910152565b5f8151808452610541816020860160208601610508565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156105d1578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101610586565b509495945050505050565b602081525f825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106576101c084018261052a565b905060208401516106956040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106d08383610573565b925060608601519150808584030160c0860152506106ee828261052a565b915050608084015160e08401528091505092915050565b5f67ffffffffffffffff82111561071e5761071e610326565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610749575f80fd5b50565b5f60c0828403121561075c575f80fd5b610764610353565b9050813561077181610728565b8152602082013561078181610728565b80602083015250604082013560408201526060820135606082015260808201356107aa81610728565b608082015260a082013567ffffffffffffffff8111156107c8575f80fd5b6107d484828501610456565b60a08301525092915050565b5f606082840312156107f0575f80fd5b6107f861037c565b9050813561080581610728565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610832575f80fd5b8135602061084261047383610705565b82815260609283028501820192828201919087851115610860575f80fd5b8387015b858110156108b75781818a03121561087a575f80fd5b61088261037c565b813561088d81610728565b815281860135868201526040808301356108a681610728565b908201528452928401928101610864565b5090979650505050505050565b5f80604083850312156108d5575f80fd5b823567ffffffffffffffff808211156108ec575f80fd5b818501915085601f8301126108ff575f80fd5b8135602061090f61047383610705565b82815260059290921b8401810191818101908984111561092d575f80fd5b8286015b84811015610a1457803586811115610947575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181131561097b575f80fd5b61098361039f565b8683013589811115610993575f80fd5b6109a18f898387010161074c565b8252506109b18e604085016107e0565b8782015260a0830135898111156109c6575f80fd5b6109d48f8983870101610823565b60408301525060c0830135898111156109eb575f80fd5b6109f98f8983870101610456565b60608301525091013560808201528352918301918301610931565b50965050860135925050808211156104f1575f80fd5b5f60208284031215610a3a575f80fd5b813567ffffffffffffffff811115610a50575f80fd5b610a5c84828501610456565b949350505050565b604081525f8351604080840152610a7e608084018261052a565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610ab9828261052a565b9150508281036020840152610ace818561052a565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82601f830112610b13575f80fd5b8151610b2161047382610411565b818152846020838601011115610b35575f80fd5b610a5c826020830160208701610508565b5f60c08284031215610b56575f80fd5b610b5e610353565b90508151610b6b81610728565b81526020820151610b7b81610728565b8060208301525060408201516040820152606082015160608201526080820151610ba481610728565b608082015260a082015167ffffffffffffffff811115610bc2575f80fd5b6107d484828501610b04565b5f60608284031215610bde575f80fd5b610be661037c565b90508151610bf381610728565b80825250602082015160208201526040820151604082015292915050565b5f82601f830112610c20575f80fd5b81516020610c3061047383610705565b82815260609283028501820192828201919087851115610c4e575f80fd5b8387015b858110156108b75781818a031215610c68575f80fd5b610c7061037c565b8151610c7b81610728565b81528186015186820152604080830151610c9481610728565b908201528452928401928101610c52565b5f60208284031215610cb5575f80fd5b815167ffffffffffffffff80821115610ccc575f80fd5b9083019060e08286031215610cdf575f80fd5b610ce761039f565b825182811115610cf5575f80fd5b610d0187828601610b46565b825250610d118660208501610bce565b6020820152608083015182811115610d27575f80fd5b610d3387828601610c11565b60408301525060a083015182811115610d4a575f80fd5b610d5687828601610b04565b60608301525060c09290920151608083015250939250505056fea2646970667358221220b0816c51d51c5ab3947bad3df8fedfb8758eb6ce0ed20b8fc1844c9926a031be64736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa2646970667358221220321ec73cef72ca71a617df1a2d60331c43239712409bc94ca03054f8a384416564736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x94W[`\0\x80\xFD[\0[a\0Pa\0\xB7V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA7\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8BV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01?W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01SW=`\0\x80>=`\0\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;`\0\x03\x90Pa\x01zWa\x01xa\x03\xA1V[P[`\0\x80`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xB1\x90a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x01\xF5W=`\0\x80>=`\0\xFD[P\x90Pa\x027`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[`\0\x80`\0\x1B`@Qa\x02I\x90a\x05;V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02iW=`\0\x80>=`\0\xFD[P\x90Pa\x02\xAB`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04lV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x03\x16W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03*W=`\0\x80>=`\0\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[`\0\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aF\xD8a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04$\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\xACV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04>W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04RW=`\0\x80>=`\0\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xFD\x82\x82`@Q`$\x01a\x04\x82\x92\x91\x90a\x05\xE3V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x05\x01V[PPV[a\x05\n\x81a\x05\rV[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a2\xA3\x80a\x06\x1C\x839\x01\x90V[a\x0E\x19\x80a8\xBF\x839\x01\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x05nW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05RV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x05\xDB`@\x83\x01\x84a\x05HV[\x94\x93PPPPV[`@\x81R`\0a\x05\xF6`@\x83\x01\x85a\x05HV[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x002\xA38\x03\x80b\x002\xA3\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa1\x8Ab\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x18|\x01Ra1\x8A`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a#XV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\x06V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a$HV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a$\xE6V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\nV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a$\xE6V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a%nV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB3V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a(7V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BbV[a\x04\xB5\x81a\x0B\xB3V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB3V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia%nV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BbV[a\x08\x86\x81a\x0B\xB3V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a(uV[\x81\x01\x90a\n|\x91\x90a+\xFEV[\x90Pa\n\x87\x81a\r\x06V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xF1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\xC3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a(uV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\xAAV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B\\\x92\x85\x92\x91\x90a\x12|V[P\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x83Wa\x0B\x83a%nV[` \x02` \x01\x01Q\x90Pa\x0B\x96\x81a\x12\x89V[a\x0B\xA0\x813a\x17yV[a\x0B\xAA\x813a\x18zV[P`\x01\x01a\x0BgV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF5W`\0\x83\x82\x81Q\x81\x10a\x0B\xD4Wa\x0B\xD4a%nV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CUW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x0BWa\x0C\x0Ba%nV[` \x02` \x01\x01Q\x90Pa\x0CL\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B\xD7\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xEBV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9EWa\x0C\x9Ea%nV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB8V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1C\x1EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\rIW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xC1W\x81`\xC0\x01Q\x81\x81Q\x81\x10a\r\x84Wa\r\x84a%nV[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\r\xA6Wa\r\xA6a%nV[` \x02` \x01\x01Q` \x01Q\x14a\r\xE9W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\raV[a\x0E+`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EmW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0E\x83\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xE1Wa\x0E\xE1a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0FJW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xFFW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\xA1Wa\x0F|\x86\x82\x81Q\x81\x10a\x0FmWa\x0Fma%nV[` \x02` \x01\x01Q\x86\x86a\x1D5V[\x83\x82\x81Q\x81\x10a\x0F\x8EWa\x0F\x8Ea%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0FPV[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R`\0\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a0H` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919`@Q` \x01a\x11\x9C\x93\x92\x91\x90a,\xD2V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\xBF\x83`\0\x01Qa\x1E\x05V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q`\0\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xFB\x8B`\xC0\x01Qa\x1E\x9FV[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06}\x84\x84\x84\x84Ba\x1F=V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\xA9WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x13\0\x90\x85\x90`\x04\x01a-\x15V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13c\x91\x90\x81\x01\x90a-(V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x13{\x82\x84a.'V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x93Wa\x13\x93a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFCW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB1W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x14MW\x85`@\x01Q\x81\x81Q\x81\x10a\x14 Wa\x14 a%nV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x14:Wa\x14:a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x02V[P`\0\x80`\0[\x84\x81\x10\x15a\x17hW`\0\x87\x82\x81Q\x81\x10a\x14pWa\x14pa%nV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x15.W\x88\x81\x81Q\x81\x10a\x14\x97Wa\x14\x97a%nV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15&W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x14}V[P`\0\x80[\x88\x81\x10\x15a\x15\xEFW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x15SWa\x15Sa%nV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\xE6W\x85\x15a\x15\xD0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\xDF\x90\x84a.'V[\x92P`\x01\x96P[P`\x01\x01a\x153V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16hW\x84\x15a\x16OW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16a\x90\x82a.'V[\x90P`\x01\x93P[\x80`\0\x03a\x16\xBDW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x16\xCB\x81`\x05a'\x10a\x1F\xE9V[\x82` \x01Q\x11\x15a\x17>W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17SWa\x17Sa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14TV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17\xCAW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x18F\x90\x84\x90\x86\x90`\x04\x01a.:V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18^W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x19:\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x19D\x85\x85a %V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a0\xC8\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a0\x9A`.\x919`@Q` \x01a\x1B<\x94\x93\x92\x91\x90a.iV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B\xA9\x96\x95\x94\x93\x92`\x04\x01a.\xF2V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1B\xC3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xFCWa\x03_\x82\x82a\x1C\x1EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a lV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1CxW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1C}V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1C\xC8WP\x83a\x1D-V[\x82\x82\x11a\x1D\x01W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1D\x0FWP\x82a\x1D-V[B\x83\x10a\x1D\x1DWP\x83a\x1D-V[a\x1D*\x83\x83B\x88\x88a!WV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x94W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D\xAA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12_\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBFWa\x1E\xBFa%?V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE9W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F.W`\0a\x1F\x1C\x85\x83\x81Q\x81\x10a\x1F\x0FWa\x1F\x0Fa%nV[` \x02` \x01\x01Qa!rV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xEFV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1FH\x84\x84\x83a!\xE9V[a\x1F\xE2W\x81a\x1F\x83W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a\x1F\xDFW`\0\x82\x82\x81Q\x81\x10a\x1F\xA8Wa\x1F\xA8a%nV[` \x02` \x01\x01Q\x90Pa\x1F\xD1\x85a'\x10a\x1F\xC3\x91\x90a.'V[` \x83\x01Q\x90a'\x10a\"4V[` \x90\x91\x01R`\x01\x01a\x1F\x8BV[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a \x1EW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x1F\xE2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0a!f\x86\x86\x86\x86\x86a\"xV[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12_\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\"\rWP\x82\x82\x11[\x80a\x1D-WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\"iW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a\"\x88WP\x80a!iV[`\0a\"\x94\x87\x86a/\xADV[\x90P`\0a\"\xA2\x88\x88a/\xADV[\x90P`\0\x85\x85\x12\x15a\"\xD4Wa\"\xC4\x83\x83a\"\xBD\x88\x8Aa/\xC0V[\x91\x90a\x1F\xE9V[a\"\xCD\x90a/\xE7V[\x90Pa\"\xE6V[a\"\xE3\x83\x83a\"\xBD\x89\x89a/\xC0V[\x90P[a\"\xF0\x81\x87a0\x1FV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a\x0B\\W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a#!W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a#mW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x85W`\0\x80\xFD[a#\x91\x87\x83\x88\x01a\"\xFDV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#\xA7W`\0\x80\xFD[Pa#\xB4\x86\x82\x87\x01a#\x0FV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a#\xD3W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xEBW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a$\x19W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$0W`\0\x80\xFD[a$<\x85\x82\x86\x01a#\xC1V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a$^W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$vW`\0\x80\xFD[a$\x82\x88\x83\x89\x01a#\xC1V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\x9BW`\0\x80\xFD[Pa$\xA8\x87\x82\x88\x01a#\x0FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a$\xE1\x81a$\xB4V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a$\xF8W`\0\x80\xFD[\x815a%\x03\x81a$\xB4V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\x1CW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%3W`\0\x80\xFD[a\x1D-\x84\x82\x85\x01a\"\xFDV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a%\xB8W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xA0V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra%\xD9\x81` \x86\x01` \x86\x01a%\x9DV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a&kW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a& V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&\xEAa\x01\xA0\x85\x01\x82a%\xC1V[\x90P` \x83\x01Qa'(` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'@\x82\x82a&\x0BV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'Z\x82\x82a%\xC1V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a'\xE6W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'\xD4\x86\x83Qa&vV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\x9AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(kW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xAAW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xC5W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#QW`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\x90Wa)\x90a%?V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a)\xA9W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\xC3Wa)\xC3a%?V[a)\xF4` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)IV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\tW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a*8W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\\Wa*\\a%?V[\x81`@R\x82\x93P\x845\x91Pa*p\x82a$\xB4V[\x90\x82R` \x84\x015\x90a*\x82\x82a$\xB4V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xAC\x82a$\xB4V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xC6W`\0\x80\xFD[Pa*\xD3\x85\x82\x86\x01a)\x98V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a*\xF2W`\0\x80\xFD[a*\xFAa(\xDAV[\x90P\x815a+\x07\x81a$\xB4V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+?Wa+?a%?V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a+ZW`\0\x80\xFD[\x815` a+oa+j\x83a+%V[a)IV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\x8EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+\xF3W`\x80\x81\x89\x03\x12\x15a+\xABW`\0\x80\x81\xFD[a+\xB3a)\x03V[\x815a+\xBE\x81a$\xB4V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a+\xE1\x81a$\xB4V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\x92V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\x10W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,(W`\0\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a,=W`\0\x80\xFD[a,Ea)&V[\x825\x82\x81\x11\x15a,TW`\0\x80\xFD[a,`\x87\x82\x86\x01a*&V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra,\x83``\x84\x01a$\xD6V[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra,\x9F\x86`\xA0\x85\x01a*\xE0V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a,\xB7W`\0\x80\xFD[a,\xC3\x87\x82\x86\x01a+IV[`\xC0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa,\xE4\x81\x84` \x89\x01a%\x9DV[\x84Q\x90\x83\x01\x90a,\xF8\x81\x83` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a-\x0B\x81\x83` \x88\x01a%\x9DV[\x01\x95\x94PPPPPV[` \x81R`\0a%\x03` \x83\x01\x84a&vV[`\0` \x80\x83\x85\x03\x12\x15a-;W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-RW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-cW`\0\x80\xFD[\x80Qa-qa+j\x82a+%V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a-\x90W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-\xECW\x80\x85\x8A\x03\x12\x15a-\xADW`\0\x80\x81\xFD[a-\xB5a(\xDAV[\x85Qa-\xC0\x81a$\xB4V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\xD9\x81a$\xB4V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a-\x95V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a fWa fa-\xF8V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1D-`@\x83\x01\x84a&vV[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R`\0\x85Qa.\xA1\x81`\x1C\x85\x01` \x8A\x01a%\x9DV[\x85Q\x90\x83\x01\x90a.\xB8\x81`\x1C\x84\x01` \x8A\x01a%\x9DV[\x85Q\x91\x01\x90a.\xCE\x81`\x1C\x84\x01` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a.\xE4\x81`\x1C\x84\x01` \x88\x01a%\x9DV[\x01`\x1C\x01\x96\x95PPPPPPV[`\0a\x01@a/\"\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra/c`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra/\x98\x81\x84\x01\x86a%\xC1V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"\xF0\x81\x85a%\xC1V[\x81\x81\x03\x81\x81\x11\x15a fWa fa-\xF8V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\xE0Wa/\xE0a-\xF8V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a0\x18Wa0\x18a-\xF8V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a0?Wa0?a-\xF8V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xBCS3\xDA\xEF8\xE7\x0E\x8An\xA6\x12\x12\\YeB\xD6\xE89'\x8B,\x90k\xBA\xBClnp2\x9BdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 K\xE2G`\x98\x89Mn\xC3\xC5\x85s\xF3\xD1\xBB,SE`*arQ,\xA6\xFD\xF7\xAES\xF7\xF6adsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x91W[_\x80\xFD[\0[a\0Ma\0\xB4V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x88V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x017W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01IW=_\x80>=_\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;_\x03\x90Pa\x01oWa\x01ma\x03\x86V[P[_\x80_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\x1A\x9C\x81\x82\xC0\x9FP\xC81\x8Dv\x92E\xBE\xA5,2\xBE5\xBC`@Qa\x01\xA4\x90a\x05\x0BV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x01\xE5W=_\x80>=_\xFD[P\x90Pa\x02'`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[_\x80_\x1B`@Qa\x027\x90a\x05\x18V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02TW=_\x80>=_\xFD[P\x90Pa\x02\x96`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x04KV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x02\xFDW_\x80\xFD[PZ\xF1\x15\x80\x15a\x03\x0FW=_\x80>=_\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x90V[_\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aE\x84a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04\x08\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x05\x86V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\x1FW_\x80\xFD[PZ\xF1\x15\x80\x15a\x041W=_\x80>=_\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x04\xDC\x82\x82`@Q`$\x01a\x04a\x92\x91\x90a\x05\xBCV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x04\xE0V[PPV[a\x04\xE9\x81a\x04\xECV[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a1\xCD\x80a\x05\xF4\x839\x01\x90V[a\r\xC3\x80a7\xC1\x839\x01\x90V[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x05IW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05-V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x05\xB4`@\x83\x01\x84a\x05%V[\x94\x93PPPPV[`@\x81R_a\x05\xCE`@\x83\x01\x85a\x05%V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x001\xCD8\x03\x80b\x001\xCD\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa0\xBCb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x18*\x01Ra0\xBC_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a\"\xDBV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a#\x80V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a#\xBFV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a$WV[a\x06eV[a\0\xB4a\x01e6`\x04a$yV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a$WV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a$\xD8V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x8AV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a'\x96V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B;V[a\x04\x9F\x81a\x0B\x8AV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x8AV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga$\xD8V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B;V[a\x08d\x81a\x0B\x8AV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a'\xD2V[\x81\x01\x90a\nW\x91\x90a+HV[\x90Pa\nb\x81a\x0C\xD5V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\x8D\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a'\xD2V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FrV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B5\x92\x85\x92\x91\x90a\x12AV[P\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BZWa\x0BZa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0Bm\x81a\x12NV[a\x0Bw\x813a\x17+V[a\x0B\x81\x813a\x18(V[P`\x01\x01a\x0B?V[\x80Q_[\x81\x81\x10\x15a\x0C\xC4W_\x83\x82\x81Q\x81\x10a\x0B\xA9Wa\x0B\xA9a$\xD8V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C&W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xDDWa\x0B\xDDa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0C\x1D\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B~\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBEV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CnWa\x0Cna$\xD8V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xB2\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8EV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1B\xC5V[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r\x18W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08oW_[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xABW\x81`\xC0\x01Q\x81\x81Q\x81\x10a\rRWa\rRa$\xD8V[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\rtWa\rta$\xD8V[` \x02` \x01\x01Q` \x01Q\x14a\r\xB7W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\r/V[a\r\xF6`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0E8W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x0EM\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xABWa\x0E\xABa$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\x13W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xC9W\x90P[P\x91P_[\x81\x81\x10\x15a\x0FiWa\x0FD\x86\x82\x81Q\x81\x10a\x0F5Wa\x0F5a$\xD8V[` \x02` \x01\x01Q\x86\x86a\x1C\xD7V[\x83\x82\x81Q\x81\x10a\x0FVWa\x0FVa$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F\x18V[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R_\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/z` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919`@Q` \x01a\x11c\x93\x92\x91\x90a,\x16V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\x85\x83_\x01Qa\x1D\xA4V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q_\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xC0\x8B`\xC0\x01Qa\x1E=V[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06_\x84\x84\x84\x84Ba\x1E\xD8V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12nWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12\xC4\x90\x85\x90`\x04\x01a,XV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xDEW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13#\x91\x90\x81\x01\x90a,jV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x13:\x82\x84a-`V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13RWa\x13Ra$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBAW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13pW\x90P[P\x90P_[\x83\x81\x10\x15a\x14\nW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\xDDWa\x13\xDDa$\xD8V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xF7Wa\x13\xF7a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBFV[P_\x80_[\x84\x81\x10\x15a\x17\x1AW_\x87\x82\x81Q\x81\x10a\x14*Wa\x14*a$\xD8V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14\xE5W\x88\x81\x81Q\x81\x10a\x14PWa\x14Pa$\xD8V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\xDDW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x146V[P_\x80[\x88\x81\x10\x15a\x15\xA2W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x15\x08Wa\x15\x08a$\xD8V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x99W\x85\x15a\x15\x83W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\x92\x90\x84a-`V[\x92P`\x01\x96P[P`\x01\x01a\x14\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16\x1BW\x84\x15a\x16\x02W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16\x14\x90\x82a-`V[\x90P`\x01\x93P[\x80_\x03a\x16oW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x16}\x81`\x05a'\x10a\x1F\x82V[\x82` \x01Q\x11\x15a\x16\xF0W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17\x05Wa\x17\x05a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14\x0FV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17|W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xF8\x90\x84\x90\x86\x90`\x04\x01a-sV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18\x0EW_\x80\xFD[PZ\xFA\x15\x80\x15a\x18 W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xE7\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xF1\x85\x85a\x1F\xBCV[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a/\xFA\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a/\xCC`.\x919`@Q` \x01a\x1A\xE8\x94\x93\x92\x91\x90a-\xA1V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1BU\x96\x95\x94\x93\x92`\x04\x01a.)V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1BlW_\x80\xFD[PZ\xF1\x15\x80\x15a\x18 W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xA3Wa\x03L\x82\x82a\x1B\xC5V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a \x02V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1C\x1BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1CjWP\x83a\x1C\xCFV[\x82\x82\x11a\x1C\xA3W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\xB1WP\x82a\x1C\xCFV[B\x83\x10a\x1C\xBFWP\x83a\x1C\xCFV[a\x1C\xCC\x83\x83B\x88\x88a \xE9V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1DJ\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12$\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\\Wa\x1E\\a$\xABV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x86W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xC9W_a\x1E\xB7\x85\x83\x81Q\x81\x10a\x1E\xAAWa\x1E\xAAa$\xD8V[` \x02` \x01\x01Qa!\x03V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x8BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1E\xE3\x84\x84\x83a!yV[a\x1F{W\x81a\x1F\x1EW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a\x1FxW_\x82\x82\x81Q\x81\x10a\x1FAWa\x1FAa$\xD8V[` \x02` \x01\x01Q\x90Pa\x1Fj\x85a'\x10a\x1F\\\x91\x90a-`V[` \x83\x01Q\x90a'\x10a!\xC3V[` \x90\x91\x01R`\x01\x01a\x1F%V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1F\xB5W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F{W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_a \xF7\x86\x86\x86\x86\x86a\"\x05V[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12$\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a!\x9CWP\x82\x82\x11[\x80a\x1C\xCFWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xF6W_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a\"\x14WP\x80a \xFAV[_a\"\x1F\x87\x86a.\xE3V[\x90P_a\",\x88\x88a.\xE3V[\x90P_\x85\x85\x12\x15a\"]Wa\"M\x83\x83a\"F\x88\x8Aa.\xF6V[\x91\x90a\x1F\x82V[a\"V\x90a/\x1CV[\x90Pa\"oV[a\"l\x83\x83a\"F\x89\x89a.\xF6V[\x90P[a\"y\x81\x87a/RV[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a\x0B5W_\x80\xFD[_\x80\x83`\x1F\x84\x01\x12a\"\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\"\xEDW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x04W_\x80\xFD[a#\x10\x87\x83\x88\x01a\"\x86V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#%W_\x80\xFD[Pa#2\x86\x82\x87\x01a\"\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a#OW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#fW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a#\x91W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xA7W_\x80\xFD[a#\xB3\x85\x82\x86\x01a#?V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a#\xD2W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE9W_\x80\xFD[a#\xF5\x88\x83\x89\x01a#?V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\rW_\x80\xFD[Pa$\x1A\x87\x82\x88\x01a\"\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a$R\x81a$&V[\x91\x90PV[_` \x82\x84\x03\x12\x15a$gW_\x80\xFD[\x815a$r\x81a$&V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a$\x89W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x9FW_\x80\xFD[a\x1C\xCF\x84\x82\x85\x01a\"\x86V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a%\x1FW\x81\x81\x01Q\x83\x82\x01R` \x01a%\x07V[PP_\x91\x01RV[_\x81Q\x80\x84Ra%>\x81` \x86\x01` \x86\x01a%\x05V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a%\xCEW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a%\x83V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&La\x01\xA0\x85\x01\x82a%'V[\x90P` \x83\x01Qa&\x8A` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra&\xA2\x82\x82a%pV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra&\xBC\x82\x82a%'V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a'FW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'4\x86\x83Qa%\xD9V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a&\xFAV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'\xC8W_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\x05W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\x1FW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"\xD4W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xE9Wa(\xE9a$\xABV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\x1AWa)\x1Aa$\xABV[a)K` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(\xA2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)_W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a)\x8BW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a)\xAFWa)\xAFa$\xABV[\x81`@R\x82\x93P\x845\x91Pa)\xC3\x82a$&V[\x90\x82R` \x84\x015\x90a)\xD5\x82a$&V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa)\xFF\x82a$&V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\x18W_\x80\xFD[Pa*%\x85\x82\x86\x01a(\xF1V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a*BW_\x80\xFD[a*Ja(3V[\x90P\x815a*W\x81a$&V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*\x8EWa*\x8Ea$\xABV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a*\xA7W_\x80\xFD[\x815` a*\xBCa*\xB7\x83a*uV[a(\xA2V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a*\xDAW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+=W`\x80\x81\x89\x03\x12\x15a*\xF5W_\x80\xFD[a*\xFDa(\\V[\x815a+\x08\x81a$&V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a++\x81a$&V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a*\xDEV[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a+XW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a+oW_\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a+\x83W_\x80\xFD[a+\x8Ba(\x7FV[\x825\x82\x81\x11\x15a+\x99W_\x80\xFD[a+\xA5\x87\x82\x86\x01a){V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+\xC8``\x84\x01a$GV[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra+\xE4\x86`\xA0\x85\x01a*2V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a+\xFBW_\x80\xFD[a,\x07\x87\x82\x86\x01a*\x98V[`\xC0\x83\x01RP\x95\x94PPPPPV[_\x84Qa,'\x81\x84` \x89\x01a%\x05V[\x84Q\x90\x83\x01\x90a,;\x81\x83` \x89\x01a%\x05V[\x84Q\x91\x01\x90a,N\x81\x83` \x88\x01a%\x05V[\x01\x95\x94PPPPPV[` \x81R_a$r` \x83\x01\x84a%\xD9V[_` \x80\x83\x85\x03\x12\x15a,{W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,\x91W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xA1W_\x80\xFD[\x80Qa,\xAFa*\xB7\x82a*uV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a,\xCDW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-'W\x80\x85\x8A\x03\x12\x15a,\xE8W_\x80\xFD[a,\xF0a(3V[\x85Qa,\xFB\x81a$&V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\x14\x81a$&V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a,\xD2V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1C\xCF`@\x83\x01\x84a%\xD9V[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R_\x85Qa-\xD8\x81`\x1C\x85\x01` \x8A\x01a%\x05V[\x85Q\x90\x83\x01\x90a-\xEF\x81`\x1C\x84\x01` \x8A\x01a%\x05V[\x85Q\x91\x01\x90a.\x05\x81`\x1C\x84\x01` \x89\x01a%\x05V[\x84Q\x91\x01\x90a.\x1B\x81`\x1C\x84\x01` \x88\x01a%\x05V[\x01`\x1C\x01\x96\x95PPPPPPV[_a\x01@a.X\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra.\x99`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra.\xCE\x81\x84\x01\x86a%'V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"y\x81\x85a%'V[\x81\x81\x03\x81\x81\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\x15Wa/\x15a-3V[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a/LWa/La-3V[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a/qWa/qa-3V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 Su;v/\xD0\xA1\xC6\xD1\xA3B%\xB20>\x86\x1C5Ufn\x99\xF1O\xD2\xB1\xD8v\xFE\x93\x9EqdsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\r\xA6\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cA\xD8\x8Di\x14a\0CW\x80cX]\xA6(\x14a\0lW\x80cvq\xD0{\x14a\0\x81W[_\x80\xFD[a\0Va\0Q6`\x04a\x04\xA8V[a\0\xC2V[`@Qa\0c\x91\x90a\x05\xDCV[`@Q\x80\x91\x03\x90\xF3[a\0\x7Fa\0z6`\x04a\x08\xC4V[a\x02\x18V[\0[a\0\x9Da\0\x8F6`\x04a\n*V[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R_\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAA\x92\x91`\x04\x01a\ndV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC1W_\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xD2WP`\x01[a\x02\x12W=\x80\x80\x15a\x01\xFFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xB0\x81lQ\xD5\x1CZ\xB3\x94{\xAD=\xF8\xFE\xDF\xB8u\x8E\xB6\xCE\x0E\xD2\x0B\x8F\xC1\x84L\x99&\xA01\xBEdsolcC\0\x08\x18\x003`@`\x80\x81R`\x04\x90\x816\x10\x15a\0\x15W`\0\x80\xFD[`\0\x90\x815`\xE0\x1C\x80c\rX\xB1\xDB\x14a\x12lW\x80c\x13|)\xFE\x14a\x10uW\x80c*-\x80\xD1\x14a\r\xB7W\x80c+g\xB5p\x14a\x0B\xDEW\x80c0\xF2\x8Bz\x14a\n\xDEW\x80c6D\xE5\x15\x14a\n\x9DW\x80c6\xC7\x85\x16\x14a\n(W\x80c?\xF9\xDC\xB1\x14a\t\xA8W\x80cO\xE0+D\x14a\t?W\x80ce\xD9r<\x14a\x07\xACW\x80c\x87Q|E\x14a\x06zW\x80c\x92}\xA1\x05\x14a\x05\xC3W\x80c\xCCS(\x7F\x14a\x04\xA3W\x80c\xED\xD9DK\x14a\x03:Wc\xFE\x8E\xC1\xA7\x14a\0\xC6W`\0\x80\xFD[4a\x036W`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x835\x81\x81\x11a\x032Wa\x01\x14\x906\x90\x86\x01a\x16KV[`$5\x82\x81\x11a\x03.Wa\x01+\x906\x90\x87\x01a\x16\x1AV[a\x013a\x14\xE6V[\x91`\x845\x85\x81\x11a\x03*Wa\x01K\x906\x90\x8A\x01a\x15\xC1V[\x98\x90\x95`\xA45\x90\x81\x11a\x03&Wa\x01d\x916\x91\x01a\x15\xC1V[\x96\x90\x95\x81Q\x90a\x01s\x82a\x13\xFFV[`k\x82R\x7FPermitBatchWitnessTransferFrom(T` \x83\x01R\x7FokenPermissions[] permitted,addr\x83\x83\x01R\x7Fess spender,uint256 nonce,uint25``\x83\x01R\x7F6 deadline,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x82Q\x9A\x8B\x91\x81a\x02\"` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8A\x81R\x03\x99a\x02[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x9B\x8C\x81\x01\x83R\x82a\x147V[Q\x90 \x90\x85QQa\x02k\x81a\x1E\xBBV[\x90\x8A[\x81\x81\x10a\x02\xF9WPPa\x02\xF6\x99\x9Aa\x02\xED\x91\x83Qa\x02\xA0\x81a\x02\x94` \x82\x01\x80\x95a\x1FfV[\x03\x84\x81\x01\x83R\x82a\x147V[Q\x90 ` \x89\x81\x01Q\x85\x8B\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`d5`\xC0\x84\x01R\x82`\xE0\x81\x01[\x03\x90\x81\x01\x83R\x82a\x147V[Q\x90 \x93a\x1C\xF7V[\x80\xF3[\x80a\x03\x11a\x03\x0Ba\x03!\x93\x8CQa\x17^V[Qa TV[a\x03\x1B\x82\x86a\x17^V[Ra\x1F\nV[a\x02nV[\x88\x80\xFD[\x87\x80\xFD[\x84\x80\xFD[\x83\x80\xFD[P\x80\xFD[P\x914a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x805\x82\x81\x11a\x032Wa\x03\x8B\x906\x90\x83\x01a\x16KV[`$5\x83\x81\x11a\x03.Wa\x03\xA2\x906\x90\x84\x01a\x16\x1AV[\x93\x90\x92a\x03\xADa\x14\xE6V[\x91`d5\x90\x81\x11a\x04\x9FWa\x03\xC4\x916\x91\x01a\x15\xC1V[\x94\x90\x93\x83QQ\x97a\x03\xD4\x89a\x1E\xBBV[\x98\x88[\x81\x81\x10a\x04}WPPa\x02\xF6\x97\x98\x81Qa\x04%\x81a\x03\xF9` \x82\x01\x80\x95a\x1FfV[\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x01\x83R\x82a\x147V[Q\x90 ` \x86\x01Q\x82\x87\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\xFC\xF3_Z\xC6\xA2\xC2\x88h\xDCD\xC3\x02\x16dp&b9\x19_\x02\xB0\xEE@\x834\x82\x933\xB7f\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x02\xED\x81a\x14\x1BV[\x80\x8Ba\x03\x1B\x82a\x04\x94a\x03\x0Ba\x04\x9A\x96\x8DQa\x17^V[\x92a\x17^V[a\x03\xD7V[\x86\x80\xFD[P\x824a\x05\xBFW` \x90\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x03.Wa\x04\xF4\x916\x91\x01a\x16\x1AV[\x92\x90\x91\x84[\x84\x81\x10a\x05\x04W\x85\x80\xF3[\x80a\x05\x1Aa\x05\x15`\x01\x93\x88\x88a\x19lV[a\x19|V[a\x05/\x84a\x05)\x84\x8A\x8Aa\x19lV[\x01a\x19|V[3\x89R\x83\x85R\x85\x89 \x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x92\x83\x8BR\x86R\x86\x8A \x91\x16\x90\x81\x8AR\x85R\x85\x89 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81T\x16\x90U\x85Q\x91\x82R\x84\x82\x01R\x7F\x89\xB1\xAD\xD1^\xFFV\xB3\xDF\xE2\x99\xAD\x94\xE0\x1F+R\xFB\xCB\x80\xAE\x1A;\xAE\xA6\xAE\x8C\x04\xCB+\x98\xA4\x853\x92\xA2\x01a\x04\xF9V[\x82\x80\xFD[P4a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06v\x81a\x05\xFFa\x14\xA0V[\x93a\x06\x08a\x14\xC3V[a\x06\x10a\x14\xE6V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16\x83R`\x01` \x90\x81R\x84\x84 \x92\x88\x16\x84R\x91\x82R\x83\x83 \x90\x87\x16\x83R\x81R\x91\x90 T\x92Q\x93\x83\x16\x84R`\xA0\x83\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x84\x01R`\xD0\x91\x90\x91\x1C`@\x83\x01R\x81\x90``\x82\x01\x90V[\x03\x90\xF3[P4a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06\xB2a\x14\xA0V[\x90a\x06\xBBa\x14\xC3V[\x91a\x06\xC4a\x14\xE6V[e\xFF\xFF\xFF\xFF\xFF\xFF\x92`d5\x84\x81\x16\x90\x81\x81\x03a\x03*Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x7F\xDA\x9F\xA7\xC1\xB0\x04\x02\xC1}\x01a\xB2I\xB1\xAB\x8B\xBE\xC0G\xC5\xA5\"\x07\xB9\xC1\x12\xDE\xFF\xD8\x17\x03k\x943\x8AR`\x01` R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x8B \x98s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x94\x16\x99\x8A\x8DR` R\x83\x87\x8D \x9B\x16\x9A\x8B\x8DR` R\x86\x8C \x94\x86\x15`\0\x14a\x07\xA4WPB\x16\x92[\x84T\x92\x16\x97\x88\x93`\xA0\x1B\x16\x91\x16\x17\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA4\x80\xF3[\x90P\x92a\x07\x83V[P\x824a\x05\xBFW``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x07\xE5a\x14\xA0V[\x90a\x07\xEEa\x14\xC3V[\x92e\xFF\xFF\xFF\xFF\xFF\xFF`D5\x81\x81\x16\x93\x90\x84\x81\x03a\x03*W3\x88R` \x91`\x01\x83R\x84\x89 \x96s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x97\x88\x8BR\x84R\x85\x8A \x98\x16\x97\x88\x8AR\x83R\x84\x89 T`\xD0\x1C\x93\x84\x87\x11\x15a\t\x17Wa\xFF\xFF\x90\x85\x84\x03\x16\x11a\x08\xF0WP\x90\x7FU\xEB\x90\xD8\x10\xE1p\x0B5\xA8\xE7\xE2S\x95\xFF\x7F+\"Y\xAB\xD7A\\\xA2(M\xFB\x1C$d\x18\xF3\x93\x92\x913\x89R`\x01\x82R\x83\x89 \x87\x8AR\x82R\x83\x89 \x88\x8AR\x82R\x83\x89 \x90y\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83T\x92`\xD0\x1B\x16\x91\x16\x17\x90U\x82Q\x94\x85R\x84\x01R3\x92\xA4\x80\xF3[\x84Q\x7F$\xD3Z&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P4a\x036W\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W\x80` \x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\x8Fa\x14\xA0V[\x16\x81R\x80\x84R\x81\x81 `$5\x82R\x84R T\x90Q\x90\x81R\xF3[P\x824a\x05\xBFW\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFW\x7F7\x04\x90/\x967f\xA4\xE5a\xBB\xAA\xB6\xE6\xCD\xC1\xB1\xDD\x12\xF6\xE9\xE9\x96H\xDA\x88C\xB3\xF4k\x91\x8D\x905\x91`$53\x85R\x84` R\x81\x85 \x84\x86R` R\x81\x85 \x81\x81T\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA2\x80\xF3[\x824a\n\x9AW`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\n\x9AWa\n`a\x14\xA0V[a\nha\x14\xC3V[a\npa\x14\xE6V[`d5\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x83\x03a\x03.Wa\x02\xF6\x93a\x17\xA1V[\x80\xFD[P4a\x036W\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W` \x90a\n\xD7a\x1B\x1EV[\x90Q\x90\x81R\xF3[P\x82\x904a\x05\xBFWa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x0B\x1A6a\x15*V[\x90\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x0BLa\x14xV[\x91`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\xDAWa\x02\xF6\x94a\x0Bo\x916\x91\x01a\x15\xC1V[\x93\x90\x92a\x0B|\x83Qa TV[` \x84\x01Q\x82\x85\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\x93\x9C!\xA4\x8A\x8D\xBE:\x9A$\x04\xA1\xD4f\x91\xE4\xD3\x9Fe\x83\xD6\xECk5qF\x04\xC9\x86\xD8\x01\x06\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x0B\xD1\x81a\x14\x1BV[Q\x90 \x91a\x1C%V[\x85\x80\xFD[P\x914a\x036Wa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x0C\x18a\x14\xA0V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC6\x01`\xC0\x81\x12a\x032W`\x80\x85Q\x91a\x0CQ\x83a\x13\xE3V[\x12a\x032W\x84Q\x90a\x0Cb\x82a\x13\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91`$5\x83\x81\x16\x81\x03a\x04\x9FW\x81R`D5\x83\x81\x16\x81\x03a\x04\x9FW` \x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF`d5\x81\x81\x16\x81\x03a\x03*W\x88\x83\x01R`\x845\x90\x81\x16\x81\x03a\x04\x9FW``\x82\x01R\x81R`\xA45\x93\x82\x85\x16\x85\x03a\x0B\xDAW` \x82\x01\x94\x85R`\xC45\x90\x87\x83\x01\x82\x81R`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x03&Wa\x0C\xFE\x906\x90\x84\x01a\x15\xC1V[\x92\x90\x93\x80B\x11a\r\x88WPP\x91\x85\x91a\rxa\x02\xF6\x99\x9Aa\r~\x95a\r#\x88Qa\x1F\xBEV[\x90\x89\x8CQ\x16\x90Q\x90\x83Q\x92` \x84\x01\x94\x7F\xF3\x84\x1C\xD1\xFF\0\x85\x02jc'\xB6 \xB6y\x97\xCE@\xF2\x82\xC8\x8A\x8E\x90ZzV&\xE3\x10\xF3\xD0\x86R\x84\x01R``\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x90 a\x1B\xD9V[\x91a \xC7V[Q\x92Q\x16\x91a\x19\x9DV[`$\x92P\x8AQ\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[P\x914a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x93\x81\x856\x01\x12a\x032Wa\r\xF3a\x14\xA0V[\x92`$\x90\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x85\x11a\x03*W\x85\x90\x856\x03\x01\x12a\x04\x9FW\x80Q\x97\x85\x89\x01\x89\x81\x10\x82\x82\x11\x17a\x10JW\x82R\x84\x83\x015\x81\x81\x11a\x03&W\x85\x01\x906`#\x83\x01\x12\x15a\x03&W\x83\x82\x015\x91a\x0EP\x83a\x15\xEFV[\x90a\x0E]\x85Q\x92\x83a\x147V[\x83\x82R` \x93\x87\x85\x84\x01\x91`\x07\x1B\x83\x01\x01\x916\x83\x11a\x10FW\x88\x01\x90[\x82\x82\x10a\x0F\xE9WPPP\x8AR`Da\x0E\x93\x86\x88\x01a\x15\tV[\x96\x83\x8C\x01\x97\x88R\x015\x94\x83\x8B\x01\x91\x86\x83R`D5\x90\x81\x11a\x0F\xE5Wa\x0E\xBB\x906\x90\x87\x01a\x15\xC1V[\x95\x90\x96\x80B\x11a\x0F\xBAWPPP\x89\x98\x99QQa\x0E\xD6\x81a\x1E\xBBV[\x90\x8B[\x81\x81\x10a\x0F\x97WPP\x92\x88\x94\x92a\rx\x92a\x0Fd\x97\x95\x83Qa\x0F\x02\x81a\x03\xF9\x86\x82\x01\x80\x95a\x1FfV[Q\x90 \x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x8B\x8BQ\x16\x91Q\x92\x85Q\x94\x85\x01\x95\x7F\xAF\x1B\r0\xD2\xCA\xB08\x0Eh\xF0h\x90\x07\xE3%I\x93\xC5\x96\xF2\xFD\xD0\xAA\xA7\xF4\xD0OyD\x08c\x87R\x85\x01R\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x16\x90\x82QQ\x92\x84[\x84\x81\x10a\x0FxW\x85\x80\xF3[\x80a\x0F\x91\x85\x85a\x0F\x8B`\x01\x95\x87Qa\x17^V[Qa\x19\x9DV[\x01a\x0FmV[\x80a\x03\x11a\x0F\xAC\x8E\x9F\x9E\x93a\x0F\xB2\x94Qa\x17^V[Qa\x1F\xBEV[\x9B\x9A\x9Ba\x0E\xD9V[\x85Q\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[\x8A\x80\xFD[`\x80\x826\x03\x12a\x10FW\x85`\x80\x91\x88Qa\x10\x02\x81a\x13\x98V[a\x10\x0B\x85a\x15\tV[\x81Ra\x10\x18\x83\x86\x01a\x15\tV[\x83\x82\x01Ra\x10'\x8A\x86\x01a\x16\x07V[\x8A\x82\x01R\x8Da\x107\x81\x87\x01a\x16\x07V[\x90\x82\x01R\x81R\x01\x91\x01\x90a\x0EzV[\x8C\x80\xFD[\x84\x89`A\x86\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83RR\xFD[P\x824a\x05\xBFWa\x01@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x10\xB06a\x15*V[\x91\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x10\xE2a\x14xV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90a\x01\x045\x85\x81\x11a\x04\x9FWa\x11\x05\x906\x90\x86\x01a\x15\xC1V[\x90\x93a\x01$5\x96\x87\x11a\x03*Wa\x11%a\x0B\xD1\x96a\x02\xF6\x986\x91\x01a\x15\xC1V[\x96\x90\x95\x82Q\x90a\x114\x82a\x13\xFFV[`d\x82R\x7FPermitWitnessTransferFrom(TokenP` \x83\x01R\x7Fermissions permitted,address spe\x84\x83\x01R\x7Fnder,uint256 nonce,uint256 deadl``\x83\x01R\x7Fine,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x83Q\x94\x85\x91\x81a\x11\xE3` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8B\x81R\x03\x93a\x12\x1C\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x95\x86\x81\x01\x83R\x82a\x147V[Q\x90 \x92a\x12*\x86Qa TV[` \x87\x81\x01Q\x85\x89\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`\xE45`\xC0\x84\x01R\x82`\xE0\x81\x01a\x02\xE1V[P\x824a\x05\xBFW` \x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x0B\xDAW6`#\x83\x01\x12\x15a\x0B\xDAW\x81\x015\x92\x83\x11a\x03.W`$\x90`\x076\x83\x86\x83\x1B\x84\x01\x01\x11a\x04\x9FW\x86[\x85\x81\x10a\x12\xE5W\x87\x80\xF3[\x80\x82\x1B\x83\x01\x90`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\x836\x03\x01\x12a\x03&Wa\x13\x92\x88\x87`\x01\x94``\x83Qa\x13,\x81a\x13\x98V[a\x13h`\x84a\x13<\x8D\x86\x01a\x15\tV[\x94\x85\x84Ra\x13L`D\x82\x01a\x15\tV[\x80\x97\x85\x01Ra\x13]`d\x82\x01a\x15\tV[\x80\x98\x85\x01R\x01a\x15\tV[\x91\x82\x91\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x80\x80\x93\x16\x95\x16\x93\x16\x91\x16a\x17\xA1V[\x01a\x12\xDAV[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC45\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`\0\x80\xFD[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`D5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x01\x90`\x80\x82\x12a\x14\x9BW`@\x80Q\x90a\x15c\x82a\x13\xE3V[\x80\x82\x94\x12a\x14\x9BW\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W\x82R`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x81R`$5` \x82\x01R\x82R`D5` \x83\x01R`d5\x91\x01RV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x83\x81\x86\x01\x95\x01\x01\x11a\x14\x9BWV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x13\xB4W`\x05\x1B` \x01\x90V[5\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x80\x85\x01\x94\x84`\x06\x1B\x01\x01\x11a\x14\x9BWV[\x91\x90\x91``\x81\x84\x03\x12a\x14\x9BW`@\x80Q\x91a\x16f\x83a\x13\xE3V[\x82\x94\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x81\x11a\x14\x9BW\x83\x01\x82`\x1F\x82\x01\x12\x15a\x14\x9BW\x805a\x16\x93\x81a\x15\xEFV[\x92a\x16\xA0\x87Q\x94\x85a\x147V[\x81\x84R` \x94\x85\x80\x86\x01\x93`\x06\x1B\x85\x01\x01\x93\x81\x85\x11a\x14\x9BW\x90\x86\x89\x98\x97\x96\x95\x94\x93\x92\x01\x92[\x84\x84\x10a\x16\xE3WPPPPP\x85R\x80\x82\x015\x90\x85\x01R\x015\x91\x01RV[\x90\x91\x92\x93\x94\x95\x96\x97\x84\x83\x03\x12a\x14\x9BW\x88Q\x90\x89\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17a\x170W\x8A\x92\x89\x92\x84Ra\x17\x14\x87a\x15\tV[\x81R\x82\x87\x015\x83\x82\x01R\x81R\x01\x93\x01\x91\x90\x88\x97\x96\x95\x94\x93a\x16\xC6V[`$`\0\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`A`\x04R\xFD[\x80Q\x82\x10\x15a\x17rW` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x92\x91\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@`\0\x82\x84\x16\x81R`\x01` R\x82\x82\x82 \x96\x16\x95\x86\x82R` R\x81\x81 3\x82R` R \x94\x85T\x95e\xFF\xFF\xFF\xFF\xFF\xFF\x87`\xA0\x1C\x16\x80B\x11a\x18\x84WP\x82\x87\x16\x96\x83\x88\x03a\x18\x12W[PPa\x18\x10\x95P\x16\x92a\x18\xB5V[V[\x87\x84\x84\x16\x11`\0\x14a\x18OW`$\x88`@Q\x90\x7F\xF9o\xB0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x84a\x18\x10\x9A\x03\x16\x91\x16\x17\x90U8\x80a\x18\x02V[`$\x90`@Q\x90\x7F\xD8\x1B/.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90`\0`d\x92` \x95\x82\x95`@Q\x94\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\x04\x86\x01R`$\x85\x01R`D\x84\x01RZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x15a\x19\x0EWV[`d`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R\xFD[\x91\x90\x81\x10\x15a\x17rW`\x06\x1B\x01\x90V[5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x90V[\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81``\x84\x01Q\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x85Q\x16\x94\x82` \x82\x01Q\x16\x92\x80\x86`@\x80\x94\x01Q\x16\x95\x16\x95`\0\x91\x87\x83R`\x01` R\x83\x83 \x89\x84R` R\x83\x83 \x99\x16\x98\x89\x83R` R\x82\x82 \x91\x84\x83T`\xD0\x1C\x03a\x1A\xF5W\x91\x85a\x1A\xCE\x94\x92\x7F\xC6\xA3w\xBF\xC4\xEB\x12\0$\xA8\xAC\x08\xEE\xF2\x05\xBE\x16\xB8\x17\x02\x08\x12\xC72#\xE8\x1D\x1B\xDB\x97\x08\xEC\x98\x97\x96\x94P\x87\x15`\0\x14a\x1A\xD3Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90B\x16[`\xA0\x1B\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01\x86\x01`\xD0\x1B\x16\x17\x17\x90UQ\x93\x84\x93\x84\x91`@\x91\x94\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF``\x85\x01\x96\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x80\x92\x16` \x85\x01R\x16\x91\x01RV[\x03\x90\xA4V[Py\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87a\x1A`V[`\x04\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x1BiW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x82R\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j`@\x82\x01RF``\x82\x01R0`\x80\x82\x01R`\x80\x81Ra\x1B\xD3\x81a\x13\xFFV[Q\x90 \x90V[a\x1B\xE1a\x1B\x1EV[\x90`@Q\x90` \x82\x01\x92\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84R`\"\x83\x01R`B\x82\x01R`B\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x92\x90\x93`\xA45\x93`@\x84\x01Q\x80B\x11a\x1C\xC6WP` \x84Q\x01Q\x80\x86\x11a\x1C\x95WP\x91\x85\x91a\rxa\x1Ce\x94a\x1C`` \x88\x01Q\x86a\x1EGV[a\x1B\xD9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91QQ\x16\x92`\x845\x91\x82\x16\x82\x03a\x14\x9BWa\x18\x10\x93a\x18\xB5V[`$\x90`@Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`$\x90`@Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x95\x90\x93\x95\x80QQ\x95`@\x92\x83\x83\x01Q\x80B\x11a\x1E\x17WP\x84\x88\x03a\x1D\xEEWa\x1D.\x91\x86\x91a\rx` \x9Ba\x1C`\x8D\x88\x01Q\x86a\x1EGV[`\0[\x86\x81\x10a\x1DBWPPPPPPPPV[a\x1DM\x81\x83Qa\x17^V[Q\x88a\x1DZ\x83\x87\x8Aa\x19lV[\x015\x90\x89\x81\x01Q\x80\x83\x11a\x1D\xBEWP\x91\x81\x88\x88\x88`\x01\x96\x85\x96a\x1D\x84W[PPPPPP\x01a\x1D1V[a\x1D\xB3\x95a\x1D\xAD\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x05\x15\x93Q\x16\x95a\x19lV[\x91a\x18\xB5V[\x808\x88\x88\x88\x83a\x1DxV[`$\x90\x86Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`\x04\x84Q\x7F\xFFc:8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`$\x90\x85Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\xFF\x83\x16\x1B\x92\x16`\0R`\0` R`@`\0 \x90`\x08\x1C`\0R` R`@`\0 \x81\x81T\x18\x80\x91U\x16\x15a\x1E\x91WV[`\x04`@Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90a\x1E\xC5\x82a\x15\xEFV[a\x1E\xD2`@Q\x91\x82a\x147V[\x82\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x1F\0\x82\x94a\x15\xEFV[\x01\x90` 6\x91\x017V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x1F7W`\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80Q` \x80\x92\x01\x91`\0[\x82\x81\x10a\x1F\x7FWPPPP\x90V[\x83Q\x85R\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x1FqV[\x90\x81Q\x91`\0[\x83\x81\x10a\x1F\xABWPP\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q\x81\x85\x01R\x01a\x1F\x9AV[`@Q` \x81\x01\x91\x7Febl\xADl\xB9d\x93\xBFo^\xBE\xA2\x87V\xC9f\xF0#\xAB\x9E\x8A\x83\xA7\x10\x18I\xD5W;6x\x83Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`@\x84\x01R` \x82\x01Q\x16``\x83\x01R``e\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82`@\x82\x01Q\x16`\x80\x85\x01R\x01Q\x16`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RQ\x90 \x90V[`@Q` \x80\x82\x01\x92\x7Fa\x83X\xAC=\xB8\xDC'O\x0C\xD8\x82\x9D\xA7\xE24\xBDH\xCDs\xC4\xA7@\xAE\xDE\x1A\xDE\xC9\x84m\x06\xA1\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16`@\x84\x01R\x01Q``\x82\x01R``\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x90\x82`@\x91\x03\x12a\x14\x9BW` \x825\x92\x015\x90V[`\0\x84;a\".WP`A\x82\x03a!\xACWa \xE4\x82\x82\x01\x82a \xB1V[\x93\x90\x92`@\x10\x15a\x17rW` \x93`\0\x93`\xFF`@`\x80\x95\x015`\xF8\x1C[`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a!\xA0Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80`\0Q\x16\x91\x82\x15a!vW\x16\x03a!LWV[`\x04`@Q\x7F\x81^\x1Dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`\x04`@Q\x7F\x8B\xAAW\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`@Q=`\0\x82>=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 2\x1E\xC7<\xEFr\xCAq\xA6\x17\xDF\x1A-`3\x1CC#\x97\x12@\x9B\xC9L\xA00T\xF8\xA3\x84AedsolcC\0\x08\x18\x003", ); /**```solidity struct ExclusiveDutchDeployment { address permit2; address reactor; address quoter; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ExclusiveDutchDeployment { + #[allow(missing_docs)] pub permit2: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub quoter: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -329,16 +343,22 @@ struct ExclusiveDutchDeployment { address permit2; address reactor; address quot ```solidity function IS_SCRIPT() external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTCall {} ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -442,16 +462,22 @@ function IS_SCRIPT() external view returns (bool); ```solidity function run() external returns (ExclusiveDutchDeployment memory deployment); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct runCall {} ///Container type for the return parameters of the [`run()`](runCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct runReturn { + #[allow(missing_docs)] pub deployment: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -557,14 +583,19 @@ function run() external returns (ExclusiveDutchDeployment memory deployment); ```solidity function setUp() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUpCall {} ///Container type for the return parameters of the [`setUp()`](setUpCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUpReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -666,8 +697,11 @@ function setUp() external; }; ///Container for all the [`DeployExclusiveDutch`](self) function calls. pub enum DeployExclusiveDutchCalls { + #[allow(missing_docs)] IS_SCRIPT(IS_SCRIPTCall), + #[allow(missing_docs)] run(runCall), + #[allow(missing_docs)] setUp(setUpCall), } #[automatically_derived] @@ -708,7 +742,7 @@ function setUp() external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -766,7 +800,7 @@ function setUp() external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/deploymultifillerexecutor.rs b/crates/bindings-uniswapx/src/deploymultifillerexecutor.rs index 2f83dd3..31535f9 100644 --- a/crates/bindings-uniswapx/src/deploymultifillerexecutor.rs +++ b/crates/bindings-uniswapx/src/deploymultifillerexecutor.rs @@ -47,44 +47,56 @@ interface DeployMultiFillerExecutor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod DeployMultiFillerExecutor { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50612d49806100316000396000f3fe60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c0406226146200004d578063f8ccbf471462000081575b600080fd5b005b62000057620000a6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600c54620000959062010000900460ff1681565b604051901515815260200162000078565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f464f554e4452595f505249564154455f4b45590000000000000000000000000060448201526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa15801562000142573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000168919062000b00565b6040517f350d56bf000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f464f554e4452595f4d554c544946494c4c45525f52454143544f525f554e494360448201527f4841494e000000000000000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156200022a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000250919062000b44565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f464f554e4452595f53574150524f5554455230325f55430000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015620002ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000313919062000b44565b6040517f4d7baf0600000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f464f554e4452595f4d554c544946494c4c45525f4144445245535345535f454e60448201527f434f4445440000000000000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90634d7baf0690608401600060405180830381865afa158015620003d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200041e919081019062000c10565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f464f554e4452595f4d554c544946494c4c45525f4445504c4f595f4f574e455260448201527f5f50524f440000000000000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015620004e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000507919062000b44565b905060008280602001905181019062000521919062000ccd565b9050620005646040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250836200090e565b620005a56040518060400160405280600781526020017f72656163746f7200000000000000000000000000000000000000000000000000815250866200090e565b620005e56040518060400160405280600e81526020017f696e697420636f64652068617368000000000000000000000000000000000000815250620009a7565b600060405180602001620005f99062000af2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905262000642908490899087908a9060200162000d87565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000680929160200162000e12565b6040516020818303038152906040529050620006a3818051906020012062000a3d565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101889052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b1580156200070a57600080fd5b505af11580156200071f573d6000803e3d6000fd5b505050507f6df8bfe7bd972f95e2aacb4320733e99c3c961125f069fc9d64426d8e743c20160001b82878588604051620007599062000af2565b62000768949392919062000d87565b8190604051809103906000f590508015801562000789573d6000803e3d6000fd5b5097507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007f857600080fd5b505af11580156200080d573d6000803e3d6000fd5b50505050620008526040518060400160405280601481526020017f53776170526f7574657230324578656375746f72000000000000000000000000815250896200090e565b620009046040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508973ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008fe919062000b44565b6200090e565b5050505050505090565b620009a382826040516024016200092792919062000e91565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af3330000000000000000000000000000000000000000000000000000000017905262000acc565b5050565b62000a3a81604051602401620009be919062000ecb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262000acc565b50565b62000a3a8160405160240162000a5591815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f27b7cf85000000000000000000000000000000000000000000000000000000001790525b62000a3a8160006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b611e338062000ee183390190565b60006020828403121562000b1357600080fd5b5051919050565b805173ffffffffffffffffffffffffffffffffffffffff8116811462000b3f57600080fd5b919050565b60006020828403121562000b5757600080fd5b62000b628262000b1a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562000be25762000be262000b69565b604052919050565b60005b8381101562000c0757818101518382015260200162000bed565b50506000910152565b60006020828403121562000c2357600080fd5b815167ffffffffffffffff8082111562000c3c57600080fd5b818401915084601f83011262000c5157600080fd5b81518181111562000c665762000c6662000b69565b62000c9960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160162000b98565b915080825285602082850101111562000cb157600080fd5b62000cc481602084016020860162000bea565b50949350505050565b6000602080838503121562000ce157600080fd5b825167ffffffffffffffff8082111562000cfa57600080fd5b818501915085601f83011262000d0f57600080fd5b81518181111562000d245762000d2462000b69565b8060051b915062000d3784830162000b98565b818152918301840191848101908884111562000d5257600080fd5b938501935b8385101562000d7b5762000d6b8562000b1a565b8252938501939085019062000d57565b98975050505050505050565b6080808252855190820181905260009060209060a0840190828901845b8281101562000dd857815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010162000da4565b50505073ffffffffffffffffffffffffffffffffffffffff9687166020850152948616604084015250509216606090920191909152919050565b6000835162000e2681846020880162000bea565b83519083019062000e3c81836020880162000bea565b01949350505050565b6000815180845262000e5f81602086016020860162000bea565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152600062000ea6604083018562000e45565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60208152600062000b62602083018462000e4556fe60c06040523480156200001157600080fd5b5060405162001e3338038062001e338339810160408190526200003491620001c1565b600080546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060005b8451811015620000df576001806000878481518110620000a457620000a4620002cc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010162000080565b50600280546001600160a01b0319166001600160a01b038581169190911790915581166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001699190620002e2565b6001600160a01b031660a052506200030992505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620001ac57600080fd5b50565b8051620001bc8162000196565b919050565b60008060008060808587031215620001d857600080fd5b84516001600160401b0380821115620001f057600080fd5b818701915087601f8301126200020557600080fd5b81516020828211156200021c576200021c62000180565b8160051b604051601f19603f8301168101818110868211171562000244576200024462000180565b60405292835281830193508481018201928b8411156200026357600080fd5b948201945b838610156200028c576200027c86620001af565b8552948201949382019362000268565b98506200029d9050898201620001af565b965050505050620002b160408601620001af565b9150620002c160608601620001af565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b600060208284031215620002f557600080fd5b8151620003028162000196565b9392505050565b60805160a051611ae86200034b600039600081816109870152610a390152600081816102e901528181610417015281816106b801526107820152611ae86000f3fe6080604052600436106100c05760003560e01c80638da5cb5b11610074578063d0f2d8ac1161004e578063d0f2d8ac14610211578063e5135ec614610231578063f2fde38b1461025157600080fd5b80638da5cb5b1461016e5780639456fbcc146101c4578063ab572650146101e457600080fd5b806363fb0b96116100a557806363fb0b961461010e578063690d83201461012e57806389a3f1361461014e57600080fd5b8063585da628146100cc5780635c8f9bf6146100ee57600080fd5b366100c757005b600080fd5b3480156100d857600080fd5b506100ec6100e73660046111d8565b610271565b005b3480156100fa57600080fd5b506100ec610109366004611266565b610506565b34801561011a57600080fd5b506100ec61012936600461128a565b610627565b34801561013a57600080fd5b506100ec610149366004611266565b610847565b34801561015a57600080fd5b506100ec610169366004611266565b6108d5565b34801561017a57600080fd5b5060005461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101d057600080fd5b506100ec6101df3660046112ea565b610ab8565b3480156101f057600080fd5b5060025461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561021d57600080fd5b506100ec61022c366004611323565b610beb565b34801561023d57600080fd5b506100ec61024c3660046111d8565b610cc0565b34801561025d57600080fd5b506100ec61026c366004611266565b610da1565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102c2576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806102d2848601866114f4565b92509250925060005b8351811015610370576103687f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061033b5761033b61162a565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610e929092919063ffffffff16565b6001016102db565b5060005b82518110156103d95760025483516103d19173ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908590811061033b5761033b61162a565b600101610374565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc9061046e907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161167d565b6000604051808303816000875af115801561048d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104d3919081019061173b565b5047156104fd576002546104fd9073ffffffffffffffffffffffffffffffffffffffff1647610f67565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff808516825290921660208301527f3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b60005b838110156107445761073c7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87878581811061070a5761070a61162a565b905060200201602081019061071f9190611266565b73ffffffffffffffffffffffffffffffffffffffff169190610e92565b6001016106ab565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906107db907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869086906004016118d5565b6000604051808303816000875af11580156107fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610840919081019061173b565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6108d28147611006565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a079190611966565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b50505050610ab48247611006565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610ab490829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611966565b73ffffffffffffffffffffffffffffffffffffffff8516919061107b565b3360009081526001602052604081205460ff1615159003610c38576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d33588490610c92908690869086906004016119ca565b600060405180830381600087803b158015610cac57600080fd5b505af11580156104fd573d6000803e3d6000fd5b3360009081526001602052604081205460ff1615159003610d0d576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906313fb72c790610d699087908790879087906004016119f0565b600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610583565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610fc1576040519150601f19603f3d011682016040523d82523d6000602084013e610fc6565b606091505b5050905080611001576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080611001576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610583565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610583565b60008083601f84011261115c57600080fd5b50813567ffffffffffffffff81111561117457600080fd5b6020830191508360208260051b850101111561118f57600080fd5b9250929050565b60008083601f8401126111a857600080fd5b50813567ffffffffffffffff8111156111c057600080fd5b60208301915083602082850101111561118f57600080fd5b600080600080604085870312156111ee57600080fd5b843567ffffffffffffffff8082111561120657600080fd5b6112128883890161114a565b9096509450602087013591508082111561122b57600080fd5b5061123887828801611196565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108d257600080fd5b60006020828403121561127857600080fd5b813561128381611244565b9392505050565b600080600080604085870312156112a057600080fd5b843567ffffffffffffffff808211156112b857600080fd5b6112c48883890161114a565b909650945060208701359150808211156112dd57600080fd5b506112388782880161114a565b600080604083850312156112fd57600080fd5b823561130881611244565b9150602083013561131881611244565b809150509250929050565b60008060006040848603121561133857600080fd5b833567ffffffffffffffff8082111561135057600080fd5b908501906040828803121561136457600080fd5b9093506020850135908082111561137a57600080fd5b5061138786828701611196565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561140a5761140a611394565b604052919050565b600067ffffffffffffffff82111561142c5761142c611394565b5060051b60200190565b600082601f83011261144757600080fd5b8135602061145c61145783611412565b6113c3565b8083825260208201915060208460051b87010193508684111561147e57600080fd5b602086015b848110156114a357803561149681611244565b8352918301918301611483565b509695505050505050565b600067ffffffffffffffff8211156114c8576114c8611394565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060006060848603121561150957600080fd5b833567ffffffffffffffff8082111561152157600080fd5b61152d87838801611436565b945060209150818601358181111561154457600080fd5b61155088828901611436565b9450506040808701358281111561156657600080fd5b8701601f8101891361157757600080fd5b803561158561145782611412565b81815260059190911b8201850190858101908b8311156115a457600080fd5b8684015b83811015611618578035878111156115c05760008081fd5b8501603f81018e136115d25760008081fd5b888101356115e2611457826114ae565b8181528f898385010111156115f75760008081fd5b818984018c83013760009181018b01919091528452509187019187016115a8565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561167457818101518382015260200161165c565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b8281101561172d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452815180518088526116f081888a01898501611659565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016969096018501955092840192908401906001016116ab565b509398975050505050505050565b6000602080838503121561174e57600080fd5b825167ffffffffffffffff8082111561176657600080fd5b818501915085601f83011261177a57600080fd5b815161178861145782611412565b81815260059190911b830184019084810190888311156117a757600080fd5b8585015b8381101561181b578051858111156117c35760008081fd5b8601603f81018b136117d55760008081fd5b8781015160406117e7611457836114ae565b8281528d828486010111156117fc5760008081fd5b61180b838c8301848701611659565b86525050509186019186016117ab565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126118a657600080fd5b830160208101925035905067ffffffffffffffff8111156118c657600080fd5b80360382131561118f57600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b87811015611958577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018352611939828a611871565b611944878284611828565b965050509183019190830190600101611900565b509298975050505050505050565b60006020828403121561197857600080fd5b5051919050565b600061198b8283611871565b6040855261199d604086018284611828565b9150506119ad6020840184611871565b85830360208701526119c0838284611828565b9695505050505050565b6040815260006119dd604083018661197f565b82810360208401526119c0818587611828565b6040808252810184905260006060600586901b830181019083018783805b89811015611a90577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112611a6e578283fd5b611a7a868d830161197f565b9550506020938401939290920191600101611a0e565b505050508281036020840152611aa7818587611828565b97965050505050505056fea26469706673582212200b39cb1d4ed27a99075eb0ba2bd0956359096764fc5d36462a8d461ef0c3820864736f6c63430008180033a2646970667358221220278a9d7e45e34340d84a33fa478c7f6d15ed79646679ffb21e5c774760a0629664736f6c63430008180033 + ///0x6080604052600c805462ff00ff191662010001179055348015610020575f80fd5b506129638061002e5f395ff3fe608060405234801562000010575f80fd5b506004361062000044575f3560e01c80630a9254e41462000048578063c0406226146200004a578063f8ccbf47146200007e575b5f80fd5b005b62000054620000a3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600c54620000929062010000900460ff1681565b604051901515815260200162000075565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f464f554e4452595f505249564154455f4b45590000000000000000000000000060448201525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156200013c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000162919062000843565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f52454143544f5200000000000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa15801562000222573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000248919062000884565b6040517f4d7baf0600000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f464f554e4452595f4d554c544946494c4c45525f4144445245535345535f454e60448201527f434f44454400000000000000000000000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90634d7baf06906084015f60405180830381865afa15801562000307573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200034e91908101906200094a565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f4f574e4552000000000000000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156200040e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000434919062000884565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f53574150524f5554455230320000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015620004f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200051a919062000884565b90505f8380602001905181019062000533919062000a02565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101889052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d47906024015f604051808303815f87803b1580156200059a575f80fd5b505af1158015620005ad573d5f803e3d5ffd5b505050505f801b81868585604051620005c69062000835565b620005d5949392919062000ab7565b8190604051809103905ff5905080158015620005f3573d5f803e3d5ffd5b5096507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200065e575f80fd5b505af115801562000671573d5f803e3d5ffd5b50505050620006b66040518060400160405280601481526020017f53776170526f7574657230324578656375746f72000000000000000000000000815250886200076f565b620007666040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508873ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200073a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000760919062000884565b6200076f565b50505050505090565b6200080482826040516024016200078892919062000b41565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af3330000000000000000000000000000000000000000000000000000000017905262000808565b5050565b620008138162000816565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b611d7c8062000bb283390190565b5f6020828403121562000854575f80fd5b5051919050565b805173ffffffffffffffffffffffffffffffffffffffff811681146200087f575f80fd5b919050565b5f6020828403121562000895575f80fd5b620008a0826200085b565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156200091e576200091e620008a7565b604052919050565b5f5b838110156200094257818101518382015260200162000928565b50505f910152565b5f602082840312156200095b575f80fd5b815167ffffffffffffffff8082111562000973575f80fd5b818401915084601f83011262000987575f80fd5b8151818111156200099c576200099c620008a7565b620009cf60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601620008d4565b9150808252856020828501011115620009e6575f80fd5b620009f981602084016020860162000926565b50949350505050565b5f602080838503121562000a14575f80fd5b825167ffffffffffffffff8082111562000a2c575f80fd5b818501915085601f83011262000a40575f80fd5b81518181111562000a555762000a55620008a7565b8060051b915062000a68848301620008d4565b818152918301840191848101908884111562000a82575f80fd5b938501935b8385101562000aab5762000a9b856200085b565b8252938501939085019062000a87565b98975050505050505050565b608080825285519082018190525f9060209060a0840190828901845b8281101562000b0757815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010162000ad3565b50505073ffffffffffffffffffffffffffffffffffffffff9687166020850152948616604084015250509216606090920191909152919050565b604081525f835180604084015262000b6181606085016020880162000926565b73ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160600191905056fe60c060405234801562000010575f80fd5b5060405162001d7c38038062001d7c8339810160408190526200003391620001b7565b5f80546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f5b8451811015620000da576001805f878481518110620000a057620000a0620002bc565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016200007d565b50600280546001600160a01b0319166001600160a01b038581169190911790915581166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa1580156200013c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001629190620002d0565b6001600160a01b031660a05250620002f592505050565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0381168114620001a2575f80fd5b50565b8051620001b2816200018d565b919050565b5f805f8060808587031215620001cb575f80fd5b84516001600160401b0380821115620001e2575f80fd5b818701915087601f830112620001f6575f80fd5b81516020828211156200020d576200020d62000179565b8160051b604051601f19603f8301168101818110868211171562000235576200023562000179565b60405292835281830193508481018201928b84111562000253575f80fd5b948201945b838610156200027c576200026c86620001a5565b8552948201949382019362000258565b98506200028d9050898201620001a5565b965050505050620002a160408601620001a5565b9150620002b160608601620001a5565b905092959194509250565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215620002e1575f80fd5b8151620002ee816200018d565b9392505050565b60805160a051611a49620003335f395f81816109620152610a1201525f81816102d5015281816104020152818161069b01526107650152611a495ff3fe6080604052600436106100bb575f3560e01c80638da5cb5b11610071578063d0f2d8ac1161004c578063d0f2d8ac14610202578063e5135ec614610221578063f2fde38b14610240575f80fd5b80638da5cb5b146101635780639456fbcc146101b7578063ab572650146101d6575f80fd5b806363fb0b96116100a157806363fb0b9614610106578063690d83201461012557806389a3f13614610144575f80fd5b8063585da628146100c65780635c8f9bf6146100e7575f80fd5b366100c257005b5f80fd5b3480156100d1575f80fd5b506100e56100e0366004611184565b61025f565b005b3480156100f2575f80fd5b506100e561010136600461120c565b6104ec565b348015610111575f80fd5b506100e561012036600461122e565b61060c565b348015610130575f80fd5b506100e561013f36600461120c565b610825565b34801561014f575f80fd5b506100e561015e36600461120c565b6108b2565b34801561016e575f80fd5b505f5461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101c2575f80fd5b506100e56101d1366004611289565b610a8c565b3480156101e1575f80fd5b5060025461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020d575f80fd5b506100e561021c3660046112c0565b610bbc565b34801561022c575f80fd5b506100e561023b366004611184565b610c8b565b34801561024b575f80fd5b506100e561025a36600461120c565b610d66565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102b0576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80806102bf84860186611484565b9250925092505f5b835181101561035c576103547f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff868481518110610327576103276115ab565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610e559092919063ffffffff16565b6001016102c7565b505f5b82518110156103c45760025483516103bc9173ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869085908110610327576103276115ab565b60010161035f565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610459907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9085906004016115fa565b5f604051808303815f875af1158015610474573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104b991908101906116b6565b5047156104e3576002546104e39073ffffffffffffffffffffffffffffffffffffffff1647610f26565b50505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff808516825290921660208301527f3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461068c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b5f5b838110156107275761071f7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8787858181106106ed576106ed6115ab565b9050602002016020810190610702919061120c565b73ffffffffffffffffffffffffffffffffffffffff169190610e55565b60010161068e565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906107be907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908690869060040161183f565b5f604051808303815f875af11580156107d9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261081e91908101906116b6565b5050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b6108af8147610fc1565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e091906118ce565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b158015610a68575f80fd5b505af1158015610a7a573d5f803e3d5ffd5b50505050610a888247610fc1565b5050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610a8890829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610b7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9e91906118ce565b73ffffffffffffffffffffffffffffffffffffffff85169190611033565b335f9081526001602052604081205460ff1615159003610c08576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d33588490610c629086908690869060040161192f565b5f604051808303815f87803b158015610c79575f80fd5b505af11580156104e3573d5f803e3d5ffd5b335f9081526001602052604081205460ff1615159003610cd7576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906313fb72c790610d33908790879087908790600401611954565b5f604051808303815f87803b158015610d4a575f80fd5b505af1158015610d5c573d5f803e3d5ffd5b5050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610f20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610568565b50505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610f7c576040519150601f19603f3d011682016040523d82523d5f602084013e610f81565b606091505b5050905080610fbc576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f805f805f85875af1905080610fbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610568565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610f20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610568565b5f8083601f84011261110e575f80fd5b50813567ffffffffffffffff811115611125575f80fd5b6020830191508360208260051b850101111561113f575f80fd5b9250929050565b5f8083601f840112611156575f80fd5b50813567ffffffffffffffff81111561116d575f80fd5b60208301915083602082850101111561113f575f80fd5b5f805f8060408587031215611197575f80fd5b843567ffffffffffffffff808211156111ae575f80fd5b6111ba888389016110fe565b909650945060208701359150808211156111d2575f80fd5b506111df87828801611146565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108af575f80fd5b5f6020828403121561121c575f80fd5b8135611227816111eb565b9392505050565b5f805f8060408587031215611241575f80fd5b843567ffffffffffffffff80821115611258575f80fd5b611264888389016110fe565b9096509450602087013591508082111561127c575f80fd5b506111df878288016110fe565b5f806040838503121561129a575f80fd5b82356112a5816111eb565b915060208301356112b5816111eb565b809150509250929050565b5f805f604084860312156112d2575f80fd5b833567ffffffffffffffff808211156112e9575f80fd5b90850190604082880312156112fc575f80fd5b90935060208501359080821115611311575f80fd5b5061131e86828701611146565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561139f5761139f61132b565b604052919050565b5f67ffffffffffffffff8211156113c0576113c061132b565b5060051b60200190565b5f82601f8301126113d9575f80fd5b813560206113ee6113e9836113a7565b611358565b8083825260208201915060208460051b87010193508684111561140f575f80fd5b602086015b84811015611434578035611427816111eb565b8352918301918301611414565b509695505050505050565b5f67ffffffffffffffff8211156114585761145861132b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f805f60608486031215611496575f80fd5b833567ffffffffffffffff808211156114ad575f80fd5b6114b9878388016113ca565b94506020915081860135818111156114cf575f80fd5b6114db888289016113ca565b945050604080870135828111156114f0575f80fd5b8701601f81018913611500575f80fd5b803561150e6113e9826113a7565b81815260059190911b8201850190858101908b83111561152c575f80fd5b8684015b8381101561159957803587811115611546575f80fd5b8501603f81018e13611556575f80fd5b888101356115666113e98261143f565b8181528f89838501011115611579575f80fd5b818984018c8301375f9181018b0191909152845250918701918701611530565b50809750505050505050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156115f25781810151838201526020016115da565b50505f910152565b5f60408201848352602060408185015281855180845260608601915060608160051b87010193508287015f5b828110156116a8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261166b81888a018985016115d8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101611626565b509398975050505050505050565b5f60208083850312156116c7575f80fd5b825167ffffffffffffffff808211156116de575f80fd5b818501915085601f8301126116f1575f80fd5b81516116ff6113e9826113a7565b81815260059190911b8301840190848101908883111561171d575f80fd5b8585015b8381101561178b57805185811115611737575f80fd5b8601603f81018b13611747575f80fd5b8781015160406117596113e98361143f565b8281528d8284860101111561176c575f80fd5b61177b838c83018487016115d8565b8652505050918601918601611721565b5098975050505050505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611812575f80fd5b830160208101925035905067ffffffffffffffff811115611831575f80fd5b80360382131561113f575f80fd5b5f604082018583526020604060208501528185835260608501905060608660051b8601019250865f5b878110156118c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08786030183526118a1828a6117df565b6118ac878284611798565b965050509183019190830190600101611868565b509298975050505050505050565b5f602082840312156118de575f80fd5b5051919050565b5f6118f082836117df565b60408552611902604086018284611798565b91505061191260208401846117df565b8583036020870152611925838284611798565b9695505050505050565b604081525f61194160408301866118e5565b8281036020840152611925818587611798565b604080825281018490525f6060600586901b8301810190830187835b888110156119f2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18b36030181126119d0575f80fd5b6119dc858c83016118e5565b9450506020928301929190910190600101611970565b5050508281036020840152611a08818587611798565b97965050505050505056fea26469706673582212206b02d4f628042990b8186f8c8cbe1e3b6782e60550ac271c2a7ec84aee2c8c8164736f6c63430008180033a2646970667358221220eb124c3f72315cacb09b157d915a78e4938b0cc0b5a19eaebe938c4ce90ac52164736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pa-I\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`\x046\x10b\0\0FW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14b\0\0KW\x80c\xC0@b&\x14b\0\0MW\x80c\xF8\xCC\xBFG\x14b\0\0\x81W[`\0\x80\xFD[\0[b\0\0Wb\0\0\xA6V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTb\0\0\x95\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01b\0\0xV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01h\x91\x90b\0\x0B\0V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FFOUNDRY_MULTIFILLER_REACTOR_UNIC`D\x82\x01R\x7FHAIN\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02P\x91\x90b\0\x0BDV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02_UC\0\0\0\0\0\0\0\0\0`D\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\x13\x91\x90b\0\x0BDV[`@Q\x7FM{\xAF\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FFOUNDRY_MULTIFILLER_ADDRESSES_EN`D\x82\x01R\x7FCODED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cM{\xAF\x06\x90`\x84\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Rb\0\x04\x1E\x91\x90\x81\x01\x90b\0\x0C\x10V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FFOUNDRY_MULTIFILLER_DEPLOY_OWNER`D\x82\x01R\x7F_PROD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x04\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x07\x91\x90b\0\x0BDV[\x90P`\0\x82\x80` \x01\x90Q\x81\x01\x90b\0\x05!\x91\x90b\0\x0C\xCDV[\x90Pb\0\x05d`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x83b\0\t\x0EV[b\0\x05\xA5`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7Freactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86b\0\t\x0EV[b\0\x05\xE5`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01\x7Finit code hash\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RPb\0\t\xA7V[`\0`@Q\x80` \x01b\0\x05\xF9\x90b\0\n\xF2V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x82\x82\x03\x81\x01\x83R`\x1F\x90\x91\x01\x16`@\x81\x90Rb\0\x06B\x90\x84\x90\x89\x90\x87\x90\x8A\x90` \x01b\0\r\x87V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x06\x80\x92\x91` \x01b\0\x0E\x12V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x06\xA3\x81\x80Q\x90` \x01 b\0\n=V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x88\x90Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x07\nW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x07\x1FW=`\0\x80>=`\0\xFD[PPPP\x7Fm\xF8\xBF\xE7\xBD\x97/\x95\xE2\xAA\xCBC s>\x99\xC3\xC9a\x12_\x06\x9F\xC9\xD6D&\xD8\xE7C\xC2\x01`\0\x1B\x82\x87\x85\x88`@Qb\0\x07Y\x90b\0\n\xF2V[b\0\x07h\x94\x93\x92\x91\x90b\0\r\x87V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15b\0\x07\x89W=`\0\x80>=`\0\xFD[P\x97P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x07\xF8W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x08\rW=`\0\x80>=`\0\xFD[PPPPb\0\x08R`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x89b\0\t\x0EV[b\0\t\x04`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x89s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x08\xD8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x08\xFE\x91\x90b\0\x0BDV[b\0\t\x0EV[PPPPPPP\x90V[b\0\t\xA3\x82\x82`@Q`$\x01b\0\t'\x92\x91\x90b\0\x0E\x91V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Rb\0\n\xCCV[PPV[b\0\n:\x81`@Q`$\x01b\0\t\xBE\x91\x90b\0\x0E\xCBV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7FA0O\xAC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Rb\0\n\xCCV[PV[b\0\n:\x81`@Q`$\x01b\0\nU\x91\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F'\xB7\xCF\x85\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90R[b\0\n:\x81`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x1E3\x80b\0\x0E\xE1\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15b\0\x0B\x13W`\0\x80\xFD[PQ\x91\x90PV[\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14b\0\x0B?W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15b\0\x0BWW`\0\x80\xFD[b\0\x0Bb\x82b\0\x0B\x1AV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15b\0\x0B\xE2Wb\0\x0B\xE2b\0\x0BiV[`@R\x91\x90PV[`\0[\x83\x81\x10\x15b\0\x0C\x07W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x0B\xEDV[PP`\0\x91\x01RV[`\0` \x82\x84\x03\x12\x15b\0\x0C#W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\0\x0C=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x02\xE2V[`\x01`\x01`\xA0\x1B\x03\x16`\xA0RPb\0\x03\t\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01\xACW`\0\x80\xFD[PV[\x80Qb\0\x01\xBC\x81b\0\x01\x96V[\x91\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x01\xD8W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xF0W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12b\0\x02\x05W`\0\x80\xFD[\x81Q` \x82\x82\x11\x15b\0\x02\x1CWb\0\x02\x1Cb\0\x01\x80V[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15b\0\x02DWb\0\x02Db\0\x01\x80V[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x8B\x84\x11\x15b\0\x02cW`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15b\0\x02\x8CWb\0\x02|\x86b\0\x01\xAFV[\x85R\x94\x82\x01\x94\x93\x82\x01\x93b\0\x02hV[\x98Pb\0\x02\x9D\x90P\x89\x82\x01b\0\x01\xAFV[\x96PPPPPb\0\x02\xB1`@\x86\x01b\0\x01\xAFV[\x91Pb\0\x02\xC1``\x86\x01b\0\x01\xAFV[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15b\0\x02\xF5W`\0\x80\xFD[\x81Qb\0\x03\x02\x81b\0\x01\x96V[\x93\x92PPPV[`\x80Q`\xA0Qa\x1A\xE8b\0\x03K`\09`\0\x81\x81a\t\x87\x01Ra\n9\x01R`\0\x81\x81a\x02\xE9\x01R\x81\x81a\x04\x17\x01R\x81\x81a\x06\xB8\x01Ra\x07\x82\x01Ra\x1A\xE8`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xC0W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0tW\x80c\xD0\xF2\xD8\xAC\x11a\0NW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x11W\x80c\xE5\x13^\xC6\x14a\x021W\x80c\xF2\xFD\xE3\x8B\x14a\x02QW`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01nW\x80c\x94V\xFB\xCC\x14a\x01\xC4W\x80c\xABW&P\x14a\x01\xE4W`\0\x80\xFD[\x80cc\xFB\x0B\x96\x11a\0\xA5W\x80cc\xFB\x0B\x96\x14a\x01\x0EW\x80ci\r\x83 \x14a\x01.W\x80c\x89\xA3\xF16\x14a\x01NW`\0\x80\xFD[\x80cX]\xA6(\x14a\0\xCCW\x80c\\\x8F\x9B\xF6\x14a\0\xEEW`\0\x80\xFD[6a\0\xC7W\0[`\0\x80\xFD[4\x80\x15a\0\xD8W`\0\x80\xFD[Pa\0\xECa\0\xE76`\x04a\x11\xD8V[a\x02qV[\0[4\x80\x15a\0\xFAW`\0\x80\xFD[Pa\0\xECa\x01\t6`\x04a\x12fV[a\x05\x06V[4\x80\x15a\x01\x1AW`\0\x80\xFD[Pa\0\xECa\x01)6`\x04a\x12\x8AV[a\x06'V[4\x80\x15a\x01:W`\0\x80\xFD[Pa\0\xECa\x01I6`\x04a\x12fV[a\x08GV[4\x80\x15a\x01ZW`\0\x80\xFD[Pa\0\xECa\x01i6`\x04a\x12fV[a\x08\xD5V[4\x80\x15a\x01zW`\0\x80\xFD[P`\0Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xD0W`\0\x80\xFD[Pa\0\xECa\x01\xDF6`\x04a\x12\xEAV[a\n\xB8V[4\x80\x15a\x01\xF0W`\0\x80\xFD[P`\x02Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\0\xECa\x02,6`\x04a\x13#V[a\x0B\xEBV[4\x80\x15a\x02=W`\0\x80\xFD[Pa\0\xECa\x02L6`\x04a\x11\xD8V[a\x0C\xC0V[4\x80\x15a\x02]W`\0\x80\xFD[Pa\0\xECa\x02l6`\x04a\x12fV[a\r\xA1V[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02\xC2W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02\xD2\x84\x86\x01\x86a\x14\xF4V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x03pWa\x03h\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03;Wa\x03;a\x16*V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0E\x92\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02\xDBV[P`\0[\x82Q\x81\x10\x15a\x03\xD9W`\x02T\x83Qa\x03\xD1\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x85\x90\x81\x10a\x03;Wa\x03;a\x16*V[`\x01\x01a\x03tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x04n\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x16}V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\x8DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xD3\x91\x90\x81\x01\x90a\x17;V[PG\x15a\x04\xFDW`\x02Ta\x04\xFD\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16Ga\x0FgV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x82R\x90\x92\x16` \x83\x01R\x7F?Gi\xCBf\xE4,\x90\x99\x80\x90'}]r\xEEh>\xF1v\xA1\xF5o\xB1\x852\x8FUJ*\xB7\xDC\x91\x01`@Q\x80\x91\x03\x90\xA1`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0[\x83\x81\x10\x15a\x07DWa\x07<\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x07\nWa\x07\na\x16*V[\x90P` \x02\x01` \x81\x01\x90a\x07\x1F\x91\x90a\x12fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0E\x92V[`\x01\x01a\x06\xABV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x07\xDB\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x18\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x08@\x91\x90\x81\x01\x90a\x17;V[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xC8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[a\x08\xD2\x81Ga\x10\x06V[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\tVW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xE3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x07\x91\x90a\x19fV[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\n\xA6W=`\0\x80>=`\0\xFD[PPPPa\n\xB4\x82Ga\x10\x06V[PPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\n\xB4\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xA9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xCD\x91\x90a\x19fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x10{V[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C8W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\r3X\x84\x90a\x0C\x92\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x19\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\xACW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xFDW=`\0\x80>=`\0\xFD[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\r\rW`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x13\xFBr\xC7\x90a\ri\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x19\xF0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\x97W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0E\"W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x0F\xC1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0F\xC6V[``\x91P[PP\x90P\x80a\x10\x01W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x10\x01W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80\x83`\x1F\x84\x01\x12a\x11\\W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11tW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x11\xA8W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xC0W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x11\xEEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\x06W`\0\x80\xFD[a\x12\x12\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12+W`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xD2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12xW`\0\x80\xFD[\x815a\x12\x83\x81a\x12DV[\x93\x92PPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x12\xA0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\xB8W`\0\x80\xFD[a\x12\xC4\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12\xDDW`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11JV[`\0\x80`@\x83\x85\x03\x12\x15a\x12\xFDW`\0\x80\xFD[\x825a\x13\x08\x81a\x12DV[\x91P` \x83\x015a\x13\x18\x81a\x12DV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x138W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13PW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x13dW`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x13zW`\0\x80\xFD[Pa\x13\x87\x86\x82\x87\x01a\x11\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x14\nWa\x14\na\x13\x94V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14,Wa\x14,a\x13\x94V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x14GW`\0\x80\xFD[\x815` a\x14\\a\x14W\x83a\x14\x12V[a\x13\xC3V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x14~W`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x14\xA3W\x805a\x14\x96\x81a\x12DV[\x83R\x91\x83\x01\x91\x83\x01a\x14\x83V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14\xC8Wa\x14\xC8a\x13\x94V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15\tW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15!W`\0\x80\xFD[a\x15-\x87\x83\x88\x01a\x146V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x15DW`\0\x80\xFD[a\x15P\x88\x82\x89\x01a\x146V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x15fW`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x15wW`\0\x80\xFD[\x805a\x15\x85a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x15\xA4W`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x16\x18W\x805\x87\x81\x11\x15a\x15\xC0W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x15\xD2W`\0\x80\x81\xFD[\x88\x81\x015a\x15\xE2a\x14W\x82a\x14\xAEV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x15\xF7W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x15\xA8V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x16tW\x81\x81\x01Q\x83\x82\x01R` \x01a\x16\\V[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x17-W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x16\xF0\x81\x88\x8A\x01\x89\x85\x01a\x16YV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x16\xABV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17NW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x17fW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x17zW`\0\x80\xFD[\x81Qa\x17\x88a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x17\xA7W`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x18\x1BW\x80Q\x85\x81\x11\x15a\x17\xC3W`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x17\xD5W`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x17\xE7a\x14W\x83a\x14\xAEV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x17\xFCW`\0\x80\x81\xFD[a\x18\x0B\x83\x8C\x83\x01\x84\x87\x01a\x16YV[\x86RPPP\x91\x86\x01\x91\x86\x01a\x17\xABV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x18\xA6W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x18\xC6W`\0\x80\xFD[\x806\x03\x82\x13\x15a\x11\x8FW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x19XW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x199\x82\x8Aa\x18qV[a\x19D\x87\x82\x84a\x18(V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x19\0V[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x19xW`\0\x80\xFD[PQ\x91\x90PV[`\0a\x19\x8B\x82\x83a\x18qV[`@\x85Ra\x19\x9D`@\x86\x01\x82\x84a\x18(V[\x91PPa\x19\xAD` \x84\x01\x84a\x18qV[\x85\x83\x03` \x87\x01Ra\x19\xC0\x83\x82\x84a\x18(V[\x96\x95PPPPPPV[`@\x81R`\0a\x19\xDD`@\x83\x01\x86a\x19\x7FV[\x82\x81\x03` \x84\x01Ra\x19\xC0\x81\x85\x87a\x18(V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x1A\x90W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x1AnW\x82\x83\xFD[a\x1Az\x86\x8D\x83\x01a\x19\x7FV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x1A\x0EV[PPPP\x82\x81\x03` \x84\x01Ra\x1A\xA7\x81\x85\x87a\x18(V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 \x0B9\xCB\x1DN\xD2z\x99\x07^\xB0\xBA+\xD0\x95cY\tgd\xFC]6F*\x8DF\x1E\xF0\xC3\x82\x08dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 '\x8A\x9D~E\xE3C@\xD8J3\xFAG\x8C\x7Fm\x15\xEDydfy\xFF\xB2\x1E\\wG`\xA0b\x96dsolcC\0\x08\x18\x003", + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[Pa)c\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`\x046\x10b\0\0DW_5`\xE0\x1C\x80c\n\x92T\xE4\x14b\0\0HW\x80c\xC0@b&\x14b\0\0JW\x80c\xF8\xCC\xBFG\x14b\0\0~W[_\x80\xFD[\0[b\0\0Tb\0\0\xA3V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTb\0\0\x92\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01b\0\0uV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01b\x91\x90b\0\x08CV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_REACTOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02\"W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02H\x91\x90b\0\x08\x84V[`@Q\x7FM{\xAF\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FFOUNDRY_MULTIFILLER_ADDRESSES_EN`D\x82\x01R\x7FCODED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cM{\xAF\x06\x90`\x84\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x03\x07W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Rb\0\x03N\x91\x90\x81\x01\x90b\0\tJV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_OWNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x04\x0EW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x044\x91\x90b\0\x08\x84V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_SWAPROUTER02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x04\xF4W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x1A\x91\x90b\0\x08\x84V[\x90P_\x83\x80` \x01\x90Q\x81\x01\x90b\0\x053\x91\x90b\0\n\x02V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x88\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15b\0\x05\x9AW_\x80\xFD[PZ\xF1\x15\x80\x15b\0\x05\xADW=_\x80>=_\xFD[PPPP_\x80\x1B\x81\x86\x85\x85`@Qb\0\x05\xC6\x90b\0\x085V[b\0\x05\xD5\x94\x93\x92\x91\x90b\0\n\xB7V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15b\0\x05\xF3W=_\x80>=_\xFD[P\x96P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15b\0\x06^W_\x80\xFD[PZ\xF1\x15\x80\x15b\0\x06qW=_\x80>=_\xFD[PPPPb\0\x06\xB6`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x88b\0\x07oV[b\0\x07f`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x88s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07:W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07`\x91\x90b\0\x08\x84V[b\0\x07oV[PPPPPP\x90V[b\0\x08\x04\x82\x82`@Q`$\x01b\0\x07\x88\x92\x91\x90b\0\x0BAV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Rb\0\x08\x08V[PPV[b\0\x08\x13\x81b\0\x08\x16V[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x1D|\x80b\0\x0B\xB2\x839\x01\x90V[_` \x82\x84\x03\x12\x15b\0\x08TW_\x80\xFD[PQ\x91\x90PV[\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14b\0\x08\x7FW_\x80\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15b\0\x08\x95W_\x80\xFD[b\0\x08\xA0\x82b\0\x08[V[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15b\0\t\x1EWb\0\t\x1Eb\0\x08\xA7V[`@R\x91\x90PV[_[\x83\x81\x10\x15b\0\tBW\x81\x81\x01Q\x83\x82\x01R` \x01b\0\t(V[PP_\x91\x01RV[_` \x82\x84\x03\x12\x15b\0\t[W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\0\tsW_\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12b\0\t\x87W_\x80\xFD[\x81Q\x81\x81\x11\x15b\0\t\x9CWb\0\t\x9Cb\0\x08\xA7V[b\0\t\xCF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01b\0\x08\xD4V[\x91P\x80\x82R\x85` \x82\x85\x01\x01\x11\x15b\0\t\xE6W_\x80\xFD[b\0\t\xF9\x81` \x84\x01` \x86\x01b\0\t&V[P\x94\x93PPPPV[_` \x80\x83\x85\x03\x12\x15b\0\n\x14W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\0\n,W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12b\0\n@W_\x80\xFD[\x81Q\x81\x81\x11\x15b\0\nUWb\0\nUb\0\x08\xA7V[\x80`\x05\x1B\x91Pb\0\nh\x84\x83\x01b\0\x08\xD4V[\x81\x81R\x91\x83\x01\x84\x01\x91\x84\x81\x01\x90\x88\x84\x11\x15b\0\n\x82W_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15b\0\n\xABWb\0\n\x9B\x85b\0\x08[V[\x82R\x93\x85\x01\x93\x90\x85\x01\x90b\0\n\x87V[\x98\x97PPPPPPPPV[`\x80\x80\x82R\x85Q\x90\x82\x01\x81\x90R_\x90` \x90`\xA0\x84\x01\x90\x82\x89\x01\x84[\x82\x81\x10\x15b\0\x0B\x07W\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01b\0\n\xD3V[PPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16` \x85\x01R\x94\x86\x16`@\x84\x01RPP\x92\x16``\x90\x92\x01\x91\x90\x91R\x91\x90PV[`@\x81R_\x83Q\x80`@\x84\x01Rb\0\x0Ba\x81``\x85\x01` \x88\x01b\0\t&V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16` \x83\x01RP`\x1F\x91\x90\x91\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x01``\x01\x91\x90PV\xFE`\xC0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0\x1D|8\x03\x80b\0\x1D|\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01\xB7V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P_[\x84Q\x81\x10\x15b\0\0\xDAW`\x01\x80_\x87\x84\x81Q\x81\x10b\0\0\xA0Wb\0\0\xA0b\0\x02\xBCV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x82R\x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U`\x01\x01b\0\0}V[P`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x91\x90\x91\x17\x90\x91U\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01b\x91\x90b\0\x02\xD0V[`\x01`\x01`\xA0\x1B\x03\x16`\xA0RPb\0\x02\xF5\x92PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01\xA2W_\x80\xFD[PV[\x80Qb\0\x01\xB2\x81b\0\x01\x8DV[\x91\x90PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15b\0\x01\xCBW_\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xE2W_\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12b\0\x01\xF6W_\x80\xFD[\x81Q` \x82\x82\x11\x15b\0\x02\rWb\0\x02\rb\0\x01yV[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15b\0\x025Wb\0\x025b\0\x01yV[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x8B\x84\x11\x15b\0\x02SW_\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15b\0\x02|Wb\0\x02l\x86b\0\x01\xA5V[\x85R\x94\x82\x01\x94\x93\x82\x01\x93b\0\x02XV[\x98Pb\0\x02\x8D\x90P\x89\x82\x01b\0\x01\xA5V[\x96PPPPPb\0\x02\xA1`@\x86\x01b\0\x01\xA5V[\x91Pb\0\x02\xB1``\x86\x01b\0\x01\xA5V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15b\0\x02\xE1W_\x80\xFD[\x81Qb\0\x02\xEE\x81b\0\x01\x8DV[\x93\x92PPPV[`\x80Q`\xA0Qa\x1AIb\0\x033_9_\x81\x81a\tb\x01Ra\n\x12\x01R_\x81\x81a\x02\xD5\x01R\x81\x81a\x04\x02\x01R\x81\x81a\x06\x9B\x01Ra\x07e\x01Ra\x1AI_\xF3\xFE`\x80`@R`\x046\x10a\0\xBBW_5`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0qW\x80c\xD0\xF2\xD8\xAC\x11a\0LW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x02W\x80c\xE5\x13^\xC6\x14a\x02!W\x80c\xF2\xFD\xE3\x8B\x14a\x02@W_\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01cW\x80c\x94V\xFB\xCC\x14a\x01\xB7W\x80c\xABW&P\x14a\x01\xD6W_\x80\xFD[\x80cc\xFB\x0B\x96\x11a\0\xA1W\x80cc\xFB\x0B\x96\x14a\x01\x06W\x80ci\r\x83 \x14a\x01%W\x80c\x89\xA3\xF16\x14a\x01DW_\x80\xFD[\x80cX]\xA6(\x14a\0\xC6W\x80c\\\x8F\x9B\xF6\x14a\0\xE7W_\x80\xFD[6a\0\xC2W\0[_\x80\xFD[4\x80\x15a\0\xD1W_\x80\xFD[Pa\0\xE5a\0\xE06`\x04a\x11\x84V[a\x02_V[\0[4\x80\x15a\0\xF2W_\x80\xFD[Pa\0\xE5a\x01\x016`\x04a\x12\x0CV[a\x04\xECV[4\x80\x15a\x01\x11W_\x80\xFD[Pa\0\xE5a\x01 6`\x04a\x12.V[a\x06\x0CV[4\x80\x15a\x010W_\x80\xFD[Pa\0\xE5a\x01?6`\x04a\x12\x0CV[a\x08%V[4\x80\x15a\x01OW_\x80\xFD[Pa\0\xE5a\x01^6`\x04a\x12\x0CV[a\x08\xB2V[4\x80\x15a\x01nW_\x80\xFD[P_Ta\x01\x8E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xC2W_\x80\xFD[Pa\0\xE5a\x01\xD16`\x04a\x12\x89V[a\n\x8CV[4\x80\x15a\x01\xE1W_\x80\xFD[P`\x02Ta\x01\x8E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x02\rW_\x80\xFD[Pa\0\xE5a\x02\x1C6`\x04a\x12\xC0V[a\x0B\xBCV[4\x80\x15a\x02,W_\x80\xFD[Pa\0\xE5a\x02;6`\x04a\x11\x84V[a\x0C\x8BV[4\x80\x15a\x02KW_\x80\xFD[Pa\0\xE5a\x02Z6`\x04a\x12\x0CV[a\rfV[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02\xB0W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x02\xBF\x84\x86\x01\x86a\x14\x84V[\x92P\x92P\x92P_[\x83Q\x81\x10\x15a\x03\\Wa\x03T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03'Wa\x03'a\x15\xABV[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0EU\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02\xC7V[P_[\x82Q\x81\x10\x15a\x03\xC4W`\x02T\x83Qa\x03\xBC\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x85\x90\x81\x10a\x03'Wa\x03'a\x15\xABV[`\x01\x01a\x03_V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x04Y\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x15\xFAV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x04tW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xB9\x91\x90\x81\x01\x90a\x16\xB6V[PG\x15a\x04\xE3W`\x02Ta\x04\xE3\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16Ga\x0F&V[PPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05qW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x82R\x90\x92\x16` \x83\x01R\x7F?Gi\xCBf\xE4,\x90\x99\x80\x90'}]r\xEEh>\xF1v\xA1\xF5o\xB1\x852\x8FUJ*\xB7\xDC\x91\x01`@Q\x80\x91\x03\x90\xA1`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_[\x83\x81\x10\x15a\x07'Wa\x07\x1F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x06\xEDWa\x06\xEDa\x15\xABV[\x90P` \x02\x01` \x81\x01\x90a\x07\x02\x91\x90a\x12\x0CV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0EUV[`\x01\x01a\x06\x8EV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x07\xBE\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x18?V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x07\xD9W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x08\x1E\x91\x90\x81\x01\x90a\x16\xB6V[PPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xA5W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[a\x08\xAF\x81Ga\x0F\xC1V[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xBCW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xE0\x91\x90a\x18\xCEV[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\nhW_\x80\xFD[PZ\xF1\x15\x80\x15a\nzW=_\x80>=_\xFD[PPPPa\n\x88\x82Ga\x0F\xC1V[PPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\x0CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\n\x88\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0BzW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x9E\x91\x90a\x18\xCEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x103V[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C\x08W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\r3X\x84\x90a\x0Cb\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x19/V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0CyW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xE3W=_\x80>=_\xFD[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C\xD7W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x13\xFBr\xC7\x90a\r3\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x19TV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\rJW_\x80\xFD[PZ\xF1\x15\x80\x15a\r\\W=_\x80>=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\r\xE6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0F W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0F|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0F\x81V[``\x91P[PP\x90P\x80a\x0F\xBCW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\x0F\xBCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0F W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_\x80\x83`\x1F\x84\x01\x12a\x11\x0EW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11%W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11?W_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x11VW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11mW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11?W_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\x11\x97W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xAEW_\x80\xFD[a\x11\xBA\x88\x83\x89\x01a\x10\xFEV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x11\xD2W_\x80\xFD[Pa\x11\xDF\x87\x82\x88\x01a\x11FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xAFW_\x80\xFD[_` \x82\x84\x03\x12\x15a\x12\x1CW_\x80\xFD[\x815a\x12'\x81a\x11\xEBV[\x93\x92PPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x12AW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12XW_\x80\xFD[a\x12d\x88\x83\x89\x01a\x10\xFEV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12|W_\x80\xFD[Pa\x11\xDF\x87\x82\x88\x01a\x10\xFEV[_\x80`@\x83\x85\x03\x12\x15a\x12\x9AW_\x80\xFD[\x825a\x12\xA5\x81a\x11\xEBV[\x91P` \x83\x015a\x12\xB5\x81a\x11\xEBV[\x80\x91PP\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\x12\xD2W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\xE9W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x12\xFCW_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x13\x11W_\x80\xFD[Pa\x13\x1E\x86\x82\x87\x01a\x11FV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x13\x9FWa\x13\x9Fa\x13+V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x13\xC0Wa\x13\xC0a\x13+V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x13\xD9W_\x80\xFD[\x815` a\x13\xEEa\x13\xE9\x83a\x13\xA7V[a\x13XV[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x14\x0FW_\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x144W\x805a\x14'\x81a\x11\xEBV[\x83R\x91\x83\x01\x91\x83\x01a\x14\x14V[P\x96\x95PPPPPPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14XWa\x14Xa\x13+V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x80_``\x84\x86\x03\x12\x15a\x14\x96W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\xADW_\x80\xFD[a\x14\xB9\x87\x83\x88\x01a\x13\xCAV[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x14\xCFW_\x80\xFD[a\x14\xDB\x88\x82\x89\x01a\x13\xCAV[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x14\xF0W_\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x15\0W_\x80\xFD[\x805a\x15\x0Ea\x13\xE9\x82a\x13\xA7V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x15,W_\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x15\x99W\x805\x87\x81\x11\x15a\x15FW_\x80\xFD[\x85\x01`?\x81\x01\x8E\x13a\x15VW_\x80\xFD[\x88\x81\x015a\x15fa\x13\xE9\x82a\x14?V[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x15yW_\x80\xFD[\x81\x89\x84\x01\x8C\x83\x017_\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x150V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x15\xF2W\x81\x81\x01Q\x83\x82\x01R` \x01a\x15\xDAV[PP_\x91\x01RV[_`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01_[\x82\x81\x10\x15a\x16\xA8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x16k\x81\x88\x8A\x01\x89\x85\x01a\x15\xD8V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x16&V[P\x93\x98\x97PPPPPPPPV[_` \x80\x83\x85\x03\x12\x15a\x16\xC7W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x16\xDEW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x16\xF1W_\x80\xFD[\x81Qa\x16\xFFa\x13\xE9\x82a\x13\xA7V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x17\x1DW_\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x17\x8BW\x80Q\x85\x81\x11\x15a\x177W_\x80\xFD[\x86\x01`?\x81\x01\x8B\x13a\x17GW_\x80\xFD[\x87\x81\x01Q`@a\x17Ya\x13\xE9\x83a\x14?V[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x17lW_\x80\xFD[a\x17{\x83\x8C\x83\x01\x84\x87\x01a\x15\xD8V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x17!V[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x18\x12W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x181W_\x80\xFD[\x806\x03\x82\x13\x15a\x11?W_\x80\xFD[_`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86_[\x87\x81\x10\x15a\x18\xC0W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x18\xA1\x82\x8Aa\x17\xDFV[a\x18\xAC\x87\x82\x84a\x17\x98V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x18hV[P\x92\x98\x97PPPPPPPPV[_` \x82\x84\x03\x12\x15a\x18\xDEW_\x80\xFD[PQ\x91\x90PV[_a\x18\xF0\x82\x83a\x17\xDFV[`@\x85Ra\x19\x02`@\x86\x01\x82\x84a\x17\x98V[\x91PPa\x19\x12` \x84\x01\x84a\x17\xDFV[\x85\x83\x03` \x87\x01Ra\x19%\x83\x82\x84a\x17\x98V[\x96\x95PPPPPPV[`@\x81R_a\x19A`@\x83\x01\x86a\x18\xE5V[\x82\x81\x03` \x84\x01Ra\x19%\x81\x85\x87a\x17\x98V[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x19\xF2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x19\xD0W_\x80\xFD[a\x19\xDC\x85\x8C\x83\x01a\x18\xE5V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x19pV[PPP\x82\x81\x03` \x84\x01Ra\x1A\x08\x81\x85\x87a\x17\x98V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 k\x02\xD4\xF6(\x04)\x90\xB8\x18o\x8C\x8C\xBE\x1E;g\x82\xE6\x05P\xAC'\x1C*~\xC8J\xEE,\x8C\x81dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xEB\x12L?r1\\\xAC\xB0\x9B\x15}\x91Zx\xE4\x93\x8B\x0C\xC0\xB5\xA1\x9E\xAE\xBE\x93\x8CL\xE9\n\xC5!dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x60806040523480156200001157600080fd5b5060043610620000465760003560e01c80630a9254e4146200004b578063c0406226146200004d578063f8ccbf471462000081575b600080fd5b005b62000057620000a6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600c54620000959062010000900460ff1681565b604051901515815260200162000078565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f464f554e4452595f505249564154455f4b45590000000000000000000000000060448201526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa15801562000142573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000168919062000b00565b6040517f350d56bf000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f464f554e4452595f4d554c544946494c4c45525f52454143544f525f554e494360448201527f4841494e000000000000000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156200022a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000250919062000b44565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f464f554e4452595f53574150524f5554455230325f55430000000000000000006044820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015620002ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000313919062000b44565b6040517f4d7baf0600000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f464f554e4452595f4d554c544946494c4c45525f4144445245535345535f454e60448201527f434f4445440000000000000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d90634d7baf0690608401600060405180830381865afa158015620003d6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200041e919081019062000c10565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f464f554e4452595f4d554c544946494c4c45525f4445504c4f595f4f574e455260448201527f5f50524f440000000000000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015620004e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000507919062000b44565b905060008280602001905181019062000521919062000ccd565b9050620005646040518060400160405280600581526020017f4f776e6572000000000000000000000000000000000000000000000000000000815250836200090e565b620005a56040518060400160405280600781526020017f72656163746f7200000000000000000000000000000000000000000000000000815250866200090e565b620005e56040518060400160405280600e81526020017f696e697420636f64652068617368000000000000000000000000000000000000815250620009a7565b600060405180602001620005f99062000af2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905262000642908490899087908a9060200162000d87565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262000680929160200162000e12565b6040516020818303038152906040529050620006a3818051906020012062000a3d565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101889052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b1580156200070a57600080fd5b505af11580156200071f573d6000803e3d6000fd5b505050507f6df8bfe7bd972f95e2aacb4320733e99c3c961125f069fc9d64426d8e743c20160001b82878588604051620007599062000af2565b62000768949392919062000d87565b8190604051809103906000f590508015801562000789573d6000803e3d6000fd5b5097507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620007f857600080fd5b505af11580156200080d573d6000803e3d6000fd5b50505050620008526040518060400160405280601481526020017f53776170526f7574657230324578656375746f72000000000000000000000000815250896200090e565b620009046040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508973ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008fe919062000b44565b6200090e565b5050505050505090565b620009a382826040516024016200092792919062000e91565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af3330000000000000000000000000000000000000000000000000000000017905262000acc565b5050565b62000a3a81604051602401620009be919062000ecb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262000acc565b50565b62000a3a8160405160240162000a5591815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f27b7cf85000000000000000000000000000000000000000000000000000000001790525b62000a3a8160006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b611e338062000ee183390190565b60006020828403121562000b1357600080fd5b5051919050565b805173ffffffffffffffffffffffffffffffffffffffff8116811462000b3f57600080fd5b919050565b60006020828403121562000b5757600080fd5b62000b628262000b1a565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562000be25762000be262000b69565b604052919050565b60005b8381101562000c0757818101518382015260200162000bed565b50506000910152565b60006020828403121562000c2357600080fd5b815167ffffffffffffffff8082111562000c3c57600080fd5b818401915084601f83011262000c5157600080fd5b81518181111562000c665762000c6662000b69565b62000c9960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160162000b98565b915080825285602082850101111562000cb157600080fd5b62000cc481602084016020860162000bea565b50949350505050565b6000602080838503121562000ce157600080fd5b825167ffffffffffffffff8082111562000cfa57600080fd5b818501915085601f83011262000d0f57600080fd5b81518181111562000d245762000d2462000b69565b8060051b915062000d3784830162000b98565b818152918301840191848101908884111562000d5257600080fd5b938501935b8385101562000d7b5762000d6b8562000b1a565b8252938501939085019062000d57565b98975050505050505050565b6080808252855190820181905260009060209060a0840190828901845b8281101562000dd857815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010162000da4565b50505073ffffffffffffffffffffffffffffffffffffffff9687166020850152948616604084015250509216606090920191909152919050565b6000835162000e2681846020880162000bea565b83519083019062000e3c81836020880162000bea565b01949350505050565b6000815180845262000e5f81602086016020860162000bea565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152600062000ea6604083018562000e45565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b60208152600062000b62602083018462000e4556fe60c06040523480156200001157600080fd5b5060405162001e3338038062001e338339810160408190526200003491620001c1565b600080546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060005b8451811015620000df576001806000878481518110620000a457620000a4620002cc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010162000080565b50600280546001600160a01b0319166001600160a01b038581169190911790915581166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001699190620002e2565b6001600160a01b031660a052506200030992505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620001ac57600080fd5b50565b8051620001bc8162000196565b919050565b60008060008060808587031215620001d857600080fd5b84516001600160401b0380821115620001f057600080fd5b818701915087601f8301126200020557600080fd5b81516020828211156200021c576200021c62000180565b8160051b604051601f19603f8301168101818110868211171562000244576200024462000180565b60405292835281830193508481018201928b8411156200026357600080fd5b948201945b838610156200028c576200027c86620001af565b8552948201949382019362000268565b98506200029d9050898201620001af565b965050505050620002b160408601620001af565b9150620002c160608601620001af565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b600060208284031215620002f557600080fd5b8151620003028162000196565b9392505050565b60805160a051611ae86200034b600039600081816109870152610a390152600081816102e901528181610417015281816106b801526107820152611ae86000f3fe6080604052600436106100c05760003560e01c80638da5cb5b11610074578063d0f2d8ac1161004e578063d0f2d8ac14610211578063e5135ec614610231578063f2fde38b1461025157600080fd5b80638da5cb5b1461016e5780639456fbcc146101c4578063ab572650146101e457600080fd5b806363fb0b96116100a557806363fb0b961461010e578063690d83201461012e57806389a3f1361461014e57600080fd5b8063585da628146100cc5780635c8f9bf6146100ee57600080fd5b366100c757005b600080fd5b3480156100d857600080fd5b506100ec6100e73660046111d8565b610271565b005b3480156100fa57600080fd5b506100ec610109366004611266565b610506565b34801561011a57600080fd5b506100ec61012936600461128a565b610627565b34801561013a57600080fd5b506100ec610149366004611266565b610847565b34801561015a57600080fd5b506100ec610169366004611266565b6108d5565b34801561017a57600080fd5b5060005461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101d057600080fd5b506100ec6101df3660046112ea565b610ab8565b3480156101f057600080fd5b5060025461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561021d57600080fd5b506100ec61022c366004611323565b610beb565b34801561023d57600080fd5b506100ec61024c3660046111d8565b610cc0565b34801561025d57600080fd5b506100ec61026c366004611266565b610da1565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102c2576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806102d2848601866114f4565b92509250925060005b8351811015610370576103687f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061033b5761033b61162a565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610e929092919063ffffffff16565b6001016102db565b5060005b82518110156103d95760025483516103d19173ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908590811061033b5761033b61162a565b600101610374565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc9061046e907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161167d565b6000604051808303816000875af115801561048d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104d3919081019061173b565b5047156104fd576002546104fd9073ffffffffffffffffffffffffffffffffffffffff1647610f67565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff808516825290921660208301527f3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b60005b838110156107445761073c7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87878581811061070a5761070a61162a565b905060200201602081019061071f9190611266565b73ffffffffffffffffffffffffffffffffffffffff169190610e92565b6001016106ab565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906107db907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869086906004016118d5565b6000604051808303816000875af11580156107fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610840919081019061173b565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6108d28147611006565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a079190611966565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b50505050610ab48247611006565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610ab490829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611966565b73ffffffffffffffffffffffffffffffffffffffff8516919061107b565b3360009081526001602052604081205460ff1615159003610c38576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d33588490610c92908690869086906004016119ca565b600060405180830381600087803b158015610cac57600080fd5b505af11580156104fd573d6000803e3d6000fd5b3360009081526001602052604081205460ff1615159003610d0d576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906313fb72c790610d699087908790879087906004016119f0565b600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610583565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610fc1576040519150601f19603f3d011682016040523d82523d6000602084013e610fc6565b606091505b5050905080611001576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080611001576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610583565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610583565b60008083601f84011261115c57600080fd5b50813567ffffffffffffffff81111561117457600080fd5b6020830191508360208260051b850101111561118f57600080fd5b9250929050565b60008083601f8401126111a857600080fd5b50813567ffffffffffffffff8111156111c057600080fd5b60208301915083602082850101111561118f57600080fd5b600080600080604085870312156111ee57600080fd5b843567ffffffffffffffff8082111561120657600080fd5b6112128883890161114a565b9096509450602087013591508082111561122b57600080fd5b5061123887828801611196565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108d257600080fd5b60006020828403121561127857600080fd5b813561128381611244565b9392505050565b600080600080604085870312156112a057600080fd5b843567ffffffffffffffff808211156112b857600080fd5b6112c48883890161114a565b909650945060208701359150808211156112dd57600080fd5b506112388782880161114a565b600080604083850312156112fd57600080fd5b823561130881611244565b9150602083013561131881611244565b809150509250929050565b60008060006040848603121561133857600080fd5b833567ffffffffffffffff8082111561135057600080fd5b908501906040828803121561136457600080fd5b9093506020850135908082111561137a57600080fd5b5061138786828701611196565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561140a5761140a611394565b604052919050565b600067ffffffffffffffff82111561142c5761142c611394565b5060051b60200190565b600082601f83011261144757600080fd5b8135602061145c61145783611412565b6113c3565b8083825260208201915060208460051b87010193508684111561147e57600080fd5b602086015b848110156114a357803561149681611244565b8352918301918301611483565b509695505050505050565b600067ffffffffffffffff8211156114c8576114c8611394565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060006060848603121561150957600080fd5b833567ffffffffffffffff8082111561152157600080fd5b61152d87838801611436565b945060209150818601358181111561154457600080fd5b61155088828901611436565b9450506040808701358281111561156657600080fd5b8701601f8101891361157757600080fd5b803561158561145782611412565b81815260059190911b8201850190858101908b8311156115a457600080fd5b8684015b83811015611618578035878111156115c05760008081fd5b8501603f81018e136115d25760008081fd5b888101356115e2611457826114ae565b8181528f898385010111156115f75760008081fd5b818984018c83013760009181018b01919091528452509187019187016115a8565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561167457818101518382015260200161165c565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b8281101561172d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452815180518088526116f081888a01898501611659565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016969096018501955092840192908401906001016116ab565b509398975050505050505050565b6000602080838503121561174e57600080fd5b825167ffffffffffffffff8082111561176657600080fd5b818501915085601f83011261177a57600080fd5b815161178861145782611412565b81815260059190911b830184019084810190888311156117a757600080fd5b8585015b8381101561181b578051858111156117c35760008081fd5b8601603f81018b136117d55760008081fd5b8781015160406117e7611457836114ae565b8281528d828486010111156117fc5760008081fd5b61180b838c8301848701611659565b86525050509186019186016117ab565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126118a657600080fd5b830160208101925035905067ffffffffffffffff8111156118c657600080fd5b80360382131561118f57600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b87811015611958577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018352611939828a611871565b611944878284611828565b965050509183019190830190600101611900565b509298975050505050505050565b60006020828403121561197857600080fd5b5051919050565b600061198b8283611871565b6040855261199d604086018284611828565b9150506119ad6020840184611871565b85830360208701526119c0838284611828565b9695505050505050565b6040815260006119dd604083018661197f565b82810360208401526119c0818587611828565b6040808252810184905260006060600586901b830181019083018783805b89811015611a90577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112611a6e578283fd5b611a7a868d830161197f565b9550506020938401939290920191600101611a0e565b505050508281036020840152611aa7818587611828565b97965050505050505056fea26469706673582212200b39cb1d4ed27a99075eb0ba2bd0956359096764fc5d36462a8d461ef0c3820864736f6c63430008180033a2646970667358221220278a9d7e45e34340d84a33fa478c7f6d15ed79646679ffb21e5c774760a0629664736f6c63430008180033 + ///0x608060405234801562000010575f80fd5b506004361062000044575f3560e01c80630a9254e41462000048578063c0406226146200004a578063f8ccbf47146200007e575b5f80fd5b005b62000054620000a3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600c54620000929062010000900460ff1681565b604051901515815260200162000075565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f464f554e4452595f505249564154455f4b45590000000000000000000000000060448201525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156200013c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000162919062000843565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f52454143544f5200000000000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa15801562000222573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000248919062000884565b6040517f4d7baf0600000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f464f554e4452595f4d554c544946494c4c45525f4144445245535345535f454e60448201527f434f44454400000000000000000000000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90634d7baf06906084015f60405180830381865afa15801562000307573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526200034e91908101906200094a565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f4f574e4552000000000000000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156200040e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000434919062000884565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f53574150524f5554455230320000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015620004f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200051a919062000884565b90505f8380602001905181019062000533919062000a02565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101889052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d47906024015f604051808303815f87803b1580156200059a575f80fd5b505af1158015620005ad573d5f803e3d5ffd5b505050505f801b81868585604051620005c69062000835565b620005d5949392919062000ab7565b8190604051809103905ff5905080158015620005f3573d5f803e3d5ffd5b5096507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156200065e575f80fd5b505af115801562000671573d5f803e3d5ffd5b50505050620006b66040518060400160405280601481526020017f53776170526f7574657230324578656375746f72000000000000000000000000815250886200076f565b620007666040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508873ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200073a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000760919062000884565b6200076f565b50505050505090565b6200080482826040516024016200078892919062000b41565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af3330000000000000000000000000000000000000000000000000000000017905262000808565b5050565b620008138162000816565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b611d7c8062000bb283390190565b5f6020828403121562000854575f80fd5b5051919050565b805173ffffffffffffffffffffffffffffffffffffffff811681146200087f575f80fd5b919050565b5f6020828403121562000895575f80fd5b620008a0826200085b565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156200091e576200091e620008a7565b604052919050565b5f5b838110156200094257818101518382015260200162000928565b50505f910152565b5f602082840312156200095b575f80fd5b815167ffffffffffffffff8082111562000973575f80fd5b818401915084601f83011262000987575f80fd5b8151818111156200099c576200099c620008a7565b620009cf60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601620008d4565b9150808252856020828501011115620009e6575f80fd5b620009f981602084016020860162000926565b50949350505050565b5f602080838503121562000a14575f80fd5b825167ffffffffffffffff8082111562000a2c575f80fd5b818501915085601f83011262000a40575f80fd5b81518181111562000a555762000a55620008a7565b8060051b915062000a68848301620008d4565b818152918301840191848101908884111562000a82575f80fd5b938501935b8385101562000aab5762000a9b856200085b565b8252938501939085019062000a87565b98975050505050505050565b608080825285519082018190525f9060209060a0840190828901845b8281101562000b0757815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010162000ad3565b50505073ffffffffffffffffffffffffffffffffffffffff9687166020850152948616604084015250509216606090920191909152919050565b604081525f835180604084015262000b6181606085016020880162000926565b73ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160600191905056fe60c060405234801562000010575f80fd5b5060405162001d7c38038062001d7c8339810160408190526200003391620001b7565b5f80546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f5b8451811015620000da576001805f878481518110620000a057620000a0620002bc565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016200007d565b50600280546001600160a01b0319166001600160a01b038581169190911790915581166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa1580156200013c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001629190620002d0565b6001600160a01b031660a05250620002f592505050565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0381168114620001a2575f80fd5b50565b8051620001b2816200018d565b919050565b5f805f8060808587031215620001cb575f80fd5b84516001600160401b0380821115620001e2575f80fd5b818701915087601f830112620001f6575f80fd5b81516020828211156200020d576200020d62000179565b8160051b604051601f19603f8301168101818110868211171562000235576200023562000179565b60405292835281830193508481018201928b84111562000253575f80fd5b948201945b838610156200027c576200026c86620001a5565b8552948201949382019362000258565b98506200028d9050898201620001a5565b965050505050620002a160408601620001a5565b9150620002b160608601620001a5565b905092959194509250565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215620002e1575f80fd5b8151620002ee816200018d565b9392505050565b60805160a051611a49620003335f395f81816109620152610a1201525f81816102d5015281816104020152818161069b01526107650152611a495ff3fe6080604052600436106100bb575f3560e01c80638da5cb5b11610071578063d0f2d8ac1161004c578063d0f2d8ac14610202578063e5135ec614610221578063f2fde38b14610240575f80fd5b80638da5cb5b146101635780639456fbcc146101b7578063ab572650146101d6575f80fd5b806363fb0b96116100a157806363fb0b9614610106578063690d83201461012557806389a3f13614610144575f80fd5b8063585da628146100c65780635c8f9bf6146100e7575f80fd5b366100c257005b5f80fd5b3480156100d1575f80fd5b506100e56100e0366004611184565b61025f565b005b3480156100f2575f80fd5b506100e561010136600461120c565b6104ec565b348015610111575f80fd5b506100e561012036600461122e565b61060c565b348015610130575f80fd5b506100e561013f36600461120c565b610825565b34801561014f575f80fd5b506100e561015e36600461120c565b6108b2565b34801561016e575f80fd5b505f5461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101c2575f80fd5b506100e56101d1366004611289565b610a8c565b3480156101e1575f80fd5b5060025461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020d575f80fd5b506100e561021c3660046112c0565b610bbc565b34801561022c575f80fd5b506100e561023b366004611184565b610c8b565b34801561024b575f80fd5b506100e561025a36600461120c565b610d66565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102b0576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80806102bf84860186611484565b9250925092505f5b835181101561035c576103547f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff868481518110610327576103276115ab565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610e559092919063ffffffff16565b6001016102c7565b505f5b82518110156103c45760025483516103bc9173ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869085908110610327576103276115ab565b60010161035f565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610459907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9085906004016115fa565b5f604051808303815f875af1158015610474573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104b991908101906116b6565b5047156104e3576002546104e39073ffffffffffffffffffffffffffffffffffffffff1647610f26565b50505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff808516825290921660208301527f3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461068c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b5f5b838110156107275761071f7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8787858181106106ed576106ed6115ab565b9050602002016020810190610702919061120c565b73ffffffffffffffffffffffffffffffffffffffff169190610e55565b60010161068e565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906107be907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908690869060040161183f565b5f604051808303815f875af11580156107d9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261081e91908101906116b6565b5050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b6108af8147610fc1565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e091906118ce565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b158015610a68575f80fd5b505af1158015610a7a573d5f803e3d5ffd5b50505050610a888247610fc1565b5050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610a8890829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610b7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9e91906118ce565b73ffffffffffffffffffffffffffffffffffffffff85169190611033565b335f9081526001602052604081205460ff1615159003610c08576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d33588490610c629086908690869060040161192f565b5f604051808303815f87803b158015610c79575f80fd5b505af11580156104e3573d5f803e3d5ffd5b335f9081526001602052604081205460ff1615159003610cd7576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906313fb72c790610d33908790879087908790600401611954565b5f604051808303815f87803b158015610d4a575f80fd5b505af1158015610d5c573d5f803e3d5ffd5b5050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610f20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610568565b50505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610f7c576040519150601f19603f3d011682016040523d82523d5f602084013e610f81565b606091505b5050905080610fbc576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f805f805f85875af1905080610fbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610568565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610f20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610568565b5f8083601f84011261110e575f80fd5b50813567ffffffffffffffff811115611125575f80fd5b6020830191508360208260051b850101111561113f575f80fd5b9250929050565b5f8083601f840112611156575f80fd5b50813567ffffffffffffffff81111561116d575f80fd5b60208301915083602082850101111561113f575f80fd5b5f805f8060408587031215611197575f80fd5b843567ffffffffffffffff808211156111ae575f80fd5b6111ba888389016110fe565b909650945060208701359150808211156111d2575f80fd5b506111df87828801611146565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108af575f80fd5b5f6020828403121561121c575f80fd5b8135611227816111eb565b9392505050565b5f805f8060408587031215611241575f80fd5b843567ffffffffffffffff80821115611258575f80fd5b611264888389016110fe565b9096509450602087013591508082111561127c575f80fd5b506111df878288016110fe565b5f806040838503121561129a575f80fd5b82356112a5816111eb565b915060208301356112b5816111eb565b809150509250929050565b5f805f604084860312156112d2575f80fd5b833567ffffffffffffffff808211156112e9575f80fd5b90850190604082880312156112fc575f80fd5b90935060208501359080821115611311575f80fd5b5061131e86828701611146565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561139f5761139f61132b565b604052919050565b5f67ffffffffffffffff8211156113c0576113c061132b565b5060051b60200190565b5f82601f8301126113d9575f80fd5b813560206113ee6113e9836113a7565b611358565b8083825260208201915060208460051b87010193508684111561140f575f80fd5b602086015b84811015611434578035611427816111eb565b8352918301918301611414565b509695505050505050565b5f67ffffffffffffffff8211156114585761145861132b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f805f60608486031215611496575f80fd5b833567ffffffffffffffff808211156114ad575f80fd5b6114b9878388016113ca565b94506020915081860135818111156114cf575f80fd5b6114db888289016113ca565b945050604080870135828111156114f0575f80fd5b8701601f81018913611500575f80fd5b803561150e6113e9826113a7565b81815260059190911b8201850190858101908b83111561152c575f80fd5b8684015b8381101561159957803587811115611546575f80fd5b8501603f81018e13611556575f80fd5b888101356115666113e98261143f565b8181528f89838501011115611579575f80fd5b818984018c8301375f9181018b0191909152845250918701918701611530565b50809750505050505050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156115f25781810151838201526020016115da565b50505f910152565b5f60408201848352602060408185015281855180845260608601915060608160051b87010193508287015f5b828110156116a8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261166b81888a018985016115d8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101611626565b509398975050505050505050565b5f60208083850312156116c7575f80fd5b825167ffffffffffffffff808211156116de575f80fd5b818501915085601f8301126116f1575f80fd5b81516116ff6113e9826113a7565b81815260059190911b8301840190848101908883111561171d575f80fd5b8585015b8381101561178b57805185811115611737575f80fd5b8601603f81018b13611747575f80fd5b8781015160406117596113e98361143f565b8281528d8284860101111561176c575f80fd5b61177b838c83018487016115d8565b8652505050918601918601611721565b5098975050505050505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611812575f80fd5b830160208101925035905067ffffffffffffffff811115611831575f80fd5b80360382131561113f575f80fd5b5f604082018583526020604060208501528185835260608501905060608660051b8601019250865f5b878110156118c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08786030183526118a1828a6117df565b6118ac878284611798565b965050509183019190830190600101611868565b509298975050505050505050565b5f602082840312156118de575f80fd5b5051919050565b5f6118f082836117df565b60408552611902604086018284611798565b91505061191260208401846117df565b8583036020870152611925838284611798565b9695505050505050565b604081525f61194160408301866118e5565b8281036020840152611925818587611798565b604080825281018490525f6060600586901b8301810190830187835b888110156119f2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18b36030181126119d0575f80fd5b6119dc858c83016118e5565b9450506020928301929190910190600101611970565b5050508281036020840152611a08818587611798565b97965050505050505056fea26469706673582212206b02d4f628042990b8186f8c8cbe1e3b6782e60550ac271c2a7ec84aee2c8c8164736f6c63430008180033a2646970667358221220eb124c3f72315cacb09b157d915a78e4938b0cc0b5a19eaebe938c4ce90ac52164736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`\x046\x10b\0\0FW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14b\0\0KW\x80c\xC0@b&\x14b\0\0MW\x80c\xF8\xCC\xBFG\x14b\0\0\x81W[`\0\x80\xFD[\0[b\0\0Wb\0\0\xA6V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTb\0\0\x95\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01b\0\0xV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01BW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01h\x91\x90b\0\x0B\0V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FFOUNDRY_MULTIFILLER_REACTOR_UNIC`D\x82\x01R\x7FHAIN\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02*W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02P\x91\x90b\0\x0BDV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02_UC\0\0\0\0\0\0\0\0\0`D\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x03\x13\x91\x90b\0\x0BDV[`@Q\x7FM{\xAF\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FFOUNDRY_MULTIFILLER_ADDRESSES_EN`D\x82\x01R\x7FCODED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cM{\xAF\x06\x90`\x84\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x03\xD6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Rb\0\x04\x1E\x91\x90\x81\x01\x90b\0\x0C\x10V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FFOUNDRY_MULTIFILLER_DEPLOY_OWNER`D\x82\x01R\x7F_PROD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x04\xE1W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x07\x91\x90b\0\x0BDV[\x90P`\0\x82\x80` \x01\x90Q\x81\x01\x90b\0\x05!\x91\x90b\0\x0C\xCDV[\x90Pb\0\x05d`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7FOwner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x83b\0\t\x0EV[b\0\x05\xA5`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7Freactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x86b\0\t\x0EV[b\0\x05\xE5`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01\x7Finit code hash\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RPb\0\t\xA7V[`\0`@Q\x80` \x01b\0\x05\xF9\x90b\0\n\xF2V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x82\x82\x03\x81\x01\x83R`\x1F\x90\x91\x01\x16`@\x81\x90Rb\0\x06B\x90\x84\x90\x89\x90\x87\x90\x8A\x90` \x01b\0\r\x87V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Rb\0\x06\x80\x92\x91` \x01b\0\x0E\x12V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pb\0\x06\xA3\x81\x80Q\x90` \x01 b\0\n=V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x88\x90Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x07\nW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x07\x1FW=`\0\x80>=`\0\xFD[PPPP\x7Fm\xF8\xBF\xE7\xBD\x97/\x95\xE2\xAA\xCBC s>\x99\xC3\xC9a\x12_\x06\x9F\xC9\xD6D&\xD8\xE7C\xC2\x01`\0\x1B\x82\x87\x85\x88`@Qb\0\x07Y\x90b\0\n\xF2V[b\0\x07h\x94\x93\x92\x91\x90b\0\r\x87V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15b\0\x07\x89W=`\0\x80>=`\0\xFD[P\x97P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x07\xF8W`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x08\rW=`\0\x80>=`\0\xFD[PPPPb\0\x08R`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x89b\0\t\x0EV[b\0\t\x04`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x89s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x08\xD8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x08\xFE\x91\x90b\0\x0BDV[b\0\t\x0EV[PPPPPPP\x90V[b\0\t\xA3\x82\x82`@Q`$\x01b\0\t'\x92\x91\x90b\0\x0E\x91V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Rb\0\n\xCCV[PPV[b\0\n:\x81`@Q`$\x01b\0\t\xBE\x91\x90b\0\x0E\xCBV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7FA0O\xAC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Rb\0\n\xCCV[PV[b\0\n:\x81`@Q`$\x01b\0\nU\x91\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F'\xB7\xCF\x85\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90R[b\0\n:\x81`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x1E3\x80b\0\x0E\xE1\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15b\0\x0B\x13W`\0\x80\xFD[PQ\x91\x90PV[\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14b\0\x0B?W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15b\0\x0BWW`\0\x80\xFD[b\0\x0Bb\x82b\0\x0B\x1AV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15b\0\x0B\xE2Wb\0\x0B\xE2b\0\x0BiV[`@R\x91\x90PV[`\0[\x83\x81\x10\x15b\0\x0C\x07W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x0B\xEDV[PP`\0\x91\x01RV[`\0` \x82\x84\x03\x12\x15b\0\x0C#W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\0\x0C=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x02\xE2V[`\x01`\x01`\xA0\x1B\x03\x16`\xA0RPb\0\x03\t\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01\xACW`\0\x80\xFD[PV[\x80Qb\0\x01\xBC\x81b\0\x01\x96V[\x91\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x01\xD8W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xF0W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12b\0\x02\x05W`\0\x80\xFD[\x81Q` \x82\x82\x11\x15b\0\x02\x1CWb\0\x02\x1Cb\0\x01\x80V[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15b\0\x02DWb\0\x02Db\0\x01\x80V[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x8B\x84\x11\x15b\0\x02cW`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15b\0\x02\x8CWb\0\x02|\x86b\0\x01\xAFV[\x85R\x94\x82\x01\x94\x93\x82\x01\x93b\0\x02hV[\x98Pb\0\x02\x9D\x90P\x89\x82\x01b\0\x01\xAFV[\x96PPPPPb\0\x02\xB1`@\x86\x01b\0\x01\xAFV[\x91Pb\0\x02\xC1``\x86\x01b\0\x01\xAFV[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15b\0\x02\xF5W`\0\x80\xFD[\x81Qb\0\x03\x02\x81b\0\x01\x96V[\x93\x92PPPV[`\x80Q`\xA0Qa\x1A\xE8b\0\x03K`\09`\0\x81\x81a\t\x87\x01Ra\n9\x01R`\0\x81\x81a\x02\xE9\x01R\x81\x81a\x04\x17\x01R\x81\x81a\x06\xB8\x01Ra\x07\x82\x01Ra\x1A\xE8`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xC0W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0tW\x80c\xD0\xF2\xD8\xAC\x11a\0NW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x11W\x80c\xE5\x13^\xC6\x14a\x021W\x80c\xF2\xFD\xE3\x8B\x14a\x02QW`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01nW\x80c\x94V\xFB\xCC\x14a\x01\xC4W\x80c\xABW&P\x14a\x01\xE4W`\0\x80\xFD[\x80cc\xFB\x0B\x96\x11a\0\xA5W\x80cc\xFB\x0B\x96\x14a\x01\x0EW\x80ci\r\x83 \x14a\x01.W\x80c\x89\xA3\xF16\x14a\x01NW`\0\x80\xFD[\x80cX]\xA6(\x14a\0\xCCW\x80c\\\x8F\x9B\xF6\x14a\0\xEEW`\0\x80\xFD[6a\0\xC7W\0[`\0\x80\xFD[4\x80\x15a\0\xD8W`\0\x80\xFD[Pa\0\xECa\0\xE76`\x04a\x11\xD8V[a\x02qV[\0[4\x80\x15a\0\xFAW`\0\x80\xFD[Pa\0\xECa\x01\t6`\x04a\x12fV[a\x05\x06V[4\x80\x15a\x01\x1AW`\0\x80\xFD[Pa\0\xECa\x01)6`\x04a\x12\x8AV[a\x06'V[4\x80\x15a\x01:W`\0\x80\xFD[Pa\0\xECa\x01I6`\x04a\x12fV[a\x08GV[4\x80\x15a\x01ZW`\0\x80\xFD[Pa\0\xECa\x01i6`\x04a\x12fV[a\x08\xD5V[4\x80\x15a\x01zW`\0\x80\xFD[P`\0Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xD0W`\0\x80\xFD[Pa\0\xECa\x01\xDF6`\x04a\x12\xEAV[a\n\xB8V[4\x80\x15a\x01\xF0W`\0\x80\xFD[P`\x02Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\0\xECa\x02,6`\x04a\x13#V[a\x0B\xEBV[4\x80\x15a\x02=W`\0\x80\xFD[Pa\0\xECa\x02L6`\x04a\x11\xD8V[a\x0C\xC0V[4\x80\x15a\x02]W`\0\x80\xFD[Pa\0\xECa\x02l6`\x04a\x12fV[a\r\xA1V[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02\xC2W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02\xD2\x84\x86\x01\x86a\x14\xF4V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x03pWa\x03h\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03;Wa\x03;a\x16*V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0E\x92\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02\xDBV[P`\0[\x82Q\x81\x10\x15a\x03\xD9W`\x02T\x83Qa\x03\xD1\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x85\x90\x81\x10a\x03;Wa\x03;a\x16*V[`\x01\x01a\x03tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x04n\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x16}V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\x8DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xD3\x91\x90\x81\x01\x90a\x17;V[PG\x15a\x04\xFDW`\x02Ta\x04\xFD\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16Ga\x0FgV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x82R\x90\x92\x16` \x83\x01R\x7F?Gi\xCBf\xE4,\x90\x99\x80\x90'}]r\xEEh>\xF1v\xA1\xF5o\xB1\x852\x8FUJ*\xB7\xDC\x91\x01`@Q\x80\x91\x03\x90\xA1`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0[\x83\x81\x10\x15a\x07DWa\x07<\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x07\nWa\x07\na\x16*V[\x90P` \x02\x01` \x81\x01\x90a\x07\x1F\x91\x90a\x12fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0E\x92V[`\x01\x01a\x06\xABV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x07\xDB\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x18\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x08@\x91\x90\x81\x01\x90a\x17;V[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xC8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[a\x08\xD2\x81Ga\x10\x06V[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\tVW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xE3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x07\x91\x90a\x19fV[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\n\xA6W=`\0\x80>=`\0\xFD[PPPPa\n\xB4\x82Ga\x10\x06V[PPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\n\xB4\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xA9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xCD\x91\x90a\x19fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x10{V[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C8W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\r3X\x84\x90a\x0C\x92\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x19\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\xACW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xFDW=`\0\x80>=`\0\xFD[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\r\rW`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x13\xFBr\xC7\x90a\ri\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x19\xF0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\x97W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0E\"W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x0F\xC1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0F\xC6V[``\x91P[PP\x90P\x80a\x10\x01W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x10\x01W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80\x83`\x1F\x84\x01\x12a\x11\\W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11tW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x11\xA8W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xC0W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x11\xEEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\x06W`\0\x80\xFD[a\x12\x12\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12+W`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xD2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12xW`\0\x80\xFD[\x815a\x12\x83\x81a\x12DV[\x93\x92PPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x12\xA0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\xB8W`\0\x80\xFD[a\x12\xC4\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12\xDDW`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11JV[`\0\x80`@\x83\x85\x03\x12\x15a\x12\xFDW`\0\x80\xFD[\x825a\x13\x08\x81a\x12DV[\x91P` \x83\x015a\x13\x18\x81a\x12DV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x138W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13PW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x13dW`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x13zW`\0\x80\xFD[Pa\x13\x87\x86\x82\x87\x01a\x11\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x14\nWa\x14\na\x13\x94V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14,Wa\x14,a\x13\x94V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x14GW`\0\x80\xFD[\x815` a\x14\\a\x14W\x83a\x14\x12V[a\x13\xC3V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x14~W`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x14\xA3W\x805a\x14\x96\x81a\x12DV[\x83R\x91\x83\x01\x91\x83\x01a\x14\x83V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14\xC8Wa\x14\xC8a\x13\x94V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15\tW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15!W`\0\x80\xFD[a\x15-\x87\x83\x88\x01a\x146V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x15DW`\0\x80\xFD[a\x15P\x88\x82\x89\x01a\x146V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x15fW`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x15wW`\0\x80\xFD[\x805a\x15\x85a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x15\xA4W`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x16\x18W\x805\x87\x81\x11\x15a\x15\xC0W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x15\xD2W`\0\x80\x81\xFD[\x88\x81\x015a\x15\xE2a\x14W\x82a\x14\xAEV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x15\xF7W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x15\xA8V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x16tW\x81\x81\x01Q\x83\x82\x01R` \x01a\x16\\V[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x17-W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x16\xF0\x81\x88\x8A\x01\x89\x85\x01a\x16YV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x16\xABV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17NW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x17fW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x17zW`\0\x80\xFD[\x81Qa\x17\x88a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x17\xA7W`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x18\x1BW\x80Q\x85\x81\x11\x15a\x17\xC3W`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x17\xD5W`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x17\xE7a\x14W\x83a\x14\xAEV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x17\xFCW`\0\x80\x81\xFD[a\x18\x0B\x83\x8C\x83\x01\x84\x87\x01a\x16YV[\x86RPPP\x91\x86\x01\x91\x86\x01a\x17\xABV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x18\xA6W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x18\xC6W`\0\x80\xFD[\x806\x03\x82\x13\x15a\x11\x8FW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x19XW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x199\x82\x8Aa\x18qV[a\x19D\x87\x82\x84a\x18(V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x19\0V[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x19xW`\0\x80\xFD[PQ\x91\x90PV[`\0a\x19\x8B\x82\x83a\x18qV[`@\x85Ra\x19\x9D`@\x86\x01\x82\x84a\x18(V[\x91PPa\x19\xAD` \x84\x01\x84a\x18qV[\x85\x83\x03` \x87\x01Ra\x19\xC0\x83\x82\x84a\x18(V[\x96\x95PPPPPPV[`@\x81R`\0a\x19\xDD`@\x83\x01\x86a\x19\x7FV[\x82\x81\x03` \x84\x01Ra\x19\xC0\x81\x85\x87a\x18(V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x1A\x90W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x1AnW\x82\x83\xFD[a\x1Az\x86\x8D\x83\x01a\x19\x7FV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x1A\x0EV[PPPP\x82\x81\x03` \x84\x01Ra\x1A\xA7\x81\x85\x87a\x18(V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 \x0B9\xCB\x1DN\xD2z\x99\x07^\xB0\xBA+\xD0\x95cY\tgd\xFC]6F*\x8DF\x1E\xF0\xC3\x82\x08dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 '\x8A\x9D~E\xE3C@\xD8J3\xFAG\x8C\x7Fm\x15\xEDydfy\xFF\xB2\x1E\\wG`\xA0b\x96dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`\x046\x10b\0\0DW_5`\xE0\x1C\x80c\n\x92T\xE4\x14b\0\0HW\x80c\xC0@b&\x14b\0\0JW\x80c\xF8\xCC\xBFG\x14b\0\0~W[_\x80\xFD[\0[b\0\0Tb\0\0\xA3V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTb\0\0\x92\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01b\0\0uV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01b\x91\x90b\0\x08CV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_REACTOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x02\"W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x02H\x91\x90b\0\x08\x84V[`@Q\x7FM{\xAF\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FFOUNDRY_MULTIFILLER_ADDRESSES_EN`D\x82\x01R\x7FCODED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90cM{\xAF\x06\x90`\x84\x01_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x03\x07W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Rb\0\x03N\x91\x90\x81\x01\x90b\0\tJV[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_OWNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x04\x0EW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x044\x91\x90b\0\x08\x84V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_SWAPROUTER02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x04\xF4W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x05\x1A\x91\x90b\0\x08\x84V[\x90P_\x83\x80` \x01\x90Q\x81\x01\x90b\0\x053\x91\x90b\0\n\x02V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x88\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15b\0\x05\x9AW_\x80\xFD[PZ\xF1\x15\x80\x15b\0\x05\xADW=_\x80>=_\xFD[PPPP_\x80\x1B\x81\x86\x85\x85`@Qb\0\x05\xC6\x90b\0\x085V[b\0\x05\xD5\x94\x93\x92\x91\x90b\0\n\xB7V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15b\0\x05\xF3W=_\x80>=_\xFD[P\x96P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15b\0\x06^W_\x80\xFD[PZ\xF1\x15\x80\x15b\0\x06qW=_\x80>=_\xFD[PPPPb\0\x06\xB6`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x88b\0\x07oV[b\0\x07f`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x88s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x07:W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x07`\x91\x90b\0\x08\x84V[b\0\x07oV[PPPPPP\x90V[b\0\x08\x04\x82\x82`@Q`$\x01b\0\x07\x88\x92\x91\x90b\0\x0BAV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Rb\0\x08\x08V[PPV[b\0\x08\x13\x81b\0\x08\x16V[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x1D|\x80b\0\x0B\xB2\x839\x01\x90V[_` \x82\x84\x03\x12\x15b\0\x08TW_\x80\xFD[PQ\x91\x90PV[\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14b\0\x08\x7FW_\x80\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15b\0\x08\x95W_\x80\xFD[b\0\x08\xA0\x82b\0\x08[V[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15b\0\t\x1EWb\0\t\x1Eb\0\x08\xA7V[`@R\x91\x90PV[_[\x83\x81\x10\x15b\0\tBW\x81\x81\x01Q\x83\x82\x01R` \x01b\0\t(V[PP_\x91\x01RV[_` \x82\x84\x03\x12\x15b\0\t[W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\0\tsW_\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12b\0\t\x87W_\x80\xFD[\x81Q\x81\x81\x11\x15b\0\t\x9CWb\0\t\x9Cb\0\x08\xA7V[b\0\t\xCF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01b\0\x08\xD4V[\x91P\x80\x82R\x85` \x82\x85\x01\x01\x11\x15b\0\t\xE6W_\x80\xFD[b\0\t\xF9\x81` \x84\x01` \x86\x01b\0\t&V[P\x94\x93PPPPV[_` \x80\x83\x85\x03\x12\x15b\0\n\x14W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15b\0\n,W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12b\0\n@W_\x80\xFD[\x81Q\x81\x81\x11\x15b\0\nUWb\0\nUb\0\x08\xA7V[\x80`\x05\x1B\x91Pb\0\nh\x84\x83\x01b\0\x08\xD4V[\x81\x81R\x91\x83\x01\x84\x01\x91\x84\x81\x01\x90\x88\x84\x11\x15b\0\n\x82W_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15b\0\n\xABWb\0\n\x9B\x85b\0\x08[V[\x82R\x93\x85\x01\x93\x90\x85\x01\x90b\0\n\x87V[\x98\x97PPPPPPPPV[`\x80\x80\x82R\x85Q\x90\x82\x01\x81\x90R_\x90` \x90`\xA0\x84\x01\x90\x82\x89\x01\x84[\x82\x81\x10\x15b\0\x0B\x07W\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01b\0\n\xD3V[PPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16` \x85\x01R\x94\x86\x16`@\x84\x01RPP\x92\x16``\x90\x92\x01\x91\x90\x91R\x91\x90PV[`@\x81R_\x83Q\x80`@\x84\x01Rb\0\x0Ba\x81``\x85\x01` \x88\x01b\0\t&V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16` \x83\x01RP`\x1F\x91\x90\x91\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x01``\x01\x91\x90PV\xFE`\xC0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0\x1D|8\x03\x80b\0\x1D|\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01\xB7V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P_[\x84Q\x81\x10\x15b\0\0\xDAW`\x01\x80_\x87\x84\x81Q\x81\x10b\0\0\xA0Wb\0\0\xA0b\0\x02\xBCV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x82R\x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U`\x01\x01b\0\0}V[P`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x91\x90\x91\x17\x90\x91U\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01b\x91\x90b\0\x02\xD0V[`\x01`\x01`\xA0\x1B\x03\x16`\xA0RPb\0\x02\xF5\x92PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01\xA2W_\x80\xFD[PV[\x80Qb\0\x01\xB2\x81b\0\x01\x8DV[\x91\x90PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15b\0\x01\xCBW_\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xE2W_\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12b\0\x01\xF6W_\x80\xFD[\x81Q` \x82\x82\x11\x15b\0\x02\rWb\0\x02\rb\0\x01yV[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15b\0\x025Wb\0\x025b\0\x01yV[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x8B\x84\x11\x15b\0\x02SW_\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15b\0\x02|Wb\0\x02l\x86b\0\x01\xA5V[\x85R\x94\x82\x01\x94\x93\x82\x01\x93b\0\x02XV[\x98Pb\0\x02\x8D\x90P\x89\x82\x01b\0\x01\xA5V[\x96PPPPPb\0\x02\xA1`@\x86\x01b\0\x01\xA5V[\x91Pb\0\x02\xB1``\x86\x01b\0\x01\xA5V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15b\0\x02\xE1W_\x80\xFD[\x81Qb\0\x02\xEE\x81b\0\x01\x8DV[\x93\x92PPPV[`\x80Q`\xA0Qa\x1AIb\0\x033_9_\x81\x81a\tb\x01Ra\n\x12\x01R_\x81\x81a\x02\xD5\x01R\x81\x81a\x04\x02\x01R\x81\x81a\x06\x9B\x01Ra\x07e\x01Ra\x1AI_\xF3\xFE`\x80`@R`\x046\x10a\0\xBBW_5`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0qW\x80c\xD0\xF2\xD8\xAC\x11a\0LW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x02W\x80c\xE5\x13^\xC6\x14a\x02!W\x80c\xF2\xFD\xE3\x8B\x14a\x02@W_\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01cW\x80c\x94V\xFB\xCC\x14a\x01\xB7W\x80c\xABW&P\x14a\x01\xD6W_\x80\xFD[\x80cc\xFB\x0B\x96\x11a\0\xA1W\x80cc\xFB\x0B\x96\x14a\x01\x06W\x80ci\r\x83 \x14a\x01%W\x80c\x89\xA3\xF16\x14a\x01DW_\x80\xFD[\x80cX]\xA6(\x14a\0\xC6W\x80c\\\x8F\x9B\xF6\x14a\0\xE7W_\x80\xFD[6a\0\xC2W\0[_\x80\xFD[4\x80\x15a\0\xD1W_\x80\xFD[Pa\0\xE5a\0\xE06`\x04a\x11\x84V[a\x02_V[\0[4\x80\x15a\0\xF2W_\x80\xFD[Pa\0\xE5a\x01\x016`\x04a\x12\x0CV[a\x04\xECV[4\x80\x15a\x01\x11W_\x80\xFD[Pa\0\xE5a\x01 6`\x04a\x12.V[a\x06\x0CV[4\x80\x15a\x010W_\x80\xFD[Pa\0\xE5a\x01?6`\x04a\x12\x0CV[a\x08%V[4\x80\x15a\x01OW_\x80\xFD[Pa\0\xE5a\x01^6`\x04a\x12\x0CV[a\x08\xB2V[4\x80\x15a\x01nW_\x80\xFD[P_Ta\x01\x8E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xC2W_\x80\xFD[Pa\0\xE5a\x01\xD16`\x04a\x12\x89V[a\n\x8CV[4\x80\x15a\x01\xE1W_\x80\xFD[P`\x02Ta\x01\x8E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x02\rW_\x80\xFD[Pa\0\xE5a\x02\x1C6`\x04a\x12\xC0V[a\x0B\xBCV[4\x80\x15a\x02,W_\x80\xFD[Pa\0\xE5a\x02;6`\x04a\x11\x84V[a\x0C\x8BV[4\x80\x15a\x02KW_\x80\xFD[Pa\0\xE5a\x02Z6`\x04a\x12\x0CV[a\rfV[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02\xB0W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x02\xBF\x84\x86\x01\x86a\x14\x84V[\x92P\x92P\x92P_[\x83Q\x81\x10\x15a\x03\\Wa\x03T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03'Wa\x03'a\x15\xABV[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0EU\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02\xC7V[P_[\x82Q\x81\x10\x15a\x03\xC4W`\x02T\x83Qa\x03\xBC\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x85\x90\x81\x10a\x03'Wa\x03'a\x15\xABV[`\x01\x01a\x03_V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x04Y\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x15\xFAV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x04tW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xB9\x91\x90\x81\x01\x90a\x16\xB6V[PG\x15a\x04\xE3W`\x02Ta\x04\xE3\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16Ga\x0F&V[PPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05qW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x82R\x90\x92\x16` \x83\x01R\x7F?Gi\xCBf\xE4,\x90\x99\x80\x90'}]r\xEEh>\xF1v\xA1\xF5o\xB1\x852\x8FUJ*\xB7\xDC\x91\x01`@Q\x80\x91\x03\x90\xA1`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_[\x83\x81\x10\x15a\x07'Wa\x07\x1F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x06\xEDWa\x06\xEDa\x15\xABV[\x90P` \x02\x01` \x81\x01\x90a\x07\x02\x91\x90a\x12\x0CV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0EUV[`\x01\x01a\x06\x8EV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x07\xBE\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x18?V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x07\xD9W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x08\x1E\x91\x90\x81\x01\x90a\x16\xB6V[PPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xA5W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[a\x08\xAF\x81Ga\x0F\xC1V[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xBCW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xE0\x91\x90a\x18\xCEV[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\nhW_\x80\xFD[PZ\xF1\x15\x80\x15a\nzW=_\x80>=_\xFD[PPPPa\n\x88\x82Ga\x0F\xC1V[PPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\x0CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\n\x88\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0BzW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x9E\x91\x90a\x18\xCEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x103V[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C\x08W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\r3X\x84\x90a\x0Cb\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x19/V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0CyW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xE3W=_\x80>=_\xFD[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C\xD7W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x13\xFBr\xC7\x90a\r3\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x19TV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\rJW_\x80\xFD[PZ\xF1\x15\x80\x15a\r\\W=_\x80>=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\r\xE6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0F W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0F|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0F\x81V[``\x91P[PP\x90P\x80a\x0F\xBCW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\x0F\xBCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0F W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_\x80\x83`\x1F\x84\x01\x12a\x11\x0EW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11%W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11?W_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x11VW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11mW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11?W_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\x11\x97W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xAEW_\x80\xFD[a\x11\xBA\x88\x83\x89\x01a\x10\xFEV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x11\xD2W_\x80\xFD[Pa\x11\xDF\x87\x82\x88\x01a\x11FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xAFW_\x80\xFD[_` \x82\x84\x03\x12\x15a\x12\x1CW_\x80\xFD[\x815a\x12'\x81a\x11\xEBV[\x93\x92PPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x12AW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12XW_\x80\xFD[a\x12d\x88\x83\x89\x01a\x10\xFEV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12|W_\x80\xFD[Pa\x11\xDF\x87\x82\x88\x01a\x10\xFEV[_\x80`@\x83\x85\x03\x12\x15a\x12\x9AW_\x80\xFD[\x825a\x12\xA5\x81a\x11\xEBV[\x91P` \x83\x015a\x12\xB5\x81a\x11\xEBV[\x80\x91PP\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\x12\xD2W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\xE9W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x12\xFCW_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x13\x11W_\x80\xFD[Pa\x13\x1E\x86\x82\x87\x01a\x11FV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x13\x9FWa\x13\x9Fa\x13+V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x13\xC0Wa\x13\xC0a\x13+V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x13\xD9W_\x80\xFD[\x815` a\x13\xEEa\x13\xE9\x83a\x13\xA7V[a\x13XV[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x14\x0FW_\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x144W\x805a\x14'\x81a\x11\xEBV[\x83R\x91\x83\x01\x91\x83\x01a\x14\x14V[P\x96\x95PPPPPPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14XWa\x14Xa\x13+V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x80_``\x84\x86\x03\x12\x15a\x14\x96W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\xADW_\x80\xFD[a\x14\xB9\x87\x83\x88\x01a\x13\xCAV[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x14\xCFW_\x80\xFD[a\x14\xDB\x88\x82\x89\x01a\x13\xCAV[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x14\xF0W_\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x15\0W_\x80\xFD[\x805a\x15\x0Ea\x13\xE9\x82a\x13\xA7V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x15,W_\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x15\x99W\x805\x87\x81\x11\x15a\x15FW_\x80\xFD[\x85\x01`?\x81\x01\x8E\x13a\x15VW_\x80\xFD[\x88\x81\x015a\x15fa\x13\xE9\x82a\x14?V[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x15yW_\x80\xFD[\x81\x89\x84\x01\x8C\x83\x017_\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x150V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x15\xF2W\x81\x81\x01Q\x83\x82\x01R` \x01a\x15\xDAV[PP_\x91\x01RV[_`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01_[\x82\x81\x10\x15a\x16\xA8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x16k\x81\x88\x8A\x01\x89\x85\x01a\x15\xD8V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x16&V[P\x93\x98\x97PPPPPPPPV[_` \x80\x83\x85\x03\x12\x15a\x16\xC7W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x16\xDEW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x16\xF1W_\x80\xFD[\x81Qa\x16\xFFa\x13\xE9\x82a\x13\xA7V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x17\x1DW_\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x17\x8BW\x80Q\x85\x81\x11\x15a\x177W_\x80\xFD[\x86\x01`?\x81\x01\x8B\x13a\x17GW_\x80\xFD[\x87\x81\x01Q`@a\x17Ya\x13\xE9\x83a\x14?V[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x17lW_\x80\xFD[a\x17{\x83\x8C\x83\x01\x84\x87\x01a\x15\xD8V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x17!V[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x18\x12W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x181W_\x80\xFD[\x806\x03\x82\x13\x15a\x11?W_\x80\xFD[_`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86_[\x87\x81\x10\x15a\x18\xC0W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x18\xA1\x82\x8Aa\x17\xDFV[a\x18\xAC\x87\x82\x84a\x17\x98V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x18hV[P\x92\x98\x97PPPPPPPPV[_` \x82\x84\x03\x12\x15a\x18\xDEW_\x80\xFD[PQ\x91\x90PV[_a\x18\xF0\x82\x83a\x17\xDFV[`@\x85Ra\x19\x02`@\x86\x01\x82\x84a\x17\x98V[\x91PPa\x19\x12` \x84\x01\x84a\x17\xDFV[\x85\x83\x03` \x87\x01Ra\x19%\x83\x82\x84a\x17\x98V[\x96\x95PPPPPPV[`@\x81R_a\x19A`@\x83\x01\x86a\x18\xE5V[\x82\x81\x03` \x84\x01Ra\x19%\x81\x85\x87a\x17\x98V[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x19\xF2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x19\xD0W_\x80\xFD[a\x19\xDC\x85\x8C\x83\x01a\x18\xE5V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x19pV[PPP\x82\x81\x03` \x84\x01Ra\x1A\x08\x81\x85\x87a\x17\x98V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 k\x02\xD4\xF6(\x04)\x90\xB8\x18o\x8C\x8C\xBE\x1E;g\x82\xE6\x05P\xAC'\x1C*~\xC8J\xEE,\x8C\x81dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xEB\x12L?r1\\\xAC\xB0\x9B\x15}\x91Zx\xE4\x93\x8B\x0C\xC0\xB5\xA1\x9E\xAE\xBE\x93\x8CL\xE9\n\xC5!dsolcC\0\x08\x18\x003", ); /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. ```solidity function IS_SCRIPT() external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTCall {} ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -188,16 +200,22 @@ function IS_SCRIPT() external view returns (bool); ```solidity function run() external returns (address executor); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct runCall {} ///Container type for the return parameters of the [`run()`](runCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct runReturn { + #[allow(missing_docs)] pub executor: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -301,14 +319,19 @@ function run() external returns (address executor); ```solidity function setUp() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUpCall {} ///Container type for the return parameters of the [`setUp()`](setUpCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUpReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -410,8 +433,11 @@ function setUp() external; }; ///Container for all the [`DeployMultiFillerExecutor`](self) function calls. pub enum DeployMultiFillerExecutorCalls { + #[allow(missing_docs)] IS_SCRIPT(IS_SCRIPTCall), + #[allow(missing_docs)] run(runCall), + #[allow(missing_docs)] setUp(setUpCall), } #[automatically_derived] @@ -452,7 +478,7 @@ function setUp() external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -510,7 +536,7 @@ function setUp() external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/deploypermit2.rs b/crates/bindings-uniswapx/src/deploypermit2.rs index 52a8e4c..4a75d36 100644 --- a/crates/bindings-uniswapx/src/deploypermit2.rs +++ b/crates/bindings-uniswapx/src/deploypermit2.rs @@ -25,44 +25,56 @@ interface DeployPermit2 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod DeployPermit2 { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff191662010001179055348015602057600080fd5b5060898061002f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea26469706673582212201fa3ed5120b21127aba2b1f96d9dd54f597a23165c1f545aca256ea08b4bb91464736f6c63430008180033 + ///0x6080604052600c805462ff00ff191662010001179055348015601f575f80fd5b5060868061002c5f395ff3fe6080604052348015600e575f80fd5b50600436106026575f3560e01c8063f8ccbf4714602a575b5f80fd5b600c54603c9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220d72ad5621fba108cd35d5eeabab84c4f47824b891b0fda38c8164013fc5fc64464736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15` W`\0\x80\xFD[P`\x89\x80a\0/`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`-W[`\0\x80\xFD[`\x0CT`?\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x1F\xA3\xEDQ \xB2\x11'\xAB\xA2\xB1\xF9m\x9D\xD5OYz#\x16\\\x1FTZ\xCA%n\xA0\x8BK\xB9\x14dsolcC\0\x08\x18\x003", + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15`\x1FW_\x80\xFD[P`\x86\x80a\0,_9_\xF3\xFE`\x80`@R4\x80\x15`\x0EW_\x80\xFD[P`\x046\x10`&W_5`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`*W[_\x80\xFD[`\x0CT`<\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \xD7*\xD5b\x1F\xBA\x10\x8C\xD3]^\xEA\xBA\xB8LOG\x82K\x89\x1B\x0F\xDA8\xC8\x16@\x13\xFC_\xC6DdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063f8ccbf4714602d575b600080fd5b600c54603f9062010000900460ff1681565b604051901515815260200160405180910390f3fea26469706673582212201fa3ed5120b21127aba2b1f96d9dd54f597a23165c1f545aca256ea08b4bb91464736f6c63430008180033 + ///0x6080604052348015600e575f80fd5b50600436106026575f3560e01c8063f8ccbf4714602a575b5f80fd5b600c54603c9062010000900460ff1681565b604051901515815260200160405180910390f3fea2646970667358221220d72ad5621fba108cd35d5eeabab84c4f47824b891b0fda38c8164013fc5fc64464736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`(W`\x005`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`-W[`\0\x80\xFD[`\x0CT`?\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \x1F\xA3\xEDQ \xB2\x11'\xAB\xA2\xB1\xF9m\x9D\xD5OYz#\x16\\\x1FTZ\xCA%n\xA0\x8BK\xB9\x14dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15`\x0EW_\x80\xFD[P`\x046\x10`&W_5`\xE0\x1C\x80c\xF8\xCC\xBFG\x14`*W[_\x80\xFD[`\x0CT`<\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3\xFE\xA2dipfsX\"\x12 \xD7*\xD5b\x1F\xBA\x10\x8C\xD3]^\xEA\xBA\xB8LOG\x82K\x89\x1B\x0F\xDA8\xC8\x16@\x13\xFC_\xC6DdsolcC\0\x08\x18\x003", ); /**Function with signature `IS_SCRIPT()` and selector `0xf8ccbf47`. ```solidity function IS_SCRIPT() external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTCall {} ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -164,6 +176,7 @@ function IS_SCRIPT() external view returns (bool); }; ///Container for all the [`DeployPermit2`](self) function calls. pub enum DeployPermit2Calls { + #[allow(missing_docs)] IS_SCRIPT(IS_SCRIPTCall), } #[automatically_derived] @@ -198,7 +211,7 @@ function IS_SCRIPT() external view returns (bool); Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -230,7 +243,7 @@ function IS_SCRIPT() external view returns (bool); ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/deploypriorityorderreactor.rs b/crates/bindings-uniswapx/src/deploypriorityorderreactor.rs index ae914f7..14a3656 100644 --- a/crates/bindings-uniswapx/src/deploypriorityorderreactor.rs +++ b/crates/bindings-uniswapx/src/deploypriorityorderreactor.rs @@ -70,41 +70,55 @@ interface DeployPriorityOrderReactor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod DeployPriorityOrderReactor { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b50617018806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610094575b600080fd5b005b6100506100b7565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a79062010000900460ff1681565b604051901515815260200161008b565b60408051606081018252600080825260208201819052918101919091526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e455200000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa15801561016d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610191919061083d565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156101fe57600080fd5b505af1158015610212573d6000803e3d6000fd5b5050506e22d473030f116ddee9f6b43ac78ba33b60000390506102395761023761057b565b505b60007fb0059e9187daac70f2c765cfc99a03f9bf4321c11b7ab784ee3e310292724c1860001b6e22d473030f116ddee9f6b43ac78ba38360405161027c90610823565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156102c0573d6000803e3d6000fd5b5090506103016040518060400160405280600e81526020017f696e697420636f64652068617368000000000000000000000000000000000000815250610646565b6103d16040518060200161031490610823565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408181526e22d473030f116ddee9f6b43ac78ba3602083015273ffffffffffffffffffffffffffffffffffffffff861690820152606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526103b6929160200161089e565b604051602081830303815290604052805190602001206106d8565b6104106040518060400160405280600781526020017f52656163746f720000000000000000000000000000000000000000000000000081525082610769565b60008060001b60405161042290610830565b8190604051809103906000f5905080158015610442573d6000803e3d6000fd5b5090506104846040518060400160405280600681526020017f51756f746572000000000000000000000000000000000000000000000000000081525082610769565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104ef57600080fd5b505af1158015610503573d6000803e3d6000fd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815250935050505090565b600080604051806123e001604052806123c08152602001614c236123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c782906105fe906e22d473030f116ddee9f6b43ac78ba3908590600401610917565b600060405180830381600087803b15801561061857600080fd5b505af115801561062c573d6000803e3d6000fd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6106d58160405160240161065a919061094e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526107fe565b50565b6106d5816040516024016106ee91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f27b7cf85000000000000000000000000000000000000000000000000000000001790526107fe565b6107fa828260405160240161077f929190610961565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526107fe565b5050565b6106d58160006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6134708061099a83390190565b610e1980613e0a83390190565b60006020828403121561084f57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461087357600080fd5b9392505050565b60005b8381101561089557818101518382015260200161087d565b50506000910152565b600083516108b081846020880161087a565b8351908301906108c481836020880161087a565b01949350505050565b600081518084526108e581602086016020860161087a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061094660408301846108cd565b949350505050565b60208152600061087360208301846108cd565b60408152600061097460408301856108cd565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b5060405162003470380380620034708339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051613350620001206000396000818160e001528181610d6101526119eb01526133506000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612440565b6101eb565b005b6100b96100c93660046124ee565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612530565b6104c5565b34801561014a57600080fd5b506100b96101593660046125c9565b610683565b6100b961016c3660046125ed565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125c9565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612659565b60200260200101819052506102d981610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161285c565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb1565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861262a565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612659565b90506020028101906104789190612922565b6109f6565b82828151811061048f5761048f612659565b6020908102919091010152600101610449565b506104ac81610b60565b6104b581610bb1565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961262a565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612659565b8282815181106105d9576105d9612659565b60209081029190910101526001016105aa565b506105f681610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161285c565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb1565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612659565b602002602001018190525061087d81610b60565b61088681610bb1565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612960565b810190610a7c9190612d2c565b80516020810151604090910151919250610a9591610d04565b6000610aa082610e17565b9050610aac8183611065565b6000610abb83606001516111c7565b90506040518060a0016040528084600001518152602001610ae983866080015161121c90919063ffffffff16565b8152602001610b05838660a0015161131b90919063ffffffff16565b8152602001868060200190610b1a9190612960565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b8157610b81612659565b60200260200101519050610b9481611400565b610b9e81336118f0565b610ba881336119e9565b50600101610b65565b805160005b81811015610cf3576000838281518110610bd257610bd2612659565b602002602001015190506000816040015151905060005b81811015610c5357600083604001518281518110610c0957610c09612659565b60200260200101519050610c4a81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d239092919063ffffffff16565b50600101610be9565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9c57610c9c612659565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce191815260200190565b60405180910390a45050600101610bb6565b5047156104c1576104c13347611d6a565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b916000917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce9190612e2d565b9050818118808316600003610e0f576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061323360208301396040518060800160405280604881526020016131bd604891396040518060800160405280605b81526020016132c0605b9139604051602001610fb19493929190612e46565b60405160208183030381529060405280519060200120610fd48360000151611e04565b836020015184604001518560600151610ff08760800151611e9e565b610ffd8860a00151611f05565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110a4576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff16158015906110d157508043105b80156110e1575060c08201515181115b1561110b576020820151611103906110f98486611fa3565b8460e0015161201a565b5060c0810151515b80431015611145576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a00151828151811061117b5761117b612659565b60200260200101516040015111156111bf576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611156565b6000483a1015611203576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a0381811115611213570390565b5060005b919050565b6112566040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60008360400151836112689190612ecc565b90506298968081106112b6576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018560200151815250915050611315565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156113005760208601516112fb906298968085810390612142565b611306565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156113395761133961262a565b6040519080825280602002602001820160405280156113a257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113575790505b50915060005b818110156113f8576113d38582815181106113c5576113c5612659565b60200260200101518561217e565b8382815181106113e5576113e5612659565b60209081029190910101526001016113a8565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166114205750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611477908590600401612ee3565b600060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114da9190810190612ef6565b60408301515181519192509060006114f28284612fc6565b67ffffffffffffffff81111561150a5761150a61262a565b60405190808252806020026020018201604052801561157357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115285790505b50905060005b838110156115c4578560400151818151811061159757611597612659565b60200260200101518282815181106115b1576115b1612659565b6020908102919091010152600101611579565b5060008060005b848110156118df5760008782815181106115e7576115e7612659565b6020026020010151905060005b828110156116a55788818151811061160e5761160e612659565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361169d5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016115f4565b506000805b888110156117665760008b6040015182815181106116ca576116ca612659565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361175d578515611747576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117569084612fc6565b9250600196505b506001016116aa565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117df5784156117c6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117d89082612fc6565b9050600193505b806000036118345781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611842816005612710612142565b826020015111156118b5578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106118ca576118ca612659565b602090810291909101015250506001016115cb565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611941576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119bd9084908690600401612fd9565b60006040518083038186803b1580156119d557600080fd5b505afa158015610e0f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611aa9846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d8152602001613233608d91396040518060800160405280604881526020016131bd60489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916132c09060d401396040518060600160405280602e8152602001613205602e9139604051602001611c88959493929190613008565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cf596959493926004016130a3565b600060405180830381600087803b158015611d0f57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d485761035f8282611d6a565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612232565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613233608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161104898939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016131bd6048913980516020918201208351848301516040808701519051611048950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611f2557611f2561262a565b6040519080825280601f01601f191660200182016040528015611f4f576020820181803683370190505b50905060005b8351811015611f94576000611f82858381518110611f7557611f75612659565b6020026020010151612324565b60208381028501015250600101611f55565b50805160209091012092915050565b600081468460c00151604051602001611fbf9151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ffc93929160200161316b565b60405160208183030381529060405280519060200120905092915050565b600080828060200190518101906120319190613198565b9150915060008360408151811061204a5761204a612659565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156120a7573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612102575073ffffffffffffffffffffffffffffffffffffffff8116155b15612139576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261217757600080fd5b5091020490565b604080516060810182526000808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff16815290840151602082019015612201576121fc8560400151856121e09190612ecc565b6121ed9062989680612fc6565b6020870151906298968061239b565b612207565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061231d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b81526020016132c0605b9139805160209182012083518483015160408087015160608801519151611048969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123d057600080fd5b50910281810615159190040190565b6000604082840312156123f157600080fd5b50919050565b60008083601f84011261240957600080fd5b50813567ffffffffffffffff81111561242157600080fd5b60208301915083602082850101111561243957600080fd5b9250929050565b60008060006040848603121561245557600080fd5b833567ffffffffffffffff8082111561246d57600080fd5b612479878388016123df565b9450602086013591508082111561248f57600080fd5b5061249c868287016123f7565b9497909650939450505050565b60008083601f8401126124bb57600080fd5b50813567ffffffffffffffff8111156124d357600080fd5b6020830191508360208260051b850101111561243957600080fd5b6000806020838503121561250157600080fd5b823567ffffffffffffffff81111561251857600080fd5b612524858286016124a9565b90969095509350505050565b6000806000806040858703121561254657600080fd5b843567ffffffffffffffff8082111561255e57600080fd5b61256a888389016124a9565b9096509450602087013591508082111561258357600080fd5b50612590878288016123f7565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356112178161259c565b6000602082840312156125db57600080fd5b81356125e68161259c565b9392505050565b6000602082840312156125ff57600080fd5b813567ffffffffffffffff81111561261657600080fd5b612622848285016123df565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126a357818101518382015260200161268b565b50506000910152565b600081518084526126c4816020860160208601612688565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612756578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161270b565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d56101a08501826126ac565b905060208301516128136020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282b82826126f6565b915050606083015184820360a086015261284582826126ac565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128bf868351612761565b95509382019390820190600101612885565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261295657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261299557600080fd5b83018035915067ffffffffffffffff8211156129b057600080fd5b60200191503681900382131561243957600080fd5b6040516060810167ffffffffffffffff811182821017156129e8576129e861262a565b60405290565b6040516080810167ffffffffffffffff811182821017156129e8576129e861262a565b604051610100810167ffffffffffffffff811182821017156129e8576129e861262a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a7c57612a7c61262a565b604052919050565b600082601f830112612a9557600080fd5b813567ffffffffffffffff811115612aaf57612aaf61262a565b612ae060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a35565b818152846020838601011115612af557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2457600080fd5b60405160c0810167ffffffffffffffff8282108183111715612b4857612b4861262a565b8160405282935084359150612b5c8261259c565b908252602084013590612b6e8261259c565b816020840152604085013560408401526060850135606084015260808501359150612b988261259c565b81608084015260a0850135915080821115612bb257600080fd5b50612bbf85828601612a84565b60a0830152505092915050565b600060608284031215612bde57600080fd5b612be66129c5565b90508135612bf38161259c565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c2b57612c2b61262a565b5060051b60200190565b600082601f830112612c4657600080fd5b81356020612c5b612c5683612c11565b612a35565b82815260079290921b84018101918181019086841115612c7a57600080fd5b8286015b84811015612cdf5760808189031215612c975760008081fd5b612c9f6129ee565b8135612caa8161259c565b8152818501358582015260408083013590820152606080830135612ccd8161259c565b90820152835291830191608001612c7e565b509695505050505050565b600060208284031215612cfc57600080fd5b6040516020810181811067ffffffffffffffff82111715612d1f57612d1f61262a565b6040529135825250919050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff80821115612d5657600080fd5b908301906101408286031215612d6b57600080fd5b612d73612a11565b823582811115612d8257600080fd5b612d8e87828601612b12565b825250612d9d602084016125be565b60208201526040830135604082015260608301356060820152612dc38660808501612bcc565b608082015260e083013582811115612dda57600080fd5b612de687828601612c35565b60a083015250612dfa866101008501612cea565b60c082015261012083013582811115612e1257600080fd5b612e1e87828601612a84565b60e08301525095945050505050565b600060208284031215612e3f57600080fd5b5051919050565b60008551612e58818460208a01612688565b855190830190612e6c818360208a01612688565b8551910190612e7f818360208901612688565b8451910190612e92818360208801612688565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761131557611315612e9d565b6020815260006125e66020830184612761565b60006020808385031215612f0957600080fd5b825167ffffffffffffffff811115612f2057600080fd5b8301601f81018513612f3157600080fd5b8051612f3f612c5682612c11565b81815260609182028301840191848201919088841115612f5e57600080fd5b938501935b83851015612fba5780858a031215612f7b5760008081fd5b612f836129c5565b8551612f8e8161259c565b81528587015187820152604080870151612fa78161259c565b9082015283529384019391850191612f63565b50979650505050505050565b8082018082111561131557611315612e9d565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006126226040830184612761565b7f5072696f726974794f72646572207769746e657373290000000000000000000081526000601687516130418183860160208c01612688565b8751908401906130578184840160208c01612688565b875191019061306c8184840160208b01612688565b86519101906130818184840160208a01612688565b85519101906130968184840160208901612688565b0101979650505050505050565b60006101406130d3838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131146080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152613149818401866126ac565b905082810361012084015261315e81856126ac565b9998505050505050505050565b83815282602082015260008251613189816040850160208701612688565b91909101604001949350505050565b600080604083850312156131ab57600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220353e4a9c8af32ce67b5de33aaecb5fae198f4618ed76c7f0ec66d08df440265b64736f6c63430008180033608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212204625b71d7eed99b6b5ada47f029667231edf05e28809e554360e4da22954e8c664736f6c63430008180033 + ///0x6080604052600c805462ff00ff191662010001179055348015610020575f80fd5b50616c3f8061002e5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610091575b5f80fd5b005b61004d6100b4565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a49062010000900460ff1681565b6040519015158152602001610088565b604080516060810182525f80825260208201819052918101919091526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e4552000000000000000000000060448201525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610166573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061018a91906105ee565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156101f3575f80fd5b505af1158015610205573d5f803e3d5ffd5b5050506e22d473030f116ddee9f6b43ac78ba33b5f03905061022b5761022961044f565b505b5f7fb0059e9187daac70f2c765cfc99a03f9bf4321c11b7ab784ee3e310292724c185f1b6e22d473030f116ddee9f6b43ac78ba38360405161026c906105d4565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103905ff59050801580156102ad573d5f803e3d5ffd5b5090506102ef6040518060400160405280600781526020017f52656163746f720000000000000000000000000000000000000000000000000081525082610514565b5f805f1b6040516102ff906105e1565b8190604051809103905ff590508015801561031c573d5f803e3d5ffd5b50905061035e6040518060400160405280600681526020017f51756f746572000000000000000000000000000000000000000000000000000081525082610514565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156103c5575f80fd5b505af11580156103d7573d5f803e3d5ffd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815250935050505090565b5f80604051806123e001604052806123c0815260200161484a6123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c782906104d1906e22d473030f116ddee9f6b43ac78ba3908590600401610689565b5f604051808303815f87803b1580156104e8575f80fd5b505af11580156104fa573d5f803e3d5ffd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6105a5828260405160240161052a9291906106bf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526105a9565b5050565b6105b2816105b5565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b613390806106f783390190565b610dc380613a8783390190565b5f602082840312156105fe575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610621575f80fd5b9392505050565b5f81518084525f5b8181101561064c57602081850181015186830182015201610630565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6106b76040830184610628565b949350505050565b604081525f6106d16040830185610628565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a060405234801562000010575f80fd5b5060405162003390380380620033908339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b608051613278620001185f395f818160da01528181610d2d015261198f01526132785ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af3660046123bd565b6101e0565b005b6100b46100c4366004612462565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46101333660046124a1565b6104af565b348015610143575f80fd5b506100b4610152366004612534565b610665565b6100b4610165366004612556565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db366004612534565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b76125bd565b60200260200101819052506102cb81610b37565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b908490879087906004016127b8565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b86565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff81111561037457610374612590565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c57610467858583818110610450576104506125bd565b9050602002810190610462919061287b565b6109d2565b828281518110610479576104796125bd565b6020908102919091010152600101610433565b5061049681610b37565b61049f81610b86565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d2612590565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae878783818110610450576104506125bd565b8282815181106105c0576105c06125bd565b6020908102919091010152600101610591565b506105dd81610b37565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d908490889088906004016127b8565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b86565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f81518110610847576108476125bd565b602002602001018190525061085b81610b37565b61086481610b86565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a83806128b7565b810190610a579190612c6e565b80516020810151604090910151919250610a7091610cd1565b5f610a7a82610de0565b9050610a86818361102c565b5f610a94836060015161118c565b90506040518060a00160405280845f01518152602001610ac18386608001516111df90919063ffffffff16565b8152602001610add838660a001516112d890919063ffffffff16565b8152602001868060200190610af291906128b7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200192909252509392505050565b80515f5b8181101561034c575f838281518110610b5657610b566125bd565b60200260200101519050610b69816113bb565b610b738133611898565b610b7d813361198d565b50600101610b3b565b80515f5b81811015610cc0575f838281518110610ba557610ba56125bd565b602002602001015190505f81604001515190505f5b81811015610c22575f83604001518281518110610bd957610bd96125bd565b60200260200101519050610c1981604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611cbf9092919063ffffffff16565b50600101610bba565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c6a57610c6a6125bd565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610cae91815260200190565b60405180910390a45050600101610b8a565b5047156104ab576104ab3347611d06565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b915f917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610d74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d989190612d68565b90508181188083165f03610dd8576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b8201525f9060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061315b60208301396040518060800160405280604881526020016130e5604891396040518060800160405280605b81526020016131e8605b9139604051602001610f799493929190612d7f565b60405160208183030381529060405280519060200120610f9b835f0151611d9c565b836020015184604001518560600151610fb78760800151611e35565b610fc48860a00151611e9b565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b80516060015142111561106b576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff161580159061109857508043105b80156110a8575060c08201515181115b156110d25760208201516110ca906110c08486611f36565b8460e00151611fac565b5060c0810151515b8043101561110c576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561034c575f5b8260a001515181101561065f575f8360a001518281518110611140576111406125bd565b6020026020010151604001511115611184576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60010161111c565b5f483a10156111c7576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a03818111156111d7570390565b505f5b919050565b61121660405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f8360400151836112279190612e02565b9050629896808110611273576040518060600160405280855f015173ffffffffffffffffffffffffffffffffffffffff1681526020015f815260200185602001518152509150506112d2565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156112bd5760208601516112b89062989680858103906120cf565b6112c3565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156112f6576112f6612590565b60405190808252806020026020018201604052801561135e57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113145790505b5091505f5b818110156113b35761138e858281518110611380576113806125bd565b602002602001015185612109565b8382815181106113a0576113a06125bd565b6020908102919091010152600101611363565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166113db5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611431908590600401612e19565b5f60405180830381865afa15801561144b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114909190810190612e2b565b6040830151518151919250905f6114a78284612ef4565b67ffffffffffffffff8111156114bf576114bf612590565b60405190808252806020026020018201604052801561152757816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114dd5790505b5090505f5b83811015611577578560400151818151811061154a5761154a6125bd565b6020026020010151828281518110611564576115646125bd565b602090810291909101015260010161152c565b505f805f5b84811015611887575f878281518110611597576115976125bd565b602002602001015190505f5b82811015611652578881815181106115bd576115bd6125bd565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff160361164a5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6001016115a3565b505f805b8881101561170f575f8b604001518281518110611675576116756125bd565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff16036117065785156116f0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516116ff9084612ef4565b9250600196505b50600101611656565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361178857841561176f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117819082612ef4565b9050600193505b805f036117dc5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6117ea8160056127106120cf565b8260200151111561185d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a0181518110611872576118726125bd565b6020908102919091010152505060010161157c565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146118e9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119659084908690600401612f07565b5f6040518083038186803b15801561197b575f80fd5b505afa158015610dd8573d5f803e3d5ffd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611a4c846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff861682528087015181015190820152855f01516020015186608001516040518060c00160405280608d815260200161315b608d91396040518060800160405280604881526020016130e560489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916131e89060d401396040518060600160405280602e815260200161312d602e9139604051602001611c29959493929190612f35565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611c969695949392600401612fcf565b5f604051808303815f87803b158015611cad575f80fd5b505af1158015610dd8573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611ce45761034c8282611d06565b61034c73ffffffffffffffffffffffffffffffffffffffff84163384846121bc565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611d5c576040519150601f19603f3d011682016040523d82523d5f602084013e611d61565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060c00160405280608d815260200161315b608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161100f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f6040518060800160405280604881526020016130e5604891398051602091820120835184830151604080870151905161100f950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b5f80825160200267ffffffffffffffff811115611eba57611eba612590565b6040519080825280601f01601f191660200182016040528015611ee4576020820181803683370190505b5090505f5b8351811015611f27575f611f15858381518110611f0857611f086125bd565b60200260200101516122aa565b60208381028501015250600101611ee9565b50805160209091012092915050565b5f81468460c00151604051602001611f519151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611f8e939291602001613096565b60405160208183030381529060405280519060200120905092915050565b5f8082806020019051810190611fc291906130c2565b915091505f83604081518110611fda57611fda6125bd565b01602090810151604080515f80825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa158015612034573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158061208f575073ffffffffffffffffffffffffffffffffffffffff8116155b156120c6576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612102575f80fd5b5091020490565b604080516060810182525f808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff1681529084015160208201901561218b5761218685604001518561216a9190612e02565b6121779062989680612ef4565b60208701519062989680612320565b612191565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5050505050565b5f6040518060800160405280605b81526020016131e8605b913980516020918201208351848301516040808701516060880151915161100f969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612353575f80fd5b50910281810615159190040190565b5f60408284031215612372575f80fd5b50919050565b5f8083601f840112612388575f80fd5b50813567ffffffffffffffff81111561239f575f80fd5b6020830191508360208285010111156123b6575f80fd5b9250929050565b5f805f604084860312156123cf575f80fd5b833567ffffffffffffffff808211156123e6575f80fd5b6123f287838801612362565b94506020860135915080821115612407575f80fd5b5061241486828701612378565b9497909650939450505050565b5f8083601f840112612431575f80fd5b50813567ffffffffffffffff811115612448575f80fd5b6020830191508360208260051b85010111156123b6575f80fd5b5f8060208385031215612473575f80fd5b823567ffffffffffffffff811115612489575f80fd5b61249585828601612421565b90969095509350505050565b5f805f80604085870312156124b4575f80fd5b843567ffffffffffffffff808211156124cb575f80fd5b6124d788838901612421565b909650945060208701359150808211156124ef575f80fd5b506124fc87828801612378565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b80356111da81612508565b5f60208284031215612544575f80fd5b813561254f81612508565b9392505050565b5f60208284031215612566575f80fd5b813567ffffffffffffffff81111561257c575f80fd5b61258884828501612362565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156126045781810151838201526020016125ec565b50505f910152565b5f81518084526126238160208601602086016125ea565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156126b3578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612668565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127316101a085018261260c565b9050602083015161276f6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526127878282612655565b915050606083015184820360a08601526127a1828261260c565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b8381101561282b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128198683516126be565b955093820193908201906001016127df565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126128ad575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128ea575f80fd5b83018035915067ffffffffffffffff821115612904575f80fd5b6020019150368190038213156123b6575f80fd5b6040516060810167ffffffffffffffff8111828210171561293b5761293b612590565b60405290565b6040516080810167ffffffffffffffff8111828210171561293b5761293b612590565b604051610100810167ffffffffffffffff8111828210171561293b5761293b612590565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129cf576129cf612590565b604052919050565b5f82601f8301126129e6575f80fd5b813567ffffffffffffffff811115612a0057612a00612590565b612a3160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612988565b818152846020838601011115612a45575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215612a71575f80fd5b60405160c0810167ffffffffffffffff8282108183111715612a9557612a95612590565b8160405282935084359150612aa982612508565b908252602084013590612abb82612508565b816020840152604085013560408401526060850135606084015260808501359150612ae582612508565b81608084015260a0850135915080821115612afe575f80fd5b50612b0b858286016129d7565b60a0830152505092915050565b5f60608284031215612b28575f80fd5b612b30612918565b90508135612b3d81612508565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612b7457612b74612590565b5060051b60200190565b5f82601f830112612b8d575f80fd5b81356020612ba2612b9d83612b5b565b612988565b82815260079290921b84018101918181019086841115612bc0575f80fd5b8286015b84811015612c235760808189031215612bdb575f80fd5b612be3612941565b8135612bee81612508565b8152818501358582015260408083013590820152606080830135612c1181612508565b90820152835291830191608001612bc4565b509695505050505050565b5f60208284031215612c3e575f80fd5b6040516020810181811067ffffffffffffffff82111715612c6157612c61612590565b6040529135825250919050565b5f60208284031215612c7e575f80fd5b813567ffffffffffffffff80821115612c95575f80fd5b908301906101408286031215612ca9575f80fd5b612cb1612964565b823582811115612cbf575f80fd5b612ccb87828601612a61565b825250612cda60208401612529565b60208201526040830135604082015260608301356060820152612d008660808501612b18565b608082015260e083013582811115612d16575f80fd5b612d2287828601612b7e565b60a083015250612d36866101008501612c2e565b60c082015261012083013582811115612d4d575f80fd5b612d59878286016129d7565b60e08301525095945050505050565b5f60208284031215612d78575f80fd5b5051919050565b5f8551612d90818460208a016125ea565b855190830190612da4818360208a016125ea565b8551910190612db78183602089016125ea565b8451910190612dca8183602088016125ea565b019695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176112d2576112d2612dd5565b602081525f61254f60208301846126be565b5f6020808385031215612e3c575f80fd5b825167ffffffffffffffff811115612e52575f80fd5b8301601f81018513612e62575f80fd5b8051612e70612b9d82612b5b565b81815260609182028301840191848201919088841115612e8e575f80fd5b938501935b83851015612ee85780858a031215612ea9575f80fd5b612eb1612918565b8551612ebc81612508565b81528587015187820152604080870151612ed581612508565b9082015283529384019391850191612e93565b50979650505050505050565b808201808211156112d2576112d2612dd5565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f61258860408301846126be565b7f5072696f726974794f72646572207769746e657373290000000000000000000081525f60168751612f6d8183860160208c016125ea565b875190840190612f838184840160208c016125ea565b8751910190612f988184840160208b016125ea565b8651910190612fad8184840160208a016125ea565b8551910190612fc281848401602089016125ea565b0101979650505050505050565b5f610140612ffe838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261303f6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526130748184018661260c565b9050828103610120840152613089818561260c565b9998505050505050505050565b8381528260208201525f82516130b38160408501602087016125ea565b91909101604001949350505050565b5f80604083850312156130d3575f80fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220d3e31f920a5d8c4218b042df25184b48b18b01bb6564f8902884558a765be30664736f6c63430008180033608060405234801561000f575f80fd5b50610da68061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806341d88d6914610043578063585da6281461006c5780637671d07b14610081575b5f80fd5b6100566100513660046104a8565b6100c2565b60405161006391906105dc565b60405180910390f35b61007f61007a3660046108c4565b610218565b005b61009d61008f366004610a2a565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610063565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183525f815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101aa9291600401610a64565b5f604051808303815f87803b1580156101c1575f80fd5b505af19250505080156101d2575060015b610212573d8080156101ff576040519150601f19603f3d011682016040523d82523d5f602084013e610204565b606091505b5061020e81610297565b9150505b92915050565b8151600114610253576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f825f8151811061026657610266610ad7565b602002602001015160405160200161027e91906105dc565b6040516020818303038152906040529050805181602001fd5b60408051610160810182525f60a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031257815182602001fd5b818060200190518101906102129190610ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561037657610376610326565b60405290565b6040516060810167ffffffffffffffff8111828210171561037657610376610326565b60405160a0810167ffffffffffffffff8111828210171561037657610376610326565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561040957610409610326565b604052919050565b5f67ffffffffffffffff82111561042a5761042a610326565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610465575f80fd5b813561047861047382610411565b6103c2565b81815284602083860101111561048c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156104b9575f80fd5b823567ffffffffffffffff808211156104d0575f80fd5b6104dc86838701610456565b935060208501359150808211156104f1575f80fd5b506104fe85828601610456565b9150509250929050565b5f5b8381101561052257818101518382015260200161050a565b50505f910152565b5f8151808452610541816020860160208601610508565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156105d1578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101610586565b509495945050505050565b602081525f825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106576101c084018261052a565b905060208401516106956040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106d08383610573565b925060608601519150808584030160c0860152506106ee828261052a565b915050608084015160e08401528091505092915050565b5f67ffffffffffffffff82111561071e5761071e610326565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610749575f80fd5b50565b5f60c0828403121561075c575f80fd5b610764610353565b9050813561077181610728565b8152602082013561078181610728565b80602083015250604082013560408201526060820135606082015260808201356107aa81610728565b608082015260a082013567ffffffffffffffff8111156107c8575f80fd5b6107d484828501610456565b60a08301525092915050565b5f606082840312156107f0575f80fd5b6107f861037c565b9050813561080581610728565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610832575f80fd5b8135602061084261047383610705565b82815260609283028501820192828201919087851115610860575f80fd5b8387015b858110156108b75781818a03121561087a575f80fd5b61088261037c565b813561088d81610728565b815281860135868201526040808301356108a681610728565b908201528452928401928101610864565b5090979650505050505050565b5f80604083850312156108d5575f80fd5b823567ffffffffffffffff808211156108ec575f80fd5b818501915085601f8301126108ff575f80fd5b8135602061090f61047383610705565b82815260059290921b8401810191818101908984111561092d575f80fd5b8286015b84811015610a1457803586811115610947575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181131561097b575f80fd5b61098361039f565b8683013589811115610993575f80fd5b6109a18f898387010161074c565b8252506109b18e604085016107e0565b8782015260a0830135898111156109c6575f80fd5b6109d48f8983870101610823565b60408301525060c0830135898111156109eb575f80fd5b6109f98f8983870101610456565b60608301525091013560808201528352918301918301610931565b50965050860135925050808211156104f1575f80fd5b5f60208284031215610a3a575f80fd5b813567ffffffffffffffff811115610a50575f80fd5b610a5c84828501610456565b949350505050565b604081525f8351604080840152610a7e608084018261052a565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610ab9828261052a565b9150508281036020840152610ace818561052a565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82601f830112610b13575f80fd5b8151610b2161047382610411565b818152846020838601011115610b35575f80fd5b610a5c826020830160208701610508565b5f60c08284031215610b56575f80fd5b610b5e610353565b90508151610b6b81610728565b81526020820151610b7b81610728565b8060208301525060408201516040820152606082015160608201526080820151610ba481610728565b608082015260a082015167ffffffffffffffff811115610bc2575f80fd5b6107d484828501610b04565b5f60608284031215610bde575f80fd5b610be661037c565b90508151610bf381610728565b80825250602082015160208201526040820151604082015292915050565b5f82601f830112610c20575f80fd5b81516020610c3061047383610705565b82815260609283028501820192828201919087851115610c4e575f80fd5b8387015b858110156108b75781818a031215610c68575f80fd5b610c7061037c565b8151610c7b81610728565b81528186015186820152604080830151610c9481610728565b908201528452928401928101610c52565b5f60208284031215610cb5575f80fd5b815167ffffffffffffffff80821115610ccc575f80fd5b9083019060e08286031215610cdf575f80fd5b610ce761039f565b825182811115610cf5575f80fd5b610d0187828601610b46565b825250610d118660208501610bce565b6020820152608083015182811115610d27575f80fd5b610d3387828601610c11565b60408301525060a083015182811115610d4a575f80fd5b610d5687828601610b04565b60608301525060c09290920151608083015250939250505056fea2646970667358221220b0816c51d51c5ab3947bad3df8fedfb8758eb6ce0ed20b8fc1844c9926a031be64736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212200b2f412b68c756e32bf945b8b8b95ca68cc1a9fec23fcd4c7a9c605e71535f6464736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pap\x18\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x94W[`\0\x80\xFD[\0[a\0Pa\0\xB7V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA7\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8BV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01mW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x91\x91\x90a\x08=V[\x90P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xFEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x12W=`\0\x80>=`\0\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;`\0\x03\x90Pa\x029Wa\x027a\x05{V[P[`\0\x7F\xB0\x05\x9E\x91\x87\xDA\xACp\xF2\xC7e\xCF\xC9\x9A\x03\xF9\xBFC!\xC1\x1Bz\xB7\x84\xEE>1\x02\x92rL\x18`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02|\x90a\x08#V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02\xC0W=`\0\x80>=`\0\xFD[P\x90Pa\x03\x01`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01\x7Finit code hash\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RPa\x06FV[a\x03\xD1`@Q\x80` \x01a\x03\x14\x90a\x08#V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x82\x82\x03\x81\x01\x83R`\x1F\x90\x91\x01\x16`@\x81\x81Rn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3` \x83\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x90\x82\x01R``\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x03\xB6\x92\x91` \x01a\x08\x9EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x06\xD8V[a\x04\x10`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x07iV[`\0\x80`\0\x1B`@Qa\x04\"\x90a\x080V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x04BW=`\0\x80>=`\0\xFD[P\x90Pa\x04\x84`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x07iV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xEFW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\x03W=`\0\x80>=`\0\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x93PPPP\x90V[`\0\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aL#a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x05\xFE\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\t\x17V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06\x18W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06,W=`\0\x80>=`\0\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x06\xD5\x81`@Q`$\x01a\x06Z\x91\x90a\tNV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7FA0O\xAC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xFEV[PV[a\x06\xD5\x81`@Q`$\x01a\x06\xEE\x91\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F'\xB7\xCF\x85\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xFEV[a\x07\xFA\x82\x82`@Q`$\x01a\x07\x7F\x92\x91\x90a\taV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xFEV[PPV[a\x06\xD5\x81`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a4p\x80a\t\x9A\x839\x01\x90V[a\x0E\x19\x80a>\n\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x08OW`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08sW`\0\x80\xFD[\x93\x92PPPV[`\0[\x83\x81\x10\x15a\x08\x95W\x81\x81\x01Q\x83\x82\x01R` \x01a\x08}V[PP`\0\x91\x01RV[`\0\x83Qa\x08\xB0\x81\x84` \x88\x01a\x08zV[\x83Q\x90\x83\x01\x90a\x08\xC4\x81\x83` \x88\x01a\x08zV[\x01\x94\x93PPPPV[`\0\x81Q\x80\x84Ra\x08\xE5\x81` \x86\x01` \x86\x01a\x08zV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\tF`@\x83\x01\x84a\x08\xCDV[\x94\x93PPPPV[` \x81R`\0a\x08s` \x83\x01\x84a\x08\xCDV[`@\x81R`\0a\tt`@\x83\x01\x85a\x08\xCDV[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x004p8\x03\x80b\x004p\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa3Pb\0\x01 `\09`\0\x81\x81`\xE0\x01R\x81\x81a\ra\x01Ra\x19\xEB\x01Ra3P`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$@V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\xEEV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%0V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a%\xC9V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\xEDV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a%\xC9V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&YV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB1V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\"V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0B`V[a\x04\xB5\x81a\x0B\xB1V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB1V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&YV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0B`V[a\x08\x86\x81a\x0B\xB1V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a)`V[\x81\x01\x90a\n|\x91\x90a-,V[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\n\x95\x91a\r\x04V[`\0a\n\xA0\x82a\x0E\x17V[\x90Pa\n\xAC\x81\x83a\x10eV[`\0a\n\xBB\x83``\x01Qa\x11\xC7V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\n\xE9\x83\x86`\x80\x01Qa\x12\x1C\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\x0B\x05\x83\x86`\xA0\x01Qa\x13\x1B\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x1A\x91\x90a)`V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x81Wa\x0B\x81a&YV[` \x02` \x01\x01Q\x90Pa\x0B\x94\x81a\x14\0V[a\x0B\x9E\x813a\x18\xF0V[a\x0B\xA8\x813a\x19\xE9V[P`\x01\x01a\x0BeV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF3W`\0\x83\x82\x81Q\x81\x10a\x0B\xD2Wa\x0B\xD2a&YV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CSW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\tWa\x0C\ta&YV[` \x02` \x01\x01Q\x90Pa\x0CJ\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D#\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xE9V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9CWa\x0C\x9Ca&YV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE1\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB6V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1DjV[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xCE\x91\x90a.-V[\x90P\x81\x81\x18\x80\x83\x16`\0\x03a\x0E\x0FW`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R`\0\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a23` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919`@Q` \x01a\x0F\xB1\x94\x93\x92\x91\x90a.FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\xD4\x83`\0\x01Qa\x1E\x04V[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xF0\x87`\x80\x01Qa\x1E\x9EV[a\x0F\xFD\x88`\xA0\x01Qa\x1F\x05V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xA4W`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\xD1WP\x80C\x10[\x80\x15a\x10\xE1WP`\xC0\x82\x01QQ\x81\x11[\x15a\x11\x0BW` \x82\x01Qa\x11\x03\x90a\x10\xF9\x84\x86a\x1F\xA3V[\x84`\xE0\x01Qa \x1AV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11EW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03_W`\0[\x82`\xA0\x01QQ\x81\x10\x15a\x06}W`\0\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11{Wa\x11{a&YV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\xBFW`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11VV[`\0H:\x10\x15a\x12\x03W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x12\x13W\x03\x90V[P`\0[\x91\x90PV[a\x12V`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0\x83`@\x01Q\x83a\x12h\x91\x90a.\xCCV[\x90Pb\x98\x96\x80\x81\x10a\x12\xB6W`@Q\x80``\x01`@R\x80\x85`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x13\x15V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x13\0W` \x86\x01Qa\x12\xFB\x90b\x98\x96\x80\x85\x81\x03\x90a!BV[a\x13\x06V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x139Wa\x139a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xA2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13WW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x13\xF8Wa\x13\xD3\x85\x82\x81Q\x81\x10a\x13\xC5Wa\x13\xC5a&YV[` \x02` \x01\x01Q\x85a!~V[\x83\x82\x81Q\x81\x10a\x13\xE5Wa\x13\xE5a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xA8V[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14 WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14w\x90\x85\x90`\x04\x01a.\xE3V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xDA\x91\x90\x81\x01\x90a.\xF6V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x14\xF2\x82\x84a/\xC6V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\nWa\x15\na&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15sW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15(W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\xC4W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\x97Wa\x15\x97a&YV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xB1Wa\x15\xB1a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15yV[P`\0\x80`\0[\x84\x81\x10\x15a\x18\xDFW`\0\x87\x82\x81Q\x81\x10a\x15\xE7Wa\x15\xE7a&YV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x16\xA5W\x88\x81\x81Q\x81\x10a\x16\x0EWa\x16\x0Ea&YV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\x9DW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x15\xF4V[P`\0\x80[\x88\x81\x10\x15a\x17fW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xCAWa\x16\xCAa&YV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17]W\x85\x15a\x17GW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17V\x90\x84a/\xC6V[\x92P`\x01\x96P[P`\x01\x01a\x16\xAAV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xDFW\x84\x15a\x17\xC6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xD8\x90\x82a/\xC6V[\x90P`\x01\x93P[\x80`\0\x03a\x184W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18B\x81`\x05a'\x10a!BV[\x82` \x01Q\x11\x15a\x18\xB5W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xCAWa\x18\xCAa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xCBV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19AW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xBD\x90\x84\x90\x86\x90`\x04\x01a/\xD9V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xD5W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xA9\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a2\xC0\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\x05`.\x919`@Q` \x01a\x1C\x88\x95\x94\x93\x92\x91\x90a0\x08V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xF5\x96\x95\x94\x93\x92`\x04\x01a0\xA3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\x0FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1DHWa\x03_\x82\x82a\x1DjV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\"2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xC4W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1D\xC9V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10H\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10H\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1F%Wa\x1F%a&*V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1FOW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F\x94W`\0a\x1F\x82\x85\x83\x81Q\x81\x10a\x1FuWa\x1Fua&YV[` \x02` \x01\x01Qa#$V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1FUV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xC0\x01Q`@Q` \x01a\x1F\xBF\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\xFC\x93\x92\x91` \x01a1kV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a 1\x91\x90a1\x98V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a JWa Ja&YV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a \xA7W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a!\x02WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a!9W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!wW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a\"\x01Wa!\xFC\x85`@\x01Q\x85a!\xE0\x91\x90a.\xCCV[a!\xED\x90b\x98\x96\x80a/\xC6V[` \x87\x01Q\x90b\x98\x96\x80a#\x9BV[a\"\x07V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a#\x1DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10H\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xD0W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0`@\x82\x84\x03\x12\x15a#\xF1W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\tW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$!W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$UW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$mW`\0\x80\xFD[a$y\x87\x83\x88\x01a#\xDFV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x8FW`\0\x80\xFD[Pa$\x9C\x86\x82\x87\x01a#\xF7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a$\xBBW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xD3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\x01W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x18W`\0\x80\xFD[a%$\x85\x82\x86\x01a$\xA9V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%FW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%^W`\0\x80\xFD[a%j\x88\x83\x89\x01a$\xA9V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x83W`\0\x80\xFD[Pa%\x90\x87\x82\x88\x01a#\xF7V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a\x12\x17\x81a%\x9CV[`\0` \x82\x84\x03\x12\x15a%\xDBW`\0\x80\xFD[\x815a%\xE6\x81a%\x9CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\xFFW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\x16W`\0\x80\xFD[a&\"\x84\x82\x85\x01a#\xDFV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra&\xC4\x81` \x86\x01` \x86\x01a&\x88V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'VW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x0BV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD5a\x01\xA0\x85\x01\x82a&\xACV[\x90P` \x83\x01Qa(\x13` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(+\x82\x82a&\xF6V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(E\x82\x82a&\xACV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a(\xD1W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xBF\x86\x83Qa'aV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(\x85V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)VW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x95W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xB0W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$9W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*|Wa*|a&*V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a*\x95W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xAFWa*\xAFa&*V[a*\xE0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xF5W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+$W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a+HWa+Ha&*V[\x81`@R\x82\x93P\x845\x91Pa+\\\x82a%\x9CV[\x90\x82R` \x84\x015\x90a+n\x82a%\x9CV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa+\x98\x82a%\x9CV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a+\xB2W`\0\x80\xFD[Pa+\xBF\x85\x82\x86\x01a*\x84V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a+\xDEW`\0\x80\xFD[a+\xE6a)\xC5V[\x90P\x815a+\xF3\x81a%\x9CV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,+Wa,+a&*V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,FW`\0\x80\xFD[\x815` a,[a,V\x83a,\x11V[a*5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,zW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xDFW`\x80\x81\x89\x03\x12\x15a,\x97W`\0\x80\x81\xFD[a,\x9Fa)\xEEV[\x815a,\xAA\x81a%\x9CV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\xCD\x81a%\x9CV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,~V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\xFCW`\0\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a-\x1FWa-\x1Fa&*V[`@R\x915\x82RP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a->W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-VW`\0\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a-kW`\0\x80\xFD[a-sa*\x11V[\x825\x82\x81\x11\x15a-\x82W`\0\x80\xFD[a-\x8E\x87\x82\x86\x01a+\x12V[\x82RPa-\x9D` \x84\x01a%\xBEV[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\xC3\x86`\x80\x85\x01a+\xCCV[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\xDAW`\0\x80\xFD[a-\xE6\x87\x82\x86\x01a,5V[`\xA0\x83\x01RPa-\xFA\x86a\x01\0\x85\x01a,\xEAV[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a.\x12W`\0\x80\xFD[a.\x1E\x87\x82\x86\x01a*\x84V[`\xE0\x83\x01RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.?W`\0\x80\xFD[PQ\x91\x90PV[`\0\x85Qa.X\x81\x84` \x8A\x01a&\x88V[\x85Q\x90\x83\x01\x90a.l\x81\x83` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a.\x7F\x81\x83` \x89\x01a&\x88V[\x84Q\x91\x01\x90a.\x92\x81\x83` \x88\x01a&\x88V[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x13\x15Wa\x13\x15a.\x9DV[` \x81R`\0a%\xE6` \x83\x01\x84a'aV[`\0` \x80\x83\x85\x03\x12\x15a/\tW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/ W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/1W`\0\x80\xFD[\x80Qa/?a,V\x82a,\x11V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/^W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a/\xBAW\x80\x85\x8A\x03\x12\x15a/{W`\0\x80\x81\xFD[a/\x83a)\xC5V[\x85Qa/\x8E\x81a%\x9CV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa/\xA7\x81a%\x9CV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a/cV[P\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x13\x15Wa\x13\x15a.\x9DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a&\"`@\x83\x01\x84a'aV[\x7FPriorityOrder witness)\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x16\x87Qa0A\x81\x83\x86\x01` \x8C\x01a&\x88V[\x87Q\x90\x84\x01\x90a0W\x81\x84\x84\x01` \x8C\x01a&\x88V[\x87Q\x91\x01\x90a0l\x81\x84\x84\x01` \x8B\x01a&\x88V[\x86Q\x91\x01\x90a0\x81\x81\x84\x84\x01` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a0\x96\x81\x84\x84\x01` \x89\x01a&\x88V[\x01\x01\x97\x96PPPPPPPV[`\0a\x01@a0\xD3\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\x14`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1I\x81\x84\x01\x86a&\xACV[\x90P\x82\x81\x03a\x01 \x84\x01Ra1^\x81\x85a&\xACV[\x99\x98PPPPPPPPPV[\x83\x81R\x82` \x82\x01R`\0\x82Qa1\x89\x81`@\x85\x01` \x87\x01a&\x88V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a1\xABW`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV\xFEPriorityInput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)PriorityOutput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei,address recipient)\xA2dipfsX\"\x12 5>J\x9C\x8A\xF3,\xE6{]\xE3:\xAE\xCB_\xAE\x19\x8FF\x18\xEDv\xC7\xF0\xECf\xD0\x8D\xF4@&[dsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 F%\xB7\x1D~\xED\x99\xB6\xB5\xAD\xA4\x7F\x02\x96g#\x1E\xDF\x05\xE2\x88\t\xE5T6\x0EM\xA2)T\xE8\xC6dsolcC\0\x08\x18\x003", + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[Pal?\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x91W[_\x80\xFD[\0[a\0Ma\0\xB4V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x88V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01fW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x8A\x91\x90a\x05\xEEV[\x90P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xF3W_\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x05W=_\x80>=_\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;_\x03\x90Pa\x02+Wa\x02)a\x04OV[P[_\x7F\xB0\x05\x9E\x91\x87\xDA\xACp\xF2\xC7e\xCF\xC9\x9A\x03\xF9\xBFC!\xC1\x1Bz\xB7\x84\xEE>1\x02\x92rL\x18_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02l\x90a\x05\xD4V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02\xADW=_\x80>=_\xFD[P\x90Pa\x02\xEF`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x05\x14V[_\x80_\x1B`@Qa\x02\xFF\x90a\x05\xE1V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x03\x1CW=_\x80>=_\xFD[P\x90Pa\x03^`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x05\x14V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\xC5W_\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xD7W=_\x80>=_\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x93PPPP\x90V[_\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aHJa#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04\xD1\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x06\x89V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\xE8W_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xFAW=_\x80>=_\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x05\xA5\x82\x82`@Q`$\x01a\x05*\x92\x91\x90a\x06\xBFV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x05\xA9V[PPV[a\x05\xB2\x81a\x05\xB5V[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a3\x90\x80a\x06\xF7\x839\x01\x90V[a\r\xC3\x80a:\x87\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x05\xFEW_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06!W_\x80\xFD[\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x06LW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x060V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x06\xB7`@\x83\x01\x84a\x06(V[\x94\x93PPPPV[`@\x81R_a\x06\xD1`@\x83\x01\x85a\x06(V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x003\x908\x03\x80b\x003\x90\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa2xb\0\x01\x18_9_\x81\x81`\xDA\x01R\x81\x81a\r-\x01Ra\x19\x8F\x01Ra2x_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a#\xBDV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a$bV[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a$\xA1V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%4V[a\x06eV[a\0\xB4a\x01e6`\x04a%VV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%4V[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a%\xBDV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x86V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a({V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B7V[a\x04\x9F\x81a\x0B\x86V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x86V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga%\xBDV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B7V[a\x08d\x81a\x0B\x86V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a(\xB7V[\x81\x01\x90a\nW\x91\x90a,nV[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\np\x91a\x0C\xD1V[_a\nz\x82a\r\xE0V[\x90Pa\n\x86\x81\x83a\x10,V[_a\n\x94\x83``\x01Qa\x11\x8CV[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\n\xC1\x83\x86`\x80\x01Qa\x11\xDF\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xDD\x83\x86`\xA0\x01Qa\x12\xD8\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\n\xF2\x91\x90a(\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BVWa\x0BVa%\xBDV[` \x02` \x01\x01Q\x90Pa\x0Bi\x81a\x13\xBBV[a\x0Bs\x813a\x18\x98V[a\x0B}\x813a\x19\x8DV[P`\x01\x01a\x0B;V[\x80Q_[\x81\x81\x10\x15a\x0C\xC0W_\x83\x82\x81Q\x81\x10a\x0B\xA5Wa\x0B\xA5a%\xBDV[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\"W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xD9Wa\x0B\xD9a%\xBDV[` \x02` \x01\x01Q\x90Pa\x0C\x19\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBAV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CjWa\x0Cja%\xBDV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xAE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8AV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1D\x06V[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91_\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\rtW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x98\x91\x90a-hV[\x90P\x81\x81\x18\x80\x83\x16_\x03a\r\xD8W`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R_\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a1[` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919`@Q` \x01a\x0Fy\x94\x93\x92\x91\x90a-\x7FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\x9B\x83_\x01Qa\x1D\x9CV[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xB7\x87`\x80\x01Qa\x1E5V[a\x0F\xC4\x88`\xA0\x01Qa\x1E\x9BV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10kW`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\x98WP\x80C\x10[\x80\x15a\x10\xA8WP`\xC0\x82\x01QQ\x81\x11[\x15a\x10\xD2W` \x82\x01Qa\x10\xCA\x90a\x10\xC0\x84\x86a\x1F6V[\x84`\xE0\x01Qa\x1F\xACV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11\x0CW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03LW_[\x82`\xA0\x01QQ\x81\x10\x15a\x06_W_\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11@Wa\x11@a%\xBDV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\x84W`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11\x1CV[_H:\x10\x15a\x11\xC7W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x11\xD7W\x03\x90V[P_[\x91\x90PV[a\x12\x16`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[_\x83`@\x01Q\x83a\x12'\x91\x90a.\x02V[\x90Pb\x98\x96\x80\x81\x10a\x12sW`@Q\x80``\x01`@R\x80\x85_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x12\xD2V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x12\xBDW` \x86\x01Qa\x12\xB8\x90b\x98\x96\x80\x85\x81\x03\x90a \xCFV[a\x12\xC3V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xF6Wa\x12\xF6a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x14W\x90P[P\x91P_[\x81\x81\x10\x15a\x13\xB3Wa\x13\x8E\x85\x82\x81Q\x81\x10a\x13\x80Wa\x13\x80a%\xBDV[` \x02` \x01\x01Q\x85a!\tV[\x83\x82\x81Q\x81\x10a\x13\xA0Wa\x13\xA0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13cV[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x13\xDBWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x141\x90\x85\x90`\x04\x01a.\x19V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14KW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\x90\x91\x90\x81\x01\x90a.+V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x14\xA7\x82\x84a.\xF4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\xBFWa\x14\xBFa%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x15wW\x85`@\x01Q\x81\x81Q\x81\x10a\x15JWa\x15Ja%\xBDV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15dWa\x15da%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15,V[P_\x80_[\x84\x81\x10\x15a\x18\x87W_\x87\x82\x81Q\x81\x10a\x15\x97Wa\x15\x97a%\xBDV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16RW\x88\x81\x81Q\x81\x10a\x15\xBDWa\x15\xBDa%\xBDV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x15\xA3V[P_\x80[\x88\x81\x10\x15a\x17\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16uWa\x16ua%\xBDV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x06W\x85\x15a\x16\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x16\xFF\x90\x84a.\xF4V[\x92P`\x01\x96P[P`\x01\x01a\x16VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\x88W\x84\x15a\x17oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\x81\x90\x82a.\xF4V[\x90P`\x01\x93P[\x80_\x03a\x17\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x17\xEA\x81`\x05a'\x10a \xCFV[\x82` \x01Q\x11\x15a\x18]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18rWa\x18ra%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x18\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19e\x90\x84\x90\x86\x90`\x04\x01a/\x07V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19{W_\x80\xFD[PZ\xFA\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1AL\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a1\xE8\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a1-`.\x919`@Q` \x01a\x1C)\x95\x94\x93\x92\x91\x90a/5V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\x96\x96\x95\x94\x93\x92`\x04\x01a/\xCFV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xADW_\x80\xFD[PZ\xF1\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1C\xE4Wa\x03L\x82\x82a\x1D\x06V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xBCV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\\W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1DaV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x0F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10\x0F\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBAWa\x1E\xBAa%\x90V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE4W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1F'W_a\x1F\x15\x85\x83\x81Q\x81\x10a\x1F\x08Wa\x1F\x08a%\xBDV[` \x02` \x01\x01Qa\"\xAAV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xE9V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xC0\x01Q`@Q` \x01a\x1FQ\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x8E\x93\x92\x91` \x01a0\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x1F\xC2\x91\x90a0\xC2V[\x91P\x91P_\x83`@\x81Q\x81\x10a\x1F\xDAWa\x1F\xDAa%\xBDV[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a 4W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a \x8FWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a \xC6W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\x02W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a!\x8BWa!\x86\x85`@\x01Q\x85a!j\x91\x90a.\x02V[a!w\x90b\x98\x96\x80a.\xF4V[` \x87\x01Q\x90b\x98\x96\x80a# V[a!\x91V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\"\xA3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10\x0F\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#SW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_`@\x82\x84\x03\x12\x15a#rW_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a#\x88W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\x9FW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a#\xCFW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE6W_\x80\xFD[a#\xF2\x87\x83\x88\x01a#bV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x07W_\x80\xFD[Pa$\x14\x86\x82\x87\x01a#xV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$1W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$HW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a$sW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x89W_\x80\xFD[a$\x95\x85\x82\x86\x01a$!V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a$\xB4W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\xCBW_\x80\xFD[a$\xD7\x88\x83\x89\x01a$!V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\xEFW_\x80\xFD[Pa$\xFC\x87\x82\x88\x01a#xV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a\x11\xDA\x81a%\x08V[_` \x82\x84\x03\x12\x15a%DW_\x80\xFD[\x815a%O\x81a%\x08V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a%fW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%|W_\x80\xFD[a%\x88\x84\x82\x85\x01a#bV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\x04W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xECV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&#\x81` \x86\x01` \x86\x01a%\xEAV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a&\xB3W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a&hV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'1a\x01\xA0\x85\x01\x82a&\x0CV[\x90P` \x83\x01Qa'o` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'\x87\x82\x82a&UV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'\xA1\x82\x82a&\x0CV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(+W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\x19\x86\x83Qa&\xBEV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\xDFV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(\xADW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xEAW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\x04W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#\xB6W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xCFWa)\xCFa%\x90V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\xE6W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\0Wa*\0a%\x90V[a*1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)\x88V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*EW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a*qW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\x95Wa*\x95a%\x90V[\x81`@R\x82\x93P\x845\x91Pa*\xA9\x82a%\x08V[\x90\x82R` \x84\x015\x90a*\xBB\x82a%\x08V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xE5\x82a%\x08V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xFEW_\x80\xFD[Pa+\x0B\x85\x82\x86\x01a)\xD7V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+(W_\x80\xFD[a+0a)\x18V[\x90P\x815a+=\x81a%\x08V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+tWa+ta%\x90V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a+\x8DW_\x80\xFD[\x815` a+\xA2a+\x9D\x83a+[V[a)\x88V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\xC0W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,#W`\x80\x81\x89\x03\x12\x15a+\xDBW_\x80\xFD[a+\xE3a)AV[\x815a+\xEE\x81a%\x08V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x11\x81a%\x08V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\xC4V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a,>W_\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a,aWa,aa%\x90V[`@R\x915\x82RP\x91\x90PV[_` \x82\x84\x03\x12\x15a,~W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,\x95W_\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a,\xA9W_\x80\xFD[a,\xB1a)dV[\x825\x82\x81\x11\x15a,\xBFW_\x80\xFD[a,\xCB\x87\x82\x86\x01a*aV[\x82RPa,\xDA` \x84\x01a%)V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\0\x86`\x80\x85\x01a+\x18V[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\x16W_\x80\xFD[a-\"\x87\x82\x86\x01a+~V[`\xA0\x83\x01RPa-6\x86a\x01\0\x85\x01a,.V[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a-MW_\x80\xFD[a-Y\x87\x82\x86\x01a)\xD7V[`\xE0\x83\x01RP\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-xW_\x80\xFD[PQ\x91\x90PV[_\x85Qa-\x90\x81\x84` \x8A\x01a%\xEAV[\x85Q\x90\x83\x01\x90a-\xA4\x81\x83` \x8A\x01a%\xEAV[\x85Q\x91\x01\x90a-\xB7\x81\x83` \x89\x01a%\xEAV[\x84Q\x91\x01\x90a-\xCA\x81\x83` \x88\x01a%\xEAV[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x12\xD2Wa\x12\xD2a-\xD5V[` \x81R_a%O` \x83\x01\x84a&\xBEV[_` \x80\x83\x85\x03\x12\x15a.a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xB0\x81lQ\xD5\x1CZ\xB3\x94{\xAD=\xF8\xFE\xDF\xB8u\x8E\xB6\xCE\x0E\xD2\x0B\x8F\xC1\x84L\x99&\xA01\xBEdsolcC\0\x08\x18\x003`@`\x80\x81R`\x04\x90\x816\x10\x15a\0\x15W`\0\x80\xFD[`\0\x90\x815`\xE0\x1C\x80c\rX\xB1\xDB\x14a\x12lW\x80c\x13|)\xFE\x14a\x10uW\x80c*-\x80\xD1\x14a\r\xB7W\x80c+g\xB5p\x14a\x0B\xDEW\x80c0\xF2\x8Bz\x14a\n\xDEW\x80c6D\xE5\x15\x14a\n\x9DW\x80c6\xC7\x85\x16\x14a\n(W\x80c?\xF9\xDC\xB1\x14a\t\xA8W\x80cO\xE0+D\x14a\t?W\x80ce\xD9r<\x14a\x07\xACW\x80c\x87Q|E\x14a\x06zW\x80c\x92}\xA1\x05\x14a\x05\xC3W\x80c\xCCS(\x7F\x14a\x04\xA3W\x80c\xED\xD9DK\x14a\x03:Wc\xFE\x8E\xC1\xA7\x14a\0\xC6W`\0\x80\xFD[4a\x036W`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x835\x81\x81\x11a\x032Wa\x01\x14\x906\x90\x86\x01a\x16KV[`$5\x82\x81\x11a\x03.Wa\x01+\x906\x90\x87\x01a\x16\x1AV[a\x013a\x14\xE6V[\x91`\x845\x85\x81\x11a\x03*Wa\x01K\x906\x90\x8A\x01a\x15\xC1V[\x98\x90\x95`\xA45\x90\x81\x11a\x03&Wa\x01d\x916\x91\x01a\x15\xC1V[\x96\x90\x95\x81Q\x90a\x01s\x82a\x13\xFFV[`k\x82R\x7FPermitBatchWitnessTransferFrom(T` \x83\x01R\x7FokenPermissions[] permitted,addr\x83\x83\x01R\x7Fess spender,uint256 nonce,uint25``\x83\x01R\x7F6 deadline,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x82Q\x9A\x8B\x91\x81a\x02\"` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8A\x81R\x03\x99a\x02[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x9B\x8C\x81\x01\x83R\x82a\x147V[Q\x90 \x90\x85QQa\x02k\x81a\x1E\xBBV[\x90\x8A[\x81\x81\x10a\x02\xF9WPPa\x02\xF6\x99\x9Aa\x02\xED\x91\x83Qa\x02\xA0\x81a\x02\x94` \x82\x01\x80\x95a\x1FfV[\x03\x84\x81\x01\x83R\x82a\x147V[Q\x90 ` \x89\x81\x01Q\x85\x8B\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`d5`\xC0\x84\x01R\x82`\xE0\x81\x01[\x03\x90\x81\x01\x83R\x82a\x147V[Q\x90 \x93a\x1C\xF7V[\x80\xF3[\x80a\x03\x11a\x03\x0Ba\x03!\x93\x8CQa\x17^V[Qa TV[a\x03\x1B\x82\x86a\x17^V[Ra\x1F\nV[a\x02nV[\x88\x80\xFD[\x87\x80\xFD[\x84\x80\xFD[\x83\x80\xFD[P\x80\xFD[P\x914a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x805\x82\x81\x11a\x032Wa\x03\x8B\x906\x90\x83\x01a\x16KV[`$5\x83\x81\x11a\x03.Wa\x03\xA2\x906\x90\x84\x01a\x16\x1AV[\x93\x90\x92a\x03\xADa\x14\xE6V[\x91`d5\x90\x81\x11a\x04\x9FWa\x03\xC4\x916\x91\x01a\x15\xC1V[\x94\x90\x93\x83QQ\x97a\x03\xD4\x89a\x1E\xBBV[\x98\x88[\x81\x81\x10a\x04}WPPa\x02\xF6\x97\x98\x81Qa\x04%\x81a\x03\xF9` \x82\x01\x80\x95a\x1FfV[\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x01\x83R\x82a\x147V[Q\x90 ` \x86\x01Q\x82\x87\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\xFC\xF3_Z\xC6\xA2\xC2\x88h\xDCD\xC3\x02\x16dp&b9\x19_\x02\xB0\xEE@\x834\x82\x933\xB7f\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x02\xED\x81a\x14\x1BV[\x80\x8Ba\x03\x1B\x82a\x04\x94a\x03\x0Ba\x04\x9A\x96\x8DQa\x17^V[\x92a\x17^V[a\x03\xD7V[\x86\x80\xFD[P\x824a\x05\xBFW` \x90\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x03.Wa\x04\xF4\x916\x91\x01a\x16\x1AV[\x92\x90\x91\x84[\x84\x81\x10a\x05\x04W\x85\x80\xF3[\x80a\x05\x1Aa\x05\x15`\x01\x93\x88\x88a\x19lV[a\x19|V[a\x05/\x84a\x05)\x84\x8A\x8Aa\x19lV[\x01a\x19|V[3\x89R\x83\x85R\x85\x89 \x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x92\x83\x8BR\x86R\x86\x8A \x91\x16\x90\x81\x8AR\x85R\x85\x89 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81T\x16\x90U\x85Q\x91\x82R\x84\x82\x01R\x7F\x89\xB1\xAD\xD1^\xFFV\xB3\xDF\xE2\x99\xAD\x94\xE0\x1F+R\xFB\xCB\x80\xAE\x1A;\xAE\xA6\xAE\x8C\x04\xCB+\x98\xA4\x853\x92\xA2\x01a\x04\xF9V[\x82\x80\xFD[P4a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06v\x81a\x05\xFFa\x14\xA0V[\x93a\x06\x08a\x14\xC3V[a\x06\x10a\x14\xE6V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16\x83R`\x01` \x90\x81R\x84\x84 \x92\x88\x16\x84R\x91\x82R\x83\x83 \x90\x87\x16\x83R\x81R\x91\x90 T\x92Q\x93\x83\x16\x84R`\xA0\x83\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x84\x01R`\xD0\x91\x90\x91\x1C`@\x83\x01R\x81\x90``\x82\x01\x90V[\x03\x90\xF3[P4a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06\xB2a\x14\xA0V[\x90a\x06\xBBa\x14\xC3V[\x91a\x06\xC4a\x14\xE6V[e\xFF\xFF\xFF\xFF\xFF\xFF\x92`d5\x84\x81\x16\x90\x81\x81\x03a\x03*Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x7F\xDA\x9F\xA7\xC1\xB0\x04\x02\xC1}\x01a\xB2I\xB1\xAB\x8B\xBE\xC0G\xC5\xA5\"\x07\xB9\xC1\x12\xDE\xFF\xD8\x17\x03k\x943\x8AR`\x01` R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x8B \x98s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x94\x16\x99\x8A\x8DR` R\x83\x87\x8D \x9B\x16\x9A\x8B\x8DR` R\x86\x8C \x94\x86\x15`\0\x14a\x07\xA4WPB\x16\x92[\x84T\x92\x16\x97\x88\x93`\xA0\x1B\x16\x91\x16\x17\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA4\x80\xF3[\x90P\x92a\x07\x83V[P\x824a\x05\xBFW``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x07\xE5a\x14\xA0V[\x90a\x07\xEEa\x14\xC3V[\x92e\xFF\xFF\xFF\xFF\xFF\xFF`D5\x81\x81\x16\x93\x90\x84\x81\x03a\x03*W3\x88R` \x91`\x01\x83R\x84\x89 \x96s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x97\x88\x8BR\x84R\x85\x8A \x98\x16\x97\x88\x8AR\x83R\x84\x89 T`\xD0\x1C\x93\x84\x87\x11\x15a\t\x17Wa\xFF\xFF\x90\x85\x84\x03\x16\x11a\x08\xF0WP\x90\x7FU\xEB\x90\xD8\x10\xE1p\x0B5\xA8\xE7\xE2S\x95\xFF\x7F+\"Y\xAB\xD7A\\\xA2(M\xFB\x1C$d\x18\xF3\x93\x92\x913\x89R`\x01\x82R\x83\x89 \x87\x8AR\x82R\x83\x89 \x88\x8AR\x82R\x83\x89 \x90y\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83T\x92`\xD0\x1B\x16\x91\x16\x17\x90U\x82Q\x94\x85R\x84\x01R3\x92\xA4\x80\xF3[\x84Q\x7F$\xD3Z&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P4a\x036W\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W\x80` \x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\x8Fa\x14\xA0V[\x16\x81R\x80\x84R\x81\x81 `$5\x82R\x84R T\x90Q\x90\x81R\xF3[P\x824a\x05\xBFW\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFW\x7F7\x04\x90/\x967f\xA4\xE5a\xBB\xAA\xB6\xE6\xCD\xC1\xB1\xDD\x12\xF6\xE9\xE9\x96H\xDA\x88C\xB3\xF4k\x91\x8D\x905\x91`$53\x85R\x84` R\x81\x85 \x84\x86R` R\x81\x85 \x81\x81T\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA2\x80\xF3[\x824a\n\x9AW`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\n\x9AWa\n`a\x14\xA0V[a\nha\x14\xC3V[a\npa\x14\xE6V[`d5\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x83\x03a\x03.Wa\x02\xF6\x93a\x17\xA1V[\x80\xFD[P4a\x036W\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W` \x90a\n\xD7a\x1B\x1EV[\x90Q\x90\x81R\xF3[P\x82\x904a\x05\xBFWa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x0B\x1A6a\x15*V[\x90\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x0BLa\x14xV[\x91`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\xDAWa\x02\xF6\x94a\x0Bo\x916\x91\x01a\x15\xC1V[\x93\x90\x92a\x0B|\x83Qa TV[` \x84\x01Q\x82\x85\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\x93\x9C!\xA4\x8A\x8D\xBE:\x9A$\x04\xA1\xD4f\x91\xE4\xD3\x9Fe\x83\xD6\xECk5qF\x04\xC9\x86\xD8\x01\x06\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x0B\xD1\x81a\x14\x1BV[Q\x90 \x91a\x1C%V[\x85\x80\xFD[P\x914a\x036Wa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x0C\x18a\x14\xA0V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC6\x01`\xC0\x81\x12a\x032W`\x80\x85Q\x91a\x0CQ\x83a\x13\xE3V[\x12a\x032W\x84Q\x90a\x0Cb\x82a\x13\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91`$5\x83\x81\x16\x81\x03a\x04\x9FW\x81R`D5\x83\x81\x16\x81\x03a\x04\x9FW` \x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF`d5\x81\x81\x16\x81\x03a\x03*W\x88\x83\x01R`\x845\x90\x81\x16\x81\x03a\x04\x9FW``\x82\x01R\x81R`\xA45\x93\x82\x85\x16\x85\x03a\x0B\xDAW` \x82\x01\x94\x85R`\xC45\x90\x87\x83\x01\x82\x81R`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x03&Wa\x0C\xFE\x906\x90\x84\x01a\x15\xC1V[\x92\x90\x93\x80B\x11a\r\x88WPP\x91\x85\x91a\rxa\x02\xF6\x99\x9Aa\r~\x95a\r#\x88Qa\x1F\xBEV[\x90\x89\x8CQ\x16\x90Q\x90\x83Q\x92` \x84\x01\x94\x7F\xF3\x84\x1C\xD1\xFF\0\x85\x02jc'\xB6 \xB6y\x97\xCE@\xF2\x82\xC8\x8A\x8E\x90ZzV&\xE3\x10\xF3\xD0\x86R\x84\x01R``\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x90 a\x1B\xD9V[\x91a \xC7V[Q\x92Q\x16\x91a\x19\x9DV[`$\x92P\x8AQ\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[P\x914a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x93\x81\x856\x01\x12a\x032Wa\r\xF3a\x14\xA0V[\x92`$\x90\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x85\x11a\x03*W\x85\x90\x856\x03\x01\x12a\x04\x9FW\x80Q\x97\x85\x89\x01\x89\x81\x10\x82\x82\x11\x17a\x10JW\x82R\x84\x83\x015\x81\x81\x11a\x03&W\x85\x01\x906`#\x83\x01\x12\x15a\x03&W\x83\x82\x015\x91a\x0EP\x83a\x15\xEFV[\x90a\x0E]\x85Q\x92\x83a\x147V[\x83\x82R` \x93\x87\x85\x84\x01\x91`\x07\x1B\x83\x01\x01\x916\x83\x11a\x10FW\x88\x01\x90[\x82\x82\x10a\x0F\xE9WPPP\x8AR`Da\x0E\x93\x86\x88\x01a\x15\tV[\x96\x83\x8C\x01\x97\x88R\x015\x94\x83\x8B\x01\x91\x86\x83R`D5\x90\x81\x11a\x0F\xE5Wa\x0E\xBB\x906\x90\x87\x01a\x15\xC1V[\x95\x90\x96\x80B\x11a\x0F\xBAWPPP\x89\x98\x99QQa\x0E\xD6\x81a\x1E\xBBV[\x90\x8B[\x81\x81\x10a\x0F\x97WPP\x92\x88\x94\x92a\rx\x92a\x0Fd\x97\x95\x83Qa\x0F\x02\x81a\x03\xF9\x86\x82\x01\x80\x95a\x1FfV[Q\x90 \x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x8B\x8BQ\x16\x91Q\x92\x85Q\x94\x85\x01\x95\x7F\xAF\x1B\r0\xD2\xCA\xB08\x0Eh\xF0h\x90\x07\xE3%I\x93\xC5\x96\xF2\xFD\xD0\xAA\xA7\xF4\xD0OyD\x08c\x87R\x85\x01R\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x16\x90\x82QQ\x92\x84[\x84\x81\x10a\x0FxW\x85\x80\xF3[\x80a\x0F\x91\x85\x85a\x0F\x8B`\x01\x95\x87Qa\x17^V[Qa\x19\x9DV[\x01a\x0FmV[\x80a\x03\x11a\x0F\xAC\x8E\x9F\x9E\x93a\x0F\xB2\x94Qa\x17^V[Qa\x1F\xBEV[\x9B\x9A\x9Ba\x0E\xD9V[\x85Q\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[\x8A\x80\xFD[`\x80\x826\x03\x12a\x10FW\x85`\x80\x91\x88Qa\x10\x02\x81a\x13\x98V[a\x10\x0B\x85a\x15\tV[\x81Ra\x10\x18\x83\x86\x01a\x15\tV[\x83\x82\x01Ra\x10'\x8A\x86\x01a\x16\x07V[\x8A\x82\x01R\x8Da\x107\x81\x87\x01a\x16\x07V[\x90\x82\x01R\x81R\x01\x91\x01\x90a\x0EzV[\x8C\x80\xFD[\x84\x89`A\x86\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83RR\xFD[P\x824a\x05\xBFWa\x01@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x10\xB06a\x15*V[\x91\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x10\xE2a\x14xV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90a\x01\x045\x85\x81\x11a\x04\x9FWa\x11\x05\x906\x90\x86\x01a\x15\xC1V[\x90\x93a\x01$5\x96\x87\x11a\x03*Wa\x11%a\x0B\xD1\x96a\x02\xF6\x986\x91\x01a\x15\xC1V[\x96\x90\x95\x82Q\x90a\x114\x82a\x13\xFFV[`d\x82R\x7FPermitWitnessTransferFrom(TokenP` \x83\x01R\x7Fermissions permitted,address spe\x84\x83\x01R\x7Fnder,uint256 nonce,uint256 deadl``\x83\x01R\x7Fine,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x83Q\x94\x85\x91\x81a\x11\xE3` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8B\x81R\x03\x93a\x12\x1C\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x95\x86\x81\x01\x83R\x82a\x147V[Q\x90 \x92a\x12*\x86Qa TV[` \x87\x81\x01Q\x85\x89\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`\xE45`\xC0\x84\x01R\x82`\xE0\x81\x01a\x02\xE1V[P\x824a\x05\xBFW` \x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x0B\xDAW6`#\x83\x01\x12\x15a\x0B\xDAW\x81\x015\x92\x83\x11a\x03.W`$\x90`\x076\x83\x86\x83\x1B\x84\x01\x01\x11a\x04\x9FW\x86[\x85\x81\x10a\x12\xE5W\x87\x80\xF3[\x80\x82\x1B\x83\x01\x90`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\x836\x03\x01\x12a\x03&Wa\x13\x92\x88\x87`\x01\x94``\x83Qa\x13,\x81a\x13\x98V[a\x13h`\x84a\x13<\x8D\x86\x01a\x15\tV[\x94\x85\x84Ra\x13L`D\x82\x01a\x15\tV[\x80\x97\x85\x01Ra\x13]`d\x82\x01a\x15\tV[\x80\x98\x85\x01R\x01a\x15\tV[\x91\x82\x91\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x80\x80\x93\x16\x95\x16\x93\x16\x91\x16a\x17\xA1V[\x01a\x12\xDAV[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC45\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`\0\x80\xFD[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`D5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x01\x90`\x80\x82\x12a\x14\x9BW`@\x80Q\x90a\x15c\x82a\x13\xE3V[\x80\x82\x94\x12a\x14\x9BW\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W\x82R`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x81R`$5` \x82\x01R\x82R`D5` \x83\x01R`d5\x91\x01RV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x83\x81\x86\x01\x95\x01\x01\x11a\x14\x9BWV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x13\xB4W`\x05\x1B` \x01\x90V[5\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x80\x85\x01\x94\x84`\x06\x1B\x01\x01\x11a\x14\x9BWV[\x91\x90\x91``\x81\x84\x03\x12a\x14\x9BW`@\x80Q\x91a\x16f\x83a\x13\xE3V[\x82\x94\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x81\x11a\x14\x9BW\x83\x01\x82`\x1F\x82\x01\x12\x15a\x14\x9BW\x805a\x16\x93\x81a\x15\xEFV[\x92a\x16\xA0\x87Q\x94\x85a\x147V[\x81\x84R` \x94\x85\x80\x86\x01\x93`\x06\x1B\x85\x01\x01\x93\x81\x85\x11a\x14\x9BW\x90\x86\x89\x98\x97\x96\x95\x94\x93\x92\x01\x92[\x84\x84\x10a\x16\xE3WPPPPP\x85R\x80\x82\x015\x90\x85\x01R\x015\x91\x01RV[\x90\x91\x92\x93\x94\x95\x96\x97\x84\x83\x03\x12a\x14\x9BW\x88Q\x90\x89\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17a\x170W\x8A\x92\x89\x92\x84Ra\x17\x14\x87a\x15\tV[\x81R\x82\x87\x015\x83\x82\x01R\x81R\x01\x93\x01\x91\x90\x88\x97\x96\x95\x94\x93a\x16\xC6V[`$`\0\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`A`\x04R\xFD[\x80Q\x82\x10\x15a\x17rW` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x92\x91\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@`\0\x82\x84\x16\x81R`\x01` R\x82\x82\x82 \x96\x16\x95\x86\x82R` R\x81\x81 3\x82R` R \x94\x85T\x95e\xFF\xFF\xFF\xFF\xFF\xFF\x87`\xA0\x1C\x16\x80B\x11a\x18\x84WP\x82\x87\x16\x96\x83\x88\x03a\x18\x12W[PPa\x18\x10\x95P\x16\x92a\x18\xB5V[V[\x87\x84\x84\x16\x11`\0\x14a\x18OW`$\x88`@Q\x90\x7F\xF9o\xB0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x84a\x18\x10\x9A\x03\x16\x91\x16\x17\x90U8\x80a\x18\x02V[`$\x90`@Q\x90\x7F\xD8\x1B/.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90`\0`d\x92` \x95\x82\x95`@Q\x94\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\x04\x86\x01R`$\x85\x01R`D\x84\x01RZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x15a\x19\x0EWV[`d`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R\xFD[\x91\x90\x81\x10\x15a\x17rW`\x06\x1B\x01\x90V[5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x90V[\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81``\x84\x01Q\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x85Q\x16\x94\x82` \x82\x01Q\x16\x92\x80\x86`@\x80\x94\x01Q\x16\x95\x16\x95`\0\x91\x87\x83R`\x01` R\x83\x83 \x89\x84R` R\x83\x83 \x99\x16\x98\x89\x83R` R\x82\x82 \x91\x84\x83T`\xD0\x1C\x03a\x1A\xF5W\x91\x85a\x1A\xCE\x94\x92\x7F\xC6\xA3w\xBF\xC4\xEB\x12\0$\xA8\xAC\x08\xEE\xF2\x05\xBE\x16\xB8\x17\x02\x08\x12\xC72#\xE8\x1D\x1B\xDB\x97\x08\xEC\x98\x97\x96\x94P\x87\x15`\0\x14a\x1A\xD3Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90B\x16[`\xA0\x1B\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01\x86\x01`\xD0\x1B\x16\x17\x17\x90UQ\x93\x84\x93\x84\x91`@\x91\x94\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF``\x85\x01\x96\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x80\x92\x16` \x85\x01R\x16\x91\x01RV[\x03\x90\xA4V[Py\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87a\x1A`V[`\x04\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x1BiW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x82R\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j`@\x82\x01RF``\x82\x01R0`\x80\x82\x01R`\x80\x81Ra\x1B\xD3\x81a\x13\xFFV[Q\x90 \x90V[a\x1B\xE1a\x1B\x1EV[\x90`@Q\x90` \x82\x01\x92\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84R`\"\x83\x01R`B\x82\x01R`B\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x92\x90\x93`\xA45\x93`@\x84\x01Q\x80B\x11a\x1C\xC6WP` \x84Q\x01Q\x80\x86\x11a\x1C\x95WP\x91\x85\x91a\rxa\x1Ce\x94a\x1C`` \x88\x01Q\x86a\x1EGV[a\x1B\xD9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91QQ\x16\x92`\x845\x91\x82\x16\x82\x03a\x14\x9BWa\x18\x10\x93a\x18\xB5V[`$\x90`@Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`$\x90`@Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x95\x90\x93\x95\x80QQ\x95`@\x92\x83\x83\x01Q\x80B\x11a\x1E\x17WP\x84\x88\x03a\x1D\xEEWa\x1D.\x91\x86\x91a\rx` \x9Ba\x1C`\x8D\x88\x01Q\x86a\x1EGV[`\0[\x86\x81\x10a\x1DBWPPPPPPPPV[a\x1DM\x81\x83Qa\x17^V[Q\x88a\x1DZ\x83\x87\x8Aa\x19lV[\x015\x90\x89\x81\x01Q\x80\x83\x11a\x1D\xBEWP\x91\x81\x88\x88\x88`\x01\x96\x85\x96a\x1D\x84W[PPPPPP\x01a\x1D1V[a\x1D\xB3\x95a\x1D\xAD\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x05\x15\x93Q\x16\x95a\x19lV[\x91a\x18\xB5V[\x808\x88\x88\x88\x83a\x1DxV[`$\x90\x86Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`\x04\x84Q\x7F\xFFc:8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`$\x90\x85Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\xFF\x83\x16\x1B\x92\x16`\0R`\0` R`@`\0 \x90`\x08\x1C`\0R` R`@`\0 \x81\x81T\x18\x80\x91U\x16\x15a\x1E\x91WV[`\x04`@Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90a\x1E\xC5\x82a\x15\xEFV[a\x1E\xD2`@Q\x91\x82a\x147V[\x82\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x1F\0\x82\x94a\x15\xEFV[\x01\x90` 6\x91\x017V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x1F7W`\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80Q` \x80\x92\x01\x91`\0[\x82\x81\x10a\x1F\x7FWPPPP\x90V[\x83Q\x85R\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x1FqV[\x90\x81Q\x91`\0[\x83\x81\x10a\x1F\xABWPP\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q\x81\x85\x01R\x01a\x1F\x9AV[`@Q` \x81\x01\x91\x7Febl\xADl\xB9d\x93\xBFo^\xBE\xA2\x87V\xC9f\xF0#\xAB\x9E\x8A\x83\xA7\x10\x18I\xD5W;6x\x83Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`@\x84\x01R` \x82\x01Q\x16``\x83\x01R``e\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82`@\x82\x01Q\x16`\x80\x85\x01R\x01Q\x16`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RQ\x90 \x90V[`@Q` \x80\x82\x01\x92\x7Fa\x83X\xAC=\xB8\xDC'O\x0C\xD8\x82\x9D\xA7\xE24\xBDH\xCDs\xC4\xA7@\xAE\xDE\x1A\xDE\xC9\x84m\x06\xA1\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16`@\x84\x01R\x01Q``\x82\x01R``\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x90\x82`@\x91\x03\x12a\x14\x9BW` \x825\x92\x015\x90V[`\0\x84;a\".WP`A\x82\x03a!\xACWa \xE4\x82\x82\x01\x82a \xB1V[\x93\x90\x92`@\x10\x15a\x17rW` \x93`\0\x93`\xFF`@`\x80\x95\x015`\xF8\x1C[`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a!\xA0Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80`\0Q\x16\x91\x82\x15a!vW\x16\x03a!LWV[`\x04`@Q\x7F\x81^\x1Dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`\x04`@Q\x7F\x8B\xAAW\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`@Q=`\0\x82>=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 \x0B/A+h\xC7V\xE3+\xF9E\xB8\xB8\xB9\\\xA6\x8C\xC1\xA9\xFE\xC2?\xCDLz\x9C`^qS_ddsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf4714610094575b600080fd5b005b6100506100b7565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a79062010000900460ff1681565b604051901515815260200161008b565b60408051606081018252600080825260208201819052918101919091526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e455200000000000000000000006044820152600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa15801561016d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610191919061083d565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156101fe57600080fd5b505af1158015610212573d6000803e3d6000fd5b5050506e22d473030f116ddee9f6b43ac78ba33b60000390506102395761023761057b565b505b60007fb0059e9187daac70f2c765cfc99a03f9bf4321c11b7ab784ee3e310292724c1860001b6e22d473030f116ddee9f6b43ac78ba38360405161027c90610823565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f59050801580156102c0573d6000803e3d6000fd5b5090506103016040518060400160405280600e81526020017f696e697420636f64652068617368000000000000000000000000000000000000815250610646565b6103d16040518060200161031490610823565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408181526e22d473030f116ddee9f6b43ac78ba3602083015273ffffffffffffffffffffffffffffffffffffffff861690820152606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526103b6929160200161089e565b604051602081830303815290604052805190602001206106d8565b6104106040518060400160405280600781526020017f52656163746f720000000000000000000000000000000000000000000000000081525082610769565b60008060001b60405161042290610830565b8190604051809103906000f5905080158015610442573d6000803e3d6000fd5b5090506104846040518060400160405280600681526020017f51756f746572000000000000000000000000000000000000000000000000000081525082610769565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156104ef57600080fd5b505af1158015610503573d6000803e3d6000fd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815250935050505090565b600080604051806123e001604052806123c08152602001614c236123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c782906105fe906e22d473030f116ddee9f6b43ac78ba3908590600401610917565b600060405180830381600087803b15801561061857600080fd5b505af115801561062c573d6000803e3d6000fd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6106d58160405160240161065a919061094e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526107fe565b50565b6106d5816040516024016106ee91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f27b7cf85000000000000000000000000000000000000000000000000000000001790526107fe565b6107fa828260405160240161077f929190610961565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526107fe565b5050565b6106d58160006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6134708061099a83390190565b610e1980613e0a83390190565b60006020828403121561084f57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461087357600080fd5b9392505050565b60005b8381101561089557818101518382015260200161087d565b50506000910152565b600083516108b081846020880161087a565b8351908301906108c481836020880161087a565b01949350505050565b600081518084526108e581602086016020860161087a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061094660408301846108cd565b949350505050565b60208152600061087360208301846108cd565b60408152600061097460408301856108cd565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a06040523480156200001157600080fd5b5060405162003470380380620034708339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051613350620001206000396000818160e001528181610d6101526119eb01526133506000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612440565b6101eb565b005b6100b96100c93660046124ee565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612530565b6104c5565b34801561014a57600080fd5b506100b96101593660046125c9565b610683565b6100b961016c3660046125ed565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125c9565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612659565b60200260200101819052506102d981610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161285c565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb1565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861262a565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612659565b90506020028101906104789190612922565b6109f6565b82828151811061048f5761048f612659565b6020908102919091010152600101610449565b506104ac81610b60565b6104b581610bb1565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961262a565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612659565b8282815181106105d9576105d9612659565b60209081029190910101526001016105aa565b506105f681610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161285c565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb1565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612659565b602002602001018190525061087d81610b60565b61088681610bb1565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612960565b810190610a7c9190612d2c565b80516020810151604090910151919250610a9591610d04565b6000610aa082610e17565b9050610aac8183611065565b6000610abb83606001516111c7565b90506040518060a0016040528084600001518152602001610ae983866080015161121c90919063ffffffff16565b8152602001610b05838660a0015161131b90919063ffffffff16565b8152602001868060200190610b1a9190612960565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b8157610b81612659565b60200260200101519050610b9481611400565b610b9e81336118f0565b610ba881336119e9565b50600101610b65565b805160005b81811015610cf3576000838281518110610bd257610bd2612659565b602002602001015190506000816040015151905060005b81811015610c5357600083604001518281518110610c0957610c09612659565b60200260200101519050610c4a81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d239092919063ffffffff16565b50600101610be9565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9c57610c9c612659565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce191815260200190565b60405180910390a45050600101610bb6565b5047156104c1576104c13347611d6a565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b916000917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce9190612e2d565b9050818118808316600003610e0f576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061323360208301396040518060800160405280604881526020016131bd604891396040518060800160405280605b81526020016132c0605b9139604051602001610fb19493929190612e46565b60405160208183030381529060405280519060200120610fd48360000151611e04565b836020015184604001518560600151610ff08760800151611e9e565b610ffd8860a00151611f05565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110a4576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff16158015906110d157508043105b80156110e1575060c08201515181115b1561110b576020820151611103906110f98486611fa3565b8460e0015161201a565b5060c0810151515b80431015611145576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a00151828151811061117b5761117b612659565b60200260200101516040015111156111bf576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611156565b6000483a1015611203576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a0381811115611213570390565b5060005b919050565b6112566040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60008360400151836112689190612ecc565b90506298968081106112b6576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018560200151815250915050611315565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156113005760208601516112fb906298968085810390612142565b611306565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156113395761133961262a565b6040519080825280602002602001820160405280156113a257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113575790505b50915060005b818110156113f8576113d38582815181106113c5576113c5612659565b60200260200101518561217e565b8382815181106113e5576113e5612659565b60209081029190910101526001016113a8565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166114205750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611477908590600401612ee3565b600060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114da9190810190612ef6565b60408301515181519192509060006114f28284612fc6565b67ffffffffffffffff81111561150a5761150a61262a565b60405190808252806020026020018201604052801561157357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115285790505b50905060005b838110156115c4578560400151818151811061159757611597612659565b60200260200101518282815181106115b1576115b1612659565b6020908102919091010152600101611579565b5060008060005b848110156118df5760008782815181106115e7576115e7612659565b6020026020010151905060005b828110156116a55788818151811061160e5761160e612659565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361169d5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016115f4565b506000805b888110156117665760008b6040015182815181106116ca576116ca612659565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361175d578515611747576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117569084612fc6565b9250600196505b506001016116aa565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117df5784156117c6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117d89082612fc6565b9050600193505b806000036118345781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611842816005612710612142565b826020015111156118b5578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106118ca576118ca612659565b602090810291909101015250506001016115cb565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611941576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119bd9084908690600401612fd9565b60006040518083038186803b1580156119d557600080fd5b505afa158015610e0f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611aa9846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d8152602001613233608d91396040518060800160405280604881526020016131bd60489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916132c09060d401396040518060600160405280602e8152602001613205602e9139604051602001611c88959493929190613008565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cf596959493926004016130a3565b600060405180830381600087803b158015611d0f57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d485761035f8282611d6a565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612232565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613233608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161104898939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016131bd6048913980516020918201208351848301516040808701519051611048950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611f2557611f2561262a565b6040519080825280601f01601f191660200182016040528015611f4f576020820181803683370190505b50905060005b8351811015611f94576000611f82858381518110611f7557611f75612659565b6020026020010151612324565b60208381028501015250600101611f55565b50805160209091012092915050565b600081468460c00151604051602001611fbf9151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ffc93929160200161316b565b60405160208183030381529060405280519060200120905092915050565b600080828060200190518101906120319190613198565b9150915060008360408151811061204a5761204a612659565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156120a7573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612102575073ffffffffffffffffffffffffffffffffffffffff8116155b15612139576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261217757600080fd5b5091020490565b604080516060810182526000808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff16815290840151602082019015612201576121fc8560400151856121e09190612ecc565b6121ed9062989680612fc6565b6020870151906298968061239b565b612207565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061231d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b81526020016132c0605b9139805160209182012083518483015160408087015160608801519151611048969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123d057600080fd5b50910281810615159190040190565b6000604082840312156123f157600080fd5b50919050565b60008083601f84011261240957600080fd5b50813567ffffffffffffffff81111561242157600080fd5b60208301915083602082850101111561243957600080fd5b9250929050565b60008060006040848603121561245557600080fd5b833567ffffffffffffffff8082111561246d57600080fd5b612479878388016123df565b9450602086013591508082111561248f57600080fd5b5061249c868287016123f7565b9497909650939450505050565b60008083601f8401126124bb57600080fd5b50813567ffffffffffffffff8111156124d357600080fd5b6020830191508360208260051b850101111561243957600080fd5b6000806020838503121561250157600080fd5b823567ffffffffffffffff81111561251857600080fd5b612524858286016124a9565b90969095509350505050565b6000806000806040858703121561254657600080fd5b843567ffffffffffffffff8082111561255e57600080fd5b61256a888389016124a9565b9096509450602087013591508082111561258357600080fd5b50612590878288016123f7565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356112178161259c565b6000602082840312156125db57600080fd5b81356125e68161259c565b9392505050565b6000602082840312156125ff57600080fd5b813567ffffffffffffffff81111561261657600080fd5b612622848285016123df565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126a357818101518382015260200161268b565b50506000910152565b600081518084526126c4816020860160208601612688565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612756578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161270b565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d56101a08501826126ac565b905060208301516128136020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282b82826126f6565b915050606083015184820360a086015261284582826126ac565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128bf868351612761565b95509382019390820190600101612885565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261295657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261299557600080fd5b83018035915067ffffffffffffffff8211156129b057600080fd5b60200191503681900382131561243957600080fd5b6040516060810167ffffffffffffffff811182821017156129e8576129e861262a565b60405290565b6040516080810167ffffffffffffffff811182821017156129e8576129e861262a565b604051610100810167ffffffffffffffff811182821017156129e8576129e861262a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a7c57612a7c61262a565b604052919050565b600082601f830112612a9557600080fd5b813567ffffffffffffffff811115612aaf57612aaf61262a565b612ae060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a35565b818152846020838601011115612af557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2457600080fd5b60405160c0810167ffffffffffffffff8282108183111715612b4857612b4861262a565b8160405282935084359150612b5c8261259c565b908252602084013590612b6e8261259c565b816020840152604085013560408401526060850135606084015260808501359150612b988261259c565b81608084015260a0850135915080821115612bb257600080fd5b50612bbf85828601612a84565b60a0830152505092915050565b600060608284031215612bde57600080fd5b612be66129c5565b90508135612bf38161259c565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c2b57612c2b61262a565b5060051b60200190565b600082601f830112612c4657600080fd5b81356020612c5b612c5683612c11565b612a35565b82815260079290921b84018101918181019086841115612c7a57600080fd5b8286015b84811015612cdf5760808189031215612c975760008081fd5b612c9f6129ee565b8135612caa8161259c565b8152818501358582015260408083013590820152606080830135612ccd8161259c565b90820152835291830191608001612c7e565b509695505050505050565b600060208284031215612cfc57600080fd5b6040516020810181811067ffffffffffffffff82111715612d1f57612d1f61262a565b6040529135825250919050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff80821115612d5657600080fd5b908301906101408286031215612d6b57600080fd5b612d73612a11565b823582811115612d8257600080fd5b612d8e87828601612b12565b825250612d9d602084016125be565b60208201526040830135604082015260608301356060820152612dc38660808501612bcc565b608082015260e083013582811115612dda57600080fd5b612de687828601612c35565b60a083015250612dfa866101008501612cea565b60c082015261012083013582811115612e1257600080fd5b612e1e87828601612a84565b60e08301525095945050505050565b600060208284031215612e3f57600080fd5b5051919050565b60008551612e58818460208a01612688565b855190830190612e6c818360208a01612688565b8551910190612e7f818360208901612688565b8451910190612e92818360208801612688565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761131557611315612e9d565b6020815260006125e66020830184612761565b60006020808385031215612f0957600080fd5b825167ffffffffffffffff811115612f2057600080fd5b8301601f81018513612f3157600080fd5b8051612f3f612c5682612c11565b81815260609182028301840191848201919088841115612f5e57600080fd5b938501935b83851015612fba5780858a031215612f7b5760008081fd5b612f836129c5565b8551612f8e8161259c565b81528587015187820152604080870151612fa78161259c565b9082015283529384019391850191612f63565b50979650505050505050565b8082018082111561131557611315612e9d565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006126226040830184612761565b7f5072696f726974794f72646572207769746e657373290000000000000000000081526000601687516130418183860160208c01612688565b8751908401906130578184840160208c01612688565b875191019061306c8184840160208b01612688565b86519101906130818184840160208a01612688565b85519101906130968184840160208901612688565b0101979650505050505050565b60006101406130d3838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131146080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152613149818401866126ac565b905082810361012084015261315e81856126ac565b9998505050505050505050565b83815282602082015260008251613189816040850160208701612688565b91909101604001949350505050565b600080604083850312156131ab57600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220353e4a9c8af32ce67b5de33aaecb5fae198f4618ed76c7f0ec66d08df440265b64736f6c63430008180033608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212204625b71d7eed99b6b5ada47f029667231edf05e28809e554360e4da22954e8c664736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610091575b5f80fd5b005b61004d6100b4565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015292820151909216908201526060015b60405180910390f35b600c546100a49062010000900460ff1681565b6040519015158152602001610088565b604080516060810182525f80825260208201819052918101919091526040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464f554e4452595f52454143544f525f4f574e4552000000000000000000000060448201525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90606401602060405180830381865afa158015610166573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061018a91906105ee565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff16637fb5297f6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156101f3575f80fd5b505af1158015610205573d5f803e3d5ffd5b5050506e22d473030f116ddee9f6b43ac78ba33b5f03905061022b5761022961044f565b505b5f7fb0059e9187daac70f2c765cfc99a03f9bf4321c11b7ab784ee3e310292724c185f1b6e22d473030f116ddee9f6b43ac78ba38360405161026c906105d4565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103905ff59050801580156102ad573d5f803e3d5ffd5b5090506102ef6040518060400160405280600781526020017f52656163746f720000000000000000000000000000000000000000000000000081525082610514565b5f805f1b6040516102ff906105e1565b8190604051809103905ff590508015801561031c573d5f803e3d5ffd5b50905061035e6040518060400160405280600681526020017f51756f746572000000000000000000000000000000000000000000000000000081525082610514565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156103c5575f80fd5b505af11580156103d7573d5f803e3d5ffd5b5050505060405180606001604052806e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815250935050505090565b5f80604051806123e001604052806123c0815260200161484a6123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c782906104d1906e22d473030f116ddee9f6b43ac78ba3908590600401610689565b5f604051808303815f87803b1580156104e8575f80fd5b505af11580156104fa573d5f803e3d5ffd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b6105a5828260405160240161052a9291906106bf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526105a9565b5050565b6105b2816105b5565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b613390806106f783390190565b610dc380613a8783390190565b5f602082840312156105fe575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610621575f80fd5b9392505050565b5f81518084525f5b8181101561064c57602081850181015186830182015201610630565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6106b76040830184610628565b949350505050565b604081525f6106d16040830185610628565b905073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe60a060405234801562000010575f80fd5b5060405162003390380380620033908339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b608051613278620001185f395f818160da01528181610d2d015261198f01526132785ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af3660046123bd565b6101e0565b005b6100b46100c4366004612462565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46101333660046124a1565b6104af565b348015610143575f80fd5b506100b4610152366004612534565b610665565b6100b4610165366004612556565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db366004612534565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b76125bd565b60200260200101819052506102cb81610b37565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b908490879087906004016127b8565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b86565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff81111561037457610374612590565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c57610467858583818110610450576104506125bd565b9050602002810190610462919061287b565b6109d2565b828281518110610479576104796125bd565b6020908102919091010152600101610433565b5061049681610b37565b61049f81610b86565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d2612590565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae878783818110610450576104506125bd565b8282815181106105c0576105c06125bd565b6020908102919091010152600101610591565b506105dd81610b37565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d908490889088906004016127b8565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b86565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f81518110610847576108476125bd565b602002602001018190525061085b81610b37565b61086481610b86565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a83806128b7565b810190610a579190612c6e565b80516020810151604090910151919250610a7091610cd1565b5f610a7a82610de0565b9050610a86818361102c565b5f610a94836060015161118c565b90506040518060a00160405280845f01518152602001610ac18386608001516111df90919063ffffffff16565b8152602001610add838660a001516112d890919063ffffffff16565b8152602001868060200190610af291906128b7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200192909252509392505050565b80515f5b8181101561034c575f838281518110610b5657610b566125bd565b60200260200101519050610b69816113bb565b610b738133611898565b610b7d813361198d565b50600101610b3b565b80515f5b81811015610cc0575f838281518110610ba557610ba56125bd565b602002602001015190505f81604001515190505f5b81811015610c22575f83604001518281518110610bd957610bd96125bd565b60200260200101519050610c1981604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611cbf9092919063ffffffff16565b50600101610bba565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c6a57610c6a6125bd565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610cae91815260200190565b60405180910390a45050600101610b8a565b5047156104ab576104ab3347611d06565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b915f917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610d74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d989190612d68565b90508181188083165f03610dd8576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b8201525f9060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061315b60208301396040518060800160405280604881526020016130e5604891396040518060800160405280605b81526020016131e8605b9139604051602001610f799493929190612d7f565b60405160208183030381529060405280519060200120610f9b835f0151611d9c565b836020015184604001518560600151610fb78760800151611e35565b610fc48860a00151611e9b565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b80516060015142111561106b576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff161580159061109857508043105b80156110a8575060c08201515181115b156110d25760208201516110ca906110c08486611f36565b8460e00151611fac565b5060c0810151515b8043101561110c576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561034c575f5b8260a001515181101561065f575f8360a001518281518110611140576111406125bd565b6020026020010151604001511115611184576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60010161111c565b5f483a10156111c7576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a03818111156111d7570390565b505f5b919050565b61121660405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f8360400151836112279190612e02565b9050629896808110611273576040518060600160405280855f015173ffffffffffffffffffffffffffffffffffffffff1681526020015f815260200185602001518152509150506112d2565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156112bd5760208601516112b89062989680858103906120cf565b6112c3565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156112f6576112f6612590565b60405190808252806020026020018201604052801561135e57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113145790505b5091505f5b818110156113b35761138e858281518110611380576113806125bd565b602002602001015185612109565b8382815181106113a0576113a06125bd565b6020908102919091010152600101611363565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166113db5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611431908590600401612e19565b5f60405180830381865afa15801561144b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114909190810190612e2b565b6040830151518151919250905f6114a78284612ef4565b67ffffffffffffffff8111156114bf576114bf612590565b60405190808252806020026020018201604052801561152757816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114dd5790505b5090505f5b83811015611577578560400151818151811061154a5761154a6125bd565b6020026020010151828281518110611564576115646125bd565b602090810291909101015260010161152c565b505f805f5b84811015611887575f878281518110611597576115976125bd565b602002602001015190505f5b82811015611652578881815181106115bd576115bd6125bd565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff160361164a5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6001016115a3565b505f805b8881101561170f575f8b604001518281518110611675576116756125bd565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff16036117065785156116f0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516116ff9084612ef4565b9250600196505b50600101611656565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361178857841561176f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117819082612ef4565b9050600193505b805f036117dc5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6117ea8160056127106120cf565b8260200151111561185d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a0181518110611872576118726125bd565b6020908102919091010152505060010161157c565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146118e9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119659084908690600401612f07565b5f6040518083038186803b15801561197b575f80fd5b505afa158015610dd8573d5f803e3d5ffd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611a4c846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff861682528087015181015190820152855f01516020015186608001516040518060c00160405280608d815260200161315b608d91396040518060800160405280604881526020016130e560489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916131e89060d401396040518060600160405280602e815260200161312d602e9139604051602001611c29959493929190612f35565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611c969695949392600401612fcf565b5f604051808303815f87803b158015611cad575f80fd5b505af1158015610dd8573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611ce45761034c8282611d06565b61034c73ffffffffffffffffffffffffffffffffffffffff84163384846121bc565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611d5c576040519150601f19603f3d011682016040523d82523d5f602084013e611d61565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060c00160405280608d815260200161315b608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161100f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f6040518060800160405280604881526020016130e5604891398051602091820120835184830151604080870151905161100f950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b5f80825160200267ffffffffffffffff811115611eba57611eba612590565b6040519080825280601f01601f191660200182016040528015611ee4576020820181803683370190505b5090505f5b8351811015611f27575f611f15858381518110611f0857611f086125bd565b60200260200101516122aa565b60208381028501015250600101611ee9565b50805160209091012092915050565b5f81468460c00151604051602001611f519151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611f8e939291602001613096565b60405160208183030381529060405280519060200120905092915050565b5f8082806020019051810190611fc291906130c2565b915091505f83604081518110611fda57611fda6125bd565b01602090810151604080515f80825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa158015612034573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158061208f575073ffffffffffffffffffffffffffffffffffffffff8116155b156120c6576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612102575f80fd5b5091020490565b604080516060810182525f808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff1681529084015160208201901561218b5761218685604001518561216a9190612e02565b6121779062989680612ef4565b60208701519062989680612320565b612191565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5050505050565b5f6040518060800160405280605b81526020016131e8605b913980516020918201208351848301516040808701516060880151915161100f969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612353575f80fd5b50910281810615159190040190565b5f60408284031215612372575f80fd5b50919050565b5f8083601f840112612388575f80fd5b50813567ffffffffffffffff81111561239f575f80fd5b6020830191508360208285010111156123b6575f80fd5b9250929050565b5f805f604084860312156123cf575f80fd5b833567ffffffffffffffff808211156123e6575f80fd5b6123f287838801612362565b94506020860135915080821115612407575f80fd5b5061241486828701612378565b9497909650939450505050565b5f8083601f840112612431575f80fd5b50813567ffffffffffffffff811115612448575f80fd5b6020830191508360208260051b85010111156123b6575f80fd5b5f8060208385031215612473575f80fd5b823567ffffffffffffffff811115612489575f80fd5b61249585828601612421565b90969095509350505050565b5f805f80604085870312156124b4575f80fd5b843567ffffffffffffffff808211156124cb575f80fd5b6124d788838901612421565b909650945060208701359150808211156124ef575f80fd5b506124fc87828801612378565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b80356111da81612508565b5f60208284031215612544575f80fd5b813561254f81612508565b9392505050565b5f60208284031215612566575f80fd5b813567ffffffffffffffff81111561257c575f80fd5b61258884828501612362565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156126045781810151838201526020016125ec565b50505f910152565b5f81518084526126238160208601602086016125ea565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156126b3578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612668565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127316101a085018261260c565b9050602083015161276f6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526127878282612655565b915050606083015184820360a08601526127a1828261260c565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b8381101561282b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128198683516126be565b955093820193908201906001016127df565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126128ad575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128ea575f80fd5b83018035915067ffffffffffffffff821115612904575f80fd5b6020019150368190038213156123b6575f80fd5b6040516060810167ffffffffffffffff8111828210171561293b5761293b612590565b60405290565b6040516080810167ffffffffffffffff8111828210171561293b5761293b612590565b604051610100810167ffffffffffffffff8111828210171561293b5761293b612590565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129cf576129cf612590565b604052919050565b5f82601f8301126129e6575f80fd5b813567ffffffffffffffff811115612a0057612a00612590565b612a3160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612988565b818152846020838601011115612a45575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215612a71575f80fd5b60405160c0810167ffffffffffffffff8282108183111715612a9557612a95612590565b8160405282935084359150612aa982612508565b908252602084013590612abb82612508565b816020840152604085013560408401526060850135606084015260808501359150612ae582612508565b81608084015260a0850135915080821115612afe575f80fd5b50612b0b858286016129d7565b60a0830152505092915050565b5f60608284031215612b28575f80fd5b612b30612918565b90508135612b3d81612508565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612b7457612b74612590565b5060051b60200190565b5f82601f830112612b8d575f80fd5b81356020612ba2612b9d83612b5b565b612988565b82815260079290921b84018101918181019086841115612bc0575f80fd5b8286015b84811015612c235760808189031215612bdb575f80fd5b612be3612941565b8135612bee81612508565b8152818501358582015260408083013590820152606080830135612c1181612508565b90820152835291830191608001612bc4565b509695505050505050565b5f60208284031215612c3e575f80fd5b6040516020810181811067ffffffffffffffff82111715612c6157612c61612590565b6040529135825250919050565b5f60208284031215612c7e575f80fd5b813567ffffffffffffffff80821115612c95575f80fd5b908301906101408286031215612ca9575f80fd5b612cb1612964565b823582811115612cbf575f80fd5b612ccb87828601612a61565b825250612cda60208401612529565b60208201526040830135604082015260608301356060820152612d008660808501612b18565b608082015260e083013582811115612d16575f80fd5b612d2287828601612b7e565b60a083015250612d36866101008501612c2e565b60c082015261012083013582811115612d4d575f80fd5b612d59878286016129d7565b60e08301525095945050505050565b5f60208284031215612d78575f80fd5b5051919050565b5f8551612d90818460208a016125ea565b855190830190612da4818360208a016125ea565b8551910190612db78183602089016125ea565b8451910190612dca8183602088016125ea565b019695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176112d2576112d2612dd5565b602081525f61254f60208301846126be565b5f6020808385031215612e3c575f80fd5b825167ffffffffffffffff811115612e52575f80fd5b8301601f81018513612e62575f80fd5b8051612e70612b9d82612b5b565b81815260609182028301840191848201919088841115612e8e575f80fd5b938501935b83851015612ee85780858a031215612ea9575f80fd5b612eb1612918565b8551612ebc81612508565b81528587015187820152604080870151612ed581612508565b9082015283529384019391850191612e93565b50979650505050505050565b808201808211156112d2576112d2612dd5565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f61258860408301846126be565b7f5072696f726974794f72646572207769746e657373290000000000000000000081525f60168751612f6d8183860160208c016125ea565b875190840190612f838184840160208c016125ea565b8751910190612f988184840160208b016125ea565b8651910190612fad8184840160208a016125ea565b8551910190612fc281848401602089016125ea565b0101979650505050505050565b5f610140612ffe838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261303f6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526130748184018661260c565b9050828103610120840152613089818561260c565b9998505050505050505050565b8381528260208201525f82516130b38160408501602087016125ea565b91909101604001949350505050565b5f80604083850312156130d3575f80fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220d3e31f920a5d8c4218b042df25184b48b18b01bb6564f8902884558a765be30664736f6c63430008180033608060405234801561000f575f80fd5b50610da68061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806341d88d6914610043578063585da6281461006c5780637671d07b14610081575b5f80fd5b6100566100513660046104a8565b6100c2565b60405161006391906105dc565b60405180910390f35b61007f61007a3660046108c4565b610218565b005b61009d61008f366004610a2a565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610063565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183525f815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101aa9291600401610a64565b5f604051808303815f87803b1580156101c1575f80fd5b505af19250505080156101d2575060015b610212573d8080156101ff576040519150601f19603f3d011682016040523d82523d5f602084013e610204565b606091505b5061020e81610297565b9150505b92915050565b8151600114610253576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f825f8151811061026657610266610ad7565b602002602001015160405160200161027e91906105dc565b6040516020818303038152906040529050805181602001fd5b60408051610160810182525f60a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031257815182602001fd5b818060200190518101906102129190610ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561037657610376610326565b60405290565b6040516060810167ffffffffffffffff8111828210171561037657610376610326565b60405160a0810167ffffffffffffffff8111828210171561037657610376610326565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561040957610409610326565b604052919050565b5f67ffffffffffffffff82111561042a5761042a610326565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610465575f80fd5b813561047861047382610411565b6103c2565b81815284602083860101111561048c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156104b9575f80fd5b823567ffffffffffffffff808211156104d0575f80fd5b6104dc86838701610456565b935060208501359150808211156104f1575f80fd5b506104fe85828601610456565b9150509250929050565b5f5b8381101561052257818101518382015260200161050a565b50505f910152565b5f8151808452610541816020860160208601610508565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156105d1578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101610586565b509495945050505050565b602081525f825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106576101c084018261052a565b905060208401516106956040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106d08383610573565b925060608601519150808584030160c0860152506106ee828261052a565b915050608084015160e08401528091505092915050565b5f67ffffffffffffffff82111561071e5761071e610326565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610749575f80fd5b50565b5f60c0828403121561075c575f80fd5b610764610353565b9050813561077181610728565b8152602082013561078181610728565b80602083015250604082013560408201526060820135606082015260808201356107aa81610728565b608082015260a082013567ffffffffffffffff8111156107c8575f80fd5b6107d484828501610456565b60a08301525092915050565b5f606082840312156107f0575f80fd5b6107f861037c565b9050813561080581610728565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610832575f80fd5b8135602061084261047383610705565b82815260609283028501820192828201919087851115610860575f80fd5b8387015b858110156108b75781818a03121561087a575f80fd5b61088261037c565b813561088d81610728565b815281860135868201526040808301356108a681610728565b908201528452928401928101610864565b5090979650505050505050565b5f80604083850312156108d5575f80fd5b823567ffffffffffffffff808211156108ec575f80fd5b818501915085601f8301126108ff575f80fd5b8135602061090f61047383610705565b82815260059290921b8401810191818101908984111561092d575f80fd5b8286015b84811015610a1457803586811115610947575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181131561097b575f80fd5b61098361039f565b8683013589811115610993575f80fd5b6109a18f898387010161074c565b8252506109b18e604085016107e0565b8782015260a0830135898111156109c6575f80fd5b6109d48f8983870101610823565b60408301525060c0830135898111156109eb575f80fd5b6109f98f8983870101610456565b60608301525091013560808201528352918301918301610931565b50965050860135925050808211156104f1575f80fd5b5f60208284031215610a3a575f80fd5b813567ffffffffffffffff811115610a50575f80fd5b610a5c84828501610456565b949350505050565b604081525f8351604080840152610a7e608084018261052a565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610ab9828261052a565b9150508281036020840152610ace818561052a565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82601f830112610b13575f80fd5b8151610b2161047382610411565b818152846020838601011115610b35575f80fd5b610a5c826020830160208701610508565b5f60c08284031215610b56575f80fd5b610b5e610353565b90508151610b6b81610728565b81526020820151610b7b81610728565b8060208301525060408201516040820152606082015160608201526080820151610ba481610728565b608082015260a082015167ffffffffffffffff811115610bc2575f80fd5b6107d484828501610b04565b5f60608284031215610bde575f80fd5b610be661037c565b90508151610bf381610728565b80825250602082015160208201526040820151604082015292915050565b5f82601f830112610c20575f80fd5b81516020610c3061047383610705565b82815260609283028501820192828201919087851115610c4e575f80fd5b8387015b858110156108b75781818a031215610c68575f80fd5b610c7061037c565b8151610c7b81610728565b81528186015186820152604080830151610c9481610728565b908201528452928401928101610c52565b5f60208284031215610cb5575f80fd5b815167ffffffffffffffff80821115610ccc575f80fd5b9083019060e08286031215610cdf575f80fd5b610ce761039f565b825182811115610cf5575f80fd5b610d0187828601610b46565b825250610d118660208501610bce565b6020820152608083015182811115610d27575f80fd5b610d3387828601610c11565b60408301525060a083015182811115610d4a575f80fd5b610d5687828601610b04565b60608301525060c09290920151608083015250939250505056fea2646970667358221220b0816c51d51c5ab3947bad3df8fedfb8758eb6ce0ed20b8fc1844c9926a031be64736f6c634300081800336040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f000000000000000000000000000000000000000000000000000000000000000003611b69577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000aa26469706673582212200b2f412b68c756e32bf945b8b8b95ca68cc1a9fec23fcd4c7a9c605e71535f6464736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0\x94W[`\0\x80\xFD[\0[a\0Pa\0\xB7V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA7\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x8BV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01mW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x91\x91\x90a\x08=V[\x90P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xFEW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x12W=`\0\x80>=`\0\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;`\0\x03\x90Pa\x029Wa\x027a\x05{V[P[`\0\x7F\xB0\x05\x9E\x91\x87\xDA\xACp\xF2\xC7e\xCF\xC9\x9A\x03\xF9\xBFC!\xC1\x1Bz\xB7\x84\xEE>1\x02\x92rL\x18`\0\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02|\x90a\x08#V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x02\xC0W=`\0\x80>=`\0\xFD[P\x90Pa\x03\x01`@Q\x80`@\x01`@R\x80`\x0E\x81R` \x01\x7Finit code hash\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RPa\x06FV[a\x03\xD1`@Q\x80` \x01a\x03\x14\x90a\x08#V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x82\x82\x03\x81\x01\x83R`\x1F\x90\x91\x01\x16`@\x81\x81Rn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3` \x83\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x90\x82\x01R``\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x03\xB6\x92\x91` \x01a\x08\x9EV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x06\xD8V[a\x04\x10`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x07iV[`\0\x80`\0\x1B`@Qa\x04\"\x90a\x080V[\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x04BW=`\0\x80>=`\0\xFD[P\x90Pa\x04\x84`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x07iV[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x04\xEFW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05\x03W=`\0\x80>=`\0\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x93PPPP\x90V[`\0\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aL#a#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x05\xFE\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\t\x17V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06\x18W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06,W=`\0\x80>=`\0\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x06\xD5\x81`@Q`$\x01a\x06Z\x91\x90a\tNV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7FA0O\xAC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xFEV[PV[a\x06\xD5\x81`@Q`$\x01a\x06\xEE\x91\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F'\xB7\xCF\x85\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xFEV[a\x07\xFA\x82\x82`@Q`$\x01a\x07\x7F\x92\x91\x90a\taV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xFEV[PPV[a\x06\xD5\x81`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a4p\x80a\t\x9A\x839\x01\x90V[a\x0E\x19\x80a>\n\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x08OW`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08sW`\0\x80\xFD[\x93\x92PPPV[`\0[\x83\x81\x10\x15a\x08\x95W\x81\x81\x01Q\x83\x82\x01R` \x01a\x08}V[PP`\0\x91\x01RV[`\0\x83Qa\x08\xB0\x81\x84` \x88\x01a\x08zV[\x83Q\x90\x83\x01\x90a\x08\xC4\x81\x83` \x88\x01a\x08zV[\x01\x94\x93PPPPV[`\0\x81Q\x80\x84Ra\x08\xE5\x81` \x86\x01` \x86\x01a\x08zV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\tF`@\x83\x01\x84a\x08\xCDV[\x94\x93PPPPV[` \x81R`\0a\x08s` \x83\x01\x84a\x08\xCDV[`@\x81R`\0a\tt`@\x83\x01\x85a\x08\xCDV[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x004p8\x03\x80b\x004p\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa3Pb\0\x01 `\09`\0\x81\x81`\xE0\x01R\x81\x81a\ra\x01Ra\x19\xEB\x01Ra3P`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$@V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\xEEV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%0V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a%\xC9V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\xEDV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a%\xC9V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&YV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB1V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\"V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0B`V[a\x04\xB5\x81a\x0B\xB1V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB1V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&YV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0B`V[a\x08\x86\x81a\x0B\xB1V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a)`V[\x81\x01\x90a\n|\x91\x90a-,V[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\n\x95\x91a\r\x04V[`\0a\n\xA0\x82a\x0E\x17V[\x90Pa\n\xAC\x81\x83a\x10eV[`\0a\n\xBB\x83``\x01Qa\x11\xC7V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\n\xE9\x83\x86`\x80\x01Qa\x12\x1C\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\x0B\x05\x83\x86`\xA0\x01Qa\x13\x1B\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x1A\x91\x90a)`V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x81Wa\x0B\x81a&YV[` \x02` \x01\x01Q\x90Pa\x0B\x94\x81a\x14\0V[a\x0B\x9E\x813a\x18\xF0V[a\x0B\xA8\x813a\x19\xE9V[P`\x01\x01a\x0BeV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF3W`\0\x83\x82\x81Q\x81\x10a\x0B\xD2Wa\x0B\xD2a&YV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CSW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\tWa\x0C\ta&YV[` \x02` \x01\x01Q\x90Pa\x0CJ\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D#\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xE9V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9CWa\x0C\x9Ca&YV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE1\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB6V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1DjV[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xCE\x91\x90a.-V[\x90P\x81\x81\x18\x80\x83\x16`\0\x03a\x0E\x0FW`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R`\0\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a23` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919`@Q` \x01a\x0F\xB1\x94\x93\x92\x91\x90a.FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\xD4\x83`\0\x01Qa\x1E\x04V[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xF0\x87`\x80\x01Qa\x1E\x9EV[a\x0F\xFD\x88`\xA0\x01Qa\x1F\x05V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xA4W`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\xD1WP\x80C\x10[\x80\x15a\x10\xE1WP`\xC0\x82\x01QQ\x81\x11[\x15a\x11\x0BW` \x82\x01Qa\x11\x03\x90a\x10\xF9\x84\x86a\x1F\xA3V[\x84`\xE0\x01Qa \x1AV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11EW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03_W`\0[\x82`\xA0\x01QQ\x81\x10\x15a\x06}W`\0\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11{Wa\x11{a&YV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\xBFW`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11VV[`\0H:\x10\x15a\x12\x03W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x12\x13W\x03\x90V[P`\0[\x91\x90PV[a\x12V`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0\x83`@\x01Q\x83a\x12h\x91\x90a.\xCCV[\x90Pb\x98\x96\x80\x81\x10a\x12\xB6W`@Q\x80``\x01`@R\x80\x85`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x13\x15V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x13\0W` \x86\x01Qa\x12\xFB\x90b\x98\x96\x80\x85\x81\x03\x90a!BV[a\x13\x06V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x139Wa\x139a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xA2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13WW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x13\xF8Wa\x13\xD3\x85\x82\x81Q\x81\x10a\x13\xC5Wa\x13\xC5a&YV[` \x02` \x01\x01Q\x85a!~V[\x83\x82\x81Q\x81\x10a\x13\xE5Wa\x13\xE5a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xA8V[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14 WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14w\x90\x85\x90`\x04\x01a.\xE3V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xDA\x91\x90\x81\x01\x90a.\xF6V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x14\xF2\x82\x84a/\xC6V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\nWa\x15\na&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15sW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15(W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\xC4W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\x97Wa\x15\x97a&YV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xB1Wa\x15\xB1a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15yV[P`\0\x80`\0[\x84\x81\x10\x15a\x18\xDFW`\0\x87\x82\x81Q\x81\x10a\x15\xE7Wa\x15\xE7a&YV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x16\xA5W\x88\x81\x81Q\x81\x10a\x16\x0EWa\x16\x0Ea&YV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\x9DW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x15\xF4V[P`\0\x80[\x88\x81\x10\x15a\x17fW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xCAWa\x16\xCAa&YV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17]W\x85\x15a\x17GW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17V\x90\x84a/\xC6V[\x92P`\x01\x96P[P`\x01\x01a\x16\xAAV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xDFW\x84\x15a\x17\xC6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xD8\x90\x82a/\xC6V[\x90P`\x01\x93P[\x80`\0\x03a\x184W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18B\x81`\x05a'\x10a!BV[\x82` \x01Q\x11\x15a\x18\xB5W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xCAWa\x18\xCAa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xCBV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19AW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xBD\x90\x84\x90\x86\x90`\x04\x01a/\xD9V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xD5W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xA9\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a2\xC0\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\x05`.\x919`@Q` \x01a\x1C\x88\x95\x94\x93\x92\x91\x90a0\x08V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xF5\x96\x95\x94\x93\x92`\x04\x01a0\xA3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\x0FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1DHWa\x03_\x82\x82a\x1DjV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\"2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xC4W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1D\xC9V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10H\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10H\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1F%Wa\x1F%a&*V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1FOW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F\x94W`\0a\x1F\x82\x85\x83\x81Q\x81\x10a\x1FuWa\x1Fua&YV[` \x02` \x01\x01Qa#$V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1FUV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xC0\x01Q`@Q` \x01a\x1F\xBF\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\xFC\x93\x92\x91` \x01a1kV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a 1\x91\x90a1\x98V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a JWa Ja&YV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a \xA7W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a!\x02WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a!9W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!wW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a\"\x01Wa!\xFC\x85`@\x01Q\x85a!\xE0\x91\x90a.\xCCV[a!\xED\x90b\x98\x96\x80a/\xC6V[` \x87\x01Q\x90b\x98\x96\x80a#\x9BV[a\"\x07V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a#\x1DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10H\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xD0W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0`@\x82\x84\x03\x12\x15a#\xF1W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\tW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$!W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$UW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$mW`\0\x80\xFD[a$y\x87\x83\x88\x01a#\xDFV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x8FW`\0\x80\xFD[Pa$\x9C\x86\x82\x87\x01a#\xF7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a$\xBBW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xD3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\x01W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x18W`\0\x80\xFD[a%$\x85\x82\x86\x01a$\xA9V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%FW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%^W`\0\x80\xFD[a%j\x88\x83\x89\x01a$\xA9V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x83W`\0\x80\xFD[Pa%\x90\x87\x82\x88\x01a#\xF7V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a\x12\x17\x81a%\x9CV[`\0` \x82\x84\x03\x12\x15a%\xDBW`\0\x80\xFD[\x815a%\xE6\x81a%\x9CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\xFFW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\x16W`\0\x80\xFD[a&\"\x84\x82\x85\x01a#\xDFV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra&\xC4\x81` \x86\x01` \x86\x01a&\x88V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'VW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x0BV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD5a\x01\xA0\x85\x01\x82a&\xACV[\x90P` \x83\x01Qa(\x13` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(+\x82\x82a&\xF6V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(E\x82\x82a&\xACV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a(\xD1W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xBF\x86\x83Qa'aV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(\x85V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)VW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x95W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xB0W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$9W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*|Wa*|a&*V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a*\x95W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xAFWa*\xAFa&*V[a*\xE0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xF5W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+$W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a+HWa+Ha&*V[\x81`@R\x82\x93P\x845\x91Pa+\\\x82a%\x9CV[\x90\x82R` \x84\x015\x90a+n\x82a%\x9CV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa+\x98\x82a%\x9CV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a+\xB2W`\0\x80\xFD[Pa+\xBF\x85\x82\x86\x01a*\x84V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a+\xDEW`\0\x80\xFD[a+\xE6a)\xC5V[\x90P\x815a+\xF3\x81a%\x9CV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,+Wa,+a&*V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,FW`\0\x80\xFD[\x815` a,[a,V\x83a,\x11V[a*5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,zW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xDFW`\x80\x81\x89\x03\x12\x15a,\x97W`\0\x80\x81\xFD[a,\x9Fa)\xEEV[\x815a,\xAA\x81a%\x9CV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\xCD\x81a%\x9CV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,~V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\xFCW`\0\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a-\x1FWa-\x1Fa&*V[`@R\x915\x82RP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a->W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-VW`\0\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a-kW`\0\x80\xFD[a-sa*\x11V[\x825\x82\x81\x11\x15a-\x82W`\0\x80\xFD[a-\x8E\x87\x82\x86\x01a+\x12V[\x82RPa-\x9D` \x84\x01a%\xBEV[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\xC3\x86`\x80\x85\x01a+\xCCV[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\xDAW`\0\x80\xFD[a-\xE6\x87\x82\x86\x01a,5V[`\xA0\x83\x01RPa-\xFA\x86a\x01\0\x85\x01a,\xEAV[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a.\x12W`\0\x80\xFD[a.\x1E\x87\x82\x86\x01a*\x84V[`\xE0\x83\x01RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.?W`\0\x80\xFD[PQ\x91\x90PV[`\0\x85Qa.X\x81\x84` \x8A\x01a&\x88V[\x85Q\x90\x83\x01\x90a.l\x81\x83` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a.\x7F\x81\x83` \x89\x01a&\x88V[\x84Q\x91\x01\x90a.\x92\x81\x83` \x88\x01a&\x88V[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x13\x15Wa\x13\x15a.\x9DV[` \x81R`\0a%\xE6` \x83\x01\x84a'aV[`\0` \x80\x83\x85\x03\x12\x15a/\tW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/ W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/1W`\0\x80\xFD[\x80Qa/?a,V\x82a,\x11V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/^W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a/\xBAW\x80\x85\x8A\x03\x12\x15a/{W`\0\x80\x81\xFD[a/\x83a)\xC5V[\x85Qa/\x8E\x81a%\x9CV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa/\xA7\x81a%\x9CV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a/cV[P\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x13\x15Wa\x13\x15a.\x9DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a&\"`@\x83\x01\x84a'aV[\x7FPriorityOrder witness)\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x16\x87Qa0A\x81\x83\x86\x01` \x8C\x01a&\x88V[\x87Q\x90\x84\x01\x90a0W\x81\x84\x84\x01` \x8C\x01a&\x88V[\x87Q\x91\x01\x90a0l\x81\x84\x84\x01` \x8B\x01a&\x88V[\x86Q\x91\x01\x90a0\x81\x81\x84\x84\x01` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a0\x96\x81\x84\x84\x01` \x89\x01a&\x88V[\x01\x01\x97\x96PPPPPPPV[`\0a\x01@a0\xD3\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\x14`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1I\x81\x84\x01\x86a&\xACV[\x90P\x82\x81\x03a\x01 \x84\x01Ra1^\x81\x85a&\xACV[\x99\x98PPPPPPPPPV[\x83\x81R\x82` \x82\x01R`\0\x82Qa1\x89\x81`@\x85\x01` \x87\x01a&\x88V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a1\xABW`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV\xFEPriorityInput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)PriorityOutput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei,address recipient)\xA2dipfsX\"\x12 5>J\x9C\x8A\xF3,\xE6{]\xE3:\xAE\xCB_\xAE\x19\x8FF\x18\xEDv\xC7\xF0\xECf\xD0\x8D\xF4@&[dsolcC\0\x08\x18\x003`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 F%\xB7\x1D~\xED\x99\xB6\xB5\xAD\xA4\x7F\x02\x96g#\x1E\xDF\x05\xE2\x88\t\xE5T6\x0EM\xA2)T\xE8\xC6dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0\x91W[_\x80\xFD[\0[a\0Ma\0\xB4V[`@\x80Q\x82Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x82R` \x80\x85\x01Q\x82\x16\x90\x83\x01R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\xA4\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0\x88V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FFOUNDRY_REACTOR_OWNER\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01fW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\x8A\x91\x90a\x05\xEEV[\x90P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x7F\xB5)\x7F`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xF3W_\x80\xFD[PZ\xF1\x15\x80\x15a\x02\x05W=_\x80>=_\xFD[PPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3;_\x03\x90Pa\x02+Wa\x02)a\x04OV[P[_\x7F\xB0\x05\x9E\x91\x87\xDA\xACp\xF2\xC7e\xCF\xC9\x9A\x03\xF9\xBFC!\xC1\x1Bz\xB7\x84\xEE>1\x02\x92rL\x18_\x1Bn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x83`@Qa\x02l\x90a\x05\xD4V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x81R\x91\x16` \x82\x01R`@\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x02\xADW=_\x80>=_\xFD[P\x90Pa\x02\xEF`@Q\x80`@\x01`@R\x80`\x07\x81R` \x01\x7FReactor\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x05\x14V[_\x80_\x1B`@Qa\x02\xFF\x90a\x05\xE1V[\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x03\x1CW=_\x80>=_\xFD[P\x90Pa\x03^`@Q\x80`@\x01`@R\x80`\x06\x81R` \x01\x7FQuoter\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x82a\x05\x14V[\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\xC5W_\x80\xFD[PZ\xF1\x15\x80\x15a\x03\xD7W=_\x80>=_\xFD[PPPP`@Q\x80``\x01`@R\x80n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x93PPPP\x90V[_\x80`@Q\x80a#\xE0\x01`@R\x80a#\xC0\x81R` \x01aHJa#\xC0\x919`@Q\x7F\xB4\xD6\xC7\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xB4\xD6\xC7\x82\x90a\x04\xD1\x90n\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x90\x85\x90`\x04\x01a\x06\x89V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x04\xE8W_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xFAW=_\x80>=_\xFD[PPPPn\"\xD4s\x03\x0F\x11m\xDE\xE9\xF6\xB4:\xC7\x8B\xA3\x91PP\x90V[a\x05\xA5\x82\x82`@Q`$\x01a\x05*\x92\x91\x90a\x06\xBFV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x05\xA9V[PPV[a\x05\xB2\x81a\x05\xB5V[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a3\x90\x80a\x06\xF7\x839\x01\x90V[a\r\xC3\x80a:\x87\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x05\xFEW_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06!W_\x80\xFD[\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x06LW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x060V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x06\xB7`@\x83\x01\x84a\x06(V[\x94\x93PPPPV[`@\x81R_a\x06\xD1`@\x83\x01\x85a\x06(V[\x90Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFE`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x003\x908\x03\x80b\x003\x90\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa2xb\0\x01\x18_9_\x81\x81`\xDA\x01R\x81\x81a\r-\x01Ra\x19\x8F\x01Ra2x_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a#\xBDV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a$bV[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a$\xA1V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%4V[a\x06eV[a\0\xB4a\x01e6`\x04a%VV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%4V[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a%\xBDV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x86V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a({V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B7V[a\x04\x9F\x81a\x0B\x86V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x86V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga%\xBDV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B7V[a\x08d\x81a\x0B\x86V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a(\xB7V[\x81\x01\x90a\nW\x91\x90a,nV[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\np\x91a\x0C\xD1V[_a\nz\x82a\r\xE0V[\x90Pa\n\x86\x81\x83a\x10,V[_a\n\x94\x83``\x01Qa\x11\x8CV[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\n\xC1\x83\x86`\x80\x01Qa\x11\xDF\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xDD\x83\x86`\xA0\x01Qa\x12\xD8\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\n\xF2\x91\x90a(\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BVWa\x0BVa%\xBDV[` \x02` \x01\x01Q\x90Pa\x0Bi\x81a\x13\xBBV[a\x0Bs\x813a\x18\x98V[a\x0B}\x813a\x19\x8DV[P`\x01\x01a\x0B;V[\x80Q_[\x81\x81\x10\x15a\x0C\xC0W_\x83\x82\x81Q\x81\x10a\x0B\xA5Wa\x0B\xA5a%\xBDV[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\"W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xD9Wa\x0B\xD9a%\xBDV[` \x02` \x01\x01Q\x90Pa\x0C\x19\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBAV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CjWa\x0Cja%\xBDV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xAE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8AV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1D\x06V[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91_\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\rtW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x98\x91\x90a-hV[\x90P\x81\x81\x18\x80\x83\x16_\x03a\r\xD8W`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R_\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a1[` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919`@Q` \x01a\x0Fy\x94\x93\x92\x91\x90a-\x7FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\x9B\x83_\x01Qa\x1D\x9CV[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xB7\x87`\x80\x01Qa\x1E5V[a\x0F\xC4\x88`\xA0\x01Qa\x1E\x9BV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10kW`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\x98WP\x80C\x10[\x80\x15a\x10\xA8WP`\xC0\x82\x01QQ\x81\x11[\x15a\x10\xD2W` \x82\x01Qa\x10\xCA\x90a\x10\xC0\x84\x86a\x1F6V[\x84`\xE0\x01Qa\x1F\xACV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11\x0CW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03LW_[\x82`\xA0\x01QQ\x81\x10\x15a\x06_W_\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11@Wa\x11@a%\xBDV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\x84W`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11\x1CV[_H:\x10\x15a\x11\xC7W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x11\xD7W\x03\x90V[P_[\x91\x90PV[a\x12\x16`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[_\x83`@\x01Q\x83a\x12'\x91\x90a.\x02V[\x90Pb\x98\x96\x80\x81\x10a\x12sW`@Q\x80``\x01`@R\x80\x85_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x12\xD2V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x12\xBDW` \x86\x01Qa\x12\xB8\x90b\x98\x96\x80\x85\x81\x03\x90a \xCFV[a\x12\xC3V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xF6Wa\x12\xF6a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x14W\x90P[P\x91P_[\x81\x81\x10\x15a\x13\xB3Wa\x13\x8E\x85\x82\x81Q\x81\x10a\x13\x80Wa\x13\x80a%\xBDV[` \x02` \x01\x01Q\x85a!\tV[\x83\x82\x81Q\x81\x10a\x13\xA0Wa\x13\xA0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13cV[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x13\xDBWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x141\x90\x85\x90`\x04\x01a.\x19V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14KW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\x90\x91\x90\x81\x01\x90a.+V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x14\xA7\x82\x84a.\xF4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\xBFWa\x14\xBFa%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x15wW\x85`@\x01Q\x81\x81Q\x81\x10a\x15JWa\x15Ja%\xBDV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15dWa\x15da%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15,V[P_\x80_[\x84\x81\x10\x15a\x18\x87W_\x87\x82\x81Q\x81\x10a\x15\x97Wa\x15\x97a%\xBDV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16RW\x88\x81\x81Q\x81\x10a\x15\xBDWa\x15\xBDa%\xBDV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x15\xA3V[P_\x80[\x88\x81\x10\x15a\x17\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16uWa\x16ua%\xBDV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x06W\x85\x15a\x16\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x16\xFF\x90\x84a.\xF4V[\x92P`\x01\x96P[P`\x01\x01a\x16VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\x88W\x84\x15a\x17oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\x81\x90\x82a.\xF4V[\x90P`\x01\x93P[\x80_\x03a\x17\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x17\xEA\x81`\x05a'\x10a \xCFV[\x82` \x01Q\x11\x15a\x18]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18rWa\x18ra%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x18\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19e\x90\x84\x90\x86\x90`\x04\x01a/\x07V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19{W_\x80\xFD[PZ\xFA\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1AL\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a1\xE8\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a1-`.\x919`@Q` \x01a\x1C)\x95\x94\x93\x92\x91\x90a/5V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\x96\x96\x95\x94\x93\x92`\x04\x01a/\xCFV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xADW_\x80\xFD[PZ\xF1\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1C\xE4Wa\x03L\x82\x82a\x1D\x06V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xBCV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\\W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1DaV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x0F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10\x0F\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBAWa\x1E\xBAa%\x90V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE4W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1F'W_a\x1F\x15\x85\x83\x81Q\x81\x10a\x1F\x08Wa\x1F\x08a%\xBDV[` \x02` \x01\x01Qa\"\xAAV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xE9V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xC0\x01Q`@Q` \x01a\x1FQ\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x8E\x93\x92\x91` \x01a0\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x1F\xC2\x91\x90a0\xC2V[\x91P\x91P_\x83`@\x81Q\x81\x10a\x1F\xDAWa\x1F\xDAa%\xBDV[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a 4W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a \x8FWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a \xC6W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\x02W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a!\x8BWa!\x86\x85`@\x01Q\x85a!j\x91\x90a.\x02V[a!w\x90b\x98\x96\x80a.\xF4V[` \x87\x01Q\x90b\x98\x96\x80a# V[a!\x91V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\"\xA3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10\x0F\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#SW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_`@\x82\x84\x03\x12\x15a#rW_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a#\x88W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\x9FW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a#\xCFW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE6W_\x80\xFD[a#\xF2\x87\x83\x88\x01a#bV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x07W_\x80\xFD[Pa$\x14\x86\x82\x87\x01a#xV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$1W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$HW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a$sW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x89W_\x80\xFD[a$\x95\x85\x82\x86\x01a$!V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a$\xB4W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\xCBW_\x80\xFD[a$\xD7\x88\x83\x89\x01a$!V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\xEFW_\x80\xFD[Pa$\xFC\x87\x82\x88\x01a#xV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a\x11\xDA\x81a%\x08V[_` \x82\x84\x03\x12\x15a%DW_\x80\xFD[\x815a%O\x81a%\x08V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a%fW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%|W_\x80\xFD[a%\x88\x84\x82\x85\x01a#bV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\x04W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xECV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&#\x81` \x86\x01` \x86\x01a%\xEAV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a&\xB3W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a&hV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'1a\x01\xA0\x85\x01\x82a&\x0CV[\x90P` \x83\x01Qa'o` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'\x87\x82\x82a&UV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'\xA1\x82\x82a&\x0CV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(+W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\x19\x86\x83Qa&\xBEV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\xDFV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(\xADW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xEAW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\x04W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#\xB6W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xCFWa)\xCFa%\x90V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\xE6W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\0Wa*\0a%\x90V[a*1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)\x88V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*EW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a*qW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\x95Wa*\x95a%\x90V[\x81`@R\x82\x93P\x845\x91Pa*\xA9\x82a%\x08V[\x90\x82R` \x84\x015\x90a*\xBB\x82a%\x08V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xE5\x82a%\x08V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xFEW_\x80\xFD[Pa+\x0B\x85\x82\x86\x01a)\xD7V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+(W_\x80\xFD[a+0a)\x18V[\x90P\x815a+=\x81a%\x08V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+tWa+ta%\x90V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a+\x8DW_\x80\xFD[\x815` a+\xA2a+\x9D\x83a+[V[a)\x88V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\xC0W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,#W`\x80\x81\x89\x03\x12\x15a+\xDBW_\x80\xFD[a+\xE3a)AV[\x815a+\xEE\x81a%\x08V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x11\x81a%\x08V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\xC4V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a,>W_\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a,aWa,aa%\x90V[`@R\x915\x82RP\x91\x90PV[_` \x82\x84\x03\x12\x15a,~W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,\x95W_\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a,\xA9W_\x80\xFD[a,\xB1a)dV[\x825\x82\x81\x11\x15a,\xBFW_\x80\xFD[a,\xCB\x87\x82\x86\x01a*aV[\x82RPa,\xDA` \x84\x01a%)V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\0\x86`\x80\x85\x01a+\x18V[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\x16W_\x80\xFD[a-\"\x87\x82\x86\x01a+~V[`\xA0\x83\x01RPa-6\x86a\x01\0\x85\x01a,.V[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a-MW_\x80\xFD[a-Y\x87\x82\x86\x01a)\xD7V[`\xE0\x83\x01RP\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-xW_\x80\xFD[PQ\x91\x90PV[_\x85Qa-\x90\x81\x84` \x8A\x01a%\xEAV[\x85Q\x90\x83\x01\x90a-\xA4\x81\x83` \x8A\x01a%\xEAV[\x85Q\x91\x01\x90a-\xB7\x81\x83` \x89\x01a%\xEAV[\x84Q\x91\x01\x90a-\xCA\x81\x83` \x88\x01a%\xEAV[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x12\xD2Wa\x12\xD2a-\xD5V[` \x81R_a%O` \x83\x01\x84a&\xBEV[_` \x80\x83\x85\x03\x12\x15a.a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xB0\x81lQ\xD5\x1CZ\xB3\x94{\xAD=\xF8\xFE\xDF\xB8u\x8E\xB6\xCE\x0E\xD2\x0B\x8F\xC1\x84L\x99&\xA01\xBEdsolcC\0\x08\x18\x003`@`\x80\x81R`\x04\x90\x816\x10\x15a\0\x15W`\0\x80\xFD[`\0\x90\x815`\xE0\x1C\x80c\rX\xB1\xDB\x14a\x12lW\x80c\x13|)\xFE\x14a\x10uW\x80c*-\x80\xD1\x14a\r\xB7W\x80c+g\xB5p\x14a\x0B\xDEW\x80c0\xF2\x8Bz\x14a\n\xDEW\x80c6D\xE5\x15\x14a\n\x9DW\x80c6\xC7\x85\x16\x14a\n(W\x80c?\xF9\xDC\xB1\x14a\t\xA8W\x80cO\xE0+D\x14a\t?W\x80ce\xD9r<\x14a\x07\xACW\x80c\x87Q|E\x14a\x06zW\x80c\x92}\xA1\x05\x14a\x05\xC3W\x80c\xCCS(\x7F\x14a\x04\xA3W\x80c\xED\xD9DK\x14a\x03:Wc\xFE\x8E\xC1\xA7\x14a\0\xC6W`\0\x80\xFD[4a\x036W`\xC0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x835\x81\x81\x11a\x032Wa\x01\x14\x906\x90\x86\x01a\x16KV[`$5\x82\x81\x11a\x03.Wa\x01+\x906\x90\x87\x01a\x16\x1AV[a\x013a\x14\xE6V[\x91`\x845\x85\x81\x11a\x03*Wa\x01K\x906\x90\x8A\x01a\x15\xC1V[\x98\x90\x95`\xA45\x90\x81\x11a\x03&Wa\x01d\x916\x91\x01a\x15\xC1V[\x96\x90\x95\x81Q\x90a\x01s\x82a\x13\xFFV[`k\x82R\x7FPermitBatchWitnessTransferFrom(T` \x83\x01R\x7FokenPermissions[] permitted,addr\x83\x83\x01R\x7Fess spender,uint256 nonce,uint25``\x83\x01R\x7F6 deadline,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x82Q\x9A\x8B\x91\x81a\x02\"` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8A\x81R\x03\x99a\x02[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x9B\x8C\x81\x01\x83R\x82a\x147V[Q\x90 \x90\x85QQa\x02k\x81a\x1E\xBBV[\x90\x8A[\x81\x81\x10a\x02\xF9WPPa\x02\xF6\x99\x9Aa\x02\xED\x91\x83Qa\x02\xA0\x81a\x02\x94` \x82\x01\x80\x95a\x1FfV[\x03\x84\x81\x01\x83R\x82a\x147V[Q\x90 ` \x89\x81\x01Q\x85\x8B\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`d5`\xC0\x84\x01R\x82`\xE0\x81\x01[\x03\x90\x81\x01\x83R\x82a\x147V[Q\x90 \x93a\x1C\xF7V[\x80\xF3[\x80a\x03\x11a\x03\x0Ba\x03!\x93\x8CQa\x17^V[Qa TV[a\x03\x1B\x82\x86a\x17^V[Ra\x1F\nV[a\x02nV[\x88\x80\xFD[\x87\x80\xFD[\x84\x80\xFD[\x83\x80\xFD[P\x80\xFD[P\x914a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x805\x82\x81\x11a\x032Wa\x03\x8B\x906\x90\x83\x01a\x16KV[`$5\x83\x81\x11a\x03.Wa\x03\xA2\x906\x90\x84\x01a\x16\x1AV[\x93\x90\x92a\x03\xADa\x14\xE6V[\x91`d5\x90\x81\x11a\x04\x9FWa\x03\xC4\x916\x91\x01a\x15\xC1V[\x94\x90\x93\x83QQ\x97a\x03\xD4\x89a\x1E\xBBV[\x98\x88[\x81\x81\x10a\x04}WPPa\x02\xF6\x97\x98\x81Qa\x04%\x81a\x03\xF9` \x82\x01\x80\x95a\x1FfV[\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x01\x83R\x82a\x147V[Q\x90 ` \x86\x01Q\x82\x87\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\xFC\xF3_Z\xC6\xA2\xC2\x88h\xDCD\xC3\x02\x16dp&b9\x19_\x02\xB0\xEE@\x834\x82\x933\xB7f\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x02\xED\x81a\x14\x1BV[\x80\x8Ba\x03\x1B\x82a\x04\x94a\x03\x0Ba\x04\x9A\x96\x8DQa\x17^V[\x92a\x17^V[a\x03\xD7V[\x86\x80\xFD[P\x824a\x05\xBFW` \x90\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x805\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x03.Wa\x04\xF4\x916\x91\x01a\x16\x1AV[\x92\x90\x91\x84[\x84\x81\x10a\x05\x04W\x85\x80\xF3[\x80a\x05\x1Aa\x05\x15`\x01\x93\x88\x88a\x19lV[a\x19|V[a\x05/\x84a\x05)\x84\x8A\x8Aa\x19lV[\x01a\x19|V[3\x89R\x83\x85R\x85\x89 \x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x92\x83\x8BR\x86R\x86\x8A \x91\x16\x90\x81\x8AR\x85R\x85\x89 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81T\x16\x90U\x85Q\x91\x82R\x84\x82\x01R\x7F\x89\xB1\xAD\xD1^\xFFV\xB3\xDF\xE2\x99\xAD\x94\xE0\x1F+R\xFB\xCB\x80\xAE\x1A;\xAE\xA6\xAE\x8C\x04\xCB+\x98\xA4\x853\x92\xA2\x01a\x04\xF9V[\x82\x80\xFD[P4a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06v\x81a\x05\xFFa\x14\xA0V[\x93a\x06\x08a\x14\xC3V[a\x06\x10a\x14\xE6V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x96\x87\x16\x83R`\x01` \x90\x81R\x84\x84 \x92\x88\x16\x84R\x91\x82R\x83\x83 \x90\x87\x16\x83R\x81R\x91\x90 T\x92Q\x93\x83\x16\x84R`\xA0\x83\x90\x1Ce\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x84\x01R`\xD0\x91\x90\x91\x1C`@\x83\x01R\x81\x90``\x82\x01\x90V[\x03\x90\xF3[P4a\x036W`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x06\xB2a\x14\xA0V[\x90a\x06\xBBa\x14\xC3V[\x91a\x06\xC4a\x14\xE6V[e\xFF\xFF\xFF\xFF\xFF\xFF\x92`d5\x84\x81\x16\x90\x81\x81\x03a\x03*Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94\x7F\xDA\x9F\xA7\xC1\xB0\x04\x02\xC1}\x01a\xB2I\xB1\xAB\x8B\xBE\xC0G\xC5\xA5\"\x07\xB9\xC1\x12\xDE\xFF\xD8\x17\x03k\x943\x8AR`\x01` R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x8B \x98s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x94\x16\x99\x8A\x8DR` R\x83\x87\x8D \x9B\x16\x9A\x8B\x8DR` R\x86\x8C \x94\x86\x15`\0\x14a\x07\xA4WPB\x16\x92[\x84T\x92\x16\x97\x88\x93`\xA0\x1B\x16\x91\x16\x17\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA4\x80\xF3[\x90P\x92a\x07\x83V[P\x824a\x05\xBFW``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x07\xE5a\x14\xA0V[\x90a\x07\xEEa\x14\xC3V[\x92e\xFF\xFF\xFF\xFF\xFF\xFF`D5\x81\x81\x16\x93\x90\x84\x81\x03a\x03*W3\x88R` \x91`\x01\x83R\x84\x89 \x96s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91\x16\x97\x88\x8BR\x84R\x85\x8A \x98\x16\x97\x88\x8AR\x83R\x84\x89 T`\xD0\x1C\x93\x84\x87\x11\x15a\t\x17Wa\xFF\xFF\x90\x85\x84\x03\x16\x11a\x08\xF0WP\x90\x7FU\xEB\x90\xD8\x10\xE1p\x0B5\xA8\xE7\xE2S\x95\xFF\x7F+\"Y\xAB\xD7A\\\xA2(M\xFB\x1C$d\x18\xF3\x93\x92\x913\x89R`\x01\x82R\x83\x89 \x87\x8AR\x82R\x83\x89 \x88\x8AR\x82R\x83\x89 \x90y\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83T\x92`\xD0\x1B\x16\x91\x16\x17\x90U\x82Q\x94\x85R\x84\x01R3\x92\xA4\x80\xF3[\x84Q\x7F$\xD3Z&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[P4a\x036W\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W\x80` \x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\t\x8Fa\x14\xA0V[\x16\x81R\x80\x84R\x81\x81 `$5\x82R\x84R T\x90Q\x90\x81R\xF3[P\x824a\x05\xBFW\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFW\x7F7\x04\x90/\x967f\xA4\xE5a\xBB\xAA\xB6\xE6\xCD\xC1\xB1\xDD\x12\xF6\xE9\xE9\x96H\xDA\x88C\xB3\xF4k\x91\x8D\x905\x91`$53\x85R\x84` R\x81\x85 \x84\x86R` R\x81\x85 \x81\x81T\x17\x90U\x81Q\x93\x84R` \x84\x01R3\x92\xA2\x80\xF3[\x824a\n\x9AW`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\n\x9AWa\n`a\x14\xA0V[a\nha\x14\xC3V[a\npa\x14\xE6V[`d5\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x83\x03a\x03.Wa\x02\xF6\x93a\x17\xA1V[\x80\xFD[P4a\x036W\x81\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036W` \x90a\n\xD7a\x1B\x1EV[\x90Q\x90\x81R\xF3[P\x82\x904a\x05\xBFWa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x0B\x1A6a\x15*V[\x90\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x0BLa\x14xV[\x91`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x0B\xDAWa\x02\xF6\x94a\x0Bo\x916\x91\x01a\x15\xC1V[\x93\x90\x92a\x0B|\x83Qa TV[` \x84\x01Q\x82\x85\x01Q\x90\x83Q\x92` \x84\x01\x94\x7F\x93\x9C!\xA4\x8A\x8D\xBE:\x9A$\x04\xA1\xD4f\x91\xE4\xD3\x9Fe\x83\xD6\xECk5qF\x04\xC9\x86\xD8\x01\x06\x86R\x84\x01R3``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xA0\x81Ra\x0B\xD1\x81a\x14\x1BV[Q\x90 \x91a\x1C%V[\x85\x80\xFD[P\x914a\x036Wa\x01\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x036Wa\x0C\x18a\x14\xA0V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC6\x01`\xC0\x81\x12a\x032W`\x80\x85Q\x91a\x0CQ\x83a\x13\xE3V[\x12a\x032W\x84Q\x90a\x0Cb\x82a\x13\x98V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91`$5\x83\x81\x16\x81\x03a\x04\x9FW\x81R`D5\x83\x81\x16\x81\x03a\x04\x9FW` \x82\x01Re\xFF\xFF\xFF\xFF\xFF\xFF`d5\x81\x81\x16\x81\x03a\x03*W\x88\x83\x01R`\x845\x90\x81\x16\x81\x03a\x04\x9FW``\x82\x01R\x81R`\xA45\x93\x82\x85\x16\x85\x03a\x0B\xDAW` \x82\x01\x94\x85R`\xC45\x90\x87\x83\x01\x82\x81R`\xE45g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x03&Wa\x0C\xFE\x906\x90\x84\x01a\x15\xC1V[\x92\x90\x93\x80B\x11a\r\x88WPP\x91\x85\x91a\rxa\x02\xF6\x99\x9Aa\r~\x95a\r#\x88Qa\x1F\xBEV[\x90\x89\x8CQ\x16\x90Q\x90\x83Q\x92` \x84\x01\x94\x7F\xF3\x84\x1C\xD1\xFF\0\x85\x02jc'\xB6 \xB6y\x97\xCE@\xF2\x82\xC8\x8A\x8E\x90ZzV&\xE3\x10\xF3\xD0\x86R\x84\x01R``\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x90 a\x1B\xD9V[\x91a \xC7V[Q\x92Q\x16\x91a\x19\x9DV[`$\x92P\x8AQ\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[P\x914a\x036W``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x93\x81\x856\x01\x12a\x032Wa\r\xF3a\x14\xA0V[\x92`$\x90\x815\x92g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x97\x88\x85\x11a\x03*W\x85\x90\x856\x03\x01\x12a\x04\x9FW\x80Q\x97\x85\x89\x01\x89\x81\x10\x82\x82\x11\x17a\x10JW\x82R\x84\x83\x015\x81\x81\x11a\x03&W\x85\x01\x906`#\x83\x01\x12\x15a\x03&W\x83\x82\x015\x91a\x0EP\x83a\x15\xEFV[\x90a\x0E]\x85Q\x92\x83a\x147V[\x83\x82R` \x93\x87\x85\x84\x01\x91`\x07\x1B\x83\x01\x01\x916\x83\x11a\x10FW\x88\x01\x90[\x82\x82\x10a\x0F\xE9WPPP\x8AR`Da\x0E\x93\x86\x88\x01a\x15\tV[\x96\x83\x8C\x01\x97\x88R\x015\x94\x83\x8B\x01\x91\x86\x83R`D5\x90\x81\x11a\x0F\xE5Wa\x0E\xBB\x906\x90\x87\x01a\x15\xC1V[\x95\x90\x96\x80B\x11a\x0F\xBAWPPP\x89\x98\x99QQa\x0E\xD6\x81a\x1E\xBBV[\x90\x8B[\x81\x81\x10a\x0F\x97WPP\x92\x88\x94\x92a\rx\x92a\x0Fd\x97\x95\x83Qa\x0F\x02\x81a\x03\xF9\x86\x82\x01\x80\x95a\x1FfV[Q\x90 \x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x9A\x8B\x8BQ\x16\x91Q\x92\x85Q\x94\x85\x01\x95\x7F\xAF\x1B\r0\xD2\xCA\xB08\x0Eh\xF0h\x90\x07\xE3%I\x93\xC5\x96\xF2\xFD\xD0\xAA\xA7\xF4\xD0OyD\x08c\x87R\x85\x01R\x83\x01R`\x80\x82\x01R`\x80\x81Ra\rp\x81a\x13\xFFV[Q\x16\x90\x82QQ\x92\x84[\x84\x81\x10a\x0FxW\x85\x80\xF3[\x80a\x0F\x91\x85\x85a\x0F\x8B`\x01\x95\x87Qa\x17^V[Qa\x19\x9DV[\x01a\x0FmV[\x80a\x03\x11a\x0F\xAC\x8E\x9F\x9E\x93a\x0F\xB2\x94Qa\x17^V[Qa\x1F\xBEV[\x9B\x9A\x9Ba\x0E\xD9V[\x85Q\x91\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83R\x82\x01R\xFD[\x8A\x80\xFD[`\x80\x826\x03\x12a\x10FW\x85`\x80\x91\x88Qa\x10\x02\x81a\x13\x98V[a\x10\x0B\x85a\x15\tV[\x81Ra\x10\x18\x83\x86\x01a\x15\tV[\x83\x82\x01Ra\x10'\x8A\x86\x01a\x16\x07V[\x8A\x82\x01R\x8Da\x107\x81\x87\x01a\x16\x07V[\x90\x82\x01R\x81R\x01\x91\x01\x90a\x0EzV[\x8C\x80\xFD[\x84\x89`A\x86\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83RR\xFD[P\x824a\x05\xBFWa\x01@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x05\xBFWa\x10\xB06a\x15*V[\x91\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF|6\x01\x12a\x032Wa\x10\xE2a\x14xV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90a\x01\x045\x85\x81\x11a\x04\x9FWa\x11\x05\x906\x90\x86\x01a\x15\xC1V[\x90\x93a\x01$5\x96\x87\x11a\x03*Wa\x11%a\x0B\xD1\x96a\x02\xF6\x986\x91\x01a\x15\xC1V[\x96\x90\x95\x82Q\x90a\x114\x82a\x13\xFFV[`d\x82R\x7FPermitWitnessTransferFrom(TokenP` \x83\x01R\x7Fermissions permitted,address spe\x84\x83\x01R\x7Fnder,uint256 nonce,uint256 deadl``\x83\x01R\x7Fine,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x80\x83\x01R\x83Q\x94\x85\x91\x81a\x11\xE3` \x85\x01\x80\x96a\x1F\x93V[\x91\x827\x01\x8B\x81R\x03\x93a\x12\x1C\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x95\x86\x81\x01\x83R\x82a\x147V[Q\x90 \x92a\x12*\x86Qa TV[` \x87\x81\x01Q\x85\x89\x01Q\x95Q\x91\x82\x01\x96\x87R`@\x82\x01\x92\x90\x92R3``\x82\x01R`\x80\x81\x01\x91\x90\x91R`\xA0\x81\x01\x93\x90\x93R`\xE45`\xC0\x84\x01R\x82`\xE0\x81\x01a\x02\xE1V[P\x824a\x05\xBFW` \x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC6\x01\x12a\x032W\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x82\x11a\x0B\xDAW6`#\x83\x01\x12\x15a\x0B\xDAW\x81\x015\x92\x83\x11a\x03.W`$\x90`\x076\x83\x86\x83\x1B\x84\x01\x01\x11a\x04\x9FW\x86[\x85\x81\x10a\x12\xE5W\x87\x80\xF3[\x80\x82\x1B\x83\x01\x90`\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\x836\x03\x01\x12a\x03&Wa\x13\x92\x88\x87`\x01\x94``\x83Qa\x13,\x81a\x13\x98V[a\x13h`\x84a\x13<\x8D\x86\x01a\x15\tV[\x94\x85\x84Ra\x13L`D\x82\x01a\x15\tV[\x80\x97\x85\x01Ra\x13]`d\x82\x01a\x15\tV[\x80\x98\x85\x01R\x01a\x15\tV[\x91\x82\x91\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x80\x80\x93\x16\x95\x16\x93\x16\x91\x16a\x17\xA1V[\x01a\x12\xDAV[`\x80\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[``\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xA0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC0\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[\x90`\x1F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RV[`\xC45\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`\0\x80\xFD[`\x045\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`$5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[`D5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[5\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x01\x90`\x80\x82\x12a\x14\x9BW`@\x80Q\x90a\x15c\x82a\x13\xE3V[\x80\x82\x94\x12a\x14\x9BW\x80Q\x81\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W\x82R`\x045s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x81R`$5` \x82\x01R\x82R`D5` \x83\x01R`d5\x91\x01RV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x83\x81\x86\x01\x95\x01\x01\x11a\x14\x9BWV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x13\xB4W`\x05\x1B` \x01\x90V[5\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x14\x9BWV[\x91\x81`\x1F\x84\x01\x12\x15a\x14\x9BW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x14\x9BW` \x80\x85\x01\x94\x84`\x06\x1B\x01\x01\x11a\x14\x9BWV[\x91\x90\x91``\x81\x84\x03\x12a\x14\x9BW`@\x80Q\x91a\x16f\x83a\x13\xE3V[\x82\x94\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x81\x11a\x14\x9BW\x83\x01\x82`\x1F\x82\x01\x12\x15a\x14\x9BW\x805a\x16\x93\x81a\x15\xEFV[\x92a\x16\xA0\x87Q\x94\x85a\x147V[\x81\x84R` \x94\x85\x80\x86\x01\x93`\x06\x1B\x85\x01\x01\x93\x81\x85\x11a\x14\x9BW\x90\x86\x89\x98\x97\x96\x95\x94\x93\x92\x01\x92[\x84\x84\x10a\x16\xE3WPPPPP\x85R\x80\x82\x015\x90\x85\x01R\x015\x91\x01RV[\x90\x91\x92\x93\x94\x95\x96\x97\x84\x83\x03\x12a\x14\x9BW\x88Q\x90\x89\x82\x01\x90\x82\x82\x10\x85\x83\x11\x17a\x170W\x8A\x92\x89\x92\x84Ra\x17\x14\x87a\x15\tV[\x81R\x82\x87\x015\x83\x82\x01R\x81R\x01\x93\x01\x91\x90\x88\x97\x96\x95\x94\x93a\x16\xC6V[`$`\0\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`A`\x04R\xFD[\x80Q\x82\x10\x15a\x17rW` \x91`\x05\x1B\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x92\x91\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@`\0\x82\x84\x16\x81R`\x01` R\x82\x82\x82 \x96\x16\x95\x86\x82R` R\x81\x81 3\x82R` R \x94\x85T\x95e\xFF\xFF\xFF\xFF\xFF\xFF\x87`\xA0\x1C\x16\x80B\x11a\x18\x84WP\x82\x87\x16\x96\x83\x88\x03a\x18\x12W[PPa\x18\x10\x95P\x16\x92a\x18\xB5V[V[\x87\x84\x84\x16\x11`\0\x14a\x18OW`$\x88`@Q\x90\x7F\xF9o\xB0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84\x84a\x18\x10\x9A\x03\x16\x91\x16\x17\x90U8\x80a\x18\x02V[`$\x90`@Q\x90\x7F\xD8\x1B/.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90`\0`d\x92` \x95\x82\x95`@Q\x94\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\x04\x86\x01R`$\x85\x01R`D\x84\x01RZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x15a\x19\x0EWV[`d`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R\xFD[\x91\x90\x81\x10\x15a\x17rW`\x06\x1B\x01\x90V[5s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x03a\x14\x9BW\x90V[\x90e\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81``\x84\x01Q\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x85Q\x16\x94\x82` \x82\x01Q\x16\x92\x80\x86`@\x80\x94\x01Q\x16\x95\x16\x95`\0\x91\x87\x83R`\x01` R\x83\x83 \x89\x84R` R\x83\x83 \x99\x16\x98\x89\x83R` R\x82\x82 \x91\x84\x83T`\xD0\x1C\x03a\x1A\xF5W\x91\x85a\x1A\xCE\x94\x92\x7F\xC6\xA3w\xBF\xC4\xEB\x12\0$\xA8\xAC\x08\xEE\xF2\x05\xBE\x16\xB8\x17\x02\x08\x12\xC72#\xE8\x1D\x1B\xDB\x97\x08\xEC\x98\x97\x96\x94P\x87\x15`\0\x14a\x1A\xD3Wy\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90B\x16[`\xA0\x1B\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01\x86\x01`\xD0\x1B\x16\x17\x17\x90UQ\x93\x84\x93\x84\x91`@\x91\x94\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF``\x85\x01\x96\x16\x84Re\xFF\xFF\xFF\xFF\xFF\xFF\x80\x92\x16` \x85\x01R\x16\x91\x01RV[\x03\x90\xA4V[Py\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87a\x1A`V[`\x04\x84Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03a\x1BiW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[`@Q` \x81\x01\x90\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x82R\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j`@\x82\x01RF``\x82\x01R0`\x80\x82\x01R`\x80\x81Ra\x1B\xD3\x81a\x13\xFFV[Q\x90 \x90V[a\x1B\xE1a\x1B\x1EV[\x90`@Q\x90` \x82\x01\x92\x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x84R`\"\x83\x01R`B\x82\x01R`B\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x92\x90\x93`\xA45\x93`@\x84\x01Q\x80B\x11a\x1C\xC6WP` \x84Q\x01Q\x80\x86\x11a\x1C\x95WP\x91\x85\x91a\rxa\x1Ce\x94a\x1C`` \x88\x01Q\x86a\x1EGV[a\x1B\xD9V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x91QQ\x16\x92`\x845\x91\x82\x16\x82\x03a\x14\x9BWa\x18\x10\x93a\x18\xB5V[`$\x90`@Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`$\x90`@Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x95\x90\x93\x95\x80QQ\x95`@\x92\x83\x83\x01Q\x80B\x11a\x1E\x17WP\x84\x88\x03a\x1D\xEEWa\x1D.\x91\x86\x91a\rx` \x9Ba\x1C`\x8D\x88\x01Q\x86a\x1EGV[`\0[\x86\x81\x10a\x1DBWPPPPPPPPV[a\x1DM\x81\x83Qa\x17^V[Q\x88a\x1DZ\x83\x87\x8Aa\x19lV[\x015\x90\x89\x81\x01Q\x80\x83\x11a\x1D\xBEWP\x91\x81\x88\x88\x88`\x01\x96\x85\x96a\x1D\x84W[PPPPPP\x01a\x1D1V[a\x1D\xB3\x95a\x1D\xAD\x92s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa\x05\x15\x93Q\x16\x95a\x19lV[\x91a\x18\xB5V[\x808\x88\x88\x88\x83a\x1DxV[`$\x90\x86Q\x90\x7F7(\xB8=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[`\x04\x84Q\x7F\xFFc:8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`$\x90\x85Q\x90\x7F\xCD!\xDBO\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82R`\x04\x82\x01R\xFD[\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x01`\xFF\x83\x16\x1B\x92\x16`\0R`\0` R`@`\0 \x90`\x08\x1C`\0R` R`@`\0 \x81\x81T\x18\x80\x91U\x16\x15a\x1E\x91WV[`\x04`@Q\x7Fuf\x88\xFE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90a\x1E\xC5\x82a\x15\xEFV[a\x1E\xD2`@Q\x91\x82a\x147V[\x82\x81R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0a\x1F\0\x82\x94a\x15\xEFV[\x01\x90` 6\x91\x017V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x1F7W`\x01\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80Q` \x80\x92\x01\x91`\0[\x82\x81\x10a\x1F\x7FWPPPP\x90V[\x83Q\x85R\x93\x81\x01\x93\x92\x81\x01\x92`\x01\x01a\x1FqV[\x90\x81Q\x91`\0[\x83\x81\x10a\x1F\xABWPP\x01`\0\x81R\x90V[\x80` \x80\x92\x84\x01\x01Q\x81\x85\x01R\x01a\x1F\x9AV[`@Q` \x81\x01\x91\x7Febl\xADl\xB9d\x93\xBFo^\xBE\xA2\x87V\xC9f\xF0#\xAB\x9E\x8A\x83\xA7\x10\x18I\xD5W;6x\x83Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`@\x84\x01R` \x82\x01Q\x16``\x83\x01R``e\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82`@\x82\x01Q\x16`\x80\x85\x01R\x01Q\x16`\xA0\x82\x01R`\xA0\x81R`\xC0\x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x13\xB4W`@RQ\x90 \x90V[`@Q` \x80\x82\x01\x92\x7Fa\x83X\xAC=\xB8\xDC'O\x0C\xD8\x82\x9D\xA7\xE24\xBDH\xCDs\xC4\xA7@\xAE\xDE\x1A\xDE\xC9\x84m\x06\xA1\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81Q\x16`@\x84\x01R\x01Q``\x82\x01R``\x81Ra\x1B\xD3\x81a\x13\x98V[\x91\x90\x82`@\x91\x03\x12a\x14\x9BW` \x825\x92\x015\x90V[`\0\x84;a\".WP`A\x82\x03a!\xACWa \xE4\x82\x82\x01\x82a \xB1V[\x93\x90\x92`@\x10\x15a\x17rW` \x93`\0\x93`\xFF`@`\x80\x95\x015`\xF8\x1C[`@Q\x94\x85R\x16\x86\x84\x01R`@\x83\x01R``\x82\x01R\x82\x80R`\x01Z\xFA\x15a!\xA0Ws\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80`\0Q\x16\x91\x82\x15a!vW\x16\x03a!LWV[`\x04`@Q\x7F\x81^\x1Dd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`\x04`@Q\x7F\x8B\xAAW\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[`@Q=`\0\x82>=\x90\xFD[`@\x82\x03a\"\x04Wa!\xC0\x91\x81\x01\x90a \xB1V[\x91`\x1B\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x93`\xFF\x1C\x01\x90`\xFF\x82\x11a\x1F7W` \x93`\0\x93`\xFF`\x80\x94a!\x02V[`\x04`@Q\x7FK\xE62\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x92\x93\x91`\x1F\x92\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`d` \x95\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`@Q\x98\x89\x97\x88\x96\x87\x94\x7F\x16&\xBA~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9E\x8F\x87R`\x04\x87\x01R`@`$\x87\x01R\x81`D\x87\x01R\x86\x86\x017\x8B\x85\x82\x86\x01\x01R\x01\x16\x81\x01\x03\x01\x92\x16Z\xFA\x90\x81\x15a#\xA8W\x82\x91a#*W[P\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91P\x16\x03a#\0WV[`\x04`@Q\x7F\xB0f\x9C\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xFD[\x90P` \x81=\x82\x11a#\xA0W[\x81a#D` \x93\x83a\x147V[\x81\x01\x03\x12a\x036WQ\x90\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x16\x82\x03a\n\x9AWP\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x908a\"\xD4V[=\x91Pa#7V[`@Q=\x84\x82>=\x90\xFD\xFE\xA1dsolcC\0\x08\x11\0\n\xA2dipfsX\"\x12 \x0B/A+h\xC7V\xE3+\xF9E\xB8\xB8\xB9\\\xA6\x8C\xC1\xA9\xFE\xC2?\xCDLz\x9C`^qS_ddsolcC\0\x08\x18\x003", ); /**```solidity struct PriorityOrderReactorDeployment { address permit2; address reactor; address quoter; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct PriorityOrderReactorDeployment { + #[allow(missing_docs)] pub permit2: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub quoter: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -330,16 +344,22 @@ struct PriorityOrderReactorDeployment { address permit2; address reactor; addres ```solidity function IS_SCRIPT() external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTCall {} ///Container type for the return parameters of the [`IS_SCRIPT()`](IS_SCRIPTCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_SCRIPTReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -443,16 +463,22 @@ function IS_SCRIPT() external view returns (bool); ```solidity function run() external returns (PriorityOrderReactorDeployment memory deployment); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct runCall {} ///Container type for the return parameters of the [`run()`](runCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct runReturn { + #[allow(missing_docs)] pub deployment: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -558,14 +584,19 @@ function run() external returns (PriorityOrderReactorDeployment memory deploymen ```solidity function setUp() external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUpCall {} ///Container type for the return parameters of the [`setUp()`](setUpCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setUpReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -667,8 +698,11 @@ function setUp() external; }; ///Container for all the [`DeployPriorityOrderReactor`](self) function calls. pub enum DeployPriorityOrderReactorCalls { + #[allow(missing_docs)] IS_SCRIPT(IS_SCRIPTCall), + #[allow(missing_docs)] run(runCall), + #[allow(missing_docs)] setUp(setUpCall), } #[automatically_derived] @@ -709,7 +743,7 @@ function setUp() external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -767,7 +801,7 @@ function setUp() external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/deployswaprouter02executor.rs b/crates/bindings-uniswapx/src/deployswaprouter02executor.rs index d9cbcc5..60346d0 100644 --- a/crates/bindings-uniswapx/src/deployswaprouter02executor.rs +++ b/crates/bindings-uniswapx/src/deployswaprouter02executor.rs @@ -47,44 +47,56 @@ interface DeploySwapRouter02Executor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod DeploySwapRouter02Executor { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052600c805462ff00ff19166201000117905534801561002157600080fd5b506122f6806100316000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630a9254e414610046578063c040622614610048578063f8ccbf471461007a575b600080fd5b005b61005061009d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600c5461008d9062010000900460ff1681565b6040519015158152602001610071565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f464f554e4452595f505249564154455f4b45590000000000000000000000000060448201526000908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa158015610138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061015c9190610827565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f52454143544f520000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa15801561021e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102429190610840565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f57484954454c49535445445f43414c4c4552000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103289190610840565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f4f574e455200000000000000000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156103ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040e9190610840565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f53574150524f555445523032000000000000000000000000000000006064820152909150600090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156104d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f49190610840565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101879052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d4790602401600060405180830381600087803b15801561055d57600080fd5b505af1158015610571573d6000803e3d6000fd5b505050506000801b838584846040516105899061081a565b73ffffffffffffffffffffffffffffffffffffffff94851681529284166020840152908316604083015290911660608201526080018190604051809103906000f59050801580156105de573d6000803e3d6000fd5b5095507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561064c57600080fd5b505af1158015610660573d6000803e3d6000fd5b505050506106a36040518060400160405280601481526020017f53776170526f7574657230324578656375746f7200000000000000000000000081525087610758565b6107506040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508773ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074b9190610840565b610758565b505050505090565b6107e9828260405160240161076e92919061087d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526107ed565b5050565b6107f6816107f9565b50565b60006a636f6e736f6c652e6c6f679050600080835160208501845afa505050565b6119ba8061090783390190565b60006020828403121561083957600080fd5b5051919050565b60006020828403121561085257600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461087657600080fd5b9392505050565b604081526000835180604084015260005b818110156108ab576020818701810151606086840101520161088e565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe6101006040523480156200001257600080fd5b50604051620019ba380380620019ba83398101604081905262000035916200012b565b600080546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0380851660a05283811660c05281166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa158015620000d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fb919062000193565b6001600160a01b031660e05250620001ba92505050565b6001600160a01b03811681146200012857600080fd5b50565b600080600080608085870312156200014257600080fd5b84516200014f8162000112565b6020860151909450620001628162000112565b6040860151909350620001758162000112565b6060860151909250620001888162000112565b939692955090935050565b600060208284031215620001a657600080fd5b8151620001b38162000112565b9392505050565b60805160a05160c05160e05161178762000233600039600081816107e501526108970152600081816101db015281816102f201528181610452015281816109c20152610ad501526000818161092e0152610a410152600081816102590152818161038a0152818161051601526105e001526117876000f3fe60806040526004361061007f5760003560e01c80638da5cb5b1161004e5780638da5cb5b1461010d578063d0f2d8ac14610163578063e5135ec614610183578063f2fde38b146101a357600080fd5b8063585da6281461008b57806363fb0b96146100ad578063690d8320146100cd57806389a3f136146100ed57600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a6366004610eb0565b6101c3565b005b3480156100b957600080fd5b506100ab6100c8366004610f1c565b610480565b3480156100d957600080fd5b506100ab6100e8366004610f9e565b6106a5565b3480156100f957600080fd5b506100ab610108366004610f9e565b610733565b34801561011957600080fd5b5060005461013a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34801561016f57600080fd5b506100ab61017e366004610fc2565b610916565b34801561018f57600080fd5b506100ab61019e366004610eb0565b610a29565b3480156101af57600080fd5b506100ab6101be366004610f9e565b610b48565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610232576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808061024284860186611193565b92509250925060005b83518110156102e0576102d87f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8684815181106102ab576102ab6112c9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610c399092919063ffffffff16565b60010161024b565b5060005b825181101561034c576103447f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8584815181106102ab576102ab6112c9565b6001016102e4565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906103e1907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161131c565b6000604051808303816000875af1158015610400573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261044691908101906113da565b504715610477576104777f000000000000000000000000000000000000000000000000000000000000000047610d0e565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b838110156105a25761059a7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff878785818110610568576105686112c9565b905060200201602081019061057d9190610f9e565b73ffffffffffffffffffffffffffffffffffffffff169190610c39565b600101610509565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610639907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908690600401611574565b6000604051808303816000875af1158015610658573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261069e91908101906113da565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6107308147610dad565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108659190611605565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050506109128247610dad565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610985576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906109fb90869086908690600401611669565b600060405180830381600087803b158015610a1557600080fd5b505af1158015610477573d6000803e3d6000fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a98576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c790610b1090879087908790879060040161168f565b600060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c454400000000000000000000000000000000000060448201526064016104fd565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610d68576040519150601f19603f3d011682016040523d82523d6000602084013e610d6d565b606091505b5050905080610da8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064016104fd565b60008083601f840112610e3457600080fd5b50813567ffffffffffffffff811115610e4c57600080fd5b6020830191508360208260051b8501011115610e6757600080fd5b9250929050565b60008083601f840112610e8057600080fd5b50813567ffffffffffffffff811115610e9857600080fd5b602083019150836020828501011115610e6757600080fd5b60008060008060408587031215610ec657600080fd5b843567ffffffffffffffff80821115610ede57600080fd5b610eea88838901610e22565b90965094506020870135915080821115610f0357600080fd5b50610f1087828801610e6e565b95989497509550505050565b60008060008060408587031215610f3257600080fd5b843567ffffffffffffffff80821115610f4a57600080fd5b610f5688838901610e22565b90965094506020870135915080821115610f6f57600080fd5b50610f1087828801610e22565b73ffffffffffffffffffffffffffffffffffffffff8116811461073057600080fd5b600060208284031215610fb057600080fd5b8135610fbb81610f7c565b9392505050565b600080600060408486031215610fd757600080fd5b833567ffffffffffffffff80821115610fef57600080fd5b908501906040828803121561100357600080fd5b9093506020850135908082111561101957600080fd5b5061102686828701610e6e565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156110a9576110a9611033565b604052919050565b600067ffffffffffffffff8211156110cb576110cb611033565b5060051b60200190565b600082601f8301126110e657600080fd5b813560206110fb6110f6836110b1565b611062565b8083825260208201915060208460051b87010193508684111561111d57600080fd5b602086015b8481101561114257803561113581610f7c565b8352918301918301611122565b509695505050505050565b600067ffffffffffffffff82111561116757611167611033565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806000606084860312156111a857600080fd5b833567ffffffffffffffff808211156111c057600080fd5b6111cc878388016110d5565b94506020915081860135818111156111e357600080fd5b6111ef888289016110d5565b9450506040808701358281111561120557600080fd5b8701601f8101891361121657600080fd5b80356112246110f6826110b1565b81815260059190911b8201850190858101908b83111561124357600080fd5b8684015b838110156112b75780358781111561125f5760008081fd5b8501603f81018e136112715760008081fd5b888101356112816110f68261114d565b8181528f898385010111156112965760008081fd5b818984018c83013760009181018b0191909152845250918701918701611247565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156113135781810151838201526020016112fb565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b828110156113cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261138f81888a018985016112f8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169690960185019550928401929084019060010161134a565b509398975050505050505050565b600060208083850312156113ed57600080fd5b825167ffffffffffffffff8082111561140557600080fd5b818501915085601f83011261141957600080fd5b81516114276110f6826110b1565b81815260059190911b8301840190848101908883111561144657600080fd5b8585015b838110156114ba578051858111156114625760008081fd5b8601603f81018b136114745760008081fd5b8781015160406114866110f68361114d565b8281528d8284860101111561149b5760008081fd5b6114aa838c83018487016112f8565b865250505091860191860161144a565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261154557600080fd5b830160208101925035905067ffffffffffffffff81111561156557600080fd5b803603821315610e6757600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b878110156115f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08786030183526115d8828a611510565b6115e38782846114c7565b96505050918301919083019060010161159f565b509298975050505050505050565b60006020828403121561161757600080fd5b5051919050565b600061162a8283611510565b6040855261163c6040860182846114c7565b91505061164c6020840184611510565b858303602087015261165f8382846114c7565b9695505050505050565b60408152600061167c604083018661161e565b828103602084015261165f8185876114c7565b6040808252810184905260006060600586901b830181019083018783805b8981101561172f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c360301811261170d578283fd5b611719868d830161161e565b95505060209384019392909201916001016116ad565b5050505082810360208401526117468185876114c7565b97965050505050505056fea26469706673582212205640b0557ec4552053567f3573115b9ceb5d4ac286ac0a470e1e07df158e28e864736f6c63430008180033a2646970667358221220aa0b076fb349b0be212a4a8b91d6ee78cb2c991e15d5911ceb77885d5d25087864736f6c63430008180033 + ///0x6080604052600c805462ff00ff191662010001179055348015610020575f80fd5b5061222b8061002e5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630a9254e414610043578063c040622614610045578063f8ccbf4714610077575b5f80fd5b005b61004d61009a565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600c5461008a9062010000900460ff1681565b604051901515815260200161006e565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f464f554e4452595f505249564154455f4b45590000000000000000000000000060448201525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa158015610132573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101569190610802565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f52454143544f5200000000000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610215573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102399190610819565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f57484954454c49535445445f43414c4c45520000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156102f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031c9190610819565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f4f574e4552000000000000000000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156103db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ff9190610819565b6040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f464f554e4452595f53574150524f5554455230324558454355544f525f44455060448201527f4c4f595f53574150524f5554455230320000000000000000000000000000000060648201529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156104be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e29190610819565b6040517fce817d4700000000000000000000000000000000000000000000000000000000815260048101879052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ce817d47906024015f604051808303815f87803b158015610548575f80fd5b505af115801561055a573d5f803e3d5ffd5b505050505f801b83858484604051610571906107f5565b73ffffffffffffffffffffffffffffffffffffffff94851681529284166020840152908316604083015290911660608201526080018190604051809103905ff59050801580156105c3573d5f803e3d5ffd5b5095507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166376eadd366040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561062d575f80fd5b505af115801561063f573d5f803e3d5ffd5b505050506106826040518060400160405280601481526020017f53776170526f7574657230324578656375746f7200000000000000000000000081525087610735565b61072d6040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508773ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610704573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107289190610819565b610735565b505050505090565b6107c6828260405160240161074b929190610853565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af333000000000000000000000000000000000000000000000000000000001790526107ca565b5050565b6107d3816107d6565b50565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b61191c806108da83390190565b5f60208284031215610812575f80fd5b5051919050565b5f60208284031215610829575f80fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461084c575f80fd5b9392505050565b604081525f83518060408401525f5b8181101561087f5760208187018101516060868401015201610862565b505f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505073ffffffffffffffffffffffffffffffffffffffff83166020830152939250505056fe61010060405234801562000011575f80fd5b506040516200191c3803806200191c833981016040819052620000349162000126565b5f80546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0380851660a05283811660c05281166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa158015620000d1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000f791906200018b565b6001600160a01b031660e05250620001b092505050565b6001600160a01b038116811462000123575f80fd5b50565b5f805f80608085870312156200013a575f80fd5b845162000147816200010e565b60208601519094506200015a816200010e565b60408601519093506200016d816200010e565b606086015190925062000180816200010e565b939692955090935050565b5f602082840312156200019c575f80fd5b8151620001a9816200010e565b9392505050565b60805160a05160c05160e0516116f9620002235f395f81816107c6015261087601525f81816101ce015281816102e20152818161043d0152818161099c0152610aaa01525f81816109080152610a1601525f818161024a0152818161037a015281816104ff01526105c901526116f95ff3fe60806040526004361061007c575f3560e01c80638da5cb5b1161004c5780638da5cb5b14610105578063d0f2d8ac14610159578063e5135ec614610178578063f2fde38b14610197575f80fd5b8063585da6281461008757806363fb0b96146100a8578063690d8320146100c757806389a3f136146100e6575f80fd5b3661008357005b5f80fd5b348015610092575f80fd5b506100a66100a1366004610e6b565b6101b6565b005b3480156100b3575f80fd5b506100a66100c2366004610ed2565b61046b565b3480156100d2575f80fd5b506100a66100e1366004610f4e565b610689565b3480156100f1575f80fd5b506100a6610100366004610f4e565b610716565b348015610110575f80fd5b505f546101309073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b348015610164575f80fd5b506100a6610173366004610f70565b6108f0565b348015610183575f80fd5b506100a6610192366004610e6b565b6109fe565b3480156101a2575f80fd5b506100a66101b1366004610f4e565b610b18565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610225576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808061023484860186611134565b9250925092505f5b83518110156102d1576102c97f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061029c5761029c61125b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610c079092919063ffffffff16565b60010161023c565b505f5b825181101561033c576103347f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85848151811061029c5761029c61125b565b6001016102d4565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906103d1907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9085906004016112aa565b5f604051808303815f875af11580156103ec573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104319190810190611366565b504715610462576104627f000000000000000000000000000000000000000000000000000000000000000047610cd8565b50505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146104f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5f5b8381101561058b576105837f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8787858181106105515761055161125b565b90506020020160208101906105669190610f4e565b73ffffffffffffffffffffffffffffffffffffffff169190610c07565b6001016104f2565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610622907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869086906004016114ef565b5f604051808303815f875af115801561063d573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106829190810190611366565b5050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104e7565b6107138147610d73565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104e7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610820573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610844919061157e565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b1580156108cc575f80fd5b505af11580156108de573d5f803e3d5ffd5b505050506108ec8247610d73565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461095f576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906109d5908690869086906004016115df565b5f604051808303815f87803b1580156109ec575f80fd5b505af1158015610462573d5f803e3d5ffd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a6d576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c790610ae5908790879087908790600401611604565b5f604051808303815f87803b158015610afc575f80fd5b505af1158015610b0e573d5f803e3d5ffd5b5050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104e7565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610cd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c454400000000000000000000000000000000000060448201526064016104e7565b50505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610d2e576040519150601f19603f3d011682016040523d82523d5f602084013e610d33565b606091505b5050905080610d6e576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f805f805f85875af1905080610d6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064016104e7565b5f8083601f840112610df5575f80fd5b50813567ffffffffffffffff811115610e0c575f80fd5b6020830191508360208260051b8501011115610e26575f80fd5b9250929050565b5f8083601f840112610e3d575f80fd5b50813567ffffffffffffffff811115610e54575f80fd5b602083019150836020828501011115610e26575f80fd5b5f805f8060408587031215610e7e575f80fd5b843567ffffffffffffffff80821115610e95575f80fd5b610ea188838901610de5565b90965094506020870135915080821115610eb9575f80fd5b50610ec687828801610e2d565b95989497509550505050565b5f805f8060408587031215610ee5575f80fd5b843567ffffffffffffffff80821115610efc575f80fd5b610f0888838901610de5565b90965094506020870135915080821115610f20575f80fd5b50610ec687828801610de5565b73ffffffffffffffffffffffffffffffffffffffff81168114610713575f80fd5b5f60208284031215610f5e575f80fd5b8135610f6981610f2d565b9392505050565b5f805f60408486031215610f82575f80fd5b833567ffffffffffffffff80821115610f99575f80fd5b9085019060408288031215610fac575f80fd5b90935060208501359080821115610fc1575f80fd5b50610fce86828701610e2d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561104f5761104f610fdb565b604052919050565b5f67ffffffffffffffff82111561107057611070610fdb565b5060051b60200190565b5f82601f830112611089575f80fd5b8135602061109e61109983611057565b611008565b8083825260208201915060208460051b8701019350868411156110bf575f80fd5b602086015b848110156110e45780356110d781610f2d565b83529183019183016110c4565b509695505050505050565b5f67ffffffffffffffff82111561110857611108610fdb565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f805f60608486031215611146575f80fd5b833567ffffffffffffffff8082111561115d575f80fd5b6111698783880161107a565b945060209150818601358181111561117f575f80fd5b61118b8882890161107a565b945050604080870135828111156111a0575f80fd5b8701601f810189136111b0575f80fd5b80356111be61109982611057565b81815260059190911b8201850190858101908b8311156111dc575f80fd5b8684015b83811015611249578035878111156111f6575f80fd5b8501603f81018e13611206575f80fd5b88810135611216611099826110ef565b8181528f89838501011115611229575f80fd5b818984018c8301375f9181018b01919091528452509187019187016111e0565b50809750505050505050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156112a257818101518382015260200161128a565b50505f910152565b5f60408201848352602060408185015281855180845260608601915060608160051b87010193508287015f5b82811015611358577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261131b81888a01898501611288565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016969096018501955092840192908401906001016112d6565b509398975050505050505050565b5f6020808385031215611377575f80fd5b825167ffffffffffffffff8082111561138e575f80fd5b818501915085601f8301126113a1575f80fd5b81516113af61109982611057565b81815260059190911b830184019084810190888311156113cd575f80fd5b8585015b8381101561143b578051858111156113e7575f80fd5b8601603f81018b136113f7575f80fd5b878101516040611409611099836110ef565b8281528d8284860101111561141c575f80fd5b61142b838c8301848701611288565b86525050509186019186016113d1565b5098975050505050505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126114c2575f80fd5b830160208101925035905067ffffffffffffffff8111156114e1575f80fd5b803603821315610e26575f80fd5b5f604082018583526020604060208501528185835260608501905060608660051b8601019250865f5b87811015611570577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018352611551828a61148f565b61155c878284611448565b965050509183019190830190600101611518565b509298975050505050505050565b5f6020828403121561158e575f80fd5b5051919050565b5f6115a0828361148f565b604085526115b2604086018284611448565b9150506115c2602084018461148f565b85830360208701526115d5838284611448565b9695505050505050565b604081525f6115f16040830186611595565b82810360208401526115d5818587611448565b604080825281018490525f6060600586901b8301810190830187835b888110156116a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18b3603018112611680575f80fd5b61168c858c8301611595565b9450506020928301929190910190600101611620565b50505082810360208401526116b8818587611448565b97965050505050505056fea26469706673582212202f686986933d08b89451b04b2cc3e29ac7fed0a452cbe5fc26fb71a94cb1806a64736f6c63430008180033a2646970667358221220153c49d916a9964f39ad0c8c0bd4f9ca80677994b2380adba3e35543dce67e0864736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0!W`\0\x80\xFD[Pa\"\xF6\x80a\x001`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\n\x92T\xE4\x14a\0FW\x80c\xC0@b&\x14a\0HW\x80c\xF8\xCC\xBFG\x14a\0zW[`\0\x80\xFD[\0[a\0Pa\0\x9DV[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x8D\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0qV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`\0\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x018W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\\\x91\x90a\x08'V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_REACTOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02B\x91\x90a\x08@V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_WHITELISTED_CALLER\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x04W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03(\x91\x90a\x08@V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_OWNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x0E\x91\x90a\x08@V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_SWAPROUTER02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xD0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xF4\x91\x90a\x08@V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x87\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05]W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05qW=`\0\x80>=`\0\xFD[PPPP`\0\x80\x1B\x83\x85\x84\x84`@Qa\x05\x89\x90a\x08\x1AV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x90\x83\x16`@\x83\x01R\x90\x91\x16``\x82\x01R`\x80\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x05\xDEW=`\0\x80>=`\0\xFD[P\x95P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06`W=`\0\x80>=`\0\xFD[PPPPa\x06\xA3`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x87a\x07XV[a\x07P`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07K\x91\x90a\x08@V[a\x07XV[PPPPP\x90V[a\x07\xE9\x82\x82`@Q`$\x01a\x07n\x92\x91\x90a\x08}V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xEDV[PPV[a\x07\xF6\x81a\x07\xF9V[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x19\xBA\x80a\t\x07\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x089W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x08RW`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08vW`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0\x83Q\x80`@\x84\x01R`\0[\x81\x81\x10\x15a\x08\xABW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x08\x8EV[P`\0``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFEa\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\x19\xBA8\x03\x80b\0\x19\xBA\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01+V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x81\x16`\xC0R\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\xD5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xFB\x91\x90b\0\x01\x93V[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xBA\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01(W`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x01BW`\0\x80\xFD[\x84Qb\0\x01O\x81b\0\x01\x12V[` \x86\x01Q\x90\x94Pb\0\x01b\x81b\0\x01\x12V[`@\x86\x01Q\x90\x93Pb\0\x01u\x81b\0\x01\x12V[``\x86\x01Q\x90\x92Pb\0\x01\x88\x81b\0\x01\x12V[\x93\x96\x92\x95P\x90\x93PPV[`\0` \x82\x84\x03\x12\x15b\0\x01\xA6W`\0\x80\xFD[\x81Qb\0\x01\xB3\x81b\0\x01\x12V[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x17\x87b\0\x023`\09`\0\x81\x81a\x07\xE5\x01Ra\x08\x97\x01R`\0\x81\x81a\x01\xDB\x01R\x81\x81a\x02\xF2\x01R\x81\x81a\x04R\x01R\x81\x81a\t\xC2\x01Ra\n\xD5\x01R`\0\x81\x81a\t.\x01Ra\nA\x01R`\0\x81\x81a\x02Y\x01R\x81\x81a\x03\x8A\x01R\x81\x81a\x05\x16\x01Ra\x05\xE0\x01Ra\x17\x87`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x7FW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0NW\x80c\x8D\xA5\xCB[\x14a\x01\rW\x80c\xD0\xF2\xD8\xAC\x14a\x01cW\x80c\xE5\x13^\xC6\x14a\x01\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xA3W`\0\x80\xFD[\x80cX]\xA6(\x14a\0\x8BW\x80cc\xFB\x0B\x96\x14a\0\xADW\x80ci\r\x83 \x14a\0\xCDW\x80c\x89\xA3\xF16\x14a\0\xEDW`\0\x80\xFD[6a\0\x86W\0[`\0\x80\xFD[4\x80\x15a\0\x97W`\0\x80\xFD[Pa\0\xABa\0\xA66`\x04a\x0E\xB0V[a\x01\xC3V[\0[4\x80\x15a\0\xB9W`\0\x80\xFD[Pa\0\xABa\0\xC86`\x04a\x0F\x1CV[a\x04\x80V[4\x80\x15a\0\xD9W`\0\x80\xFD[Pa\0\xABa\0\xE86`\x04a\x0F\x9EV[a\x06\xA5V[4\x80\x15a\0\xF9W`\0\x80\xFD[Pa\0\xABa\x01\x086`\x04a\x0F\x9EV[a\x073V[4\x80\x15a\x01\x19W`\0\x80\xFD[P`\0Ta\x01:\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01oW`\0\x80\xFD[Pa\0\xABa\x01~6`\x04a\x0F\xC2V[a\t\x16V[4\x80\x15a\x01\x8FW`\0\x80\xFD[Pa\0\xABa\x01\x9E6`\x04a\x0E\xB0V[a\n)V[4\x80\x15a\x01\xAFW`\0\x80\xFD[Pa\0\xABa\x01\xBE6`\x04a\x0F\x9EV[a\x0BHV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x022W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02B\x84\x86\x01\x86a\x11\x93V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x02\xE0Wa\x02\xD8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0C9\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02KV[P`\0[\x82Q\x81\x10\x15a\x03LWa\x03D\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[`\x01\x01a\x02\xE4V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x03\xE1\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x13\x1CV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04F\x91\x90\x81\x01\x90a\x13\xDAV[PG\x15a\x04wWa\x04w\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\r\x0EV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a\x05\xA2Wa\x05\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x05hWa\x05ha\x12\xC9V[\x90P` \x02\x01` \x81\x01\x90a\x05}\x91\x90a\x0F\x9EV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C9V[`\x01\x01a\x05\tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x069\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x15tV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x06\x9E\x91\x90\x81\x01\x90a\x13\xDAV[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07&W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[a\x070\x81Ga\r\xADV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\xB4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08e\x91\x90a\x16\x05V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\t\x04W=`\0\x80>=`\0\xFD[PPPPa\t\x12\x82Ga\r\xADV[PPV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x85W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\t\xFB\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x16iV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x15W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04wW=`\0\x80>=`\0\xFD[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\x98W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x0B\x10\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16\x8FV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B*W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B>W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\xC9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\r\x08W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\rhW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\rmV[``\x91P[PP\x90P\x80a\r\xA8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\r\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ELW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E\x80W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x98W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0E\xC6W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xDEW`\0\x80\xFD[a\x0E\xEA\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0F\x03W`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0EnV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0F2W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0FJW`\0\x80\xFD[a\x0FV\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0FoW`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0E\"V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x070W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xB0W`\0\x80\xFD[\x815a\x0F\xBB\x81a\x0F|V[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0F\xD7W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\xEFW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x10\x03W`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x10\x19W`\0\x80\xFD[Pa\x10&\x86\x82\x87\x01a\x0EnV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10\xA9Wa\x10\xA9a\x103V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10\xCBWa\x10\xCBa\x103V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x10\xE6W`\0\x80\xFD[\x815` a\x10\xFBa\x10\xF6\x83a\x10\xB1V[a\x10bV[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x11\x1DW`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x11BW\x805a\x115\x81a\x0F|V[\x83R\x91\x83\x01\x91\x83\x01a\x11\"V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11gWa\x11ga\x103V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\xA8W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xC0W`\0\x80\xFD[a\x11\xCC\x87\x83\x88\x01a\x10\xD5V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\xE3W`\0\x80\xFD[a\x11\xEF\x88\x82\x89\x01a\x10\xD5V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x12\x05W`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x12\x16W`\0\x80\xFD[\x805a\x12$a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x12CW`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12\xB7W\x805\x87\x81\x11\x15a\x12_W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12qW`\0\x80\x81\xFD[\x88\x81\x015a\x12\x81a\x10\xF6\x82a\x11MV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12\x96W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x12GV[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x13\x13W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\xFBV[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x13\xCCW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13\x8F\x81\x88\x8A\x01\x89\x85\x01a\x12\xF8V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x13JV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x13\xEDW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\x05W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x14\x19W`\0\x80\xFD[\x81Qa\x14'a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x14FW`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14\xBAW\x80Q\x85\x81\x11\x15a\x14bW`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x14tW`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x14\x86a\x10\xF6\x83a\x11MV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14\x9BW`\0\x80\x81\xFD[a\x14\xAA\x83\x8C\x83\x01\x84\x87\x01a\x12\xF8V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x14JV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x15EW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15eW`\0\x80\xFD[\x806\x03\x82\x13\x15a\x0EgW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x15\xF7W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15\xD8\x82\x8Aa\x15\x10V[a\x15\xE3\x87\x82\x84a\x14\xC7V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15\x9FV[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x16\x17W`\0\x80\xFD[PQ\x91\x90PV[`\0a\x16*\x82\x83a\x15\x10V[`@\x85Ra\x16<`@\x86\x01\x82\x84a\x14\xC7V[\x91PPa\x16L` \x84\x01\x84a\x15\x10V[\x85\x83\x03` \x87\x01Ra\x16_\x83\x82\x84a\x14\xC7V[\x96\x95PPPPPPV[`@\x81R`\0a\x16|`@\x83\x01\x86a\x16\x1EV[\x82\x81\x03` \x84\x01Ra\x16_\x81\x85\x87a\x14\xC7V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x17/W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x17\rW\x82\x83\xFD[a\x17\x19\x86\x8D\x83\x01a\x16\x1EV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x16\xADV[PPPP\x82\x81\x03` \x84\x01Ra\x17F\x81\x85\x87a\x14\xC7V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 V@\xB0U~\xC4U SV\x7F5s\x11[\x9C\xEB]J\xC2\x86\xAC\nG\x0E\x1E\x07\xDF\x15\x8E(\xE8dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xAA\x0B\x07o\xB3I\xB0\xBE!*J\x8B\x91\xD6\xEEx\xCB,\x99\x1E\x15\xD5\x91\x1C\xEBw\x88]]%\x08xdsolcC\0\x08\x18\x003", + b"`\x80`@R`\x0C\x80Tb\xFF\0\xFF\x19\x16b\x01\0\x01\x17\x90U4\x80\x15a\0 W_\x80\xFD[Pa\"+\x80a\0._9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0wW[_\x80\xFD[\0[a\0Ma\0\x9AV[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x8A\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0nV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x012W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01V\x91\x90a\x08\x02V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_REACTOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x15W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x029\x91\x90a\x08\x19V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_WHITELISTED_CALLER\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xF8W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x1C\x91\x90a\x08\x19V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_OWNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xDBW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xFF\x91\x90a\x08\x19V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_SWAPROUTER02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xBEW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE2\x91\x90a\x08\x19V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x87\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x05HW_\x80\xFD[PZ\xF1\x15\x80\x15a\x05ZW=_\x80>=_\xFD[PPPP_\x80\x1B\x83\x85\x84\x84`@Qa\x05q\x90a\x07\xF5V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x90\x83\x16`@\x83\x01R\x90\x91\x16``\x82\x01R`\x80\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x05\xC3W=_\x80>=_\xFD[P\x95P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06-W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06?W=_\x80>=_\xFD[PPPPa\x06\x82`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x87a\x075V[a\x07-`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x04W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07(\x91\x90a\x08\x19V[a\x075V[PPPPP\x90V[a\x07\xC6\x82\x82`@Q`$\x01a\x07K\x92\x91\x90a\x08SV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xCAV[PPV[a\x07\xD3\x81a\x07\xD6V[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x19\x1C\x80a\x08\xDA\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x08\x12W_\x80\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a\x08)W_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08LW_\x80\xFD[\x93\x92PPPV[`@\x81R_\x83Q\x80`@\x84\x01R_[\x81\x81\x10\x15a\x08\x7FW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x08bV[P_``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFEa\x01\0`@R4\x80\x15b\0\0\x11W_\x80\xFD[P`@Qb\0\x19\x1C8\x03\x80b\0\x19\x1C\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01&V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x81\x16`\xC0R\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\xD1W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xF7\x91\x90b\0\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xB0\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01#W_\x80\xFD[PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15b\0\x01:W_\x80\xFD[\x84Qb\0\x01G\x81b\0\x01\x0EV[` \x86\x01Q\x90\x94Pb\0\x01Z\x81b\0\x01\x0EV[`@\x86\x01Q\x90\x93Pb\0\x01m\x81b\0\x01\x0EV[``\x86\x01Q\x90\x92Pb\0\x01\x80\x81b\0\x01\x0EV[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15b\0\x01\x9CW_\x80\xFD[\x81Qb\0\x01\xA9\x81b\0\x01\x0EV[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x16\xF9b\0\x02#_9_\x81\x81a\x07\xC6\x01Ra\x08v\x01R_\x81\x81a\x01\xCE\x01R\x81\x81a\x02\xE2\x01R\x81\x81a\x04=\x01R\x81\x81a\t\x9C\x01Ra\n\xAA\x01R_\x81\x81a\t\x08\x01Ra\n\x16\x01R_\x81\x81a\x02J\x01R\x81\x81a\x03z\x01R\x81\x81a\x04\xFF\x01Ra\x05\xC9\x01Ra\x16\xF9_\xF3\xFE`\x80`@R`\x046\x10a\0|W_5`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0LW\x80c\x8D\xA5\xCB[\x14a\x01\x05W\x80c\xD0\xF2\xD8\xAC\x14a\x01YW\x80c\xE5\x13^\xC6\x14a\x01xW\x80c\xF2\xFD\xE3\x8B\x14a\x01\x97W_\x80\xFD[\x80cX]\xA6(\x14a\0\x87W\x80cc\xFB\x0B\x96\x14a\0\xA8W\x80ci\r\x83 \x14a\0\xC7W\x80c\x89\xA3\xF16\x14a\0\xE6W_\x80\xFD[6a\0\x83W\0[_\x80\xFD[4\x80\x15a\0\x92W_\x80\xFD[Pa\0\xA6a\0\xA16`\x04a\x0EkV[a\x01\xB6V[\0[4\x80\x15a\0\xB3W_\x80\xFD[Pa\0\xA6a\0\xC26`\x04a\x0E\xD2V[a\x04kV[4\x80\x15a\0\xD2W_\x80\xFD[Pa\0\xA6a\0\xE16`\x04a\x0FNV[a\x06\x89V[4\x80\x15a\0\xF1W_\x80\xFD[Pa\0\xA6a\x01\x006`\x04a\x0FNV[a\x07\x16V[4\x80\x15a\x01\x10W_\x80\xFD[P_Ta\x010\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01dW_\x80\xFD[Pa\0\xA6a\x01s6`\x04a\x0FpV[a\x08\xF0V[4\x80\x15a\x01\x83W_\x80\xFD[Pa\0\xA6a\x01\x926`\x04a\x0EkV[a\t\xFEV[4\x80\x15a\x01\xA2W_\x80\xFD[Pa\0\xA6a\x01\xB16`\x04a\x0FNV[a\x0B\x18V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x02%W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x024\x84\x86\x01\x86a\x114V[\x92P\x92P\x92P_[\x83Q\x81\x10\x15a\x02\xD1Wa\x02\xC9\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x02\x9CWa\x02\x9Ca\x12[V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0C\x07\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x041\x91\x90\x81\x01\x90a\x13fV[PG\x15a\x04bWa\x04b\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\x0C\xD8V[PPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_[\x83\x81\x10\x15a\x05\x8BWa\x05\x83\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x05QWa\x05Qa\x12[V[\x90P` \x02\x01` \x81\x01\x90a\x05f\x91\x90a\x0FNV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C\x07V[`\x01\x01a\x04\xF2V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x06\"\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x14\xEFV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x06=W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x06\x82\x91\x90\x81\x01\x90a\x13fV[PPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[a\x07\x13\x81Ga\rsV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\x96W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08 W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08D\x91\x90a\x15~V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x08\xCCW_\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xDEW=_\x80>=_\xFD[PPPPa\x08\xEC\x82Ga\rsV[PPV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t_W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\t\xD5\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x15\xDFV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\t\xECW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04bW=_\x80>=_\xFD[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\nmW`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\n\xE5\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16\x04V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\n\xFCW_\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\x0EW=_\x80>=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\x98W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0C\xD2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\r.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\r3V[``\x91P[PP\x90P\x80a\rnW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\rnW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[_\x80\x83`\x1F\x84\x01\x12a\r\xF5W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x0CW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0E&W_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x0E=W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ETW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0E&W_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0E~W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\x95W_\x80\xFD[a\x0E\xA1\x88\x83\x89\x01a\r\xE5V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0E\xB9W_\x80\xFD[Pa\x0E\xC6\x87\x82\x88\x01a\x0E-V[\x95\x98\x94\x97P\x95PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0E\xE5W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xFCW_\x80\xFD[a\x0F\x08\x88\x83\x89\x01a\r\xE5V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0F W_\x80\xFD[Pa\x0E\xC6\x87\x82\x88\x01a\r\xE5V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07\x13W_\x80\xFD[_` \x82\x84\x03\x12\x15a\x0F^W_\x80\xFD[\x815a\x0Fi\x81a\x0F-V[\x93\x92PPPV[_\x80_`@\x84\x86\x03\x12\x15a\x0F\x82W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\x99W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x0F\xACW_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x0F\xC1W_\x80\xFD[Pa\x0F\xCE\x86\x82\x87\x01a\x0E-V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10OWa\x10Oa\x0F\xDBV[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10pWa\x10pa\x0F\xDBV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x10\x89W_\x80\xFD[\x815` a\x10\x9Ea\x10\x99\x83a\x10WV[a\x10\x08V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x10\xBFW_\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x10\xE4W\x805a\x10\xD7\x81a\x0F-V[\x83R\x91\x83\x01\x91\x83\x01a\x10\xC4V[P\x96\x95PPPPPPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11\x08Wa\x11\x08a\x0F\xDBV[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x80_``\x84\x86\x03\x12\x15a\x11FW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11]W_\x80\xFD[a\x11i\x87\x83\x88\x01a\x10zV[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\x7FW_\x80\xFD[a\x11\x8B\x88\x82\x89\x01a\x10zV[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x11\xA0W_\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x11\xB0W_\x80\xFD[\x805a\x11\xBEa\x10\x99\x82a\x10WV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x11\xDCW_\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12IW\x805\x87\x81\x11\x15a\x11\xF6W_\x80\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12\x06W_\x80\xFD[\x88\x81\x015a\x12\x16a\x10\x99\x82a\x10\xEFV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12)W_\x80\xFD[\x81\x89\x84\x01\x8C\x83\x017_\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x11\xE0V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x12\xA2W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\x8AV[PP_\x91\x01RV[_`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01_[\x82\x81\x10\x15a\x13XW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13\x1B\x81\x88\x8A\x01\x89\x85\x01a\x12\x88V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x12\xD6V[P\x93\x98\x97PPPPPPPPV[_` \x80\x83\x85\x03\x12\x15a\x13wW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\x8EW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x13\xA1W_\x80\xFD[\x81Qa\x13\xAFa\x10\x99\x82a\x10WV[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x13\xCDW_\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14;W\x80Q\x85\x81\x11\x15a\x13\xE7W_\x80\xFD[\x86\x01`?\x81\x01\x8B\x13a\x13\xF7W_\x80\xFD[\x87\x81\x01Q`@a\x14\ta\x10\x99\x83a\x10\xEFV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14\x1CW_\x80\xFD[a\x14+\x83\x8C\x83\x01\x84\x87\x01a\x12\x88V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x13\xD1V[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x14\xC2W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\xE1W_\x80\xFD[\x806\x03\x82\x13\x15a\x0E&W_\x80\xFD[_`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86_[\x87\x81\x10\x15a\x15pW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15Q\x82\x8Aa\x14\x8FV[a\x15\\\x87\x82\x84a\x14HV[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15\x18V[P\x92\x98\x97PPPPPPPPV[_` \x82\x84\x03\x12\x15a\x15\x8EW_\x80\xFD[PQ\x91\x90PV[_a\x15\xA0\x82\x83a\x14\x8FV[`@\x85Ra\x15\xB2`@\x86\x01\x82\x84a\x14HV[\x91PPa\x15\xC2` \x84\x01\x84a\x14\x8FV[\x85\x83\x03` \x87\x01Ra\x15\xD5\x83\x82\x84a\x14HV[\x96\x95PPPPPPV[`@\x81R_a\x15\xF1`@\x83\x01\x86a\x15\x95V[\x82\x81\x03` \x84\x01Ra\x15\xD5\x81\x85\x87a\x14HV[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x16\xA2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x16\x80W_\x80\xFD[a\x16\x8C\x85\x8C\x83\x01a\x15\x95V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x16 V[PPP\x82\x81\x03` \x84\x01Ra\x16\xB8\x81\x85\x87a\x14HV[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 /hi\x86\x93=\x08\xB8\x94Q\xB0K,\xC3\xE2\x9A\xC7\xFE\xD0\xA4R\xCB\xE5\xFC&\xFBq\xA9L\xB1\x80jdsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \x15=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\\\x91\x90a\x08'V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_REACTOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x1EW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02B\x91\x90a\x08@V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_WHITELISTED_CALLER\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\x04W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03(\x91\x90a\x08@V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_OWNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xEAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\x0E\x91\x90a\x08@V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_SWAPROUTER02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P`\0\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xD0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xF4\x91\x90a\x08@V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x87\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x05]W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x05qW=`\0\x80>=`\0\xFD[PPPP`\0\x80\x1B\x83\x85\x84\x84`@Qa\x05\x89\x90a\x08\x1AV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x90\x83\x16`@\x83\x01R\x90\x91\x16``\x82\x01R`\x80\x01\x81\x90`@Q\x80\x91\x03\x90`\0\xF5\x90P\x80\x15\x80\x15a\x05\xDEW=`\0\x80>=`\0\xFD[P\x95P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\0\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06`W=`\0\x80>=`\0\xFD[PPPPa\x06\xA3`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x87a\x07XV[a\x07P`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07'W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07K\x91\x90a\x08@V[a\x07XV[PPPPP\x90V[a\x07\xE9\x82\x82`@Q`$\x01a\x07n\x92\x91\x90a\x08}V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xEDV[PPV[a\x07\xF6\x81a\x07\xF9V[PV[`\0jconsole.log\x90P`\0\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x19\xBA\x80a\t\x07\x839\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x089W`\0\x80\xFD[PQ\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x08RW`\0\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08vW`\0\x80\xFD[\x93\x92PPPV[`@\x81R`\0\x83Q\x80`@\x84\x01R`\0[\x81\x81\x10\x15a\x08\xABW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x08\x8EV[P`\0``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFEa\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\x19\xBA8\x03\x80b\0\x19\xBA\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01+V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x81\x16`\xC0R\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\xD5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xFB\x91\x90b\0\x01\x93V[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xBA\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01(W`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x01BW`\0\x80\xFD[\x84Qb\0\x01O\x81b\0\x01\x12V[` \x86\x01Q\x90\x94Pb\0\x01b\x81b\0\x01\x12V[`@\x86\x01Q\x90\x93Pb\0\x01u\x81b\0\x01\x12V[``\x86\x01Q\x90\x92Pb\0\x01\x88\x81b\0\x01\x12V[\x93\x96\x92\x95P\x90\x93PPV[`\0` \x82\x84\x03\x12\x15b\0\x01\xA6W`\0\x80\xFD[\x81Qb\0\x01\xB3\x81b\0\x01\x12V[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x17\x87b\0\x023`\09`\0\x81\x81a\x07\xE5\x01Ra\x08\x97\x01R`\0\x81\x81a\x01\xDB\x01R\x81\x81a\x02\xF2\x01R\x81\x81a\x04R\x01R\x81\x81a\t\xC2\x01Ra\n\xD5\x01R`\0\x81\x81a\t.\x01Ra\nA\x01R`\0\x81\x81a\x02Y\x01R\x81\x81a\x03\x8A\x01R\x81\x81a\x05\x16\x01Ra\x05\xE0\x01Ra\x17\x87`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x7FW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0NW\x80c\x8D\xA5\xCB[\x14a\x01\rW\x80c\xD0\xF2\xD8\xAC\x14a\x01cW\x80c\xE5\x13^\xC6\x14a\x01\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xA3W`\0\x80\xFD[\x80cX]\xA6(\x14a\0\x8BW\x80cc\xFB\x0B\x96\x14a\0\xADW\x80ci\r\x83 \x14a\0\xCDW\x80c\x89\xA3\xF16\x14a\0\xEDW`\0\x80\xFD[6a\0\x86W\0[`\0\x80\xFD[4\x80\x15a\0\x97W`\0\x80\xFD[Pa\0\xABa\0\xA66`\x04a\x0E\xB0V[a\x01\xC3V[\0[4\x80\x15a\0\xB9W`\0\x80\xFD[Pa\0\xABa\0\xC86`\x04a\x0F\x1CV[a\x04\x80V[4\x80\x15a\0\xD9W`\0\x80\xFD[Pa\0\xABa\0\xE86`\x04a\x0F\x9EV[a\x06\xA5V[4\x80\x15a\0\xF9W`\0\x80\xFD[Pa\0\xABa\x01\x086`\x04a\x0F\x9EV[a\x073V[4\x80\x15a\x01\x19W`\0\x80\xFD[P`\0Ta\x01:\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01oW`\0\x80\xFD[Pa\0\xABa\x01~6`\x04a\x0F\xC2V[a\t\x16V[4\x80\x15a\x01\x8FW`\0\x80\xFD[Pa\0\xABa\x01\x9E6`\x04a\x0E\xB0V[a\n)V[4\x80\x15a\x01\xAFW`\0\x80\xFD[Pa\0\xABa\x01\xBE6`\x04a\x0F\x9EV[a\x0BHV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x022W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02B\x84\x86\x01\x86a\x11\x93V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x02\xE0Wa\x02\xD8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0C9\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02KV[P`\0[\x82Q\x81\x10\x15a\x03LWa\x03D\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[`\x01\x01a\x02\xE4V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x03\xE1\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x13\x1CV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04F\x91\x90\x81\x01\x90a\x13\xDAV[PG\x15a\x04wWa\x04w\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\r\x0EV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a\x05\xA2Wa\x05\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x05hWa\x05ha\x12\xC9V[\x90P` \x02\x01` \x81\x01\x90a\x05}\x91\x90a\x0F\x9EV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C9V[`\x01\x01a\x05\tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x069\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x15tV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x06\x9E\x91\x90\x81\x01\x90a\x13\xDAV[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07&W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[a\x070\x81Ga\r\xADV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\xB4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08e\x91\x90a\x16\x05V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\t\x04W=`\0\x80>=`\0\xFD[PPPPa\t\x12\x82Ga\r\xADV[PPV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x85W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\t\xFB\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x16iV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x15W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04wW=`\0\x80>=`\0\xFD[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\x98W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x0B\x10\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16\x8FV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B*W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B>W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\xC9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\r\x08W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\rhW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\rmV[``\x91P[PP\x90P\x80a\r\xA8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\r\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ELW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E\x80W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x98W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0E\xC6W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xDEW`\0\x80\xFD[a\x0E\xEA\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0F\x03W`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0EnV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0F2W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0FJW`\0\x80\xFD[a\x0FV\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0FoW`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0E\"V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x070W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xB0W`\0\x80\xFD[\x815a\x0F\xBB\x81a\x0F|V[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0F\xD7W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\xEFW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x10\x03W`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x10\x19W`\0\x80\xFD[Pa\x10&\x86\x82\x87\x01a\x0EnV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10\xA9Wa\x10\xA9a\x103V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10\xCBWa\x10\xCBa\x103V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x10\xE6W`\0\x80\xFD[\x815` a\x10\xFBa\x10\xF6\x83a\x10\xB1V[a\x10bV[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x11\x1DW`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x11BW\x805a\x115\x81a\x0F|V[\x83R\x91\x83\x01\x91\x83\x01a\x11\"V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11gWa\x11ga\x103V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\xA8W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xC0W`\0\x80\xFD[a\x11\xCC\x87\x83\x88\x01a\x10\xD5V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\xE3W`\0\x80\xFD[a\x11\xEF\x88\x82\x89\x01a\x10\xD5V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x12\x05W`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x12\x16W`\0\x80\xFD[\x805a\x12$a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x12CW`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12\xB7W\x805\x87\x81\x11\x15a\x12_W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12qW`\0\x80\x81\xFD[\x88\x81\x015a\x12\x81a\x10\xF6\x82a\x11MV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12\x96W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x12GV[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x13\x13W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\xFBV[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x13\xCCW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13\x8F\x81\x88\x8A\x01\x89\x85\x01a\x12\xF8V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x13JV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x13\xEDW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\x05W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x14\x19W`\0\x80\xFD[\x81Qa\x14'a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x14FW`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14\xBAW\x80Q\x85\x81\x11\x15a\x14bW`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x14tW`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x14\x86a\x10\xF6\x83a\x11MV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14\x9BW`\0\x80\x81\xFD[a\x14\xAA\x83\x8C\x83\x01\x84\x87\x01a\x12\xF8V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x14JV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x15EW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15eW`\0\x80\xFD[\x806\x03\x82\x13\x15a\x0EgW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x15\xF7W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15\xD8\x82\x8Aa\x15\x10V[a\x15\xE3\x87\x82\x84a\x14\xC7V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15\x9FV[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x16\x17W`\0\x80\xFD[PQ\x91\x90PV[`\0a\x16*\x82\x83a\x15\x10V[`@\x85Ra\x16<`@\x86\x01\x82\x84a\x14\xC7V[\x91PPa\x16L` \x84\x01\x84a\x15\x10V[\x85\x83\x03` \x87\x01Ra\x16_\x83\x82\x84a\x14\xC7V[\x96\x95PPPPPPV[`@\x81R`\0a\x16|`@\x83\x01\x86a\x16\x1EV[\x82\x81\x03` \x84\x01Ra\x16_\x81\x85\x87a\x14\xC7V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x17/W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x17\rW\x82\x83\xFD[a\x17\x19\x86\x8D\x83\x01a\x16\x1EV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x16\xADV[PPPP\x82\x81\x03` \x84\x01Ra\x17F\x81\x85\x87a\x14\xC7V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 V@\xB0U~\xC4U SV\x7F5s\x11[\x9C\xEB]J\xC2\x86\xAC\nG\x0E\x1E\x07\xDF\x15\x8E(\xE8dsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \xAA\x0B\x07o\xB3I\xB0\xBE!*J\x8B\x91\xD6\xEEx\xCB,\x99\x1E\x15\xD5\x91\x1C\xEBw\x88]]%\x08xdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\n\x92T\xE4\x14a\0CW\x80c\xC0@b&\x14a\0EW\x80c\xF8\xCC\xBFG\x14a\0wW[_\x80\xFD[\0[a\0Ma\0\x9AV[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[`\x0CTa\0\x8A\x90b\x01\0\0\x90\x04`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\0nV[`@Q\x7F\xC1\x97\x8D\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FFOUNDRY_PRIVATE_KEY\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R_\x90\x81\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xC1\x97\x8D\x1F\x90`d\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x012W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01V\x91\x90a\x08\x02V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_REACTOR\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\x15W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x029\x91\x90a\x08\x19V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`6`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_WHITELISTED_CALLER\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x02\xF8W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x1C\x91\x90a\x08\x19V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`)`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_OWNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x03\xDBW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xFF\x91\x90a\x08\x19V[`@Q\x7F5\rV\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`0`$\x82\x01R\x7FFOUNDRY_SWAPROUTER02EXECUTOR_DEP`D\x82\x01R\x7FLOY_SWAPROUTER02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R\x90\x91P_\x90sq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c5\rV\xBF\x90`\x84\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04\xBEW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x04\xE2\x91\x90a\x08\x19V[`@Q\x7F\xCE\x81}G\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x87\x90R\x90\x91Psq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-\x90c\xCE\x81}G\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x05HW_\x80\xFD[PZ\xF1\x15\x80\x15a\x05ZW=_\x80>=_\xFD[PPPP_\x80\x1B\x83\x85\x84\x84`@Qa\x05q\x90a\x07\xF5V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x90\x83\x16`@\x83\x01R\x90\x91\x16``\x82\x01R`\x80\x01\x81\x90`@Q\x80\x91\x03\x90_\xF5\x90P\x80\x15\x80\x15a\x05\xC3W=_\x80>=_\xFD[P\x95P\x7F\x88\\\xB6\x92@\xA95\xD62\xD7\x9C1q\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16cv\xEA\xDD6`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06-W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06?W=_\x80>=_\xFD[PPPPa\x06\x82`@Q\x80`@\x01`@R\x80`\x14\x81R` \x01\x7FSwapRouter02Executor\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x87a\x075V[a\x07-`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01\x7Fowner\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81RP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x04W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07(\x91\x90a\x08\x19V[a\x075V[PPPPP\x90V[a\x07\xC6\x82\x82`@Q`$\x01a\x07K\x92\x91\x90a\x08SV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x91\x90R` \x81\x01\x80Q{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x7F1\x9A\xF33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x90Ra\x07\xCAV[PPV[a\x07\xD3\x81a\x07\xD6V[PV[_jconsole.log\x90P_\x80\x83Q` \x85\x01\x84Z\xFAPPPV[a\x19\x1C\x80a\x08\xDA\x839\x01\x90V[_` \x82\x84\x03\x12\x15a\x08\x12W_\x80\xFD[PQ\x91\x90PV[_` \x82\x84\x03\x12\x15a\x08)W_\x80\xFD[\x81Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08LW_\x80\xFD[\x93\x92PPPV[`@\x81R_\x83Q\x80`@\x84\x01R_[\x81\x81\x10\x15a\x08\x7FW` \x81\x87\x01\x81\x01Q``\x86\x84\x01\x01R\x01a\x08bV[P_``\x82\x85\x01\x01R``\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x84\x01\x01\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16` \x83\x01R\x93\x92PPPV\xFEa\x01\0`@R4\x80\x15b\0\0\x11W_\x80\xFD[P`@Qb\0\x19\x1C8\x03\x80b\0\x19\x1C\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01&V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x81\x16`\xC0R\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\xD1W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xF7\x91\x90b\0\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xB0\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01#W_\x80\xFD[PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15b\0\x01:W_\x80\xFD[\x84Qb\0\x01G\x81b\0\x01\x0EV[` \x86\x01Q\x90\x94Pb\0\x01Z\x81b\0\x01\x0EV[`@\x86\x01Q\x90\x93Pb\0\x01m\x81b\0\x01\x0EV[``\x86\x01Q\x90\x92Pb\0\x01\x80\x81b\0\x01\x0EV[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15b\0\x01\x9CW_\x80\xFD[\x81Qb\0\x01\xA9\x81b\0\x01\x0EV[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x16\xF9b\0\x02#_9_\x81\x81a\x07\xC6\x01Ra\x08v\x01R_\x81\x81a\x01\xCE\x01R\x81\x81a\x02\xE2\x01R\x81\x81a\x04=\x01R\x81\x81a\t\x9C\x01Ra\n\xAA\x01R_\x81\x81a\t\x08\x01Ra\n\x16\x01R_\x81\x81a\x02J\x01R\x81\x81a\x03z\x01R\x81\x81a\x04\xFF\x01Ra\x05\xC9\x01Ra\x16\xF9_\xF3\xFE`\x80`@R`\x046\x10a\0|W_5`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0LW\x80c\x8D\xA5\xCB[\x14a\x01\x05W\x80c\xD0\xF2\xD8\xAC\x14a\x01YW\x80c\xE5\x13^\xC6\x14a\x01xW\x80c\xF2\xFD\xE3\x8B\x14a\x01\x97W_\x80\xFD[\x80cX]\xA6(\x14a\0\x87W\x80cc\xFB\x0B\x96\x14a\0\xA8W\x80ci\r\x83 \x14a\0\xC7W\x80c\x89\xA3\xF16\x14a\0\xE6W_\x80\xFD[6a\0\x83W\0[_\x80\xFD[4\x80\x15a\0\x92W_\x80\xFD[Pa\0\xA6a\0\xA16`\x04a\x0EkV[a\x01\xB6V[\0[4\x80\x15a\0\xB3W_\x80\xFD[Pa\0\xA6a\0\xC26`\x04a\x0E\xD2V[a\x04kV[4\x80\x15a\0\xD2W_\x80\xFD[Pa\0\xA6a\0\xE16`\x04a\x0FNV[a\x06\x89V[4\x80\x15a\0\xF1W_\x80\xFD[Pa\0\xA6a\x01\x006`\x04a\x0FNV[a\x07\x16V[4\x80\x15a\x01\x10W_\x80\xFD[P_Ta\x010\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01dW_\x80\xFD[Pa\0\xA6a\x01s6`\x04a\x0FpV[a\x08\xF0V[4\x80\x15a\x01\x83W_\x80\xFD[Pa\0\xA6a\x01\x926`\x04a\x0EkV[a\t\xFEV[4\x80\x15a\x01\xA2W_\x80\xFD[Pa\0\xA6a\x01\xB16`\x04a\x0FNV[a\x0B\x18V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x02%W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x024\x84\x86\x01\x86a\x114V[\x92P\x92P\x92P_[\x83Q\x81\x10\x15a\x02\xD1Wa\x02\xC9\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x02\x9CWa\x02\x9Ca\x12[V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0C\x07\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x041\x91\x90\x81\x01\x90a\x13fV[PG\x15a\x04bWa\x04b\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\x0C\xD8V[PPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_[\x83\x81\x10\x15a\x05\x8BWa\x05\x83\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x05QWa\x05Qa\x12[V[\x90P` \x02\x01` \x81\x01\x90a\x05f\x91\x90a\x0FNV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C\x07V[`\x01\x01a\x04\xF2V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x06\"\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x14\xEFV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x06=W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x06\x82\x91\x90\x81\x01\x90a\x13fV[PPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[a\x07\x13\x81Ga\rsV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\x96W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08 W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08D\x91\x90a\x15~V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x08\xCCW_\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xDEW=_\x80>=_\xFD[PPPPa\x08\xEC\x82Ga\rsV[PPV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t_W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\t\xD5\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x15\xDFV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\t\xECW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04bW=_\x80>=_\xFD[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\nmW`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\n\xE5\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16\x04V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\n\xFCW_\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\x0EW=_\x80>=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\x98W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0C\xD2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\r.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\r3V[``\x91P[PP\x90P\x80a\rnW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\rnW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[_\x80\x83`\x1F\x84\x01\x12a\r\xF5W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x0CW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0E&W_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x0E=W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ETW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0E&W_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0E~W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\x95W_\x80\xFD[a\x0E\xA1\x88\x83\x89\x01a\r\xE5V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0E\xB9W_\x80\xFD[Pa\x0E\xC6\x87\x82\x88\x01a\x0E-V[\x95\x98\x94\x97P\x95PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0E\xE5W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xFCW_\x80\xFD[a\x0F\x08\x88\x83\x89\x01a\r\xE5V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0F W_\x80\xFD[Pa\x0E\xC6\x87\x82\x88\x01a\r\xE5V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07\x13W_\x80\xFD[_` \x82\x84\x03\x12\x15a\x0F^W_\x80\xFD[\x815a\x0Fi\x81a\x0F-V[\x93\x92PPPV[_\x80_`@\x84\x86\x03\x12\x15a\x0F\x82W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\x99W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x0F\xACW_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x0F\xC1W_\x80\xFD[Pa\x0F\xCE\x86\x82\x87\x01a\x0E-V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10OWa\x10Oa\x0F\xDBV[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10pWa\x10pa\x0F\xDBV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x10\x89W_\x80\xFD[\x815` a\x10\x9Ea\x10\x99\x83a\x10WV[a\x10\x08V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x10\xBFW_\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x10\xE4W\x805a\x10\xD7\x81a\x0F-V[\x83R\x91\x83\x01\x91\x83\x01a\x10\xC4V[P\x96\x95PPPPPPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11\x08Wa\x11\x08a\x0F\xDBV[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x80_``\x84\x86\x03\x12\x15a\x11FW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11]W_\x80\xFD[a\x11i\x87\x83\x88\x01a\x10zV[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\x7FW_\x80\xFD[a\x11\x8B\x88\x82\x89\x01a\x10zV[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x11\xA0W_\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x11\xB0W_\x80\xFD[\x805a\x11\xBEa\x10\x99\x82a\x10WV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x11\xDCW_\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12IW\x805\x87\x81\x11\x15a\x11\xF6W_\x80\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12\x06W_\x80\xFD[\x88\x81\x015a\x12\x16a\x10\x99\x82a\x10\xEFV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12)W_\x80\xFD[\x81\x89\x84\x01\x8C\x83\x017_\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x11\xE0V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x12\xA2W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\x8AV[PP_\x91\x01RV[_`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01_[\x82\x81\x10\x15a\x13XW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13\x1B\x81\x88\x8A\x01\x89\x85\x01a\x12\x88V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x12\xD6V[P\x93\x98\x97PPPPPPPPV[_` \x80\x83\x85\x03\x12\x15a\x13wW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\x8EW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x13\xA1W_\x80\xFD[\x81Qa\x13\xAFa\x10\x99\x82a\x10WV[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x13\xCDW_\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14;W\x80Q\x85\x81\x11\x15a\x13\xE7W_\x80\xFD[\x86\x01`?\x81\x01\x8B\x13a\x13\xF7W_\x80\xFD[\x87\x81\x01Q`@a\x14\ta\x10\x99\x83a\x10\xEFV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14\x1CW_\x80\xFD[a\x14+\x83\x8C\x83\x01\x84\x87\x01a\x12\x88V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x13\xD1V[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x14\xC2W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\xE1W_\x80\xFD[\x806\x03\x82\x13\x15a\x0E&W_\x80\xFD[_`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86_[\x87\x81\x10\x15a\x15pW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15Q\x82\x8Aa\x14\x8FV[a\x15\\\x87\x82\x84a\x14HV[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15\x18V[P\x92\x98\x97PPPPPPPPV[_` \x82\x84\x03\x12\x15a\x15\x8EW_\x80\xFD[PQ\x91\x90PV[_a\x15\xA0\x82\x83a\x14\x8FV[`@\x85Ra\x15\xB2`@\x86\x01\x82\x84a\x14HV[\x91PPa\x15\xC2` \x84\x01\x84a\x14\x8FV[\x85\x83\x03` \x87\x01Ra\x15\xD5\x83\x82\x84a\x14HV[\x96\x95PPPPPPV[`@\x81R_a\x15\xF1`@\x83\x01\x86a\x15\x95V[\x82\x81\x03` \x84\x01Ra\x15\xD5\x81\x85\x87a\x14HV[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x16\xA2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x16\x80W_\x80\xFD[a\x16\x8C\x85\x8C\x83\x01a\x15\x95V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x16 V[PPP\x82\x81\x03` \x84\x01Ra\x16\xB8\x81\x85\x87a\x14HV[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 /hi\x86\x93=\x08\xB8\x94Q\xB0K,\xC3\xE2\x9A\xC7\xFE\xD0\xA4R\xCB\xE5\xFC&\xFBq\xA9L\xB1\x80jdsolcC\0\x08\x18\x003\xA2dipfsX\"\x12 \x15 usize { diff --git a/crates/bindings-uniswapx/src/dutchdecaylib.rs b/crates/bindings-uniswapx/src/dutchdecaylib.rs index aad08bb..c1b6cd2 100644 --- a/crates/bindings-uniswapx/src/dutchdecaylib.rs +++ b/crates/bindings-uniswapx/src/dutchdecaylib.rs @@ -23,38 +23,49 @@ interface DutchDecayLib { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod DutchDecayLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ef086961703a873805a14dbb36dc8647681a5c1852500026654927b2fad65f1564736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e5e44bf153f3503ad25fb7b3d8988985dc0d295b18cc49e26f8a8e5dce600d5464736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEF\x08iap:\x878\x05\xA1M\xBB6\xDC\x86Gh\x1A\\\x18RP\0&eI'\xB2\xFA\xD6_\x15dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xE5\xE4K\xF1S\xF3P:\xD2_\xB7\xB3\xD8\x98\x89\x85\xDC\r)[\x18\xCCI\xE2o\x8A\x8E]\xCE`\rTdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ef086961703a873805a14dbb36dc8647681a5c1852500026654927b2fad65f1564736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e5e44bf153f3503ad25fb7b3d8988985dc0d295b18cc49e26f8a8e5dce600d5464736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEF\x08iap:\x878\x05\xA1M\xBB6\xDC\x86Gh\x1A\\\x18RP\0&eI'\xB2\xFA\xD6_\x15dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xE5\xE4K\xF1S\xF3P:\xD2_\xB7\xB3\xD8\x98\x89\x85\xDC\r)[\x18\xCCI\xE2o\x8A\x8E]\xCE`\rTdsolcC\0\x08\x18\x003", ); /**Custom error with signature `EndTimeBeforeStartTime()` and selector `0x43133453`. ```solidity error EndTimeBeforeStartTime(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct EndTimeBeforeStartTime {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -110,10 +121,15 @@ error EndTimeBeforeStartTime(); ```solidity error IncorrectAmounts(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IncorrectAmounts {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -167,7 +183,9 @@ error IncorrectAmounts(); }; ///Container for all the [`DutchDecayLib`](self) custom errors. pub enum DutchDecayLibErrors { + #[allow(missing_docs)] EndTimeBeforeStartTime(EndTimeBeforeStartTime), + #[allow(missing_docs)] IncorrectAmounts(IncorrectAmounts), } #[automatically_derived] @@ -208,7 +226,7 @@ error IncorrectAmounts(); Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -253,7 +271,7 @@ error IncorrectAmounts(); ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/dutchorderlib.rs b/crates/bindings-uniswapx/src/dutchorderlib.rs index ff655be..374002d 100644 --- a/crates/bindings-uniswapx/src/dutchorderlib.rs +++ b/crates/bindings-uniswapx/src/dutchorderlib.rs @@ -9,29 +9,35 @@ interface DutchOrderLib {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod DutchOrderLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc90208316a6c59e263faae6762f85d37637ee9daa13ee68c8bfaf3fcf06d1f564736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220c74064c6964486e20315c0ec8d30110603505f902df7818a7a5e6484fd8a5fc564736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xFC\x90 \x83\x16\xA6\xC5\x9E&?\xAA\xE6v/\x85\xD3v7\xEE\x9D\xAA\x13\xEEh\xC8\xBF\xAF?\xCF\x06\xD1\xF5dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xC7@d\xC6\x96D\x86\xE2\x03\x15\xC0\xEC\x8D0\x11\x06\x03P_\x90-\xF7\x81\x8Az^d\x84\xFD\x8A_\xC5dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc90208316a6c59e263faae6762f85d37637ee9daa13ee68c8bfaf3fcf06d1f564736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220c74064c6964486e20315c0ec8d30110603505f902df7818a7a5e6484fd8a5fc564736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xFC\x90 \x83\x16\xA6\xC5\x9E&?\xAA\xE6v/\x85\xD3v7\xEE\x9D\xAA\x13\xEEh\xC8\xBF\xAF?\xCF\x06\xD1\xF5dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xC7@d\xC6\x96D\x86\xE2\x03\x15\xC0\xEC\x8D0\x11\x06\x03P_\x90-\xF7\x81\x8Az^d\x84\xFD\x8A_\xC5dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`DutchOrderLib`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/dutchorderreactor.rs b/crates/bindings-uniswapx/src/dutchorderreactor.rs index 58e1260..3261407 100644 --- a/crates/bindings-uniswapx/src/dutchorderreactor.rs +++ b/crates/bindings-uniswapx/src/dutchorderreactor.rs @@ -386,40 +386,53 @@ interface DutchOrderReactor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod DutchOrderReactor { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a06040523480156200001157600080fd5b5060405162003080380380620030808339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051612f67620001196000396000818160e001526117e90152612f676000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046121aa565b6101eb565b005b6100b96100c9366004612258565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461229a565b6104c5565b34801561014a57600080fd5b506100b9610159366004612328565b610683565b6100b961016c36600461234c565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612328565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56123b0565b60200260200101819052506102d981610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016125b3565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b95565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612381565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666123b0565b90506020028101906104789190612679565b6109f6565b82828151811061048f5761048f6123b0565b6020908102919091010152600101610449565b506104ac81610b44565b6104b581610b95565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612381565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666123b0565b8282815181106105d9576105d96123b0565b60209081029190910101526001016105aa565b506105f681610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016125b3565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b95565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696123b0565b602002602001018190525061087d81610b44565b61088681610b95565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f83806126b7565b810190610a7c91906129a9565b9050610a8781610ce8565b6040518060a0016040528082600001518152602001610abd836020015184604001518560600151610dd39092919063ffffffff16565b8152602001610ae3836020015184604001518560800151610ea59092919063ffffffff16565b8152602001848060200190610af891906126b7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610f8c565b90529392505050565b805160005b8181101561035f576000838281518110610b6557610b656123b0565b60200260200101519050610b78816111f6565b610b8281336116e6565b610b8c81336117e7565b50600101610b49565b805160005b81811015610cd7576000838281518110610bb657610bb66123b0565b602002602001015190506000816040015151905060005b81811015610c3757600083604001518281518110610bed57610bed6123b0565b60200260200101519050610c2e81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611b579092919063ffffffff16565b50600101610bcd565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c8057610c806123b0565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cc591815260200190565b60405180910390a45050600101610b9a565b5047156104c1576104c13347611b9e565b60408101518151606001511015610d2b576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108915760005b8160800151518110156104c15781608001518181518110610d6657610d666123b0565b60200260200101516040015182608001518281518110610d8857610d886123b0565b60200260200101516020015114610dcb576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d43565b610e0d6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e4f576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e65856020015186604001518686611c38565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ec357610ec3612381565b604051908082528060200260200182016040528015610f2c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ee15790505b50915060005b81811015610f8357610f5e868281518110610f4f57610f4f6123b0565b60200260200101518686611cb5565b838281518110610f7057610f706123b0565b6020908102919091010152600101610f32565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a982015260009060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d913960405160200161113293929190612add565b604051602081830303815290604052805190602001206111558360000151611d85565b836020015184604001518560600151600001518660600151602001518760600151604001516111878960800151611e1f565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff166112165750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061126d908590600401612b20565b600060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112d09190810190612b33565b60408301515181519192509060006112e88284612c32565b67ffffffffffffffff81111561130057611300612381565b60405190808252806020026020018201604052801561136957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161131e5790505b50905060005b838110156113ba578560400151818151811061138d5761138d6123b0565b60200260200101518282815181106113a7576113a76123b0565b602090810291909101015260010161136f565b5060008060005b848110156116d55760008782815181106113dd576113dd6123b0565b6020026020010151905060005b8281101561149b57888181518110611404576114046123b0565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036114935781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016113ea565b506000805b8881101561155c5760008b6040015182815181106114c0576114c06123b0565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361155357851561153d576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161154c9084612c32565b9250600196505b506001016114a0565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036115d55784156115bc576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516115ce9082612c32565b9050600193505b8060000361162a5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611638816005612710611ebd565b826020015111156116ab578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106116c0576116c06123b0565b602090810291909101015250506001016113c1565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611737576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117b39084908690600401612c45565b60006040518083038186803b1580156117cb57600080fd5b505afa1580156117df573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6118a7846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6118b18585611ef9565b85600001516020015186608001516040516020016119fc907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d9139604051602001611a6993929190612add565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612e776020830139604051602001611abc929190612c74565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611b299695949392600401612ccf565b600060405180830381600087803b158015611b4357600080fd5b505af11580156117df573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611b7c5761035f8282611b9e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484611f40565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611bf8576040519150601f19603f3d011682016040523d82523d6000602084013e611bfd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611c48575083611cad565b828211611c81576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611c8f575082611cad565b428310611c9d575083611cad565b611caa8383428888612032565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d14576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d2a856020015186604001518686611c38565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d8152602001612ea5608d913980516020918201208351848301516040808701516060880151608089015160a08a015180519089012093516111d998939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611e3f57611e3f612381565b6040519080825280601f01601f191660200182016040528015611e69576020820181803683370190505b50905060005b8351811015611eae576000611e9c858381518110611e8f57611e8f6123b0565b602002602001015161204d565b60208381028501015250600101611e6f565b50805160209091012092915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611ef257600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600061204186868686866120c4565b90505b95945050505050565b6000604051806080016040528060528152602001612e25605291398051602091820120835184830151604080870151606088015191516111d9969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b60008484106120d4575080612044565b60006120e08786612d8a565b905060006120ee8888612d8a565b9050600085851215612120576121108383612109888a612d9d565b9190611ebd565b61211990612dc4565b9050612132565b61212f83836121098989612d9d565b90505b61213c8187612dfc565b9998505050505050505050565b60006040828403121561215b57600080fd5b50919050565b60008083601f84011261217357600080fd5b50813567ffffffffffffffff81111561218b57600080fd5b6020830191508360208285010111156121a357600080fd5b9250929050565b6000806000604084860312156121bf57600080fd5b833567ffffffffffffffff808211156121d757600080fd5b6121e387838801612149565b945060208601359150808211156121f957600080fd5b5061220686828701612161565b9497909650939450505050565b60008083601f84011261222557600080fd5b50813567ffffffffffffffff81111561223d57600080fd5b6020830191508360208260051b85010111156121a357600080fd5b6000806020838503121561226b57600080fd5b823567ffffffffffffffff81111561228257600080fd5b61228e85828601612213565b90969095509350505050565b600080600080604085870312156122b057600080fd5b843567ffffffffffffffff808211156122c857600080fd5b6122d488838901612213565b909650945060208701359150808211156122ed57600080fd5b506122fa87828801612161565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b60006020828403121561233a57600080fd5b813561234581612306565b9392505050565b60006020828403121561235e57600080fd5b813567ffffffffffffffff81111561237557600080fd5b611cad84828501612149565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156123fa5781810151838201526020016123e2565b50506000910152565b6000815180845261241b8160208601602086016123df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156124ad578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612462565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c061018085015261252c6101a0850182612403565b9050602083015161256a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612582828261244d565b915050606083015184820360a086015261259c8282612403565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612628577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526126168683516124b8565b955093820193908201906001016125dc565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126126ad57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126ec57600080fd5b83018035915067ffffffffffffffff82111561270757600080fd5b6020019150368190038213156121a357600080fd5b6040516060810167ffffffffffffffff8111828210171561273f5761273f612381565b60405290565b6040516080810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160a0810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160c0810167ffffffffffffffff8111828210171561273f5761273f612381565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127f5576127f5612381565b604052919050565b600082601f83011261280e57600080fd5b813567ffffffffffffffff81111561282857612828612381565b61285960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016127ae565b81815284602083860101111561286e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561289d57600080fd5b6128a561271c565b905081356128b281612306565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff8211156128ea576128ea612381565b5060051b60200190565b600082601f83011261290557600080fd5b8135602061291a612915836128d0565b6127ae565b82815260079290921b8401810191818101908684111561293957600080fd5b8286015b8481101561299e57608081890312156129565760008081fd5b61295e612745565b813561296981612306565b815281850135858201526040808301359082015260608083013561298c81612306565b9082015283529183019160800161293d565b509695505050505050565b6000602082840312156129bb57600080fd5b813567ffffffffffffffff808211156129d357600080fd5b9083019060e082860312156129e757600080fd5b6129ef612768565b8235828111156129fe57600080fd5b830160c08188031215612a1057600080fd5b612a1861278b565b8135612a2381612306565b81526020820135612a3381612306565b8060208301525060408201356040820152606082013560608201526080820135612a5c81612306565b608082015260a082013584811115612a7357600080fd5b612a7f898285016127fd565b60a08301525080835250506020830135602082015260408301356040820152612aab866060850161288b565b606082015260c083013582811115612ac257600080fd5b612ace878286016128f4565b60808301525095945050505050565b60008451612aef8184602089016123df565b845190830190612b038183602089016123df565b8451910190612b168183602088016123df565b0195945050505050565b60208152600061234560208301846124b8565b60006020808385031215612b4657600080fd5b825167ffffffffffffffff811115612b5d57600080fd5b8301601f81018513612b6e57600080fd5b8051612b7c612915826128d0565b81815260609182028301840191848201919088841115612b9b57600080fd5b938501935b83851015612bf75780858a031215612bb85760008081fd5b612bc061271c565b8551612bcb81612306565b81528587015187820152604080870151612be481612306565b9082015283529384019391850191612ba0565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611f3a57611f3a612c03565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611cad60408301846124b8565b7f44757463684f72646572207769746e6573732900000000000000000000000000815260008351612cac8160138501602088016123df565b835190830190612cc38160138401602088016123df565b01601301949350505050565b6000610140612cff838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612d406080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612d7581840186612403565b905082810361012084015261213c8185612403565b81810381811115611f3a57611f3a612c03565b8181036000831280158383131683831282161715612dbd57612dbd612c03565b5092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203612df557612df5612c03565b5060000390565b8082018281126000831280158216821582161715612e1c57612e1c612c03565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212200c74c65349b0af83668d860352d39f1829d5721d9019f51e2826cab1d7552ecb64736f6c63430008180033 + ///0x60a060405234801562000010575f80fd5b5060405162002fb038038062002fb08339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b608051612e9f620001115f395f818160da01526117970152612e9f5ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af366004612132565b6101e0565b005b6100b46100c43660046121d7565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004612216565b6104af565b348015610143575f80fd5b506100b461015236600461229e565b610665565b6100b46101653660046122c0565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db36600461229e565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b761231f565b60200260200101819052506102cb81610b1d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b9084908790879060040161251a565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b6c565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff811115610374576103746122f2565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c576104678585838181106104505761045061231f565b905060200281019061046291906125dd565b6109d2565b8282815181106104795761047961231f565b6020908102919091010152600101610433565b5061049681610b1d565b61049f81610b6c565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d26122f2565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae8787838181106104505761045061231f565b8282815181106105c0576105c061231f565b6020908102919091010152600101610591565b506105dd81610b1d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d9084908890889060040161251a565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b6c565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f815181106108475761084761231f565b602002602001018190525061085b81610b1d565b61086481610b6c565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a8380612619565b810190610a5791906128fb565b9050610a6281610cb7565b6040518060a00160405280825f01518152602001610a97836020015184604001518560600151610da19092919063ffffffff16565b8152602001610abd836020015184604001518560800151610e6f9092919063ffffffff16565b8152602001848060200190610ad29190612619565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610b1483610f54565b90529392505050565b80515f5b8181101561034c575f838281518110610b3c57610b3c61231f565b60200260200101519050610b4f816111bb565b610b598133611698565b610b638133611795565b50600101610b21565b80515f5b81811015610ca6575f838281518110610b8b57610b8b61231f565b602002602001015190505f81604001515190505f5b81811015610c08575f83604001518281518110610bbf57610bbf61231f565b60200260200101519050610bff81604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611afe9092919063ffffffff16565b50600101610ba0565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c5057610c5061231f565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610c9491815260200190565b60405180910390a45050600101610b70565b5047156104ab576104ab3347611b45565b60408101518151606001511015610cfa576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160408101516020909101511461086f575f5b8160800151518110156104ab5781608001518181518110610d3457610d3461231f565b60200260200101516040015182608001518281518110610d5657610d5661231f565b60200260200101516020015114610d99576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d11565b610dd860405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b836040015184602001511115610e1a576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e2f856020015186604001518686611bdb565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610e8d57610e8d6122f2565b604051908082528060200260200182016040528015610ef557816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eab5790505b5091505f5b81811015610f4b57610f26868281518110610f1757610f1761231f565b60200260200101518686611c57565b838281518110610f3857610f3861231f565b6020908102919091010152600101610efa565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a98201525f9060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612d5d60208301396040518060c00160405280608d8152602001612ddd608d91396040516020016110f993929190612a27565b6040516020818303038152906040528051906020012061111b835f0151611d24565b8360200151846040015185606001515f015186606001516020015187606001516040015161114c8960800151611dbd565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff166111db5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611231908590600401612a69565b5f60405180830381865afa15801561124b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112909190810190612a7b565b6040830151518151919250905f6112a78284612b71565b67ffffffffffffffff8111156112bf576112bf6122f2565b60405190808252806020026020018201604052801561132757816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816112dd5790505b5090505f5b83811015611377578560400151818151811061134a5761134a61231f565b60200260200101518282815181106113645761136461231f565b602090810291909101015260010161132c565b505f805f5b84811015611687575f8782815181106113975761139761231f565b602002602001015190505f5b82811015611452578881815181106113bd576113bd61231f565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff160361144a5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6001016113a3565b505f805b8881101561150f575f8b6040015182815181106114755761147561231f565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff16036115065785156114f0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516114ff9084612b71565b9250600196505b50600101611456565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361158857841561156f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516115819082612b71565b9050600193505b805f036115dc5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6115ea816005612710611e58565b8260200151111561165d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a01815181106116725761167261231f565b6020908102919091010152505060010161137c565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146116e9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117659084908690600401612b84565b5f6040518083038186803b15801561177b575f80fd5b505afa15801561178d573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611854846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b61185e8585611e92565b855f01516020015186608001516040516020016119a8907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612d5d60208301396040518060c00160405280608d8152602001612ddd608d9139604051602001611a1593929190612a27565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612daf6020830139604051602001611a68929190612bb2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611ad59695949392600401612c0c565b5f604051808303815f87803b158015611aec575f80fd5b505af115801561178d573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611b235761034c8282611b45565b61034c73ffffffffffffffffffffffffffffffffffffffff8416338484611ed8565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611b9b576040519150601f19603f3d011682016040523d82523d5f602084013e611ba0565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f838503611bea575083611c4f565b828211611c23576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611c31575082611c4f565b428310611c3f575083611c4f565b611c4c8383428888611fc6565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611cb5576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611cca856020015186604001518686611bdb565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b5f6040518060c00160405280608d8152602001612ddd608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161119e98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115611ddc57611ddc6122f2565b6040519080825280601f01601f191660200182016040528015611e06576020820181803683370190505b5090505f5b8351811015611e49575f611e37858381518110611e2a57611e2a61231f565b6020026020010151611fe0565b60208381028501015250600101611e0b565b50805160209091012092915050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611e8b575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611fbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5050505050565b5f611fd48686868686612056565b90505b95945050505050565b5f604051806080016040528060528152602001612d5d6052913980516020918201208351848301516040808701516060880151915161119e969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f848410612065575080611fd7565b5f6120708786612cc6565b90505f61207d8888612cc6565b90505f858512156120ae5761209e8383612097888a612cd9565b9190611e58565b6120a790612cff565b90506120c0565b6120bd83836120978989612cd9565b90505b6120ca8187612d35565b9998505050505050505050565b5f604082840312156120e7575f80fd5b50919050565b5f8083601f8401126120fd575f80fd5b50813567ffffffffffffffff811115612114575f80fd5b60208301915083602082850101111561212b575f80fd5b9250929050565b5f805f60408486031215612144575f80fd5b833567ffffffffffffffff8082111561215b575f80fd5b612167878388016120d7565b9450602086013591508082111561217c575f80fd5b50612189868287016120ed565b9497909650939450505050565b5f8083601f8401126121a6575f80fd5b50813567ffffffffffffffff8111156121bd575f80fd5b6020830191508360208260051b850101111561212b575f80fd5b5f80602083850312156121e8575f80fd5b823567ffffffffffffffff8111156121fe575f80fd5b61220a85828601612196565b90969095509350505050565b5f805f8060408587031215612229575f80fd5b843567ffffffffffffffff80821115612240575f80fd5b61224c88838901612196565b90965094506020870135915080821115612264575f80fd5b50612271878288016120ed565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b5f602082840312156122ae575f80fd5b81356122b98161227d565b9392505050565b5f602082840312156122d0575f80fd5b813567ffffffffffffffff8111156122e6575f80fd5b611c4f848285016120d7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b8381101561236657818101518382015260200161234e565b50505f910152565b5f815180845261238581602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b83811015612415578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016123ca565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526124936101a085018261236e565b905060208301516124d16020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526124e982826123b7565b915050606083015184820360a0860152612503828261236e565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b8381101561258d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301855261257b868351612420565b95509382019390820190600101612541565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261260f575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261264c575f80fd5b83018035915067ffffffffffffffff821115612666575f80fd5b60200191503681900382131561212b575f80fd5b6040516060810167ffffffffffffffff8111828210171561269d5761269d6122f2565b60405290565b6040516080810167ffffffffffffffff8111828210171561269d5761269d6122f2565b60405160a0810167ffffffffffffffff8111828210171561269d5761269d6122f2565b60405160c0810167ffffffffffffffff8111828210171561269d5761269d6122f2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612753576127536122f2565b604052919050565b5f82601f83011261276a575f80fd5b813567ffffffffffffffff811115612784576127846122f2565b6127b560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161270c565b8181528460208386010111156127c9575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082840312156127f5575f80fd5b6127fd61267a565b9050813561280a8161227d565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612841576128416122f2565b5060051b60200190565b5f82601f83011261285a575f80fd5b8135602061286f61286a83612828565b61270c565b82815260079290921b8401810191818101908684111561288d575f80fd5b8286015b848110156128f057608081890312156128a8575f80fd5b6128b06126a3565b81356128bb8161227d565b81528185013585820152604080830135908201526060808301356128de8161227d565b90820152835291830191608001612891565b509695505050505050565b5f6020828403121561290b575f80fd5b813567ffffffffffffffff80821115612922575f80fd5b9083019060e08286031215612935575f80fd5b61293d6126c6565b82358281111561294b575f80fd5b830160c0818803121561295c575f80fd5b6129646126e9565b813561296f8161227d565b8152602082013561297f8161227d565b80602083015250604082013560408201526060820135606082015260808201356129a88161227d565b608082015260a0820135848111156129be575f80fd5b6129ca8982850161275b565b60a083015250808352505060208301356020820152604083013560408201526129f686606085016127e5565b606082015260c083013582811115612a0c575f80fd5b612a188782860161284b565b60808301525095945050505050565b5f8451612a3881846020890161234c565b845190830190612a4c81836020890161234c565b8451910190612a5f81836020880161234c565b0195945050505050565b602081525f6122b96020830184612420565b5f6020808385031215612a8c575f80fd5b825167ffffffffffffffff811115612aa2575f80fd5b8301601f81018513612ab2575f80fd5b8051612ac061286a82612828565b81815260609182028301840191848201919088841115612ade575f80fd5b938501935b83851015612b385780858a031215612af9575f80fd5b612b0161267a565b8551612b0c8161227d565b81528587015187820152604080870151612b258161227d565b9082015283529384019391850191612ae3565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611ed257611ed2612b44565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611c4f6040830184612420565b7f44757463684f72646572207769746e657373290000000000000000000000000081525f8351612be981601385016020880161234c565b835190830190612c0081601384016020880161234c565b01601301949350505050565b5f610140612c3b838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612c7c6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612cb18184018661236e565b90508281036101208401526120ca818561236e565b81810381811115611ed257611ed2612b44565b8181035f831280158383131683831282161715612cf857612cf8612b44565b5092915050565b5f7f80000000000000000000000000000000000000000000000000000000000000008203612d2f57612d2f612b44565b505f0390565b8082018281125f831280158216821582161715612d5457612d54612b44565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220c6046beff5f7d506b16e2018101ed3b878948834bd1d4031a2fce775c1deed4664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x000\x808\x03\x80b\x000\x80\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa/gb\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x17\xE9\x01Ra/g`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a!\xAAV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a\"XV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a\"\x9AV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a#(V[a\x06\x83V[a\0\xB9a\x01l6`\x04a#LV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a#(V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a#\xB0V[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\x95V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a&yV[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BDV[a\x04\xB5\x81a\x0B\x95V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\x95V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia#\xB0V[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BDV[a\x08\x86\x81a\x0B\x95V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a&\xB7V[\x81\x01\x90a\n|\x91\x90a)\xA9V[\x90Pa\n\x87\x81a\x0C\xE8V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xD3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0E\xA5\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a&\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\x8CV[\x90R\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea#\xB0V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x11\xF6V[a\x0B\x82\x813a\x16\xE6V[a\x0B\x8C\x813a\x17\xE7V[P`\x01\x01a\x0BIV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xD7W`\0\x83\x82\x81Q\x81\x10a\x0B\xB6Wa\x0B\xB6a#\xB0V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C7W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xEDWa\x0B\xEDa#\xB0V[` \x02` \x01\x01Q\x90Pa\x0C.\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1BW\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xCDV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x80Wa\x0C\x80a#\xB0V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xC5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x9AV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1B\x9EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r+W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\x80\x01QQ\x81\x10\x15a\x04\xC1W\x81`\x80\x01Q\x81\x81Q\x81\x10a\rfWa\rfa#\xB0V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\r\x88Wa\r\x88a#\xB0V[` \x02` \x01\x01Q` \x01Q\x14a\r\xCBW`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\rCV[a\x0E\r`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EOW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0Ee\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xC3Wa\x0E\xC3a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F,W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xE1W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\x83Wa\x0F^\x86\x82\x81Q\x81\x10a\x0FOWa\x0FOa#\xB0V[` \x02` \x01\x01Q\x86\x86a\x1C\xB5V[\x83\x82\x81Q\x81\x10a\x0FpWa\x0Fpa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F2V[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R`\0\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x112\x93\x92\x91\x90a*\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11U\x83`\0\x01Qa\x1D\x85V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q`\0\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x11\x87\x89`\x80\x01Qa\x1E\x1FV[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\x16WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12m\x90\x85\x90`\x04\x01a+ V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\x8AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\xD0\x91\x90\x81\x01\x90a+3V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x12\xE8\x82\x84a,2V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\0Wa\x13\0a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13iW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x1EW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x13\xBAW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\x8DWa\x13\x8Da#\xB0V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xA7Wa\x13\xA7a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13oV[P`\0\x80`\0[\x84\x81\x10\x15a\x16\xD5W`\0\x87\x82\x81Q\x81\x10a\x13\xDDWa\x13\xDDa#\xB0V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x14\x9BW\x88\x81\x81Q\x81\x10a\x14\x04Wa\x14\x04a#\xB0V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\x93W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x13\xEAV[P`\0\x80[\x88\x81\x10\x15a\x15\\W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x14\xC0Wa\x14\xC0a#\xB0V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15SW\x85\x15a\x15=W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15L\x90\x84a,2V[\x92P`\x01\x96P[P`\x01\x01a\x14\xA0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\xD5W\x84\x15a\x15\xBCW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\xCE\x90\x82a,2V[\x90P`\x01\x93P[\x80`\0\x03a\x16*W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x168\x81`\x05a'\x10a\x1E\xBDV[\x82` \x01Q\x11\x15a\x16\xABW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16\xC0Wa\x16\xC0a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13\xC1V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x177W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xB3\x90\x84\x90\x86\x90`\x04\x01a,EV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17\xCBW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xA7\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xB1\x85\x85a\x1E\xF9V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xFC\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x1Ai\x93\x92\x91\x90a*\xDDV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a.w` \x83\x019`@Q` \x01a\x1A\xBC\x92\x91\x90a,tV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B)\x96\x95\x94\x93\x92`\x04\x01a,\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B|Wa\x03_\x82\x82a\x1B\x9EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1F@V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1B\xF8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1B\xFDV[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1CHWP\x83a\x1C\xADV[\x82\x82\x11a\x1C\x81W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\x8FWP\x82a\x1C\xADV[B\x83\x10a\x1C\x9DWP\x83a\x1C\xADV[a\x1C\xAA\x83\x83B\x88\x88a 2V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x14W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D*\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\xD9\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E?Wa\x1E?a#\x81V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1EiW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1E\xAEW`\0a\x1E\x9C\x85\x83\x81Q\x81\x10a\x1E\x8FWa\x1E\x8Fa#\xB0V[` \x02` \x01\x01Qa MV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1EoV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\xF2W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a +W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0a A\x86\x86\x86\x86\x86a \xC4V[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a.%`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\xD9\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x84\x84\x10a \xD4WP\x80a DV[`\0a \xE0\x87\x86a-\x8AV[\x90P`\0a \xEE\x88\x88a-\x8AV[\x90P`\0\x85\x85\x12\x15a! Wa!\x10\x83\x83a!\t\x88\x8Aa-\x9DV[\x91\x90a\x1E\xBDV[a!\x19\x90a-\xC4V[\x90Pa!2V[a!/\x83\x83a!\t\x89\x89a-\x9DV[\x90P[a!<\x81\x87a-\xFCV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a![W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a!sW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x8BW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a!\xBFW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a!\xD7W`\0\x80\xFD[a!\xE3\x87\x83\x88\x01a!IV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!\xF9W`\0\x80\xFD[Pa\"\x06\x86\x82\x87\x01a!aV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\"%W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"=W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\"kW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x82W`\0\x80\xFD[a\"\x8E\x85\x82\x86\x01a\"\x13V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\"\xB0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"\xC8W`\0\x80\xFD[a\"\xD4\x88\x83\x89\x01a\"\x13V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"\xEDW`\0\x80\xFD[Pa\"\xFA\x87\x82\x88\x01a!aV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a#:W`\0\x80\xFD[\x815a#E\x81a#\x06V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a#^W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#uW`\0\x80\xFD[a\x1C\xAD\x84\x82\x85\x01a!IV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a#\xFAW\x81\x81\x01Q\x83\x82\x01R` \x01a#\xE2V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra$\x1B\x81` \x86\x01` \x86\x01a#\xDFV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a$\xADW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a$bV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%,a\x01\xA0\x85\x01\x82a$\x03V[\x90P` \x83\x01Qa%j` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra%\x82\x82\x82a$MV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x9C\x82\x82a$\x03V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a&(W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra&\x16\x86\x83Qa$\xB8V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%\xDCV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\xADW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&\xECW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a'\x07W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!\xA3W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xF5Wa'\xF5a#\x81V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a(\x0EW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a((Wa((a#\x81V[a(Y` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\xAEV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a(nW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a(\x9DW`\0\x80\xFD[a(\xA5a'\x1CV[\x90P\x815a(\xB2\x81a#\x06V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xEAWa(\xEAa#\x81V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a)\x05W`\0\x80\xFD[\x815` a)\x1Aa)\x15\x83a(\xD0V[a'\xAEV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a)9W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a)\x9EW`\x80\x81\x89\x03\x12\x15a)VW`\0\x80\x81\xFD[a)^a'EV[\x815a)i\x81a#\x06V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a)\x8C\x81a#\x06V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a)=V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a)\xBBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\xD3W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)\xE7W`\0\x80\xFD[a)\xEFa'hV[\x825\x82\x81\x11\x15a)\xFEW`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a*\x10W`\0\x80\xFD[a*\x18a'\x8BV[\x815a*#\x81a#\x06V[\x81R` \x82\x015a*3\x81a#\x06V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a*\\\x81a#\x06V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a*sW`\0\x80\xFD[a*\x7F\x89\x82\x85\x01a'\xFDV[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra*\xAB\x86``\x85\x01a(\x8BV[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\xC2W`\0\x80\xFD[a*\xCE\x87\x82\x86\x01a(\xF4V[`\x80\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa*\xEF\x81\x84` \x89\x01a#\xDFV[\x84Q\x90\x83\x01\x90a+\x03\x81\x83` \x89\x01a#\xDFV[\x84Q\x91\x01\x90a+\x16\x81\x83` \x88\x01a#\xDFV[\x01\x95\x94PPPPPV[` \x81R`\0a#E` \x83\x01\x84a$\xB8V[`\0` \x80\x83\x85\x03\x12\x15a+FW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+]W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a+nW`\0\x80\xFD[\x80Qa+|a)\x15\x82a(\xD0V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a+\x9BW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+\xF7W\x80\x85\x8A\x03\x12\x15a+\xB8W`\0\x80\x81\xFD[a+\xC0a'\x1CV[\x85Qa+\xCB\x81a#\x06V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+\xE4\x81a#\x06V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a+\xA0V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F:Wa\x1F:a,\x03V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1C\xAD`@\x83\x01\x84a$\xB8V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa,\xAC\x81`\x13\x85\x01` \x88\x01a#\xDFV[\x83Q\x90\x83\x01\x90a,\xC3\x81`\x13\x84\x01` \x88\x01a#\xDFV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a,\xFF\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra-@`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra-u\x81\x84\x01\x86a$\x03V[\x90P\x82\x81\x03a\x01 \x84\x01Ra!<\x81\x85a$\x03V[\x81\x81\x03\x81\x81\x11\x15a\x1F:Wa\x1F:a,\x03V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a-\xBDWa-\xBDa,\x03V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-\xF5Wa-\xF5a,\x03V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a.\x1CWa.\x1Ca,\x03V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x0Ct\xC6SI\xB0\xAF\x83f\x8D\x86\x03R\xD3\x9F\x18)\xD5r\x1D\x90\x19\xF5\x1E(&\xCA\xB1\xD7U.\xCBdsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0/\xB08\x03\x80b\0/\xB0\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa.\x9Fb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x17\x97\x01Ra.\x9F_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a!2V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a!\xD7V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a\"\x16V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a\"\x9EV[a\x06eV[a\0\xB4a\x01e6`\x04a\"\xC0V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a\"\x9EV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a#\x1FV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0BlV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a%\xDDV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\x1DV[a\x04\x9F\x81a\x0BlV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0BlV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga#\x1FV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\x1DV[a\x08d\x81a\x0BlV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a&\x19V[\x81\x01\x90a\nW\x91\x90a(\xFBV[\x90Pa\nb\x81a\x0C\xB7V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xA1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0Eo\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a&\x19V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FTV[\x90R\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0B=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\x90\x91\x90\x81\x01\x90a*{V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x12\xA7\x82\x84a+qV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xBFWa\x12\xBFa\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x12\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x13wW\x85`@\x01Q\x81\x81Q\x81\x10a\x13JWa\x13Ja#\x1FV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13dWa\x13da#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13,V[P_\x80_[\x84\x81\x10\x15a\x16\x87W_\x87\x82\x81Q\x81\x10a\x13\x97Wa\x13\x97a#\x1FV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14RW\x88\x81\x81Q\x81\x10a\x13\xBDWa\x13\xBDa#\x1FV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x13\xA3V[P_\x80[\x88\x81\x10\x15a\x15\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x14uWa\x14ua#\x1FV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x06W\x85\x15a\x14\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x14\xFF\x90\x84a+qV[\x92P`\x01\x96P[P`\x01\x01a\x14VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\x88W\x84\x15a\x15oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\x81\x90\x82a+qV[\x90P`\x01\x93P[\x80_\x03a\x15\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x15\xEA\x81`\x05a'\x10a\x1EXV[\x82` \x01Q\x11\x15a\x16]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16rWa\x16ra#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x16\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17e\x90\x84\x90\x86\x90`\x04\x01a+\x84V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17{W_\x80\xFD[PZ\xFA\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18T\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18^\x85\x85a\x1E\x92V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xA8\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a-]` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919`@Q` \x01a\x1A\x15\x93\x92\x91\x90a*'V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a-\xAF` \x83\x019`@Q` \x01a\x1Ah\x92\x91\x90a+\xB2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1A\xD5\x96\x95\x94\x93\x92`\x04\x01a,\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\xECW_\x80\xFD[PZ\xF1\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B#Wa\x03L\x82\x82a\x1BEV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1E\xD8V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1B\x9BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xA0V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1B\xEAWP\x83a\x1COV[\x82\x82\x11a\x1C#W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C1WP\x82a\x1COV[B\x83\x10a\x1C?WP\x83a\x1COV[a\x1CL\x83\x83B\x88\x88a\x1F\xC6V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1C\xB5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1C\xCA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1B\xDBV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\x9E\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1D\xDCWa\x1D\xDCa\"\xF2V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1EIW_a\x1E7\x85\x83\x81Q\x81\x10a\x1E*Wa\x1E*a#\x1FV[` \x02` \x01\x01Qa\x1F\xE0V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x0BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\x8BW_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F\xBFW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_a\x1F\xD4\x86\x86\x86\x86\x86a VV[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a-]`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\x9E\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x84\x84\x10a eWP\x80a\x1F\xD7V[_a p\x87\x86a,\xC6V[\x90P_a }\x88\x88a,\xC6V[\x90P_\x85\x85\x12\x15a \xAEWa \x9E\x83\x83a \x97\x88\x8Aa,\xD9V[\x91\x90a\x1EXV[a \xA7\x90a,\xFFV[\x90Pa \xC0V[a \xBD\x83\x83a \x97\x89\x89a,\xD9V[\x90P[a \xCA\x81\x87a-5V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a \xE7W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a \xFDW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x14W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!+W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a!DW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a![W_\x80\xFD[a!g\x87\x83\x88\x01a \xD7V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!|W_\x80\xFD[Pa!\x89\x86\x82\x87\x01a \xEDV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a!\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!+W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a!\xE8W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xFEW_\x80\xFD[a\"\n\x85\x82\x86\x01a!\x96V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\")W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"@W_\x80\xFD[a\"L\x88\x83\x89\x01a!\x96V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"dW_\x80\xFD[Pa\"q\x87\x82\x88\x01a \xEDV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[_` \x82\x84\x03\x12\x15a\"\xAEW_\x80\xFD[\x815a\"\xB9\x81a\"}V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\"\xD0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xE6W_\x80\xFD[a\x1CO\x84\x82\x85\x01a \xD7V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a#fW\x81\x81\x01Q\x83\x82\x01R` \x01a#NV[PP_\x91\x01RV[_\x81Q\x80\x84Ra#\x85\x81` \x86\x01` \x86\x01a#LV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a$\x15W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a#\xCAV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra$\x93a\x01\xA0\x85\x01\x82a#nV[\x90P` \x83\x01Qa$\xD1` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra$\xE9\x82\x82a#\xB7V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x03\x82\x82a#nV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a%\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra%{\x86\x83Qa$ V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\x0FW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&LW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a&fW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!+W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'SWa'Sa\"\xF2V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a'jW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'\x84Wa'\x84a\"\xF2V[a'\xB5` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\x0CV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a'\xC9W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a'\xF5W_\x80\xFD[a'\xFDa&zV[\x90P\x815a(\n\x81a\"}V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(AWa(Aa\"\xF2V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a(ZW_\x80\xFD[\x815` a(oa(j\x83a((V[a'\x0CV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a(\x8DW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a(\xF0W`\x80\x81\x89\x03\x12\x15a(\xA8W_\x80\xFD[a(\xB0a&\xA3V[\x815a(\xBB\x81a\"}V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a(\xDE\x81a\"}V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a(\x91V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a)\x0BW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\"W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)5W_\x80\xFD[a)=a&\xC6V[\x825\x82\x81\x11\x15a)KW_\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a)\\W_\x80\xFD[a)da&\xE9V[\x815a)o\x81a\"}V[\x81R` \x82\x015a)\x7F\x81a\"}V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a)\xA8\x81a\"}V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a)\xBEW_\x80\xFD[a)\xCA\x89\x82\x85\x01a'[V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra)\xF6\x86``\x85\x01a'\xE5V[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\x0CW_\x80\xFD[a*\x18\x87\x82\x86\x01a(KV[`\x80\x83\x01RP\x95\x94PPPPPV[_\x84Qa*8\x81\x84` \x89\x01a#LV[\x84Q\x90\x83\x01\x90a*L\x81\x83` \x89\x01a#LV[\x84Q\x91\x01\x90a*_\x81\x83` \x88\x01a#LV[\x01\x95\x94PPPPPV[` \x81R_a\"\xB9` \x83\x01\x84a$ V[_` \x80\x83\x85\x03\x12\x15a*\x8CW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xA2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a*\xB2W_\x80\xFD[\x80Qa*\xC0a(j\x82a((V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a*\xDEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+8W\x80\x85\x8A\x03\x12\x15a*\xF9W_\x80\xFD[a+\x01a&zV[\x85Qa+\x0C\x81a\"}V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+%\x81a\"}V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a*\xE3V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1CO`@\x83\x01\x84a$ V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x83Qa+\xE9\x81`\x13\x85\x01` \x88\x01a#LV[\x83Q\x90\x83\x01\x90a,\0\x81`\x13\x84\x01` \x88\x01a#LV[\x01`\x13\x01\x94\x93PPPPV[_a\x01@a,;\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra,|`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra,\xB1\x81\x84\x01\x86a#nV[\x90P\x82\x81\x03a\x01 \x84\x01Ra \xCA\x81\x85a#nV[\x81\x81\x03\x81\x81\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a,\xF8Wa,\xF8a+DV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-/Wa-/a+DV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a-TWa-Ta+DV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xC6\x04k\xEF\xF5\xF7\xD5\x06\xB1n \x18\x10\x1E\xD3\xB8x\x94\x884\xBD\x1D@1\xA2\xFC\xE7u\xC1\xDE\xEDFdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046121aa565b6101eb565b005b6100b96100c9366004612258565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461229a565b6104c5565b34801561014a57600080fd5b506100b9610159366004612328565b610683565b6100b961016c36600461234c565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612328565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56123b0565b60200260200101819052506102d981610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016125b3565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b95565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612381565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666123b0565b90506020028101906104789190612679565b6109f6565b82828151811061048f5761048f6123b0565b6020908102919091010152600101610449565b506104ac81610b44565b6104b581610b95565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612381565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666123b0565b8282815181106105d9576105d96123b0565b60209081029190910101526001016105aa565b506105f681610b44565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016125b3565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b95565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696123b0565b602002602001018190525061087d81610b44565b61088681610b95565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f83806126b7565b810190610a7c91906129a9565b9050610a8781610ce8565b6040518060a0016040528082600001518152602001610abd836020015184604001518560600151610dd39092919063ffffffff16565b8152602001610ae3836020015184604001518560800151610ea59092919063ffffffff16565b8152602001848060200190610af891906126b7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610f8c565b90529392505050565b805160005b8181101561035f576000838281518110610b6557610b656123b0565b60200260200101519050610b78816111f6565b610b8281336116e6565b610b8c81336117e7565b50600101610b49565b805160005b81811015610cd7576000838281518110610bb657610bb66123b0565b602002602001015190506000816040015151905060005b81811015610c3757600083604001518281518110610bed57610bed6123b0565b60200260200101519050610c2e81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611b579092919063ffffffff16565b50600101610bcd565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c8057610c806123b0565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cc591815260200190565b60405180910390a45050600101610b9a565b5047156104c1576104c13347611b9e565b60408101518151606001511015610d2b576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108915760005b8160800151518110156104c15781608001518181518110610d6657610d666123b0565b60200260200101516040015182608001518281518110610d8857610d886123b0565b60200260200101516020015114610dcb576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d43565b610e0d6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e4f576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e65856020015186604001518686611c38565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ec357610ec3612381565b604051908082528060200260200182016040528015610f2c57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ee15790505b50915060005b81811015610f8357610f5e868281518110610f4f57610f4f6123b0565b60200260200101518686611cb5565b838281518110610f7057610f706123b0565b6020908102919091010152600101610f32565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a982015260009060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d913960405160200161113293929190612add565b604051602081830303815290604052805190602001206111558360000151611d85565b836020015184604001518560600151600001518660600151602001518760600151604001516111878960800151611e1f565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff166112165750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061126d908590600401612b20565b600060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112d09190810190612b33565b60408301515181519192509060006112e88284612c32565b67ffffffffffffffff81111561130057611300612381565b60405190808252806020026020018201604052801561136957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161131e5790505b50905060005b838110156113ba578560400151818151811061138d5761138d6123b0565b60200260200101518282815181106113a7576113a76123b0565b602090810291909101015260010161136f565b5060008060005b848110156116d55760008782815181106113dd576113dd6123b0565b6020026020010151905060005b8281101561149b57888181518110611404576114046123b0565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036114935781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016113ea565b506000805b8881101561155c5760008b6040015182815181106114c0576114c06123b0565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361155357851561153d576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161154c9084612c32565b9250600196505b506001016114a0565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036115d55784156115bc576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516115ce9082612c32565b9050600193505b8060000361162a5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611638816005612710611ebd565b826020015111156116ab578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106116c0576116c06123b0565b602090810291909101015250506001016113c1565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611737576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117b39084908690600401612c45565b60006040518083038186803b1580156117cb57600080fd5b505afa1580156117df573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6118a7846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6118b18585611ef9565b85600001516020015186608001516040516020016119fc907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e2560208301396040518060c00160405280608d8152602001612ea5608d9139604051602001611a6993929190612add565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612e776020830139604051602001611abc929190612c74565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611b299695949392600401612ccf565b600060405180830381600087803b158015611b4357600080fd5b505af11580156117df573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611b7c5761035f8282611b9e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484611f40565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611bf8576040519150601f19603f3d011682016040523d82523d6000602084013e611bfd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611c48575083611cad565b828211611c81576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611c8f575082611cad565b428310611c9d575083611cad565b611caa8383428888612032565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d14576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d2a856020015186604001518686611c38565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d8152602001612ea5608d913980516020918201208351848301516040808701516060880151608089015160a08a015180519089012093516111d998939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611e3f57611e3f612381565b6040519080825280601f01601f191660200182016040528015611e69576020820181803683370190505b50905060005b8351811015611eae576000611e9c858381518110611e8f57611e8f6123b0565b602002602001015161204d565b60208381028501015250600101611e6f565b50805160209091012092915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611ef257600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600061204186868686866120c4565b90505b95945050505050565b6000604051806080016040528060528152602001612e25605291398051602091820120835184830151604080870151606088015191516111d9969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b60008484106120d4575080612044565b60006120e08786612d8a565b905060006120ee8888612d8a565b9050600085851215612120576121108383612109888a612d9d565b9190611ebd565b61211990612dc4565b9050612132565b61212f83836121098989612d9d565b90505b61213c8187612dfc565b9998505050505050505050565b60006040828403121561215b57600080fd5b50919050565b60008083601f84011261217357600080fd5b50813567ffffffffffffffff81111561218b57600080fd5b6020830191508360208285010111156121a357600080fd5b9250929050565b6000806000604084860312156121bf57600080fd5b833567ffffffffffffffff808211156121d757600080fd5b6121e387838801612149565b945060208601359150808211156121f957600080fd5b5061220686828701612161565b9497909650939450505050565b60008083601f84011261222557600080fd5b50813567ffffffffffffffff81111561223d57600080fd5b6020830191508360208260051b85010111156121a357600080fd5b6000806020838503121561226b57600080fd5b823567ffffffffffffffff81111561228257600080fd5b61228e85828601612213565b90969095509350505050565b600080600080604085870312156122b057600080fd5b843567ffffffffffffffff808211156122c857600080fd5b6122d488838901612213565b909650945060208701359150808211156122ed57600080fd5b506122fa87828801612161565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b60006020828403121561233a57600080fd5b813561234581612306565b9392505050565b60006020828403121561235e57600080fd5b813567ffffffffffffffff81111561237557600080fd5b611cad84828501612149565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156123fa5781810151838201526020016123e2565b50506000910152565b6000815180845261241b8160208601602086016123df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156124ad578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612462565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c061018085015261252c6101a0850182612403565b9050602083015161256a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612582828261244d565b915050606083015184820360a086015261259c8282612403565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612628577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526126168683516124b8565b955093820193908201906001016125dc565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126126ad57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126ec57600080fd5b83018035915067ffffffffffffffff82111561270757600080fd5b6020019150368190038213156121a357600080fd5b6040516060810167ffffffffffffffff8111828210171561273f5761273f612381565b60405290565b6040516080810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160a0810167ffffffffffffffff8111828210171561273f5761273f612381565b60405160c0810167ffffffffffffffff8111828210171561273f5761273f612381565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156127f5576127f5612381565b604052919050565b600082601f83011261280e57600080fd5b813567ffffffffffffffff81111561282857612828612381565b61285960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016127ae565b81815284602083860101111561286e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561289d57600080fd5b6128a561271c565b905081356128b281612306565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff8211156128ea576128ea612381565b5060051b60200190565b600082601f83011261290557600080fd5b8135602061291a612915836128d0565b6127ae565b82815260079290921b8401810191818101908684111561293957600080fd5b8286015b8481101561299e57608081890312156129565760008081fd5b61295e612745565b813561296981612306565b815281850135858201526040808301359082015260608083013561298c81612306565b9082015283529183019160800161293d565b509695505050505050565b6000602082840312156129bb57600080fd5b813567ffffffffffffffff808211156129d357600080fd5b9083019060e082860312156129e757600080fd5b6129ef612768565b8235828111156129fe57600080fd5b830160c08188031215612a1057600080fd5b612a1861278b565b8135612a2381612306565b81526020820135612a3381612306565b8060208301525060408201356040820152606082013560608201526080820135612a5c81612306565b608082015260a082013584811115612a7357600080fd5b612a7f898285016127fd565b60a08301525080835250506020830135602082015260408301356040820152612aab866060850161288b565b606082015260c083013582811115612ac257600080fd5b612ace878286016128f4565b60808301525095945050505050565b60008451612aef8184602089016123df565b845190830190612b038183602089016123df565b8451910190612b168183602088016123df565b0195945050505050565b60208152600061234560208301846124b8565b60006020808385031215612b4657600080fd5b825167ffffffffffffffff811115612b5d57600080fd5b8301601f81018513612b6e57600080fd5b8051612b7c612915826128d0565b81815260609182028301840191848201919088841115612b9b57600080fd5b938501935b83851015612bf75780858a031215612bb85760008081fd5b612bc061271c565b8551612bcb81612306565b81528587015187820152604080870151612be481612306565b9082015283529384019391850191612ba0565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611f3a57611f3a612c03565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611cad60408301846124b8565b7f44757463684f72646572207769746e6573732900000000000000000000000000815260008351612cac8160138501602088016123df565b835190830190612cc38160138401602088016123df565b01601301949350505050565b6000610140612cff838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612d406080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612d7581840186612403565b905082810361012084015261213c8185612403565b81810381811115611f3a57611f3a612c03565b8181036000831280158383131683831282161715612dbd57612dbd612c03565b5092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203612df557612df5612c03565b5060000390565b8082018281126000831280158216821582161715612e1c57612e1c612c03565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212200c74c65349b0af83668d860352d39f1829d5721d9019f51e2826cab1d7552ecb64736f6c63430008180033 + ///0x608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af366004612132565b6101e0565b005b6100b46100c43660046121d7565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004612216565b6104af565b348015610143575f80fd5b506100b461015236600461229e565b610665565b6100b46101653660046122c0565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db36600461229e565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b761231f565b60200260200101819052506102cb81610b1d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b9084908790879060040161251a565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b6c565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff811115610374576103746122f2565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c576104678585838181106104505761045061231f565b905060200281019061046291906125dd565b6109d2565b8282815181106104795761047961231f565b6020908102919091010152600101610433565b5061049681610b1d565b61049f81610b6c565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d26122f2565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae8787838181106104505761045061231f565b8282815181106105c0576105c061231f565b6020908102919091010152600101610591565b506105dd81610b1d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d9084908890889060040161251a565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b6c565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f815181106108475761084761231f565b602002602001018190525061085b81610b1d565b61086481610b6c565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a8380612619565b810190610a5791906128fb565b9050610a6281610cb7565b6040518060a00160405280825f01518152602001610a97836020015184604001518560600151610da19092919063ffffffff16565b8152602001610abd836020015184604001518560800151610e6f9092919063ffffffff16565b8152602001848060200190610ad29190612619565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610b1483610f54565b90529392505050565b80515f5b8181101561034c575f838281518110610b3c57610b3c61231f565b60200260200101519050610b4f816111bb565b610b598133611698565b610b638133611795565b50600101610b21565b80515f5b81811015610ca6575f838281518110610b8b57610b8b61231f565b602002602001015190505f81604001515190505f5b81811015610c08575f83604001518281518110610bbf57610bbf61231f565b60200260200101519050610bff81604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611afe9092919063ffffffff16565b50600101610ba0565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c5057610c5061231f565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610c9491815260200190565b60405180910390a45050600101610b70565b5047156104ab576104ab3347611b45565b60408101518151606001511015610cfa576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160408101516020909101511461086f575f5b8160800151518110156104ab5781608001518181518110610d3457610d3461231f565b60200260200101516040015182608001518281518110610d5657610d5661231f565b60200260200101516020015114610d99576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d11565b610dd860405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b836040015184602001511115610e1a576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e2f856020015186604001518686611bdb565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610e8d57610e8d6122f2565b604051908082528060200260200182016040528015610ef557816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eab5790505b5091505f5b81811015610f4b57610f26868281518110610f1757610f1761231f565b60200260200101518686611c57565b838281518110610f3857610f3861231f565b6020908102919091010152600101610efa565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a98201525f9060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612d5d60208301396040518060c00160405280608d8152602001612ddd608d91396040516020016110f993929190612a27565b6040516020818303038152906040528051906020012061111b835f0151611d24565b8360200151846040015185606001515f015186606001516020015187606001516040015161114c8960800151611dbd565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff166111db5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611231908590600401612a69565b5f60405180830381865afa15801561124b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112909190810190612a7b565b6040830151518151919250905f6112a78284612b71565b67ffffffffffffffff8111156112bf576112bf6122f2565b60405190808252806020026020018201604052801561132757816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816112dd5790505b5090505f5b83811015611377578560400151818151811061134a5761134a61231f565b60200260200101518282815181106113645761136461231f565b602090810291909101015260010161132c565b505f805f5b84811015611687575f8782815181106113975761139761231f565b602002602001015190505f5b82811015611452578881815181106113bd576113bd61231f565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff160361144a5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6001016113a3565b505f805b8881101561150f575f8b6040015182815181106114755761147561231f565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff16036115065785156114f0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516114ff9084612b71565b9250600196505b50600101611456565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361158857841561156f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516115819082612b71565b9050600193505b805f036115dc5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6115ea816005612710611e58565b8260200151111561165d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a01815181106116725761167261231f565b6020908102919091010152505060010161137c565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146116e9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117659084908690600401612b84565b5f6040518083038186803b15801561177b575f80fd5b505afa15801561178d573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611854846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b61185e8585611e92565b855f01516020015186608001516040516020016119a8907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612d5d60208301396040518060c00160405280608d8152602001612ddd608d9139604051602001611a1593929190612a27565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612daf6020830139604051602001611a68929190612bb2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611ad59695949392600401612c0c565b5f604051808303815f87803b158015611aec575f80fd5b505af115801561178d573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611b235761034c8282611b45565b61034c73ffffffffffffffffffffffffffffffffffffffff8416338484611ed8565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611b9b576040519150601f19603f3d011682016040523d82523d5f602084013e611ba0565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f838503611bea575083611c4f565b828211611c23576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611c31575082611c4f565b428310611c3f575083611c4f565b611c4c8383428888611fc6565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611cb5576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611cca856020015186604001518686611bdb565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b5f6040518060c00160405280608d8152602001612ddd608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161119e98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115611ddc57611ddc6122f2565b6040519080825280601f01601f191660200182016040528015611e06576020820181803683370190505b5090505f5b8351811015611e49575f611e37858381518110611e2a57611e2a61231f565b6020026020010151611fe0565b60208381028501015250600101611e0b565b50805160209091012092915050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611e8b575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611fbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5050505050565b5f611fd48686868686612056565b90505b95945050505050565b5f604051806080016040528060528152602001612d5d6052913980516020918201208351848301516040808701516060880151915161119e969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f848410612065575080611fd7565b5f6120708786612cc6565b90505f61207d8888612cc6565b90505f858512156120ae5761209e8383612097888a612cd9565b9190611e58565b6120a790612cff565b90506120c0565b6120bd83836120978989612cd9565b90505b6120ca8187612d35565b9998505050505050505050565b5f604082840312156120e7575f80fd5b50919050565b5f8083601f8401126120fd575f80fd5b50813567ffffffffffffffff811115612114575f80fd5b60208301915083602082850101111561212b575f80fd5b9250929050565b5f805f60408486031215612144575f80fd5b833567ffffffffffffffff8082111561215b575f80fd5b612167878388016120d7565b9450602086013591508082111561217c575f80fd5b50612189868287016120ed565b9497909650939450505050565b5f8083601f8401126121a6575f80fd5b50813567ffffffffffffffff8111156121bd575f80fd5b6020830191508360208260051b850101111561212b575f80fd5b5f80602083850312156121e8575f80fd5b823567ffffffffffffffff8111156121fe575f80fd5b61220a85828601612196565b90969095509350505050565b5f805f8060408587031215612229575f80fd5b843567ffffffffffffffff80821115612240575f80fd5b61224c88838901612196565b90965094506020870135915080821115612264575f80fd5b50612271878288016120ed565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b5f602082840312156122ae575f80fd5b81356122b98161227d565b9392505050565b5f602082840312156122d0575f80fd5b813567ffffffffffffffff8111156122e6575f80fd5b611c4f848285016120d7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b8381101561236657818101518382015260200161234e565b50505f910152565b5f815180845261238581602086016020860161234c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b83811015612415578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016123ca565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526124936101a085018261236e565b905060208301516124d16020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526124e982826123b7565b915050606083015184820360a0860152612503828261236e565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b8381101561258d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088870301855261257b868351612420565b95509382019390820190600101612541565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261260f575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261264c575f80fd5b83018035915067ffffffffffffffff821115612666575f80fd5b60200191503681900382131561212b575f80fd5b6040516060810167ffffffffffffffff8111828210171561269d5761269d6122f2565b60405290565b6040516080810167ffffffffffffffff8111828210171561269d5761269d6122f2565b60405160a0810167ffffffffffffffff8111828210171561269d5761269d6122f2565b60405160c0810167ffffffffffffffff8111828210171561269d5761269d6122f2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612753576127536122f2565b604052919050565b5f82601f83011261276a575f80fd5b813567ffffffffffffffff811115612784576127846122f2565b6127b560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161270c565b8181528460208386010111156127c9575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082840312156127f5575f80fd5b6127fd61267a565b9050813561280a8161227d565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612841576128416122f2565b5060051b60200190565b5f82601f83011261285a575f80fd5b8135602061286f61286a83612828565b61270c565b82815260079290921b8401810191818101908684111561288d575f80fd5b8286015b848110156128f057608081890312156128a8575f80fd5b6128b06126a3565b81356128bb8161227d565b81528185013585820152604080830135908201526060808301356128de8161227d565b90820152835291830191608001612891565b509695505050505050565b5f6020828403121561290b575f80fd5b813567ffffffffffffffff80821115612922575f80fd5b9083019060e08286031215612935575f80fd5b61293d6126c6565b82358281111561294b575f80fd5b830160c0818803121561295c575f80fd5b6129646126e9565b813561296f8161227d565b8152602082013561297f8161227d565b80602083015250604082013560408201526060820135606082015260808201356129a88161227d565b608082015260a0820135848111156129be575f80fd5b6129ca8982850161275b565b60a083015250808352505060208301356020820152604083013560408201526129f686606085016127e5565b606082015260c083013582811115612a0c575f80fd5b612a188782860161284b565b60808301525095945050505050565b5f8451612a3881846020890161234c565b845190830190612a4c81836020890161234c565b8451910190612a5f81836020880161234c565b0195945050505050565b602081525f6122b96020830184612420565b5f6020808385031215612a8c575f80fd5b825167ffffffffffffffff811115612aa2575f80fd5b8301601f81018513612ab2575f80fd5b8051612ac061286a82612828565b81815260609182028301840191848201919088841115612ade575f80fd5b938501935b83851015612b385780858a031215612af9575f80fd5b612b0161267a565b8551612b0c8161227d565b81528587015187820152604080870151612b258161227d565b9082015283529384019391850191612ae3565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611ed257611ed2612b44565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611c4f6040830184612420565b7f44757463684f72646572207769746e657373290000000000000000000000000081525f8351612be981601385016020880161234c565b835190830190612c0081601384016020880161234c565b01601301949350505050565b5f610140612c3b838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612c7c6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612cb18184018661236e565b90508281036101208401526120ca818561236e565b81810381811115611ed257611ed2612b44565b8181035f831280158383131683831282161715612cf857612cf8612b44565b5092915050565b5f7f80000000000000000000000000000000000000000000000000000000000000008203612d2f57612d2f612b44565b505f0390565b8082018281125f831280158216821582161715612d5457612d54612b44565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220c6046beff5f7d506b16e2018101ed3b878948834bd1d4031a2fce775c1deed4664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a!\xAAV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a\"XV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a\"\x9AV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a#(V[a\x06\x83V[a\0\xB9a\x01l6`\x04a#LV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a#(V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a#\xB0V[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\x95V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a&yV[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BDV[a\x04\xB5\x81a\x0B\x95V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa#\xB0V[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BDV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\xB3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\x95V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia#\xB0V[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BDV[a\x08\x86\x81a\x0B\x95V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a&\xB7V[\x81\x01\x90a\n|\x91\x90a)\xA9V[\x90Pa\n\x87\x81a\x0C\xE8V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xD3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0E\xA5\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a&\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\x8CV[\x90R\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea#\xB0V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x11\xF6V[a\x0B\x82\x813a\x16\xE6V[a\x0B\x8C\x813a\x17\xE7V[P`\x01\x01a\x0BIV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xD7W`\0\x83\x82\x81Q\x81\x10a\x0B\xB6Wa\x0B\xB6a#\xB0V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C7W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xEDWa\x0B\xEDa#\xB0V[` \x02` \x01\x01Q\x90Pa\x0C.\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1BW\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xCDV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x80Wa\x0C\x80a#\xB0V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xC5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x9AV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1B\x9EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r+W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\x80\x01QQ\x81\x10\x15a\x04\xC1W\x81`\x80\x01Q\x81\x81Q\x81\x10a\rfWa\rfa#\xB0V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\r\x88Wa\r\x88a#\xB0V[` \x02` \x01\x01Q` \x01Q\x14a\r\xCBW`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\rCV[a\x0E\r`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EOW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0Ee\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xC3Wa\x0E\xC3a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F,W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xE1W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\x83Wa\x0F^\x86\x82\x81Q\x81\x10a\x0FOWa\x0FOa#\xB0V[` \x02` \x01\x01Q\x86\x86a\x1C\xB5V[\x83\x82\x81Q\x81\x10a\x0FpWa\x0Fpa#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F2V[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R`\0\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x112\x93\x92\x91\x90a*\xDDV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11U\x83`\0\x01Qa\x1D\x85V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q`\0\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x11\x87\x89`\x80\x01Qa\x1E\x1FV[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\x16WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12m\x90\x85\x90`\x04\x01a+ V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\x8AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\xD0\x91\x90\x81\x01\x90a+3V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x12\xE8\x82\x84a,2V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\0Wa\x13\0a#\x81V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13iW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x1EW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x13\xBAW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\x8DWa\x13\x8Da#\xB0V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xA7Wa\x13\xA7a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13oV[P`\0\x80`\0[\x84\x81\x10\x15a\x16\xD5W`\0\x87\x82\x81Q\x81\x10a\x13\xDDWa\x13\xDDa#\xB0V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x14\x9BW\x88\x81\x81Q\x81\x10a\x14\x04Wa\x14\x04a#\xB0V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\x93W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x13\xEAV[P`\0\x80[\x88\x81\x10\x15a\x15\\W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x14\xC0Wa\x14\xC0a#\xB0V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15SW\x85\x15a\x15=W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15L\x90\x84a,2V[\x92P`\x01\x96P[P`\x01\x01a\x14\xA0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\xD5W\x84\x15a\x15\xBCW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\xCE\x90\x82a,2V[\x90P`\x01\x93P[\x80`\0\x03a\x16*W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x168\x81`\x05a'\x10a\x1E\xBDV[\x82` \x01Q\x11\x15a\x16\xABW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16\xC0Wa\x16\xC0a#\xB0V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13\xC1V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x177W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xB3\x90\x84\x90\x86\x90`\x04\x01a,EV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17\xCBW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xA7\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xB1\x85\x85a\x1E\xF9V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xFC\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.%` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919`@Q` \x01a\x1Ai\x93\x92\x91\x90a*\xDDV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a.w` \x83\x019`@Q` \x01a\x1A\xBC\x92\x91\x90a,tV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B)\x96\x95\x94\x93\x92`\x04\x01a,\xCFV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1BCW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17\xDFW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B|Wa\x03_\x82\x82a\x1B\x9EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1F@V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1B\xF8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1B\xFDV[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1CHWP\x83a\x1C\xADV[\x82\x82\x11a\x1C\x81W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\x8FWP\x82a\x1C\xADV[B\x83\x10a\x1C\x9DWP\x83a\x1C\xADV[a\x1C\xAA\x83\x83B\x88\x88a 2V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x14W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D*\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a.\xA5`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\xD9\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E?Wa\x1E?a#\x81V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1EiW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1E\xAEW`\0a\x1E\x9C\x85\x83\x81Q\x81\x10a\x1E\x8FWa\x1E\x8Fa#\xB0V[` \x02` \x01\x01Qa MV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1EoV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\xF2W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a +W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0a A\x86\x86\x86\x86\x86a \xC4V[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a.%`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\xD9\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x84\x84\x10a \xD4WP\x80a DV[`\0a \xE0\x87\x86a-\x8AV[\x90P`\0a \xEE\x88\x88a-\x8AV[\x90P`\0\x85\x85\x12\x15a! Wa!\x10\x83\x83a!\t\x88\x8Aa-\x9DV[\x91\x90a\x1E\xBDV[a!\x19\x90a-\xC4V[\x90Pa!2V[a!/\x83\x83a!\t\x89\x89a-\x9DV[\x90P[a!<\x81\x87a-\xFCV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a![W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a!sW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x8BW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a!\xBFW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a!\xD7W`\0\x80\xFD[a!\xE3\x87\x83\x88\x01a!IV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!\xF9W`\0\x80\xFD[Pa\"\x06\x86\x82\x87\x01a!aV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\"%W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"=W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!\xA3W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\"kW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x82W`\0\x80\xFD[a\"\x8E\x85\x82\x86\x01a\"\x13V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\"\xB0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"\xC8W`\0\x80\xFD[a\"\xD4\x88\x83\x89\x01a\"\x13V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"\xEDW`\0\x80\xFD[Pa\"\xFA\x87\x82\x88\x01a!aV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a#:W`\0\x80\xFD[\x815a#E\x81a#\x06V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a#^W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#uW`\0\x80\xFD[a\x1C\xAD\x84\x82\x85\x01a!IV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a#\xFAW\x81\x81\x01Q\x83\x82\x01R` \x01a#\xE2V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra$\x1B\x81` \x86\x01` \x86\x01a#\xDFV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a$\xADW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a$bV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%,a\x01\xA0\x85\x01\x82a$\x03V[\x90P` \x83\x01Qa%j` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra%\x82\x82\x82a$MV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x9C\x82\x82a$\x03V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a&(W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra&\x16\x86\x83Qa$\xB8V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%\xDCV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\xADW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&\xECW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a'\x07W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!\xA3W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'?Wa'?a#\x81V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xF5Wa'\xF5a#\x81V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a(\x0EW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a((Wa((a#\x81V[a(Y` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\xAEV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a(nW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a(\x9DW`\0\x80\xFD[a(\xA5a'\x1CV[\x90P\x815a(\xB2\x81a#\x06V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xEAWa(\xEAa#\x81V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a)\x05W`\0\x80\xFD[\x815` a)\x1Aa)\x15\x83a(\xD0V[a'\xAEV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a)9W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a)\x9EW`\x80\x81\x89\x03\x12\x15a)VW`\0\x80\x81\xFD[a)^a'EV[\x815a)i\x81a#\x06V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a)\x8C\x81a#\x06V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a)=V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a)\xBBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\xD3W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)\xE7W`\0\x80\xFD[a)\xEFa'hV[\x825\x82\x81\x11\x15a)\xFEW`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a*\x10W`\0\x80\xFD[a*\x18a'\x8BV[\x815a*#\x81a#\x06V[\x81R` \x82\x015a*3\x81a#\x06V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a*\\\x81a#\x06V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a*sW`\0\x80\xFD[a*\x7F\x89\x82\x85\x01a'\xFDV[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra*\xAB\x86``\x85\x01a(\x8BV[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\xC2W`\0\x80\xFD[a*\xCE\x87\x82\x86\x01a(\xF4V[`\x80\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa*\xEF\x81\x84` \x89\x01a#\xDFV[\x84Q\x90\x83\x01\x90a+\x03\x81\x83` \x89\x01a#\xDFV[\x84Q\x91\x01\x90a+\x16\x81\x83` \x88\x01a#\xDFV[\x01\x95\x94PPPPPV[` \x81R`\0a#E` \x83\x01\x84a$\xB8V[`\0` \x80\x83\x85\x03\x12\x15a+FW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+]W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a+nW`\0\x80\xFD[\x80Qa+|a)\x15\x82a(\xD0V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a+\x9BW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+\xF7W\x80\x85\x8A\x03\x12\x15a+\xB8W`\0\x80\x81\xFD[a+\xC0a'\x1CV[\x85Qa+\xCB\x81a#\x06V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+\xE4\x81a#\x06V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a+\xA0V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F:Wa\x1F:a,\x03V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1C\xAD`@\x83\x01\x84a$\xB8V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa,\xAC\x81`\x13\x85\x01` \x88\x01a#\xDFV[\x83Q\x90\x83\x01\x90a,\xC3\x81`\x13\x84\x01` \x88\x01a#\xDFV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a,\xFF\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra-@`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra-u\x81\x84\x01\x86a$\x03V[\x90P\x82\x81\x03a\x01 \x84\x01Ra!<\x81\x85a$\x03V[\x81\x81\x03\x81\x81\x11\x15a\x1F:Wa\x1F:a,\x03V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a-\xBDWa-\xBDa,\x03V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-\xF5Wa-\xF5a,\x03V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a.\x1CWa.\x1Ca,\x03V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x0Ct\xC6SI\xB0\xAF\x83f\x8D\x86\x03R\xD3\x9F\x18)\xD5r\x1D\x90\x19\xF5\x1E(&\xCA\xB1\xD7U.\xCBdsolcC\0\x08\x18\x003", + b"`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a!2V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a!\xD7V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a\"\x16V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a\"\x9EV[a\x06eV[a\0\xB4a\x01e6`\x04a\"\xC0V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a\"\x9EV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a#\x1FV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0BlV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a%\xDDV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\x1DV[a\x04\x9F\x81a\x0BlV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa#\x1FV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\x1DV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a%\x1AV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0BlV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga#\x1FV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\x1DV[a\x08d\x81a\x0BlV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a&\x19V[\x81\x01\x90a\nW\x91\x90a(\xFBV[\x90Pa\nb\x81a\x0C\xB7V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\r\xA1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x0Eo\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a&\x19V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FTV[\x90R\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0B=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x12\x90\x91\x90\x81\x01\x90a*{V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x12\xA7\x82\x84a+qV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xBFWa\x12\xBFa\"\xF2V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x12\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x13wW\x85`@\x01Q\x81\x81Q\x81\x10a\x13JWa\x13Ja#\x1FV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13dWa\x13da#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13,V[P_\x80_[\x84\x81\x10\x15a\x16\x87W_\x87\x82\x81Q\x81\x10a\x13\x97Wa\x13\x97a#\x1FV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14RW\x88\x81\x81Q\x81\x10a\x13\xBDWa\x13\xBDa#\x1FV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x13\xA3V[P_\x80[\x88\x81\x10\x15a\x15\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x14uWa\x14ua#\x1FV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x06W\x85\x15a\x14\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x14\xFF\x90\x84a+qV[\x92P`\x01\x96P[P`\x01\x01a\x14VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x15\x88W\x84\x15a\x15oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x15\x81\x90\x82a+qV[\x90P`\x01\x93P[\x80_\x03a\x15\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x15\xEA\x81`\x05a'\x10a\x1EXV[\x82` \x01Q\x11\x15a\x16]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x16rWa\x16ra#\x1FV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x13|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x16\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17e\x90\x84\x90\x86\x90`\x04\x01a+\x84V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x17{W_\x80\xFD[PZ\xFA\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18T\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18^\x85\x85a\x1E\x92V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x19\xA8\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a-]` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919`@Q` \x01a\x1A\x15\x93\x92\x91\x90a*'V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a-\xAF` \x83\x019`@Q` \x01a\x1Ah\x92\x91\x90a+\xB2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1A\xD5\x96\x95\x94\x93\x92`\x04\x01a,\x0CV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1A\xECW_\x80\xFD[PZ\xF1\x15\x80\x15a\x17\x8DW=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B#Wa\x03L\x82\x82a\x1BEV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1E\xD8V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1B\x9BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xA0V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1B\xEAWP\x83a\x1COV[\x82\x82\x11a\x1C#W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C1WP\x82a\x1COV[B\x83\x10a\x1C?WP\x83a\x1COV[a\x1CL\x83\x83B\x88\x88a\x1F\xC6V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1C\xB5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1C\xCA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1B\xDBV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a-\xDD`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x11\x9E\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1D\xDCWa\x1D\xDCa\"\xF2V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x06W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1EIW_a\x1E7\x85\x83\x81Q\x81\x10a\x1E*Wa\x1E*a#\x1FV[` \x02` \x01\x01Qa\x1F\xE0V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x0BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1E\x8BW_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F\xBFW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_a\x1F\xD4\x86\x86\x86\x86\x86a VV[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a-]`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x11\x9E\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x84\x84\x10a eWP\x80a\x1F\xD7V[_a p\x87\x86a,\xC6V[\x90P_a }\x88\x88a,\xC6V[\x90P_\x85\x85\x12\x15a \xAEWa \x9E\x83\x83a \x97\x88\x8Aa,\xD9V[\x91\x90a\x1EXV[a \xA7\x90a,\xFFV[\x90Pa \xC0V[a \xBD\x83\x83a \x97\x89\x89a,\xD9V[\x90P[a \xCA\x81\x87a-5V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a \xE7W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a \xFDW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\x14W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a!+W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a!DW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a![W_\x80\xFD[a!g\x87\x83\x88\x01a \xD7V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a!|W_\x80\xFD[Pa!\x89\x86\x82\x87\x01a \xEDV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a!\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a!+W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a!\xE8W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xFEW_\x80\xFD[a\"\n\x85\x82\x86\x01a!\x96V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\")W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"@W_\x80\xFD[a\"L\x88\x83\x89\x01a!\x96V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\"dW_\x80\xFD[Pa\"q\x87\x82\x88\x01a \xEDV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[_` \x82\x84\x03\x12\x15a\"\xAEW_\x80\xFD[\x815a\"\xB9\x81a\"}V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\"\xD0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xE6W_\x80\xFD[a\x1CO\x84\x82\x85\x01a \xD7V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a#fW\x81\x81\x01Q\x83\x82\x01R` \x01a#NV[PP_\x91\x01RV[_\x81Q\x80\x84Ra#\x85\x81` \x86\x01` \x86\x01a#LV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a$\x15W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a#\xCAV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra$\x93a\x01\xA0\x85\x01\x82a#nV[\x90P` \x83\x01Qa$\xD1` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra$\xE9\x82\x82a#\xB7V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\x03\x82\x82a#nV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a%\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra%{\x86\x83Qa$ V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a%AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a&\x0FW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a&LW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a&fW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a!+W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a&\x9DWa&\x9Da\"\xF2V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'SWa'Sa\"\xF2V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a'jW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a'\x84Wa'\x84a\"\xF2V[a'\xB5` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a'\x0CV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a'\xC9W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a'\xF5W_\x80\xFD[a'\xFDa&zV[\x90P\x815a(\n\x81a\"}V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(AWa(Aa\"\xF2V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a(ZW_\x80\xFD[\x815` a(oa(j\x83a((V[a'\x0CV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a(\x8DW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a(\xF0W`\x80\x81\x89\x03\x12\x15a(\xA8W_\x80\xFD[a(\xB0a&\xA3V[\x815a(\xBB\x81a\"}V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a(\xDE\x81a\"}V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a(\x91V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a)\x0BW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a)\"W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a)5W_\x80\xFD[a)=a&\xC6V[\x825\x82\x81\x11\x15a)KW_\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a)\\W_\x80\xFD[a)da&\xE9V[\x815a)o\x81a\"}V[\x81R` \x82\x015a)\x7F\x81a\"}V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a)\xA8\x81a\"}V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a)\xBEW_\x80\xFD[a)\xCA\x89\x82\x85\x01a'[V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra)\xF6\x86``\x85\x01a'\xE5V[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a*\x0CW_\x80\xFD[a*\x18\x87\x82\x86\x01a(KV[`\x80\x83\x01RP\x95\x94PPPPPV[_\x84Qa*8\x81\x84` \x89\x01a#LV[\x84Q\x90\x83\x01\x90a*L\x81\x83` \x89\x01a#LV[\x84Q\x91\x01\x90a*_\x81\x83` \x88\x01a#LV[\x01\x95\x94PPPPPV[` \x81R_a\"\xB9` \x83\x01\x84a$ V[_` \x80\x83\x85\x03\x12\x15a*\x8CW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xA2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a*\xB2W_\x80\xFD[\x80Qa*\xC0a(j\x82a((V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a*\xDEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a+8W\x80\x85\x8A\x03\x12\x15a*\xF9W_\x80\xFD[a+\x01a&zV[\x85Qa+\x0C\x81a\"}V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa+%\x81a\"}V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a*\xE3V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1CO`@\x83\x01\x84a$ V[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x83Qa+\xE9\x81`\x13\x85\x01` \x88\x01a#LV[\x83Q\x90\x83\x01\x90a,\0\x81`\x13\x84\x01` \x88\x01a#LV[\x01`\x13\x01\x94\x93PPPPV[_a\x01@a,;\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra,|`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra,\xB1\x81\x84\x01\x86a#nV[\x90P\x82\x81\x03a\x01 \x84\x01Ra \xCA\x81\x85a#nV[\x81\x81\x03\x81\x81\x11\x15a\x1E\xD2Wa\x1E\xD2a+DV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a,\xF8Wa,\xF8a+DV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a-/Wa-/a+DV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a-TWa-Ta+DV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xC6\x04k\xEF\xF5\xF7\xD5\x06\xB1n \x18\x10\x1E\xD3\xB8x\x94\x884\xBD\x1D@1\xA2\xFC\xE7u\xC1\xDE\xEDFdsolcC\0\x08\x18\x003", ); /**```solidity struct SignedOrder { bytes order; bytes sig; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignedOrder { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -625,10 +638,15 @@ struct SignedOrder { bytes order; bytes sig; } ```solidity error DeadlineBeforeEndTime(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DeadlineBeforeEndTime {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -684,12 +702,18 @@ error DeadlineBeforeEndTime(); ```solidity error DuplicateFeeOutput(address duplicateToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DuplicateFeeOutput { + #[allow(missing_docs)] pub duplicateToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -749,10 +773,15 @@ error DuplicateFeeOutput(address duplicateToken); ```solidity error EndTimeBeforeStartTime(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct EndTimeBeforeStartTime {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -808,14 +837,22 @@ error EndTimeBeforeStartTime(); ```solidity error FeeTooLarge(address token, uint256 amount, address recipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct FeeTooLarge { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -827,7 +864,7 @@ error FeeTooLarge(address token, uint256 amount, address recipient); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -893,10 +930,15 @@ error FeeTooLarge(address token, uint256 amount, address recipient); ```solidity error IncorrectAmounts(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IncorrectAmounts {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -952,10 +994,15 @@ error IncorrectAmounts(); ```solidity error InputAndOutputDecay(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputDecay {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1011,10 +1058,15 @@ error InputAndOutputDecay(); ```solidity error InputAndOutputFees(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputFees {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1070,12 +1122,18 @@ error InputAndOutputFees(); ```solidity error InvalidFeeToken(address feeToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidFeeToken { + #[allow(missing_docs)] pub feeToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1135,10 +1193,15 @@ error InvalidFeeToken(address feeToken); ```solidity error InvalidReactor(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidReactor {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1194,10 +1257,15 @@ error InvalidReactor(); ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1253,7 +1321,12 @@ error NativeTransferFailed(); ```solidity event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Fill { #[allow(missing_docs)] @@ -1263,9 +1336,14 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub nonce: alloy::sol_types::private::U256, + pub nonce: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1330,6 +1408,21 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1508,7 +1626,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ProtocolFeeControllerSet { #[allow(missing_docs)] @@ -1516,7 +1639,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle #[allow(missing_docs)] pub newFeeController: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1577,6 +1705,21 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -1628,10 +1771,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle ```solidity constructor(address _permit2, address _protocolFeeOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _permit2: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _protocolFeeOwner: alloy::sol_types::private::Address, } const _: () = { @@ -1708,16 +1853,22 @@ constructor(address _permit2, address _protocolFeeOwner); ```solidity function execute(SignedOrder memory order) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1823,18 +1974,24 @@ function execute(SignedOrder memory order) external payable; ```solidity function executeBatch(SignedOrder[] memory orders) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1948,19 +2105,26 @@ function executeBatch(SignedOrder[] memory orders) external payable; ```solidity function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2089,17 +2253,24 @@ function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory call ```solidity function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2221,16 +2392,22 @@ function executeWithCallback(SignedOrder memory order, bytes memory callbackData ```solidity function feeController() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerCall {} ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2334,16 +2511,22 @@ function feeController() external view returns (address); ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2447,16 +2630,22 @@ function owner() external view returns (address); ```solidity function permit2() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Call {} ///Container type for the return parameters of the [`permit2()`](permit2Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Return { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2560,16 +2749,22 @@ function permit2() external view returns (address); ```solidity function setProtocolFeeController(address _newFeeController) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerCall { + #[allow(missing_docs)] pub _newFeeController: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2681,16 +2876,22 @@ function setProtocolFeeController(address _newFeeController) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2800,14 +3001,23 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`DutchOrderReactor`](self) function calls. pub enum DutchOrderReactorCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] executeBatchWithCallback(executeBatchWithCallbackCall), + #[allow(missing_docs)] executeWithCallback(executeWithCallbackCall), + #[allow(missing_docs)] feeController(feeControllerCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] permit2(permit2Call), + #[allow(missing_docs)] setProtocolFeeController(setProtocolFeeControllerCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -2870,7 +3080,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3006,7 +3216,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3105,15 +3315,25 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`DutchOrderReactor`](self) custom errors. pub enum DutchOrderReactorErrors { + #[allow(missing_docs)] DeadlineBeforeEndTime(DeadlineBeforeEndTime), + #[allow(missing_docs)] DuplicateFeeOutput(DuplicateFeeOutput), + #[allow(missing_docs)] EndTimeBeforeStartTime(EndTimeBeforeStartTime), + #[allow(missing_docs)] FeeTooLarge(FeeTooLarge), + #[allow(missing_docs)] IncorrectAmounts(IncorrectAmounts), + #[allow(missing_docs)] InputAndOutputDecay(InputAndOutputDecay), + #[allow(missing_docs)] InputAndOutputFees(InputAndOutputFees), + #[allow(missing_docs)] InvalidFeeToken(InvalidFeeToken), + #[allow(missing_docs)] InvalidReactor(InvalidReactor), + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), } #[automatically_derived] @@ -3186,7 +3406,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3335,7 +3555,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3458,8 +3678,11 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`DutchOrderReactor`](self) events. pub enum DutchOrderReactorEvents { + #[allow(missing_docs)] Fill(Fill), + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), + #[allow(missing_docs)] ProtocolFeeControllerSet(ProtocolFeeControllerSet), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/ecdsa.rs b/crates/bindings-uniswapx/src/ecdsa.rs index 06c0344..2ee8aac 100644 --- a/crates/bindings-uniswapx/src/ecdsa.rs +++ b/crates/bindings-uniswapx/src/ecdsa.rs @@ -9,29 +9,35 @@ interface ECDSA {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod ECDSA { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220152519fdd49ff91c1a2079cfb437774dc2b7abf77c7699ba3f2f96a374a23fce64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d1b0494fde68659cf477a8a6c8200cc72b195c34daeb7c6703486ab8c3c250164736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x15%\x19\xFD\xD4\x9F\xF9\x1C\x1A y\xCF\xB47wM\xC2\xB7\xAB\xF7|v\x99\xBA?/\x96\xA3t\xA2?\xCEdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x9D\x1B\x04\x94\xFD\xE6\x86Y\xCFGz\x8Al\x82\0\xCCr\xB1\x95\xC3M\xAE\xB7\xC6p4\x86\xAB\x8C<%\x01dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220152519fdd49ff91c1a2079cfb437774dc2b7abf77c7699ba3f2f96a374a23fce64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d1b0494fde68659cf477a8a6c8200cc72b195c34daeb7c6703486ab8c3c250164736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x15%\x19\xFD\xD4\x9F\xF9\x1C\x1A y\xCF\xB47wM\xC2\xB7\xAB\xF7|v\x99\xBA?/\x96\xA3t\xA2?\xCEdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x9D\x1B\x04\x94\xFD\xE6\x86Y\xCFGz\x8Al\x82\0\xCCr\xB1\x95\xC3M\xAE\xB7\xC6p4\x86\xAB\x8C<%\x01dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`ECDSA`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/eip712.rs b/crates/bindings-uniswapx/src/eip712.rs index ec23a6a..75988db 100644 --- a/crates/bindings-uniswapx/src/eip712.rs +++ b/crates/bindings-uniswapx/src/eip712.rs @@ -82,7 +82,13 @@ interface EIP712 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod EIP712 { use super::*; use alloy::sol_types as alloy_sol_types; @@ -110,10 +116,15 @@ pub mod EIP712 { ```solidity error InvalidShortString(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidShortString {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -169,12 +180,18 @@ error InvalidShortString(); ```solidity error StringTooLong(string str); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct StringTooLong { + #[allow(missing_docs)] pub str: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -234,10 +251,20 @@ error StringTooLong(string str); ```solidity event EIP712DomainChanged(); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct EIP712DomainChanged {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -292,6 +319,21 @@ event EIP712DomainChanged(); Self {} } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -334,22 +376,36 @@ event EIP712DomainChanged(); ```solidity function eip712Domain() external view returns (bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct eip712DomainCall {} ///Container type for the return parameters of the [`eip712Domain()`](eip712DomainCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct eip712DomainReturn { + #[allow(missing_docs)] pub fields: alloy::sol_types::private::FixedBytes<1>, + #[allow(missing_docs)] pub name: alloy::sol_types::private::String, + #[allow(missing_docs)] pub version: alloy::sol_types::private::String, - pub chainId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub chainId: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub verifyingContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub salt: alloy::sol_types::private::FixedBytes<32>, - pub extensions: alloy::sol_types::private::Vec, + #[allow(missing_docs)] + pub extensions: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -399,10 +455,12 @@ function eip712Domain() external view returns (bytes1 fields, string memory name alloy::sol_types::private::FixedBytes<1>, alloy::sol_types::private::String, alloy::sol_types::private::String, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::FixedBytes<32>, - alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -491,6 +549,7 @@ function eip712Domain() external view returns (bytes1 fields, string memory name }; ///Container for all the [`EIP712`](self) function calls. pub enum EIP712Calls { + #[allow(missing_docs)] eip712Domain(eip712DomainCall), } #[automatically_derived] @@ -525,7 +584,7 @@ function eip712Domain() external view returns (bytes1 fields, string memory name Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -557,7 +616,7 @@ function eip712Domain() external view returns (bytes1 fields, string memory name ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -583,7 +642,9 @@ function eip712Domain() external view returns (bytes1 fields, string memory name } ///Container for all the [`EIP712`](self) custom errors. pub enum EIP712Errors { + #[allow(missing_docs)] InvalidShortString(InvalidShortString), + #[allow(missing_docs)] StringTooLong(StringTooLong), } #[automatically_derived] @@ -624,7 +685,7 @@ function eip712Domain() external view returns (bytes1 fields, string memory name Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -669,7 +730,7 @@ function eip712Domain() external view returns (bytes1 fields, string memory name ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -704,6 +765,7 @@ function eip712Domain() external view returns (bytes1 fields, string memory name } ///Container for all the [`EIP712`](self) events. pub enum EIP712Events { + #[allow(missing_docs)] EIP712DomainChanged(EIP712DomainChanged), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/erc20.rs b/crates/bindings-uniswapx/src/erc20.rs index 984f03e..712eb19 100644 --- a/crates/bindings-uniswapx/src/erc20.rs +++ b/crates/bindings-uniswapx/src/erc20.rs @@ -323,7 +323,13 @@ interface ERC20 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod ERC20 { use super::*; use alloy::sol_types as alloy_sol_types; @@ -351,7 +357,12 @@ pub mod ERC20 { ```solidity event Approval(address indexed owner, address indexed spender, uint256 amount); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -359,9 +370,14 @@ event Approval(address indexed owner, address indexed spender, uint256 amount); #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub amount: alloy::sol_types::private::U256, + pub amount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -424,6 +440,21 @@ event Approval(address indexed owner, address indexed spender, uint256 amount); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( , } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -718,19 +780,27 @@ function DOMAIN_SEPARATOR() external view returns (bytes32); ```solidity function allowance(address, address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _1: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`allowance(address,address)`](allowanceCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -774,7 +844,9 @@ function allowance(address, address) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -850,19 +922,27 @@ function allowance(address, address) external view returns (uint256); ```solidity function approve(address spender, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveCall { + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -874,7 +954,7 @@ function approve(address spender, uint256 amount) external returns (bool); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -985,18 +1065,25 @@ function approve(address spender, uint256 amount) external returns (bool); ```solidity function balanceOf(address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1034,7 +1121,9 @@ function balanceOf(address) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1104,16 +1193,22 @@ function balanceOf(address) external view returns (uint256); ```solidity function decimals() external view returns (uint8); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsCall {} ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsReturn { + #[allow(missing_docs)] pub _0: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1217,16 +1312,22 @@ function decimals() external view returns (uint8); ```solidity function name() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameCall {} ///Container type for the return parameters of the [`name()`](nameCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1330,18 +1431,25 @@ function name() external view returns (string memory); ```solidity function nonces(address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct noncesCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`nonces(address)`](noncesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct noncesReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1379,7 +1487,9 @@ function nonces(address) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1449,22 +1559,34 @@ function nonces(address) external view returns (uint256); ```solidity function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitCall { + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub value: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub v: u8, + #[allow(missing_docs)] pub r: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] pub s: alloy::sol_types::private::FixedBytes<32>, } ///Container type for the return parameters of the [`permit(address,address,uint256,uint256,uint8,bytes32,bytes32)`](permitCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1482,8 +1604,8 @@ function permit(address owner, address spender, uint256 value, uint256 deadline, type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, u8, alloy::sol_types::private::FixedBytes<32>, alloy::sol_types::private::FixedBytes<32>, @@ -1630,16 +1752,22 @@ function permit(address owner, address spender, uint256 value, uint256 deadline, ```solidity function symbol() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolCall {} ///Container type for the return parameters of the [`symbol()`](symbolCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1743,16 +1871,22 @@ function symbol() external view returns (string memory); ```solidity function totalSupply() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyCall {} ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1790,7 +1924,9 @@ function totalSupply() external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1856,19 +1992,27 @@ function totalSupply() external view returns (uint256); ```solidity function transfer(address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferCall { + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`transfer(address,uint256)`](transferCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1880,7 +2024,7 @@ function transfer(address to, uint256 amount) external returns (bool); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1991,20 +2135,29 @@ function transfer(address to, uint256 amount) external returns (bool); ```solidity function transferFrom(address from, address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { + #[allow(missing_docs)] pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2018,7 +2171,7 @@ function transferFrom(address from, address to, uint256 amount) external returns type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2132,17 +2285,29 @@ function transferFrom(address from, address to, uint256 amount) external returns }; ///Container for all the [`ERC20`](self) function calls. pub enum ERC20Calls { + #[allow(missing_docs)] DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + #[allow(missing_docs)] allowance(allowanceCall), + #[allow(missing_docs)] approve(approveCall), + #[allow(missing_docs)] balanceOf(balanceOfCall), + #[allow(missing_docs)] decimals(decimalsCall), + #[allow(missing_docs)] name(nameCall), + #[allow(missing_docs)] nonces(noncesCall), + #[allow(missing_docs)] permit(permitCall), + #[allow(missing_docs)] symbol(symbolCall), + #[allow(missing_docs)] totalSupply(totalSupplyCall), + #[allow(missing_docs)] transfer(transferCall), + #[allow(missing_docs)] transferFrom(transferFromCall), } #[automatically_derived] @@ -2209,7 +2374,7 @@ function transferFrom(address from, address to, uint256 amount) external returns Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2384,7 +2549,7 @@ function transferFrom(address from, address to, uint256 amount) external returns ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2498,7 +2663,9 @@ function transferFrom(address from, address to, uint256 amount) external returns } ///Container for all the [`ERC20`](self) events. pub enum ERC20Events { + #[allow(missing_docs)] Approval(Approval), + #[allow(missing_docs)] Transfer(Transfer), } #[automatically_derived] @@ -2825,7 +2992,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn approve( &self, spender: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&approveCall { spender, amount }) } @@ -2858,8 +3025,8 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, owner: alloy::sol_types::private::Address, spender: alloy::sol_types::private::Address, - value: alloy::sol_types::private::U256, - deadline: alloy::sol_types::private::U256, + value: alloy::sol_types::private::primitives::aliases::U256, + deadline: alloy::sol_types::private::primitives::aliases::U256, v: u8, r: alloy::sol_types::private::FixedBytes<32>, s: alloy::sol_types::private::FixedBytes<32>, @@ -2890,7 +3057,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn transfer( &self, to: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&transferCall { to, amount }) } @@ -2899,7 +3066,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, from: alloy::sol_types::private::Address, to: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &transferFromCall { diff --git a/crates/bindings-uniswapx/src/exclusivedutchorderlib.rs b/crates/bindings-uniswapx/src/exclusivedutchorderlib.rs index 1928312..df0e258 100644 --- a/crates/bindings-uniswapx/src/exclusivedutchorderlib.rs +++ b/crates/bindings-uniswapx/src/exclusivedutchorderlib.rs @@ -9,29 +9,35 @@ interface ExclusiveDutchOrderLib {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod ExclusiveDutchOrderLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf55b17c170bd4d589f35c7d243159e199f991c35c786a56cc286b5d5dc5aebb64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220a83658bc38cf6b1601b94c351bce5c8037977894afa656af60a2179c85d8e9f764736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xBFU\xB1|\x17\x0B\xD4\xD5\x89\xF3\\}$1Y\xE1\x99\xF9\x91\xC3\\xjV\xCC(k]]\xC5\xAE\xBBdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xA86X\xBC8\xCFk\x16\x01\xB9L5\x1B\xCE\\\x807\x97x\x94\xAF\xA6V\xAF`\xA2\x17\x9C\x85\xD8\xE9\xF7dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf55b17c170bd4d589f35c7d243159e199f991c35c786a56cc286b5d5dc5aebb64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220a83658bc38cf6b1601b94c351bce5c8037977894afa656af60a2179c85d8e9f764736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xBFU\xB1|\x17\x0B\xD4\xD5\x89\xF3\\}$1Y\xE1\x99\xF9\x91\xC3\\xjV\xCC(k]]\xC5\xAE\xBBdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xA86X\xBC8\xCFk\x16\x01\xB9L5\x1B\xCE\\\x807\x97x\x94\xAF\xA6V\xAF`\xA2\x17\x9C\x85\xD8\xE9\xF7dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`ExclusiveDutchOrderLib`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/exclusivedutchorderreactor.rs b/crates/bindings-uniswapx/src/exclusivedutchorderreactor.rs index 8084f42..a130137 100644 --- a/crates/bindings-uniswapx/src/exclusivedutchorderreactor.rs +++ b/crates/bindings-uniswapx/src/exclusivedutchorderreactor.rs @@ -392,40 +392,53 @@ interface ExclusiveDutchOrderReactor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod ExclusiveDutchOrderReactor { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a06040523480156200001157600080fd5b50604051620032a3380380620032a38339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b60805161318a620001196000396000818160e0015261187c015261318a6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612358565b6101eb565b005b6100b96100c9366004612406565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612448565b6104c5565b34801561014a57600080fd5b506100b96101593660046124e6565b610683565b6100b961016c36600461250a565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046124e6565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561256e565b60200260200101819052506102d981610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612771565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb3565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861253f565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661256e565b90506020028101906104789190612837565b6109f6565b82828151811061048f5761048f61256e565b6020908102919091010152600101610449565b506104ac81610b62565b6104b581610bb3565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961253f565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661256e565b8282815181106105d9576105d961256e565b60209081029190910101526001016105aa565b506105f681610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612771565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb3565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961256e565b602002602001018190525061087d81610b62565b61088681610bb3565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612875565b810190610a7c9190612bfe565b9050610a8781610d06565b6040518060a0016040528082600001518152602001610abd836020015184604001518560a00151610df19092919063ffffffff16565b8152602001610ae3836020015184604001518560c00151610ec39092919063ffffffff16565b8152602001848060200190610af89190612875565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610faa565b9052606082015160208301516080840151929450610b5c928592919061127c565b50919050565b805160005b8181101561035f576000838281518110610b8357610b8361256e565b60200260200101519050610b9681611289565b610ba08133611779565b610baa813361187a565b50600101610b67565b805160005b81811015610cf5576000838281518110610bd457610bd461256e565b602002602001015190506000816040015151905060005b81811015610c5557600083604001518281518110610c0b57610c0b61256e565b60200260200101519050610c4c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611bd79092919063ffffffff16565b50600101610beb565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9e57610c9e61256e565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce391815260200190565b60405180910390a45050600101610bb8565b5047156104c1576104c13347611c1e565b60408101518151606001511015610d49576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a08101516040810151602090910151146108915760005b8160c00151518110156104c1578160c001518181518110610d8457610d8461256e565b6020026020010151604001518260c001518281518110610da657610da661256e565b60200260200101516020015114610de9576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d61565b610e2b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e6d576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e83856020015186604001518686611cb8565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ee157610ee161253f565b604051908082528060200260200182016040528015610f4a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eff5790505b50915060005b81811015610fa157610f7c868281518110610f6d57610f6d61256e565b60200260200101518686611d35565b838281518110610f8e57610f8e61256e565b6020908102919091010152600101610f50565b50509392505050565b6040517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e982015260009060ff01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061304860208301396040518060c00160405280608d81526020016130c8608d913960405160200161119c93929190612cd2565b604051602081830303815290604052805190602001206111bf8360000151611e05565b83602001518460400151856060015186608001518760a00151600001518860a00151602001518960a00151604001516111fb8b60c00151611e9f565b60408051602081019b909b528a01989098526060890196909652608088019490945273ffffffffffffffffffffffffffffffffffffffff92831660a088015260c08701919091521660e0850152610100840152610120830152610140820152610160015b604051602081830303815290604052805190602001209050919050565b61067d8484848442611f3d565b60015473ffffffffffffffffffffffffffffffffffffffff166112a95750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611300908590600401612d15565b600060405180830381865afa15801561131d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113639190810190612d28565b604083015151815191925090600061137b8284612e27565b67ffffffffffffffff8111156113935761139361253f565b6040519080825280602002602001820160405280156113fc57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b15790505b50905060005b8381101561144d57856040015181815181106114205761142061256e565b602002602001015182828151811061143a5761143a61256e565b6020908102919091010152600101611402565b5060008060005b848110156117685760008782815181106114705761147061256e565b6020026020010151905060005b8281101561152e578881815181106114975761149761256e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036115265781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161147d565b506000805b888110156115ef5760008b6040015182815181106115535761155361256e565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036115e65785156115d0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516115df9084612e27565b9250600196505b50600101611533565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361166857841561164f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116619082612e27565b9050600193505b806000036116bd5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6116cb816005612710611fe9565b8260200151111561173e578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106117535761175361256e565b60209081029190910101525050600101611454565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146117ca576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906118469084908690600401612e3a565b60006040518083038186803b15801561185e57600080fd5b505afa158015611872573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61193a846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6119448585612025565b856000015160200151866080015160405180608001604052806052815260200161304860529139604080517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e9820152815160df8183030181526101bf8201909252608d60ff8201818152916130c89061011f01396040518060600160405280602e815260200161309a602e9139604051602001611b3c9493929190612e69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611ba99695949392600401612ef2565b600060405180830381600087803b158015611bc357600080fd5b505af1158015611872573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611bfc5761035f8282611c1e565b61035f73ffffffffffffffffffffffffffffffffffffffff841633848461206c565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611c78576040519150601f19603f3d011682016040523d82523d6000602084013e611c7d565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611cc8575083611d2d565b828211611d01576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611d0f575082611d2d565b428310611d1d575083611d2d565b611d2a8383428888612157565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d94576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611daa856020015186604001518686611cb8565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d81526020016130c8608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161125f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ebf57611ebf61253f565b6040519080825280601f01601f191660200182016040528015611ee9576020820181803683370190505b50905060005b8351811015611f2e576000611f1c858381518110611f0f57611f0f61256e565b6020026020010151612172565b60208381028501015250600101611eef565b50805160209091012092915050565b611f488484836121e9565b611fe25781611f83576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b8151811015611fdf576000828281518110611fa857611fa861256e565b60200260200101519050611fd185612710611fc39190612e27565b602083015190612710612234565b602090910152600101611f8b565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261201e57600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b60006121668686868686612278565b90505b95945050505050565b60006040518060800160405280605281526020016130486052913980516020918201208351848301516040808701516060880151915161125f969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600073ffffffffffffffffffffffffffffffffffffffff8416158061220d57508282115b80611d2d575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261226957600080fd5b50910281810615159190040190565b6000848410612288575080612169565b60006122948786612fad565b905060006122a28888612fad565b90506000858512156122d4576122c483836122bd888a612fc0565b9190611fe9565b6122cd90612fe7565b90506122e6565b6122e383836122bd8989612fc0565b90505b6122f0818761301f565b9998505050505050505050565b600060408284031215610b5c57600080fd5b60008083601f84011261232157600080fd5b50813567ffffffffffffffff81111561233957600080fd5b60208301915083602082850101111561235157600080fd5b9250929050565b60008060006040848603121561236d57600080fd5b833567ffffffffffffffff8082111561238557600080fd5b612391878388016122fd565b945060208601359150808211156123a757600080fd5b506123b48682870161230f565b9497909650939450505050565b60008083601f8401126123d357600080fd5b50813567ffffffffffffffff8111156123eb57600080fd5b6020830191508360208260051b850101111561235157600080fd5b6000806020838503121561241957600080fd5b823567ffffffffffffffff81111561243057600080fd5b61243c858286016123c1565b90969095509350505050565b6000806000806040858703121561245e57600080fd5b843567ffffffffffffffff8082111561247657600080fd5b612482888389016123c1565b9096509450602087013591508082111561249b57600080fd5b506124a88782880161230f565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356124e1816124b4565b919050565b6000602082840312156124f857600080fd5b8135612503816124b4565b9392505050565b60006020828403121561251c57600080fd5b813567ffffffffffffffff81111561253357600080fd5b611d2d848285016122fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156125b85781810151838201526020016125a0565b50506000910152565b600081518084526125d981602086016020860161259d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b8381101561266b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612620565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526126ea6101a08501826125c1565b905060208301516127286020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612740828261260b565b915050606083015184820360a086015261275a82826125c1565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156127e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526127d4868351612676565b9550938201939082019060010161279a565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261286b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128aa57600080fd5b83018035915067ffffffffffffffff8211156128c557600080fd5b60200191503681900382131561235157600080fd5b6040516060810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405290565b6040516080810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405160e0810167ffffffffffffffff811182821017156128fd576128fd61253f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129905761299061253f565b604052919050565b600082601f8301126129a957600080fd5b813567ffffffffffffffff8111156129c3576129c361253f565b6129f460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612949565b818152846020838601011115612a0957600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612a3857600080fd5b60405160c0810167ffffffffffffffff8282108183111715612a5c57612a5c61253f565b8160405282935084359150612a70826124b4565b908252602084013590612a82826124b4565b816020840152604085013560408401526060850135606084015260808501359150612aac826124b4565b81608084015260a0850135915080821115612ac657600080fd5b50612ad385828601612998565b60a0830152505092915050565b600060608284031215612af257600080fd5b612afa6128da565b90508135612b07816124b4565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612b3f57612b3f61253f565b5060051b60200190565b600082601f830112612b5a57600080fd5b81356020612b6f612b6a83612b25565b612949565b82815260079290921b84018101918181019086841115612b8e57600080fd5b8286015b84811015612bf35760808189031215612bab5760008081fd5b612bb3612903565b8135612bbe816124b4565b8152818501358582015260408083013590820152606080830135612be1816124b4565b90820152835291830191608001612b92565b509695505050505050565b600060208284031215612c1057600080fd5b813567ffffffffffffffff80821115612c2857600080fd5b908301906101208286031215612c3d57600080fd5b612c45612926565b823582811115612c5457600080fd5b612c6087828601612a26565b8252506020830135602082015260408301356040820152612c83606084016124d6565b606082015260808301356080820152612c9f8660a08501612ae0565b60a082015261010083013582811115612cb757600080fd5b612cc387828601612b49565b60c08301525095945050505050565b60008451612ce481846020890161259d565b845190830190612cf881836020890161259d565b8451910190612d0b81836020880161259d565b0195945050505050565b6020815260006125036020830184612676565b60006020808385031215612d3b57600080fd5b825167ffffffffffffffff811115612d5257600080fd5b8301601f81018513612d6357600080fd5b8051612d71612b6a82612b25565b81815260609182028301840191848201919088841115612d9057600080fd5b938501935b83851015612dec5780858a031215612dad5760008081fd5b612db56128da565b8551612dc0816124b4565b81528587015187820152604080870151612dd9816124b4565b9082015283529384019391850191612d95565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561206657612066612df8565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611d2d6040830184612676565b7f4578636c757369766544757463684f72646572207769746e6573732900000000815260008551612ea181601c850160208a0161259d565b855190830190612eb881601c840160208a0161259d565b8551910190612ece81601c84016020890161259d565b8451910190612ee481601c84016020880161259d565b01601c019695505050505050565b6000610140612f22838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612f636080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612f98818401866125c1565b90508281036101208401526122f081856125c1565b8181038181111561206657612066612df8565b8181036000831280158383131683831282161715612fe057612fe0612df8565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361301857613018612df8565b5060000390565b808201828112600083128015821682158216171561303f5761303f612df8565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220bc5333daef38e70e8a6ea612125c596542d6e839278b2c906bbabc6c6e70329b64736f6c63430008180033 + ///0x60a060405234801562000010575f80fd5b50604051620031cd380380620031cd8339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b6080516130bc620001115f395f818160da015261182a01526130bc5ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af3660046122db565b6101e0565b005b6100b46100c4366004612380565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46101333660046123bf565b6104af565b348015610143575f80fd5b506100b4610152366004612457565b610665565b6100b4610165366004612479565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db366004612457565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b76124d8565b60200260200101819052506102cb81610b3b565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b908490879087906004016126d3565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b8a565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff811115610374576103746124ab565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c57610467858583818110610450576104506124d8565b90506020028101906104629190612796565b6109d2565b828281518110610479576104796124d8565b6020908102919091010152600101610433565b5061049681610b3b565b61049f81610b8a565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d26124ab565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae878783818110610450576104506124d8565b8282815181106105c0576105c06124d8565b6020908102919091010152600101610591565b506105dd81610b3b565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d908490889088906004016126d3565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b8a565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f81518110610847576108476124d8565b602002602001018190525061085b81610b3b565b61086481610b8a565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a83806127d2565b810190610a579190612b48565b9050610a6281610cd5565b6040518060a00160405280825f01518152602001610a97836020015184604001518560a00151610dbf9092919063ffffffff16565b8152602001610abd836020015184604001518560c00151610e8d9092919063ffffffff16565b8152602001848060200190610ad291906127d2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610b1483610f72565b9052606082015160208301516080840151929450610b359285929190611241565b50919050565b80515f5b8181101561034c575f838281518110610b5a57610b5a6124d8565b60200260200101519050610b6d8161124e565b610b77813361172b565b610b818133611828565b50600101610b3f565b80515f5b81811015610cc4575f838281518110610ba957610ba96124d8565b602002602001015190505f81604001515190505f5b81811015610c26575f83604001518281518110610bdd57610bdd6124d8565b60200260200101519050610c1d81604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611b7e9092919063ffffffff16565b50600101610bbe565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c6e57610c6e6124d8565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610cb291815260200190565b60405180910390a45050600101610b8e565b5047156104ab576104ab3347611bc5565b60408101518151606001511015610d18576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160408101516020909101511461086f575f5b8160c00151518110156104ab578160c001518181518110610d5257610d526124d8565b6020026020010151604001518260c001518281518110610d7457610d746124d8565b60200260200101516020015114610db7576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d2f565b610df660405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b836040015184602001511115610e38576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e4d856020015186604001518686611c5b565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610eab57610eab6124ab565b604051908082528060200260200182016040528015610f1357816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ec95790505b5091505f5b81811015610f6957610f44868281518110610f3557610f356124d8565b60200260200101518686611cd7565b838281518110610f5657610f566124d8565b6020908102919091010152600101610f18565b50509392505050565b6040517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e98201525f9060ff01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612f7a60208301396040518060c00160405280608d8152602001612ffa608d913960405160200161116393929190612c16565b60405160208183030381529060405280519060200120611185835f0151611da4565b83602001518460400151856060015186608001518760a001515f01518860a00151602001518960a00151604001516111c08b60c00151611e3d565b60408051602081019b909b528a01989098526060890196909652608088019490945273ffffffffffffffffffffffffffffffffffffffff92831660a088015260c08701919091521660e0850152610100840152610120830152610140820152610160015b604051602081830303815290604052805190602001209050919050565b61065f8484848442611ed8565b60015473ffffffffffffffffffffffffffffffffffffffff1661126e5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906112c4908590600401612c58565b5f60405180830381865afa1580156112de573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113239190810190612c6a565b6040830151518151919250905f61133a8284612d60565b67ffffffffffffffff811115611352576113526124ab565b6040519080825280602002602001820160405280156113ba57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113705790505b5090505f5b8381101561140a57856040015181815181106113dd576113dd6124d8565b60200260200101518282815181106113f7576113f76124d8565b60209081029190910101526001016113bf565b505f805f5b8481101561171a575f87828151811061142a5761142a6124d8565b602002602001015190505f5b828110156114e557888181518110611450576114506124d8565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036114dd5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b600101611436565b505f805b888110156115a2575f8b604001518281518110611508576115086124d8565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1603611599578515611583576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516115929084612d60565b9250600196505b506001016114e9565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361161b578415611602576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116149082612d60565b9050600193505b805f0361166f5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b61167d816005612710611f82565b826020015111156116f0578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a0181518110611705576117056124d8565b6020908102919091010152505060010161140f565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff16301461177c576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117f89084908690600401612d73565b5f6040518083038186803b15801561180e575f80fd5b505afa158015611820573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6118e7846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6118f18585611fbc565b855f0151602001518660800151604051806080016040528060528152602001612f7a60529139604080517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e9820152815160df8183030181526101bf8201909252608d60ff820181815291612ffa9061011f01396040518060600160405280602e8152602001612fcc602e9139604051602001611ae89493929190612da1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611b559695949392600401612e29565b5f604051808303815f87803b158015611b6c575f80fd5b505af1158015611820573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611ba35761034c8282611bc5565b61034c73ffffffffffffffffffffffffffffffffffffffff8416338484612002565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611c1b576040519150601f19603f3d011682016040523d82523d5f602084013e611c20565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f838503611c6a575083611ccf565b828211611ca3576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611cb1575082611ccf565b428310611cbf575083611ccf565b611ccc83834288886120e9565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611d35576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611d4a856020015186604001518686611c5b565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b5f6040518060c00160405280608d8152602001612ffa608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161122498939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115611e5c57611e5c6124ab565b6040519080825280601f01601f191660200182016040528015611e86576020820181803683370190505b5090505f5b8351811015611ec9575f611eb7858381518110611eaa57611eaa6124d8565b6020026020010151612103565b60208381028501015250600101611e8b565b50805160209091012092915050565b611ee3848483612179565b611f7b5781611f1e576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b8151811015611f78575f828281518110611f4157611f416124d8565b60200260200101519050611f6a85612710611f5c9190612d60565b6020830151906127106121c3565b602090910152600101611f25565b50505b5050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611fb5575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611f7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5f6120f78686868686612205565b90505b95945050505050565b5f604051806080016040528060528152602001612f7a60529139805160209182012083518483015160408087015160608801519151611224969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f73ffffffffffffffffffffffffffffffffffffffff8416158061219c57508282115b80611ccf575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026121f6575f80fd5b50910281810615159190040190565b5f8484106122145750806120fa565b5f61221f8786612ee3565b90505f61222c8888612ee3565b90505f8585121561225d5761224d8383612246888a612ef6565b9190611f82565b61225690612f1c565b905061226f565b61226c83836122468989612ef6565b90505b6122798187612f52565b9998505050505050505050565b5f60408284031215610b35575f80fd5b5f8083601f8401126122a6575f80fd5b50813567ffffffffffffffff8111156122bd575f80fd5b6020830191508360208285010111156122d4575f80fd5b9250929050565b5f805f604084860312156122ed575f80fd5b833567ffffffffffffffff80821115612304575f80fd5b61231087838801612286565b94506020860135915080821115612325575f80fd5b5061233286828701612296565b9497909650939450505050565b5f8083601f84011261234f575f80fd5b50813567ffffffffffffffff811115612366575f80fd5b6020830191508360208260051b85010111156122d4575f80fd5b5f8060208385031215612391575f80fd5b823567ffffffffffffffff8111156123a7575f80fd5b6123b38582860161233f565b90969095509350505050565b5f805f80604085870312156123d2575f80fd5b843567ffffffffffffffff808211156123e9575f80fd5b6123f58883890161233f565b9096509450602087013591508082111561240d575f80fd5b5061241a87828801612296565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b803561245281612426565b919050565b5f60208284031215612467575f80fd5b813561247281612426565b9392505050565b5f60208284031215612489575f80fd5b813567ffffffffffffffff81111561249f575f80fd5b611ccf84828501612286565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b8381101561251f578181015183820152602001612507565b50505f910152565b5f815180845261253e816020860160208601612505565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156125ce578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612583565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c061018085015261264c6101a0850182612527565b9050602083015161268a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526126a28282612570565b915050606083015184820360a08601526126bc8282612527565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b83811015612746577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526127348683516125d9565b955093820193908201906001016126fa565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126127c8575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612805575f80fd5b83018035915067ffffffffffffffff82111561281f575f80fd5b6020019150368190038213156122d4575f80fd5b6040516060810167ffffffffffffffff81118282101715612856576128566124ab565b60405290565b6040516080810167ffffffffffffffff81118282101715612856576128566124ab565b60405160e0810167ffffffffffffffff81118282101715612856576128566124ab565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156128e9576128e96124ab565b604052919050565b5f82601f830112612900575f80fd5b813567ffffffffffffffff81111561291a5761291a6124ab565b61294b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128a2565b81815284602083860101111561295f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c0828403121561298b575f80fd5b60405160c0810167ffffffffffffffff82821081831117156129af576129af6124ab565b81604052829350843591506129c382612426565b9082526020840135906129d582612426565b8160208401526040850135604084015260608501356060840152608085013591506129ff82612426565b81608084015260a0850135915080821115612a18575f80fd5b50612a25858286016128f1565b60a0830152505092915050565b5f60608284031215612a42575f80fd5b612a4a612833565b90508135612a5781612426565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612a8e57612a8e6124ab565b5060051b60200190565b5f82601f830112612aa7575f80fd5b81356020612abc612ab783612a75565b6128a2565b82815260079290921b84018101918181019086841115612ada575f80fd5b8286015b84811015612b3d5760808189031215612af5575f80fd5b612afd61285c565b8135612b0881612426565b8152818501358582015260408083013590820152606080830135612b2b81612426565b90820152835291830191608001612ade565b509695505050505050565b5f60208284031215612b58575f80fd5b813567ffffffffffffffff80821115612b6f575f80fd5b908301906101208286031215612b83575f80fd5b612b8b61287f565b823582811115612b99575f80fd5b612ba58782860161297b565b8252506020830135602082015260408301356040820152612bc860608401612447565b606082015260808301356080820152612be48660a08501612a32565b60a082015261010083013582811115612bfb575f80fd5b612c0787828601612a98565b60c08301525095945050505050565b5f8451612c27818460208901612505565b845190830190612c3b818360208901612505565b8451910190612c4e818360208801612505565b0195945050505050565b602081525f61247260208301846125d9565b5f6020808385031215612c7b575f80fd5b825167ffffffffffffffff811115612c91575f80fd5b8301601f81018513612ca1575f80fd5b8051612caf612ab782612a75565b81815260609182028301840191848201919088841115612ccd575f80fd5b938501935b83851015612d275780858a031215612ce8575f80fd5b612cf0612833565b8551612cfb81612426565b81528587015187820152604080870151612d1481612426565b9082015283529384019391850191612cd2565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611ffc57611ffc612d33565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611ccf60408301846125d9565b7f4578636c757369766544757463684f72646572207769746e657373290000000081525f8551612dd881601c850160208a01612505565b855190830190612def81601c840160208a01612505565b8551910190612e0581601c840160208901612505565b8451910190612e1b81601c840160208801612505565b01601c019695505050505050565b5f610140612e58838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612e996080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612ece81840186612527565b90508281036101208401526122798185612527565b81810381811115611ffc57611ffc612d33565b8181035f831280158383131683831282161715612f1557612f15612d33565b5092915050565b5f7f80000000000000000000000000000000000000000000000000000000000000008203612f4c57612f4c612d33565b505f0390565b8082018281125f831280158216821582161715612f7157612f71612d33565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122053753b762fd0a1c6d1a34225b2303e861c3555666e99f14fd2b1d876fe939e7164736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x002\xA38\x03\x80b\x002\xA3\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa1\x8Ab\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x18|\x01Ra1\x8A`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a#XV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\x06V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a$HV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a$\xE6V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\nV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a$\xE6V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a%nV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB3V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a(7V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BbV[a\x04\xB5\x81a\x0B\xB3V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB3V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia%nV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BbV[a\x08\x86\x81a\x0B\xB3V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a(uV[\x81\x01\x90a\n|\x91\x90a+\xFEV[\x90Pa\n\x87\x81a\r\x06V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xF1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\xC3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a(uV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\xAAV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B\\\x92\x85\x92\x91\x90a\x12|V[P\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x83Wa\x0B\x83a%nV[` \x02` \x01\x01Q\x90Pa\x0B\x96\x81a\x12\x89V[a\x0B\xA0\x813a\x17yV[a\x0B\xAA\x813a\x18zV[P`\x01\x01a\x0BgV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF5W`\0\x83\x82\x81Q\x81\x10a\x0B\xD4Wa\x0B\xD4a%nV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CUW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x0BWa\x0C\x0Ba%nV[` \x02` \x01\x01Q\x90Pa\x0CL\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B\xD7\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xEBV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9EWa\x0C\x9Ea%nV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB8V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1C\x1EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\rIW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xC1W\x81`\xC0\x01Q\x81\x81Q\x81\x10a\r\x84Wa\r\x84a%nV[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\r\xA6Wa\r\xA6a%nV[` \x02` \x01\x01Q` \x01Q\x14a\r\xE9W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\raV[a\x0E+`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EmW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0E\x83\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xE1Wa\x0E\xE1a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0FJW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xFFW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\xA1Wa\x0F|\x86\x82\x81Q\x81\x10a\x0FmWa\x0Fma%nV[` \x02` \x01\x01Q\x86\x86a\x1D5V[\x83\x82\x81Q\x81\x10a\x0F\x8EWa\x0F\x8Ea%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0FPV[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R`\0\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a0H` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919`@Q` \x01a\x11\x9C\x93\x92\x91\x90a,\xD2V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\xBF\x83`\0\x01Qa\x1E\x05V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q`\0\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xFB\x8B`\xC0\x01Qa\x1E\x9FV[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06}\x84\x84\x84\x84Ba\x1F=V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\xA9WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x13\0\x90\x85\x90`\x04\x01a-\x15V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13c\x91\x90\x81\x01\x90a-(V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x13{\x82\x84a.'V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x93Wa\x13\x93a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFCW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB1W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x14MW\x85`@\x01Q\x81\x81Q\x81\x10a\x14 Wa\x14 a%nV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x14:Wa\x14:a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x02V[P`\0\x80`\0[\x84\x81\x10\x15a\x17hW`\0\x87\x82\x81Q\x81\x10a\x14pWa\x14pa%nV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x15.W\x88\x81\x81Q\x81\x10a\x14\x97Wa\x14\x97a%nV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15&W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x14}V[P`\0\x80[\x88\x81\x10\x15a\x15\xEFW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x15SWa\x15Sa%nV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\xE6W\x85\x15a\x15\xD0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\xDF\x90\x84a.'V[\x92P`\x01\x96P[P`\x01\x01a\x153V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16hW\x84\x15a\x16OW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16a\x90\x82a.'V[\x90P`\x01\x93P[\x80`\0\x03a\x16\xBDW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x16\xCB\x81`\x05a'\x10a\x1F\xE9V[\x82` \x01Q\x11\x15a\x17>W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17SWa\x17Sa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14TV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17\xCAW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x18F\x90\x84\x90\x86\x90`\x04\x01a.:V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18^W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x19:\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x19D\x85\x85a %V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a0\xC8\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a0\x9A`.\x919`@Q` \x01a\x1B<\x94\x93\x92\x91\x90a.iV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B\xA9\x96\x95\x94\x93\x92`\x04\x01a.\xF2V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1B\xC3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xFCWa\x03_\x82\x82a\x1C\x1EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a lV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1CxW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1C}V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1C\xC8WP\x83a\x1D-V[\x82\x82\x11a\x1D\x01W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1D\x0FWP\x82a\x1D-V[B\x83\x10a\x1D\x1DWP\x83a\x1D-V[a\x1D*\x83\x83B\x88\x88a!WV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x94W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D\xAA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12_\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBFWa\x1E\xBFa%?V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE9W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F.W`\0a\x1F\x1C\x85\x83\x81Q\x81\x10a\x1F\x0FWa\x1F\x0Fa%nV[` \x02` \x01\x01Qa!rV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xEFV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1FH\x84\x84\x83a!\xE9V[a\x1F\xE2W\x81a\x1F\x83W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a\x1F\xDFW`\0\x82\x82\x81Q\x81\x10a\x1F\xA8Wa\x1F\xA8a%nV[` \x02` \x01\x01Q\x90Pa\x1F\xD1\x85a'\x10a\x1F\xC3\x91\x90a.'V[` \x83\x01Q\x90a'\x10a\"4V[` \x90\x91\x01R`\x01\x01a\x1F\x8BV[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a \x1EW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x1F\xE2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0a!f\x86\x86\x86\x86\x86a\"xV[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12_\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\"\rWP\x82\x82\x11[\x80a\x1D-WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\"iW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a\"\x88WP\x80a!iV[`\0a\"\x94\x87\x86a/\xADV[\x90P`\0a\"\xA2\x88\x88a/\xADV[\x90P`\0\x85\x85\x12\x15a\"\xD4Wa\"\xC4\x83\x83a\"\xBD\x88\x8Aa/\xC0V[\x91\x90a\x1F\xE9V[a\"\xCD\x90a/\xE7V[\x90Pa\"\xE6V[a\"\xE3\x83\x83a\"\xBD\x89\x89a/\xC0V[\x90P[a\"\xF0\x81\x87a0\x1FV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a\x0B\\W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a#!W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a#mW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x85W`\0\x80\xFD[a#\x91\x87\x83\x88\x01a\"\xFDV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#\xA7W`\0\x80\xFD[Pa#\xB4\x86\x82\x87\x01a#\x0FV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a#\xD3W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xEBW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a$\x19W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$0W`\0\x80\xFD[a$<\x85\x82\x86\x01a#\xC1V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a$^W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$vW`\0\x80\xFD[a$\x82\x88\x83\x89\x01a#\xC1V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\x9BW`\0\x80\xFD[Pa$\xA8\x87\x82\x88\x01a#\x0FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a$\xE1\x81a$\xB4V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a$\xF8W`\0\x80\xFD[\x815a%\x03\x81a$\xB4V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\x1CW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%3W`\0\x80\xFD[a\x1D-\x84\x82\x85\x01a\"\xFDV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a%\xB8W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xA0V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra%\xD9\x81` \x86\x01` \x86\x01a%\x9DV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a&kW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a& V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&\xEAa\x01\xA0\x85\x01\x82a%\xC1V[\x90P` \x83\x01Qa'(` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'@\x82\x82a&\x0BV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'Z\x82\x82a%\xC1V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a'\xE6W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'\xD4\x86\x83Qa&vV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\x9AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(kW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xAAW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xC5W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#QW`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\x90Wa)\x90a%?V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a)\xA9W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\xC3Wa)\xC3a%?V[a)\xF4` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)IV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\tW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a*8W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\\Wa*\\a%?V[\x81`@R\x82\x93P\x845\x91Pa*p\x82a$\xB4V[\x90\x82R` \x84\x015\x90a*\x82\x82a$\xB4V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xAC\x82a$\xB4V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xC6W`\0\x80\xFD[Pa*\xD3\x85\x82\x86\x01a)\x98V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a*\xF2W`\0\x80\xFD[a*\xFAa(\xDAV[\x90P\x815a+\x07\x81a$\xB4V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+?Wa+?a%?V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a+ZW`\0\x80\xFD[\x815` a+oa+j\x83a+%V[a)IV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\x8EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+\xF3W`\x80\x81\x89\x03\x12\x15a+\xABW`\0\x80\x81\xFD[a+\xB3a)\x03V[\x815a+\xBE\x81a$\xB4V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a+\xE1\x81a$\xB4V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\x92V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\x10W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,(W`\0\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a,=W`\0\x80\xFD[a,Ea)&V[\x825\x82\x81\x11\x15a,TW`\0\x80\xFD[a,`\x87\x82\x86\x01a*&V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra,\x83``\x84\x01a$\xD6V[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra,\x9F\x86`\xA0\x85\x01a*\xE0V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a,\xB7W`\0\x80\xFD[a,\xC3\x87\x82\x86\x01a+IV[`\xC0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa,\xE4\x81\x84` \x89\x01a%\x9DV[\x84Q\x90\x83\x01\x90a,\xF8\x81\x83` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a-\x0B\x81\x83` \x88\x01a%\x9DV[\x01\x95\x94PPPPPV[` \x81R`\0a%\x03` \x83\x01\x84a&vV[`\0` \x80\x83\x85\x03\x12\x15a-;W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-RW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-cW`\0\x80\xFD[\x80Qa-qa+j\x82a+%V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a-\x90W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-\xECW\x80\x85\x8A\x03\x12\x15a-\xADW`\0\x80\x81\xFD[a-\xB5a(\xDAV[\x85Qa-\xC0\x81a$\xB4V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\xD9\x81a$\xB4V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a-\x95V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a fWa fa-\xF8V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1D-`@\x83\x01\x84a&vV[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R`\0\x85Qa.\xA1\x81`\x1C\x85\x01` \x8A\x01a%\x9DV[\x85Q\x90\x83\x01\x90a.\xB8\x81`\x1C\x84\x01` \x8A\x01a%\x9DV[\x85Q\x91\x01\x90a.\xCE\x81`\x1C\x84\x01` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a.\xE4\x81`\x1C\x84\x01` \x88\x01a%\x9DV[\x01`\x1C\x01\x96\x95PPPPPPV[`\0a\x01@a/\"\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra/c`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra/\x98\x81\x84\x01\x86a%\xC1V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"\xF0\x81\x85a%\xC1V[\x81\x81\x03\x81\x81\x11\x15a fWa fa-\xF8V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\xE0Wa/\xE0a-\xF8V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a0\x18Wa0\x18a-\xF8V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a0?Wa0?a-\xF8V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xBCS3\xDA\xEF8\xE7\x0E\x8An\xA6\x12\x12\\YeB\xD6\xE89'\x8B,\x90k\xBA\xBClnp2\x9BdsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x001\xCD8\x03\x80b\x001\xCD\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa0\xBCb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x18*\x01Ra0\xBC_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a\"\xDBV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a#\x80V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a#\xBFV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a$WV[a\x06eV[a\0\xB4a\x01e6`\x04a$yV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a$WV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a$\xD8V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x8AV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a'\x96V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B;V[a\x04\x9F\x81a\x0B\x8AV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x8AV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga$\xD8V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B;V[a\x08d\x81a\x0B\x8AV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a'\xD2V[\x81\x01\x90a\nW\x91\x90a+HV[\x90Pa\nb\x81a\x0C\xD5V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\x8D\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a'\xD2V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FrV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B5\x92\x85\x92\x91\x90a\x12AV[P\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BZWa\x0BZa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0Bm\x81a\x12NV[a\x0Bw\x813a\x17+V[a\x0B\x81\x813a\x18(V[P`\x01\x01a\x0B?V[\x80Q_[\x81\x81\x10\x15a\x0C\xC4W_\x83\x82\x81Q\x81\x10a\x0B\xA9Wa\x0B\xA9a$\xD8V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C&W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xDDWa\x0B\xDDa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0C\x1D\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B~\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBEV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CnWa\x0Cna$\xD8V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xB2\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8EV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1B\xC5V[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r\x18W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08oW_[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xABW\x81`\xC0\x01Q\x81\x81Q\x81\x10a\rRWa\rRa$\xD8V[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\rtWa\rta$\xD8V[` \x02` \x01\x01Q` \x01Q\x14a\r\xB7W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\r/V[a\r\xF6`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0E8W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x0EM\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xABWa\x0E\xABa$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\x13W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xC9W\x90P[P\x91P_[\x81\x81\x10\x15a\x0FiWa\x0FD\x86\x82\x81Q\x81\x10a\x0F5Wa\x0F5a$\xD8V[` \x02` \x01\x01Q\x86\x86a\x1C\xD7V[\x83\x82\x81Q\x81\x10a\x0FVWa\x0FVa$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F\x18V[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R_\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/z` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919`@Q` \x01a\x11c\x93\x92\x91\x90a,\x16V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\x85\x83_\x01Qa\x1D\xA4V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q_\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xC0\x8B`\xC0\x01Qa\x1E=V[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06_\x84\x84\x84\x84Ba\x1E\xD8V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12nWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12\xC4\x90\x85\x90`\x04\x01a,XV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xDEW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13#\x91\x90\x81\x01\x90a,jV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x13:\x82\x84a-`V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13RWa\x13Ra$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBAW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13pW\x90P[P\x90P_[\x83\x81\x10\x15a\x14\nW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\xDDWa\x13\xDDa$\xD8V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xF7Wa\x13\xF7a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBFV[P_\x80_[\x84\x81\x10\x15a\x17\x1AW_\x87\x82\x81Q\x81\x10a\x14*Wa\x14*a$\xD8V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14\xE5W\x88\x81\x81Q\x81\x10a\x14PWa\x14Pa$\xD8V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\xDDW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x146V[P_\x80[\x88\x81\x10\x15a\x15\xA2W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x15\x08Wa\x15\x08a$\xD8V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x99W\x85\x15a\x15\x83W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\x92\x90\x84a-`V[\x92P`\x01\x96P[P`\x01\x01a\x14\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16\x1BW\x84\x15a\x16\x02W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16\x14\x90\x82a-`V[\x90P`\x01\x93P[\x80_\x03a\x16oW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x16}\x81`\x05a'\x10a\x1F\x82V[\x82` \x01Q\x11\x15a\x16\xF0W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17\x05Wa\x17\x05a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14\x0FV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17|W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xF8\x90\x84\x90\x86\x90`\x04\x01a-sV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18\x0EW_\x80\xFD[PZ\xFA\x15\x80\x15a\x18 W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xE7\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xF1\x85\x85a\x1F\xBCV[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a/\xFA\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a/\xCC`.\x919`@Q` \x01a\x1A\xE8\x94\x93\x92\x91\x90a-\xA1V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1BU\x96\x95\x94\x93\x92`\x04\x01a.)V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1BlW_\x80\xFD[PZ\xF1\x15\x80\x15a\x18 W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xA3Wa\x03L\x82\x82a\x1B\xC5V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a \x02V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1C\x1BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1CjWP\x83a\x1C\xCFV[\x82\x82\x11a\x1C\xA3W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\xB1WP\x82a\x1C\xCFV[B\x83\x10a\x1C\xBFWP\x83a\x1C\xCFV[a\x1C\xCC\x83\x83B\x88\x88a \xE9V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1DJ\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12$\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\\Wa\x1E\\a$\xABV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x86W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xC9W_a\x1E\xB7\x85\x83\x81Q\x81\x10a\x1E\xAAWa\x1E\xAAa$\xD8V[` \x02` \x01\x01Qa!\x03V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x8BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1E\xE3\x84\x84\x83a!yV[a\x1F{W\x81a\x1F\x1EW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a\x1FxW_\x82\x82\x81Q\x81\x10a\x1FAWa\x1FAa$\xD8V[` \x02` \x01\x01Q\x90Pa\x1Fj\x85a'\x10a\x1F\\\x91\x90a-`V[` \x83\x01Q\x90a'\x10a!\xC3V[` \x90\x91\x01R`\x01\x01a\x1F%V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1F\xB5W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F{W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_a \xF7\x86\x86\x86\x86\x86a\"\x05V[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12$\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a!\x9CWP\x82\x82\x11[\x80a\x1C\xCFWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xF6W_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a\"\x14WP\x80a \xFAV[_a\"\x1F\x87\x86a.\xE3V[\x90P_a\",\x88\x88a.\xE3V[\x90P_\x85\x85\x12\x15a\"]Wa\"M\x83\x83a\"F\x88\x8Aa.\xF6V[\x91\x90a\x1F\x82V[a\"V\x90a/\x1CV[\x90Pa\"oV[a\"l\x83\x83a\"F\x89\x89a.\xF6V[\x90P[a\"y\x81\x87a/RV[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a\x0B5W_\x80\xFD[_\x80\x83`\x1F\x84\x01\x12a\"\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\"\xEDW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x04W_\x80\xFD[a#\x10\x87\x83\x88\x01a\"\x86V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#%W_\x80\xFD[Pa#2\x86\x82\x87\x01a\"\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a#OW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#fW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a#\x91W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xA7W_\x80\xFD[a#\xB3\x85\x82\x86\x01a#?V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a#\xD2W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE9W_\x80\xFD[a#\xF5\x88\x83\x89\x01a#?V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\rW_\x80\xFD[Pa$\x1A\x87\x82\x88\x01a\"\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a$R\x81a$&V[\x91\x90PV[_` \x82\x84\x03\x12\x15a$gW_\x80\xFD[\x815a$r\x81a$&V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a$\x89W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x9FW_\x80\xFD[a\x1C\xCF\x84\x82\x85\x01a\"\x86V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a%\x1FW\x81\x81\x01Q\x83\x82\x01R` \x01a%\x07V[PP_\x91\x01RV[_\x81Q\x80\x84Ra%>\x81` \x86\x01` \x86\x01a%\x05V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a%\xCEW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a%\x83V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&La\x01\xA0\x85\x01\x82a%'V[\x90P` \x83\x01Qa&\x8A` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra&\xA2\x82\x82a%pV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra&\xBC\x82\x82a%'V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a'FW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'4\x86\x83Qa%\xD9V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a&\xFAV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'\xC8W_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\x05W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\x1FW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"\xD4W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xE9Wa(\xE9a$\xABV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\x1AWa)\x1Aa$\xABV[a)K` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(\xA2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)_W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a)\x8BW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a)\xAFWa)\xAFa$\xABV[\x81`@R\x82\x93P\x845\x91Pa)\xC3\x82a$&V[\x90\x82R` \x84\x015\x90a)\xD5\x82a$&V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa)\xFF\x82a$&V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\x18W_\x80\xFD[Pa*%\x85\x82\x86\x01a(\xF1V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a*BW_\x80\xFD[a*Ja(3V[\x90P\x815a*W\x81a$&V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*\x8EWa*\x8Ea$\xABV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a*\xA7W_\x80\xFD[\x815` a*\xBCa*\xB7\x83a*uV[a(\xA2V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a*\xDAW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+=W`\x80\x81\x89\x03\x12\x15a*\xF5W_\x80\xFD[a*\xFDa(\\V[\x815a+\x08\x81a$&V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a++\x81a$&V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a*\xDEV[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a+XW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a+oW_\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a+\x83W_\x80\xFD[a+\x8Ba(\x7FV[\x825\x82\x81\x11\x15a+\x99W_\x80\xFD[a+\xA5\x87\x82\x86\x01a){V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+\xC8``\x84\x01a$GV[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra+\xE4\x86`\xA0\x85\x01a*2V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a+\xFBW_\x80\xFD[a,\x07\x87\x82\x86\x01a*\x98V[`\xC0\x83\x01RP\x95\x94PPPPPV[_\x84Qa,'\x81\x84` \x89\x01a%\x05V[\x84Q\x90\x83\x01\x90a,;\x81\x83` \x89\x01a%\x05V[\x84Q\x91\x01\x90a,N\x81\x83` \x88\x01a%\x05V[\x01\x95\x94PPPPPV[` \x81R_a$r` \x83\x01\x84a%\xD9V[_` \x80\x83\x85\x03\x12\x15a,{W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,\x91W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xA1W_\x80\xFD[\x80Qa,\xAFa*\xB7\x82a*uV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a,\xCDW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-'W\x80\x85\x8A\x03\x12\x15a,\xE8W_\x80\xFD[a,\xF0a(3V[\x85Qa,\xFB\x81a$&V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\x14\x81a$&V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a,\xD2V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1C\xCF`@\x83\x01\x84a%\xD9V[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R_\x85Qa-\xD8\x81`\x1C\x85\x01` \x8A\x01a%\x05V[\x85Q\x90\x83\x01\x90a-\xEF\x81`\x1C\x84\x01` \x8A\x01a%\x05V[\x85Q\x91\x01\x90a.\x05\x81`\x1C\x84\x01` \x89\x01a%\x05V[\x84Q\x91\x01\x90a.\x1B\x81`\x1C\x84\x01` \x88\x01a%\x05V[\x01`\x1C\x01\x96\x95PPPPPPV[_a\x01@a.X\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra.\x99`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra.\xCE\x81\x84\x01\x86a%'V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"y\x81\x85a%'V[\x81\x81\x03\x81\x81\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\x15Wa/\x15a-3V[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a/LWa/La-3V[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a/qWa/qa-3V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 Su;v/\xD0\xA1\xC6\xD1\xA3B%\xB20>\x86\x1C5Ufn\x99\xF1O\xD2\xB1\xD8v\xFE\x93\x9EqdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612358565b6101eb565b005b6100b96100c9366004612406565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612448565b6104c5565b34801561014a57600080fd5b506100b96101593660046124e6565b610683565b6100b961016c36600461250a565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046124e6565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c561256e565b60200260200101819052506102d981610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612771565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb3565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861253f565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d8585838181106104665761046661256e565b90506020028101906104789190612837565b6109f6565b82828151811061048f5761048f61256e565b6020908102919091010152600101610449565b506104ac81610b62565b6104b581610bb3565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961253f565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c78787838181106104665761046661256e565b8282815181106105d9576105d961256e565b60209081029190910101526001016105aa565b506105f681610b62565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612771565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb3565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b816000815181106108695761086961256e565b602002602001018190525061087d81610b62565b61088681610bb3565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612875565b810190610a7c9190612bfe565b9050610a8781610d06565b6040518060a0016040528082600001518152602001610abd836020015184604001518560a00151610df19092919063ffffffff16565b8152602001610ae3836020015184604001518560c00151610ec39092919063ffffffff16565b8152602001848060200190610af89190612875565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610b3b83610faa565b9052606082015160208301516080840151929450610b5c928592919061127c565b50919050565b805160005b8181101561035f576000838281518110610b8357610b8361256e565b60200260200101519050610b9681611289565b610ba08133611779565b610baa813361187a565b50600101610b67565b805160005b81811015610cf5576000838281518110610bd457610bd461256e565b602002602001015190506000816040015151905060005b81811015610c5557600083604001518281518110610c0b57610c0b61256e565b60200260200101519050610c4c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611bd79092919063ffffffff16565b50600101610beb565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9e57610c9e61256e565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce391815260200190565b60405180910390a45050600101610bb8565b5047156104c1576104c13347611c1e565b60408101518151606001511015610d49576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a08101516040810151602090910151146108915760005b8160c00151518110156104c1578160c001518181518110610d8457610d8461256e565b6020026020010151604001518260c001518281518110610da657610da661256e565b60200260200101516020015114610de9576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d61565b610e2b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115610e6d576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e83856020015186604001518686611cb8565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610ee157610ee161253f565b604051908082528060200260200182016040528015610f4a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eff5790505b50915060005b81811015610fa157610f7c868281518110610f6d57610f6d61256e565b60200260200101518686611d35565b838281518110610f8e57610f8e61256e565b6020908102919091010152600101610f50565b50509392505050565b6040517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e982015260009060ff01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061304860208301396040518060c00160405280608d81526020016130c8608d913960405160200161119c93929190612cd2565b604051602081830303815290604052805190602001206111bf8360000151611e05565b83602001518460400151856060015186608001518760a00151600001518860a00151602001518960a00151604001516111fb8b60c00151611e9f565b60408051602081019b909b528a01989098526060890196909652608088019490945273ffffffffffffffffffffffffffffffffffffffff92831660a088015260c08701919091521660e0850152610100840152610120830152610140820152610160015b604051602081830303815290604052805190602001209050919050565b61067d8484848442611f3d565b60015473ffffffffffffffffffffffffffffffffffffffff166112a95750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611300908590600401612d15565b600060405180830381865afa15801561131d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113639190810190612d28565b604083015151815191925090600061137b8284612e27565b67ffffffffffffffff8111156113935761139361253f565b6040519080825280602002602001820160405280156113fc57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b15790505b50905060005b8381101561144d57856040015181815181106114205761142061256e565b602002602001015182828151811061143a5761143a61256e565b6020908102919091010152600101611402565b5060008060005b848110156117685760008782815181106114705761147061256e565b6020026020010151905060005b8281101561152e578881815181106114975761149761256e565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036115265781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161147d565b506000805b888110156115ef5760008b6040015182815181106115535761155361256e565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036115e65785156115d0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516115df9084612e27565b9250600196505b50600101611533565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361166857841561164f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116619082612e27565b9050600193505b806000036116bd5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6116cb816005612710611fe9565b8260200151111561173e578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106117535761175361256e565b60209081029190910101525050600101611454565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146117ca576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906118469084908690600401612e3a565b60006040518083038186803b15801561185e57600080fd5b505afa158015611872573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61193a846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6119448585612025565b856000015160200151866080015160405180608001604052806052815260200161304860529139604080517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e9820152815160df8183030181526101bf8201909252608d60ff8201818152916130c89061011f01396040518060600160405280602e815260200161309a602e9139604051602001611b3c9493929190612e69565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611ba99695949392600401612ef2565b600060405180830381600087803b158015611bc357600080fd5b505af1158015611872573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611bfc5761035f8282611c1e565b61035f73ffffffffffffffffffffffffffffffffffffffff841633848461206c565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611c78576040519150601f19603f3d011682016040523d82523d6000602084013e611c7d565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838503611cc8575083611d2d565b828211611d01576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611d0f575082611d2d565b428310611d1d575083611d2d565b611d2a8383428888612157565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611d94576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611daa856020015186604001518686611cb8565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d81526020016130c8608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161125f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ebf57611ebf61253f565b6040519080825280601f01601f191660200182016040528015611ee9576020820181803683370190505b50905060005b8351811015611f2e576000611f1c858381518110611f0f57611f0f61256e565b6020026020010151612172565b60208381028501015250600101611eef565b50805160209091012092915050565b611f488484836121e9565b611fe25781611f83576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b8151811015611fdf576000828281518110611fa857611fa861256e565b60200260200101519050611fd185612710611fc39190612e27565b602083015190612710612234565b602090910152600101611f8b565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261201e57600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611fe2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b60006121668686868686612278565b90505b95945050505050565b60006040518060800160405280605281526020016130486052913980516020918201208351848301516040808701516060880151915161125f969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600073ffffffffffffffffffffffffffffffffffffffff8416158061220d57508282115b80611d2d575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261226957600080fd5b50910281810615159190040190565b6000848410612288575080612169565b60006122948786612fad565b905060006122a28888612fad565b90506000858512156122d4576122c483836122bd888a612fc0565b9190611fe9565b6122cd90612fe7565b90506122e6565b6122e383836122bd8989612fc0565b90505b6122f0818761301f565b9998505050505050505050565b600060408284031215610b5c57600080fd5b60008083601f84011261232157600080fd5b50813567ffffffffffffffff81111561233957600080fd5b60208301915083602082850101111561235157600080fd5b9250929050565b60008060006040848603121561236d57600080fd5b833567ffffffffffffffff8082111561238557600080fd5b612391878388016122fd565b945060208601359150808211156123a757600080fd5b506123b48682870161230f565b9497909650939450505050565b60008083601f8401126123d357600080fd5b50813567ffffffffffffffff8111156123eb57600080fd5b6020830191508360208260051b850101111561235157600080fd5b6000806020838503121561241957600080fd5b823567ffffffffffffffff81111561243057600080fd5b61243c858286016123c1565b90969095509350505050565b6000806000806040858703121561245e57600080fd5b843567ffffffffffffffff8082111561247657600080fd5b612482888389016123c1565b9096509450602087013591508082111561249b57600080fd5b506124a88782880161230f565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356124e1816124b4565b919050565b6000602082840312156124f857600080fd5b8135612503816124b4565b9392505050565b60006020828403121561251c57600080fd5b813567ffffffffffffffff81111561253357600080fd5b611d2d848285016122fd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156125b85781810151838201526020016125a0565b50506000910152565b600081518084526125d981602086016020860161259d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b8381101561266b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612620565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526126ea6101a08501826125c1565b905060208301516127286020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612740828261260b565b915050606083015184820360a086015261275a82826125c1565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156127e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526127d4868351612676565b9550938201939082019060010161279a565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261286b57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128aa57600080fd5b83018035915067ffffffffffffffff8211156128c557600080fd5b60200191503681900382131561235157600080fd5b6040516060810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405290565b6040516080810167ffffffffffffffff811182821017156128fd576128fd61253f565b60405160e0810167ffffffffffffffff811182821017156128fd576128fd61253f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129905761299061253f565b604052919050565b600082601f8301126129a957600080fd5b813567ffffffffffffffff8111156129c3576129c361253f565b6129f460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612949565b818152846020838601011115612a0957600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612a3857600080fd5b60405160c0810167ffffffffffffffff8282108183111715612a5c57612a5c61253f565b8160405282935084359150612a70826124b4565b908252602084013590612a82826124b4565b816020840152604085013560408401526060850135606084015260808501359150612aac826124b4565b81608084015260a0850135915080821115612ac657600080fd5b50612ad385828601612998565b60a0830152505092915050565b600060608284031215612af257600080fd5b612afa6128da565b90508135612b07816124b4565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612b3f57612b3f61253f565b5060051b60200190565b600082601f830112612b5a57600080fd5b81356020612b6f612b6a83612b25565b612949565b82815260079290921b84018101918181019086841115612b8e57600080fd5b8286015b84811015612bf35760808189031215612bab5760008081fd5b612bb3612903565b8135612bbe816124b4565b8152818501358582015260408083013590820152606080830135612be1816124b4565b90820152835291830191608001612b92565b509695505050505050565b600060208284031215612c1057600080fd5b813567ffffffffffffffff80821115612c2857600080fd5b908301906101208286031215612c3d57600080fd5b612c45612926565b823582811115612c5457600080fd5b612c6087828601612a26565b8252506020830135602082015260408301356040820152612c83606084016124d6565b606082015260808301356080820152612c9f8660a08501612ae0565b60a082015261010083013582811115612cb757600080fd5b612cc387828601612b49565b60c08301525095945050505050565b60008451612ce481846020890161259d565b845190830190612cf881836020890161259d565b8451910190612d0b81836020880161259d565b0195945050505050565b6020815260006125036020830184612676565b60006020808385031215612d3b57600080fd5b825167ffffffffffffffff811115612d5257600080fd5b8301601f81018513612d6357600080fd5b8051612d71612b6a82612b25565b81815260609182028301840191848201919088841115612d9057600080fd5b938501935b83851015612dec5780858a031215612dad5760008081fd5b612db56128da565b8551612dc0816124b4565b81528587015187820152604080870151612dd9816124b4565b9082015283529384019391850191612d95565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561206657612066612df8565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611d2d6040830184612676565b7f4578636c757369766544757463684f72646572207769746e6573732900000000815260008551612ea181601c850160208a0161259d565b855190830190612eb881601c840160208a0161259d565b8551910190612ece81601c84016020890161259d565b8451910190612ee481601c84016020880161259d565b01601c019695505050505050565b6000610140612f22838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612f636080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612f98818401866125c1565b90508281036101208401526122f081856125c1565b8181038181111561206657612066612df8565b8181036000831280158383131683831282161715612fe057612fe0612df8565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361301857613018612df8565b5060000390565b808201828112600083128015821682158216171561303f5761303f612df8565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220bc5333daef38e70e8a6ea612125c596542d6e839278b2c906bbabc6c6e70329b64736f6c63430008180033 + ///0x608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af3660046122db565b6101e0565b005b6100b46100c4366004612380565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46101333660046123bf565b6104af565b348015610143575f80fd5b506100b4610152366004612457565b610665565b6100b4610165366004612479565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db366004612457565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b76124d8565b60200260200101819052506102cb81610b3b565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b908490879087906004016126d3565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b8a565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff811115610374576103746124ab565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c57610467858583818110610450576104506124d8565b90506020028101906104629190612796565b6109d2565b828281518110610479576104796124d8565b6020908102919091010152600101610433565b5061049681610b3b565b61049f81610b8a565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d26124ab565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae878783818110610450576104506124d8565b8282815181106105c0576105c06124d8565b6020908102919091010152600101610591565b506105dd81610b3b565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d908490889088906004016126d3565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b8a565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f81518110610847576108476124d8565b602002602001018190525061085b81610b3b565b61086481610b8a565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a83806127d2565b810190610a579190612b48565b9050610a6281610cd5565b6040518060a00160405280825f01518152602001610a97836020015184604001518560a00151610dbf9092919063ffffffff16565b8152602001610abd836020015184604001518560c00151610e8d9092919063ffffffff16565b8152602001848060200190610ad291906127d2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610b1483610f72565b9052606082015160208301516080840151929450610b359285929190611241565b50919050565b80515f5b8181101561034c575f838281518110610b5a57610b5a6124d8565b60200260200101519050610b6d8161124e565b610b77813361172b565b610b818133611828565b50600101610b3f565b80515f5b81811015610cc4575f838281518110610ba957610ba96124d8565b602002602001015190505f81604001515190505f5b81811015610c26575f83604001518281518110610bdd57610bdd6124d8565b60200260200101519050610c1d81604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611b7e9092919063ffffffff16565b50600101610bbe565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c6e57610c6e6124d8565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610cb291815260200190565b60405180910390a45050600101610b8e565b5047156104ab576104ab3347611bc5565b60408101518151606001511015610d18576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160408101516020909101511461086f575f5b8160c00151518110156104ab578160c001518181518110610d5257610d526124d8565b6020026020010151604001518260c001518281518110610d7457610d746124d8565b60200260200101516020015114610db7576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610d2f565b610df660405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b836040015184602001511115610e38576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e4d856020015186604001518686611c5b565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115610eab57610eab6124ab565b604051908082528060200260200182016040528015610f1357816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ec95790505b5091505f5b81811015610f6957610f44868281518110610f3557610f356124d8565b60200260200101518686611cd7565b838281518110610f5657610f566124d8565b6020908102919091010152600101610f18565b50509392505050565b6040517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e98201525f9060ff01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612f7a60208301396040518060c00160405280608d8152602001612ffa608d913960405160200161116393929190612c16565b60405160208183030381529060405280519060200120611185835f0151611da4565b83602001518460400151856060015186608001518760a001515f01518860a00151602001518960a00151604001516111c08b60c00151611e3d565b60408051602081019b909b528a01989098526060890196909652608088019490945273ffffffffffffffffffffffffffffffffffffffff92831660a088015260c08701919091521660e0850152610100840152610120830152610140820152610160015b604051602081830303815290604052805190602001209050919050565b61065f8484848442611ed8565b60015473ffffffffffffffffffffffffffffffffffffffff1661126e5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906112c4908590600401612c58565b5f60405180830381865afa1580156112de573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113239190810190612c6a565b6040830151518151919250905f61133a8284612d60565b67ffffffffffffffff811115611352576113526124ab565b6040519080825280602002602001820160405280156113ba57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113705790505b5090505f5b8381101561140a57856040015181815181106113dd576113dd6124d8565b60200260200101518282815181106113f7576113f76124d8565b60209081029190910101526001016113bf565b505f805f5b8481101561171a575f87828151811061142a5761142a6124d8565b602002602001015190505f5b828110156114e557888181518110611450576114506124d8565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036114dd5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b600101611436565b505f805b888110156115a2575f8b604001518281518110611508576115086124d8565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1603611599578515611583576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516115929084612d60565b9250600196505b506001016114e9565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361161b578415611602576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516116149082612d60565b9050600193505b805f0361166f5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b61167d816005612710611f82565b826020015111156116f0578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a0181518110611705576117056124d8565b6020908102919091010152505060010161140f565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff16301461177c576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906117f89084908690600401612d73565b5f6040518083038186803b15801561180e575f80fd5b505afa158015611820573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6118e7846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6118f18585611fbc565b855f0151602001518660800151604051806080016040528060528152602001612f7a60529139604080517f4578636c757369766544757463684f726465722800000000000000000000000060208201527f4f72646572496e666f20696e666f2c000000000000000000000000000000000060348201527f75696e74323536206465636179537461727454696d652c00000000000000000060438201527f75696e74323536206465636179456e6454696d652c0000000000000000000000605a8201527f61646472657373206578636c757369766546696c6c65722c0000000000000000606f8201527f75696e74323536206578636c757369766974794f766572726964654270732c0060878201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060a68201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060b98201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060d28201527f44757463684f75747075745b5d206f757470757473290000000000000000000060e9820152815160df8183030181526101bf8201909252608d60ff820181815291612ffa9061011f01396040518060600160405280602e8152602001612fcc602e9139604051602001611ae89493929190612da1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611b559695949392600401612e29565b5f604051808303815f87803b158015611b6c575f80fd5b505af1158015611820573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611ba35761034c8282611bc5565b61034c73ffffffffffffffffffffffffffffffffffffffff8416338484612002565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611c1b576040519150601f19603f3d011682016040523d82523d5f602084013e611c20565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f838503611c6a575083611ccf565b828211611ca3576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611cb1575082611ccf565b428310611cbf575083611ccf565b611ccc83834288886120e9565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611d35576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611d4a856020015186604001518686611c5b565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b5f6040518060c00160405280608d8152602001612ffa608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161122498939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115611e5c57611e5c6124ab565b6040519080825280601f01601f191660200182016040528015611e86576020820181803683370190505b5090505f5b8351811015611ec9575f611eb7858381518110611eaa57611eaa6124d8565b6020026020010151612103565b60208381028501015250600101611e8b565b50805160209091012092915050565b611ee3848483612179565b611f7b5781611f1e576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b8151811015611f78575f828281518110611f4157611f416124d8565b60200260200101519050611f6a85612710611f5c9190612d60565b6020830151906127106121c3565b602090910152600101611f25565b50505b5050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611fb5575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611f7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5f6120f78686868686612205565b90505b95945050505050565b5f604051806080016040528060528152602001612f7a60529139805160209182012083518483015160408087015160608801519151611224969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f73ffffffffffffffffffffffffffffffffffffffff8416158061219c57508282115b80611ccf575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026121f6575f80fd5b50910281810615159190040190565b5f8484106122145750806120fa565b5f61221f8786612ee3565b90505f61222c8888612ee3565b90505f8585121561225d5761224d8383612246888a612ef6565b9190611f82565b61225690612f1c565b905061226f565b61226c83836122468989612ef6565b90505b6122798187612f52565b9998505050505050505050565b5f60408284031215610b35575f80fd5b5f8083601f8401126122a6575f80fd5b50813567ffffffffffffffff8111156122bd575f80fd5b6020830191508360208285010111156122d4575f80fd5b9250929050565b5f805f604084860312156122ed575f80fd5b833567ffffffffffffffff80821115612304575f80fd5b61231087838801612286565b94506020860135915080821115612325575f80fd5b5061233286828701612296565b9497909650939450505050565b5f8083601f84011261234f575f80fd5b50813567ffffffffffffffff811115612366575f80fd5b6020830191508360208260051b85010111156122d4575f80fd5b5f8060208385031215612391575f80fd5b823567ffffffffffffffff8111156123a7575f80fd5b6123b38582860161233f565b90969095509350505050565b5f805f80604085870312156123d2575f80fd5b843567ffffffffffffffff808211156123e9575f80fd5b6123f58883890161233f565b9096509450602087013591508082111561240d575f80fd5b5061241a87828801612296565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b803561245281612426565b919050565b5f60208284031215612467575f80fd5b813561247281612426565b9392505050565b5f60208284031215612489575f80fd5b813567ffffffffffffffff81111561249f575f80fd5b611ccf84828501612286565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b8381101561251f578181015183820152602001612507565b50505f910152565b5f815180845261253e816020860160208601612505565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156125ce578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612583565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c061018085015261264c6101a0850182612527565b9050602083015161268a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526126a28282612570565b915050606083015184820360a08601526126bc8282612527565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b83811015612746577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526127348683516125d9565b955093820193908201906001016126fa565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126127c8575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612805575f80fd5b83018035915067ffffffffffffffff82111561281f575f80fd5b6020019150368190038213156122d4575f80fd5b6040516060810167ffffffffffffffff81118282101715612856576128566124ab565b60405290565b6040516080810167ffffffffffffffff81118282101715612856576128566124ab565b60405160e0810167ffffffffffffffff81118282101715612856576128566124ab565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156128e9576128e96124ab565b604052919050565b5f82601f830112612900575f80fd5b813567ffffffffffffffff81111561291a5761291a6124ab565b61294b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128a2565b81815284602083860101111561295f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c0828403121561298b575f80fd5b60405160c0810167ffffffffffffffff82821081831117156129af576129af6124ab565b81604052829350843591506129c382612426565b9082526020840135906129d582612426565b8160208401526040850135604084015260608501356060840152608085013591506129ff82612426565b81608084015260a0850135915080821115612a18575f80fd5b50612a25858286016128f1565b60a0830152505092915050565b5f60608284031215612a42575f80fd5b612a4a612833565b90508135612a5781612426565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612a8e57612a8e6124ab565b5060051b60200190565b5f82601f830112612aa7575f80fd5b81356020612abc612ab783612a75565b6128a2565b82815260079290921b84018101918181019086841115612ada575f80fd5b8286015b84811015612b3d5760808189031215612af5575f80fd5b612afd61285c565b8135612b0881612426565b8152818501358582015260408083013590820152606080830135612b2b81612426565b90820152835291830191608001612ade565b509695505050505050565b5f60208284031215612b58575f80fd5b813567ffffffffffffffff80821115612b6f575f80fd5b908301906101208286031215612b83575f80fd5b612b8b61287f565b823582811115612b99575f80fd5b612ba58782860161297b565b8252506020830135602082015260408301356040820152612bc860608401612447565b606082015260808301356080820152612be48660a08501612a32565b60a082015261010083013582811115612bfb575f80fd5b612c0787828601612a98565b60c08301525095945050505050565b5f8451612c27818460208901612505565b845190830190612c3b818360208901612505565b8451910190612c4e818360208801612505565b0195945050505050565b602081525f61247260208301846125d9565b5f6020808385031215612c7b575f80fd5b825167ffffffffffffffff811115612c91575f80fd5b8301601f81018513612ca1575f80fd5b8051612caf612ab782612a75565b81815260609182028301840191848201919088841115612ccd575f80fd5b938501935b83851015612d275780858a031215612ce8575f80fd5b612cf0612833565b8551612cfb81612426565b81528587015187820152604080870151612d1481612426565b9082015283529384019391850191612cd2565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611ffc57611ffc612d33565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611ccf60408301846125d9565b7f4578636c757369766544757463684f72646572207769746e657373290000000081525f8551612dd881601c850160208a01612505565b855190830190612def81601c840160208a01612505565b8551910190612e0581601c840160208901612505565b8451910190612e1b81601c840160208801612505565b01601c019695505050505050565b5f610140612e58838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612e996080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612ece81840186612527565b90508281036101208401526122798185612527565b81810381811115611ffc57611ffc612d33565b8181035f831280158383131683831282161715612f1557612f15612d33565b5092915050565b5f7f80000000000000000000000000000000000000000000000000000000000000008203612f4c57612f4c612d33565b505f0390565b8082018281125f831280158216821582161715612f7157612f71612d33565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122053753b762fd0a1c6d1a34225b2303e861c3555666e99f14fd2b1d876fe939e7164736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a#XV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\x06V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a$HV[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a$\xE6V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\nV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a$\xE6V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a%nV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB3V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a(7V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BbV[a\x04\xB5\x81a\x0B\xB3V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa%nV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BbV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'qV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB3V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia%nV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BbV[a\x08\x86\x81a\x0B\xB3V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a(uV[\x81\x01\x90a\n|\x91\x90a+\xFEV[\x90Pa\n\x87\x81a\r\x06V[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xF1\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xE3\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\xC3\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xF8\x91\x90a(uV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B;\x83a\x0F\xAAV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B\\\x92\x85\x92\x91\x90a\x12|V[P\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x83Wa\x0B\x83a%nV[` \x02` \x01\x01Q\x90Pa\x0B\x96\x81a\x12\x89V[a\x0B\xA0\x813a\x17yV[a\x0B\xAA\x813a\x18zV[P`\x01\x01a\x0BgV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF5W`\0\x83\x82\x81Q\x81\x10a\x0B\xD4Wa\x0B\xD4a%nV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CUW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x0BWa\x0C\x0Ba%nV[` \x02` \x01\x01Q\x90Pa\x0CL\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B\xD7\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xEBV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9EWa\x0C\x9Ea%nV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB8V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1C\x1EV[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\rIW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\x91W`\0[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xC1W\x81`\xC0\x01Q\x81\x81Q\x81\x10a\r\x84Wa\r\x84a%nV[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\r\xA6Wa\r\xA6a%nV[` \x02` \x01\x01Q` \x01Q\x14a\r\xE9W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\raV[a\x0E+`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0EmW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x0E\x83\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xE1Wa\x0E\xE1a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0FJW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xFFW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x0F\xA1Wa\x0F|\x86\x82\x81Q\x81\x10a\x0FmWa\x0Fma%nV[` \x02` \x01\x01Q\x86\x86a\x1D5V[\x83\x82\x81Q\x81\x10a\x0F\x8EWa\x0F\x8Ea%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0FPV[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R`\0\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a0H` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919`@Q` \x01a\x11\x9C\x93\x92\x91\x90a,\xD2V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\xBF\x83`\0\x01Qa\x1E\x05V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q`\0\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xFB\x8B`\xC0\x01Qa\x1E\x9FV[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06}\x84\x84\x84\x84Ba\x1F=V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12\xA9WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x13\0\x90\x85\x90`\x04\x01a-\x15V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\x1DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13c\x91\x90\x81\x01\x90a-(V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x13{\x82\x84a.'V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x93Wa\x13\x93a%?V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFCW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB1W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x14MW\x85`@\x01Q\x81\x81Q\x81\x10a\x14 Wa\x14 a%nV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x14:Wa\x14:a%nV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x02V[P`\0\x80`\0[\x84\x81\x10\x15a\x17hW`\0\x87\x82\x81Q\x81\x10a\x14pWa\x14pa%nV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x15.W\x88\x81\x81Q\x81\x10a\x14\x97Wa\x14\x97a%nV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15&W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x14}V[P`\0\x80[\x88\x81\x10\x15a\x15\xEFW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x15SWa\x15Sa%nV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\xE6W\x85\x15a\x15\xD0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\xDF\x90\x84a.'V[\x92P`\x01\x96P[P`\x01\x01a\x153V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16hW\x84\x15a\x16OW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16a\x90\x82a.'V[\x90P`\x01\x93P[\x80`\0\x03a\x16\xBDW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x16\xCB\x81`\x05a'\x10a\x1F\xE9V[\x82` \x01Q\x11\x15a\x17>W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17SWa\x17Sa%nV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14TV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17\xCAW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x18F\x90\x84\x90\x86\x90`\x04\x01a.:V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18^W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x19:\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x19D\x85\x85a %V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a0\xC8\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a0\x9A`.\x919`@Q` \x01a\x1B<\x94\x93\x92\x91\x90a.iV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1B\xA9\x96\x95\x94\x93\x92`\x04\x01a.\xF2V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1B\xC3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18rW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xFCWa\x03_\x82\x82a\x1C\x1EV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a lV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1CxW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1C}V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x83\x85\x03a\x1C\xC8WP\x83a\x1D-V[\x82\x82\x11a\x1D\x01W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1D\x0FWP\x82a\x1D-V[B\x83\x10a\x1D\x1DWP\x83a\x1D-V[a\x1D*\x83\x83B\x88\x88a!WV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D\x94W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1D\xAA\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C\xB8V[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a0\xC8`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12_\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBFWa\x1E\xBFa%?V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE9W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F.W`\0a\x1F\x1C\x85\x83\x81Q\x81\x10a\x1F\x0FWa\x1F\x0Fa%nV[` \x02` \x01\x01Qa!rV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xEFV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1FH\x84\x84\x83a!\xE9V[a\x1F\xE2W\x81a\x1F\x83W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a\x1F\xDFW`\0\x82\x82\x81Q\x81\x10a\x1F\xA8Wa\x1F\xA8a%nV[` \x02` \x01\x01Q\x90Pa\x1F\xD1\x85a'\x10a\x1F\xC3\x91\x90a.'V[` \x83\x01Q\x90a'\x10a\"4V[` \x90\x91\x01R`\x01\x01a\x1F\x8BV[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a \x1EW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x1F\xE2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0a!f\x86\x86\x86\x86\x86a\"xV[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a0H`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12_\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\"\rWP\x82\x82\x11[\x80a\x1D-WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\"iW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a\"\x88WP\x80a!iV[`\0a\"\x94\x87\x86a/\xADV[\x90P`\0a\"\xA2\x88\x88a/\xADV[\x90P`\0\x85\x85\x12\x15a\"\xD4Wa\"\xC4\x83\x83a\"\xBD\x88\x8Aa/\xC0V[\x91\x90a\x1F\xE9V[a\"\xCD\x90a/\xE7V[\x90Pa\"\xE6V[a\"\xE3\x83\x83a\"\xBD\x89\x89a/\xC0V[\x90P[a\"\xF0\x81\x87a0\x1FV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a\x0B\\W`\0\x80\xFD[`\0\x80\x83`\x1F\x84\x01\x12a#!W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a#mW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x85W`\0\x80\xFD[a#\x91\x87\x83\x88\x01a\"\xFDV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#\xA7W`\0\x80\xFD[Pa#\xB4\x86\x82\x87\x01a#\x0FV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a#\xD3W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xEBW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#QW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a$\x19W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$0W`\0\x80\xFD[a$<\x85\x82\x86\x01a#\xC1V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a$^W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$vW`\0\x80\xFD[a$\x82\x88\x83\x89\x01a#\xC1V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\x9BW`\0\x80\xFD[Pa$\xA8\x87\x82\x88\x01a#\x0FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a$\xE1\x81a$\xB4V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a$\xF8W`\0\x80\xFD[\x815a%\x03\x81a$\xB4V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\x1CW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%3W`\0\x80\xFD[a\x1D-\x84\x82\x85\x01a\"\xFDV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a%\xB8W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xA0V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra%\xD9\x81` \x86\x01` \x86\x01a%\x9DV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a&kW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a& V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&\xEAa\x01\xA0\x85\x01\x82a%\xC1V[\x90P` \x83\x01Qa'(` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'@\x82\x82a&\x0BV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'Z\x82\x82a%\xC1V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a'\xE6W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'\xD4\x86\x83Qa&vV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\x9AV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(kW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xAAW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\xC5W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#QW`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xFDWa(\xFDa%?V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\x90Wa)\x90a%?V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a)\xA9W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\xC3Wa)\xC3a%?V[a)\xF4` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)IV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\tW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a*8W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\\Wa*\\a%?V[\x81`@R\x82\x93P\x845\x91Pa*p\x82a$\xB4V[\x90\x82R` \x84\x015\x90a*\x82\x82a$\xB4V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xAC\x82a$\xB4V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xC6W`\0\x80\xFD[Pa*\xD3\x85\x82\x86\x01a)\x98V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a*\xF2W`\0\x80\xFD[a*\xFAa(\xDAV[\x90P\x815a+\x07\x81a$\xB4V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+?Wa+?a%?V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a+ZW`\0\x80\xFD[\x815` a+oa+j\x83a+%V[a)IV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\x8EW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+\xF3W`\x80\x81\x89\x03\x12\x15a+\xABW`\0\x80\x81\xFD[a+\xB3a)\x03V[\x815a+\xBE\x81a$\xB4V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a+\xE1\x81a$\xB4V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\x92V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\x10W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,(W`\0\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a,=W`\0\x80\xFD[a,Ea)&V[\x825\x82\x81\x11\x15a,TW`\0\x80\xFD[a,`\x87\x82\x86\x01a*&V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra,\x83``\x84\x01a$\xD6V[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra,\x9F\x86`\xA0\x85\x01a*\xE0V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a,\xB7W`\0\x80\xFD[a,\xC3\x87\x82\x86\x01a+IV[`\xC0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa,\xE4\x81\x84` \x89\x01a%\x9DV[\x84Q\x90\x83\x01\x90a,\xF8\x81\x83` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a-\x0B\x81\x83` \x88\x01a%\x9DV[\x01\x95\x94PPPPPV[` \x81R`\0a%\x03` \x83\x01\x84a&vV[`\0` \x80\x83\x85\x03\x12\x15a-;W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-RW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-cW`\0\x80\xFD[\x80Qa-qa+j\x82a+%V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a-\x90W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-\xECW\x80\x85\x8A\x03\x12\x15a-\xADW`\0\x80\x81\xFD[a-\xB5a(\xDAV[\x85Qa-\xC0\x81a$\xB4V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\xD9\x81a$\xB4V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a-\x95V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a fWa fa-\xF8V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1D-`@\x83\x01\x84a&vV[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R`\0\x85Qa.\xA1\x81`\x1C\x85\x01` \x8A\x01a%\x9DV[\x85Q\x90\x83\x01\x90a.\xB8\x81`\x1C\x84\x01` \x8A\x01a%\x9DV[\x85Q\x91\x01\x90a.\xCE\x81`\x1C\x84\x01` \x89\x01a%\x9DV[\x84Q\x91\x01\x90a.\xE4\x81`\x1C\x84\x01` \x88\x01a%\x9DV[\x01`\x1C\x01\x96\x95PPPPPPV[`\0a\x01@a/\"\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra/c`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra/\x98\x81\x84\x01\x86a%\xC1V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"\xF0\x81\x85a%\xC1V[\x81\x81\x03\x81\x81\x11\x15a fWa fa-\xF8V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\xE0Wa/\xE0a-\xF8V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a0\x18Wa0\x18a-\xF8V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a0?Wa0?a-\xF8V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xBCS3\xDA\xEF8\xE7\x0E\x8An\xA6\x12\x12\\YeB\xD6\xE89'\x8B,\x90k\xBA\xBClnp2\x9BdsolcC\0\x08\x18\x003", + b"`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a\"\xDBV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a#\x80V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a#\xBFV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a$WV[a\x06eV[a\0\xB4a\x01e6`\x04a$yV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a$WV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a$\xD8V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x8AV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a'\x96V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B;V[a\x04\x9F\x81a\x0B\x8AV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa$\xD8V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B;V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&\xD3V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x8AV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga$\xD8V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B;V[a\x08d\x81a\x0B\x8AV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a'\xD2V[\x81\x01\x90a\nW\x91\x90a+HV[\x90Pa\nb\x81a\x0C\xD5V[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\n\x97\x83` \x01Q\x84`@\x01Q\x85`\xA0\x01Qa\r\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xBD\x83` \x01Q\x84`@\x01Q\x85`\xC0\x01Qa\x0E\x8D\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\n\xD2\x91\x90a'\xD2V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0B\x14\x83a\x0FrV[\x90R``\x82\x01Q` \x83\x01Q`\x80\x84\x01Q\x92\x94Pa\x0B5\x92\x85\x92\x91\x90a\x12AV[P\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BZWa\x0BZa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0Bm\x81a\x12NV[a\x0Bw\x813a\x17+V[a\x0B\x81\x813a\x18(V[P`\x01\x01a\x0B?V[\x80Q_[\x81\x81\x10\x15a\x0C\xC4W_\x83\x82\x81Q\x81\x10a\x0B\xA9Wa\x0B\xA9a$\xD8V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C&W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xDDWa\x0B\xDDa$\xD8V[` \x02` \x01\x01Q\x90Pa\x0C\x1D\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1B~\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBEV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CnWa\x0Cna$\xD8V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xB2\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8EV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1B\xC5V[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\r\x18W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08oW_[\x81`\xC0\x01QQ\x81\x10\x15a\x04\xABW\x81`\xC0\x01Q\x81\x81Q\x81\x10a\rRWa\rRa$\xD8V[` \x02` \x01\x01Q`@\x01Q\x82`\xC0\x01Q\x82\x81Q\x81\x10a\rtWa\rta$\xD8V[` \x02` \x01\x01Q` \x01Q\x14a\r\xB7W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\r/V[a\r\xF6`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x0E8W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x0EM\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xABWa\x0E\xABa$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\x13W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xC9W\x90P[P\x91P_[\x81\x81\x10\x15a\x0FiWa\x0FD\x86\x82\x81Q\x81\x10a\x0F5Wa\x0F5a$\xD8V[` \x02` \x01\x01Q\x86\x86a\x1C\xD7V[\x83\x82\x81Q\x81\x10a\x0FVWa\x0FVa$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F\x18V[PP\x93\x92PPPV[`@Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R_\x90`\xFF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/z` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919`@Q` \x01a\x11c\x93\x92\x91\x90a,\x16V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x11\x85\x83_\x01Qa\x1D\xA4V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q\x86`\x80\x01Q\x87`\xA0\x01Q_\x01Q\x88`\xA0\x01Q` \x01Q\x89`\xA0\x01Q`@\x01Qa\x11\xC0\x8B`\xC0\x01Qa\x1E=V[`@\x80Q` \x81\x01\x9B\x90\x9BR\x8A\x01\x98\x90\x98R``\x89\x01\x96\x90\x96R`\x80\x88\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\xA0\x88\x01R`\xC0\x87\x01\x91\x90\x91R\x16`\xE0\x85\x01Ra\x01\0\x84\x01Ra\x01 \x83\x01Ra\x01@\x82\x01Ra\x01`\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[a\x06_\x84\x84\x84\x84Ba\x1E\xD8V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x12nWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x12\xC4\x90\x85\x90`\x04\x01a,XV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xDEW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x13#\x91\x90\x81\x01\x90a,jV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x13:\x82\x84a-`V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13RWa\x13Ra$\xABV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xBAW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13pW\x90P[P\x90P_[\x83\x81\x10\x15a\x14\nW\x85`@\x01Q\x81\x81Q\x81\x10a\x13\xDDWa\x13\xDDa$\xD8V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x13\xF7Wa\x13\xF7a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBFV[P_\x80_[\x84\x81\x10\x15a\x17\x1AW_\x87\x82\x81Q\x81\x10a\x14*Wa\x14*a$\xD8V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x14\xE5W\x88\x81\x81Q\x81\x10a\x14PWa\x14Pa$\xD8V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x14\xDDW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x146V[P_\x80[\x88\x81\x10\x15a\x15\xA2W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x15\x08Wa\x15\x08a$\xD8V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x15\x99W\x85\x15a\x15\x83W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x15\x92\x90\x84a-`V[\x92P`\x01\x96P[P`\x01\x01a\x14\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x16\x1BW\x84\x15a\x16\x02W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x16\x14\x90\x82a-`V[\x90P`\x01\x93P[\x80_\x03a\x16oW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x16}\x81`\x05a'\x10a\x1F\x82V[\x82` \x01Q\x11\x15a\x16\xF0W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x17\x05Wa\x17\x05a$\xD8V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x14\x0FV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x17|W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x17\xF8\x90\x84\x90\x86\x90`\x04\x01a-sV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x18\x0EW_\x80\xFD[PZ\xFA\x15\x80\x15a\x18 W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x18\xE7\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x18\xF1\x85\x85a\x1F\xBCV[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919`@\x80Q\x7FExclusiveDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`C\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Z\x82\x01R\x7Faddress exclusiveFiller,\0\0\0\0\0\0\0\0`o\x82\x01R\x7Fuint256 exclusivityOverrideBps,\0`\x87\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\xA6\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`\xB9\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\xD2\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xE9\x82\x01R\x81Q`\xDF\x81\x83\x03\x01\x81Ra\x01\xBF\x82\x01\x90\x92R`\x8D`\xFF\x82\x01\x81\x81R\x91a/\xFA\x90a\x01\x1F\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a/\xCC`.\x919`@Q` \x01a\x1A\xE8\x94\x93\x92\x91\x90a-\xA1V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1BU\x96\x95\x94\x93\x92`\x04\x01a.)V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1BlW_\x80\xFD[PZ\xF1\x15\x80\x15a\x18 W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1B\xA3Wa\x03L\x82\x82a\x1B\xC5V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a \x02V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1C\x1BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C V[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x83\x85\x03a\x1CjWP\x83a\x1C\xCFV[\x82\x82\x11a\x1C\xA3W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1C\xB1WP\x82a\x1C\xCFV[B\x83\x10a\x1C\xBFWP\x83a\x1C\xCFV[a\x1C\xCC\x83\x83B\x88\x88a \xE9V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1D5W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1DJ\x85` \x01Q\x86`@\x01Q\x86\x86a\x1C[V[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xFA`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x12$\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\\Wa\x1E\\a$\xABV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\x86W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xC9W_a\x1E\xB7\x85\x83\x81Q\x81\x10a\x1E\xAAWa\x1E\xAAa$\xD8V[` \x02` \x01\x01Qa!\x03V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\x8BV[P\x80Q` \x90\x91\x01 \x92\x91PPV[a\x1E\xE3\x84\x84\x83a!yV[a\x1F{W\x81a\x1F\x1EW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a\x1FxW_\x82\x82\x81Q\x81\x10a\x1FAWa\x1FAa$\xD8V[` \x02` \x01\x01Q\x90Pa\x1Fj\x85a'\x10a\x1F\\\x91\x90a-`V[` \x83\x01Q\x90a'\x10a!\xC3V[` \x90\x91\x01R`\x01\x01a\x1F%V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1F\xB5W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1F{W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_a \xF7\x86\x86\x86\x86\x86a\"\x05V[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/z`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x12$\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a!\x9CWP\x82\x82\x11[\x80a\x1C\xCFWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xF6W_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a\"\x14WP\x80a \xFAV[_a\"\x1F\x87\x86a.\xE3V[\x90P_a\",\x88\x88a.\xE3V[\x90P_\x85\x85\x12\x15a\"]Wa\"M\x83\x83a\"F\x88\x8Aa.\xF6V[\x91\x90a\x1F\x82V[a\"V\x90a/\x1CV[\x90Pa\"oV[a\"l\x83\x83a\"F\x89\x89a.\xF6V[\x90P[a\"y\x81\x87a/RV[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a\x0B5W_\x80\xFD[_\x80\x83`\x1F\x84\x01\x12a\"\xA6W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xBDW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\"\xEDW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x04W_\x80\xFD[a#\x10\x87\x83\x88\x01a\"\x86V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#%W_\x80\xFD[Pa#2\x86\x82\x87\x01a\"\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a#OW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#fW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"\xD4W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a#\x91W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xA7W_\x80\xFD[a#\xB3\x85\x82\x86\x01a#?V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a#\xD2W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE9W_\x80\xFD[a#\xF5\x88\x83\x89\x01a#?V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\rW_\x80\xFD[Pa$\x1A\x87\x82\x88\x01a\"\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a$R\x81a$&V[\x91\x90PV[_` \x82\x84\x03\x12\x15a$gW_\x80\xFD[\x815a$r\x81a$&V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a$\x89W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x9FW_\x80\xFD[a\x1C\xCF\x84\x82\x85\x01a\"\x86V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a%\x1FW\x81\x81\x01Q\x83\x82\x01R` \x01a%\x07V[PP_\x91\x01RV[_\x81Q\x80\x84Ra%>\x81` \x86\x01` \x86\x01a%\x05V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a%\xCEW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a%\x83V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra&La\x01\xA0\x85\x01\x82a%'V[\x90P` \x83\x01Qa&\x8A` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra&\xA2\x82\x82a%pV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra&\xBC\x82\x82a%'V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a'FW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'4\x86\x83Qa%\xD9V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a&\xFAV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'\xC8W_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\x05W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(\x1FW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"\xD4W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(VWa(Va$\xABV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\xE9Wa(\xE9a$\xABV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\0W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)\x1AWa)\x1Aa$\xABV[a)K` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(\xA2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)_W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a)\x8BW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a)\xAFWa)\xAFa$\xABV[\x81`@R\x82\x93P\x845\x91Pa)\xC3\x82a$&V[\x90\x82R` \x84\x015\x90a)\xD5\x82a$&V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa)\xFF\x82a$&V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\x18W_\x80\xFD[Pa*%\x85\x82\x86\x01a(\xF1V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a*BW_\x80\xFD[a*Ja(3V[\x90P\x815a*W\x81a$&V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*\x8EWa*\x8Ea$\xABV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a*\xA7W_\x80\xFD[\x815` a*\xBCa*\xB7\x83a*uV[a(\xA2V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a*\xDAW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a+=W`\x80\x81\x89\x03\x12\x15a*\xF5W_\x80\xFD[a*\xFDa(\\V[\x815a+\x08\x81a$&V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a++\x81a$&V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a*\xDEV[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a+XW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a+oW_\x80\xFD[\x90\x83\x01\x90a\x01 \x82\x86\x03\x12\x15a+\x83W_\x80\xFD[a+\x8Ba(\x7FV[\x825\x82\x81\x11\x15a+\x99W_\x80\xFD[a+\xA5\x87\x82\x86\x01a){V[\x82RP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+\xC8``\x84\x01a$GV[``\x82\x01R`\x80\x83\x015`\x80\x82\x01Ra+\xE4\x86`\xA0\x85\x01a*2V[`\xA0\x82\x01Ra\x01\0\x83\x015\x82\x81\x11\x15a+\xFBW_\x80\xFD[a,\x07\x87\x82\x86\x01a*\x98V[`\xC0\x83\x01RP\x95\x94PPPPPV[_\x84Qa,'\x81\x84` \x89\x01a%\x05V[\x84Q\x90\x83\x01\x90a,;\x81\x83` \x89\x01a%\x05V[\x84Q\x91\x01\x90a,N\x81\x83` \x88\x01a%\x05V[\x01\x95\x94PPPPPV[` \x81R_a$r` \x83\x01\x84a%\xD9V[_` \x80\x83\x85\x03\x12\x15a,{W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,\x91W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xA1W_\x80\xFD[\x80Qa,\xAFa*\xB7\x82a*uV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a,\xCDW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a-'W\x80\x85\x8A\x03\x12\x15a,\xE8W_\x80\xFD[a,\xF0a(3V[\x85Qa,\xFB\x81a$&V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa-\x14\x81a$&V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a,\xD2V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1C\xCF`@\x83\x01\x84a%\xD9V[\x7FExclusiveDutchOrder witness)\0\0\0\0\x81R_\x85Qa-\xD8\x81`\x1C\x85\x01` \x8A\x01a%\x05V[\x85Q\x90\x83\x01\x90a-\xEF\x81`\x1C\x84\x01` \x8A\x01a%\x05V[\x85Q\x91\x01\x90a.\x05\x81`\x1C\x84\x01` \x89\x01a%\x05V[\x84Q\x91\x01\x90a.\x1B\x81`\x1C\x84\x01` \x88\x01a%\x05V[\x01`\x1C\x01\x96\x95PPPPPPV[_a\x01@a.X\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra.\x99`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra.\xCE\x81\x84\x01\x86a%'V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"y\x81\x85a%'V[\x81\x81\x03\x81\x81\x11\x15a\x1F\xFCWa\x1F\xFCa-3V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a/\x15Wa/\x15a-3V[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a/LWa/La-3V[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a/qWa/qa-3V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 Su;v/\xD0\xA1\xC6\xD1\xA3B%\xB20>\x86\x1C5Ufn\x99\xF1O\xD2\xB1\xD8v\xFE\x93\x9EqdsolcC\0\x08\x18\x003", ); /**```solidity struct SignedOrder { bytes order; bytes sig; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignedOrder { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -631,10 +644,15 @@ struct SignedOrder { bytes order; bytes sig; } ```solidity error DeadlineBeforeEndTime(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DeadlineBeforeEndTime {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -690,12 +708,18 @@ error DeadlineBeforeEndTime(); ```solidity error DuplicateFeeOutput(address duplicateToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DuplicateFeeOutput { + #[allow(missing_docs)] pub duplicateToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -755,10 +779,15 @@ error DuplicateFeeOutput(address duplicateToken); ```solidity error EndTimeBeforeStartTime(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct EndTimeBeforeStartTime {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -814,14 +843,22 @@ error EndTimeBeforeStartTime(); ```solidity error FeeTooLarge(address token, uint256 amount, address recipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct FeeTooLarge { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -833,7 +870,7 @@ error FeeTooLarge(address token, uint256 amount, address recipient); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -899,10 +936,15 @@ error FeeTooLarge(address token, uint256 amount, address recipient); ```solidity error IncorrectAmounts(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IncorrectAmounts {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -958,10 +1000,15 @@ error IncorrectAmounts(); ```solidity error InputAndOutputDecay(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputDecay {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1017,10 +1064,15 @@ error InputAndOutputDecay(); ```solidity error InputAndOutputFees(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputFees {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1076,12 +1128,18 @@ error InputAndOutputFees(); ```solidity error InvalidFeeToken(address feeToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidFeeToken { + #[allow(missing_docs)] pub feeToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1141,10 +1199,15 @@ error InvalidFeeToken(address feeToken); ```solidity error InvalidReactor(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidReactor {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1200,10 +1263,15 @@ error InvalidReactor(); ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1259,10 +1327,15 @@ error NativeTransferFailed(); ```solidity error NoExclusiveOverride(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NoExclusiveOverride {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1318,7 +1391,12 @@ error NoExclusiveOverride(); ```solidity event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Fill { #[allow(missing_docs)] @@ -1328,9 +1406,14 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub nonce: alloy::sol_types::private::U256, + pub nonce: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1395,6 +1478,21 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1573,7 +1696,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ProtocolFeeControllerSet { #[allow(missing_docs)] @@ -1581,7 +1709,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle #[allow(missing_docs)] pub newFeeController: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1642,6 +1775,21 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -1693,10 +1841,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle ```solidity constructor(address _permit2, address _protocolFeeOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _permit2: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _protocolFeeOwner: alloy::sol_types::private::Address, } const _: () = { @@ -1773,16 +1923,22 @@ constructor(address _permit2, address _protocolFeeOwner); ```solidity function execute(SignedOrder memory order) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1888,18 +2044,24 @@ function execute(SignedOrder memory order) external payable; ```solidity function executeBatch(SignedOrder[] memory orders) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2013,19 +2175,26 @@ function executeBatch(SignedOrder[] memory orders) external payable; ```solidity function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2154,17 +2323,24 @@ function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory call ```solidity function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2286,16 +2462,22 @@ function executeWithCallback(SignedOrder memory order, bytes memory callbackData ```solidity function feeController() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerCall {} ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2399,16 +2581,22 @@ function feeController() external view returns (address); ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2512,16 +2700,22 @@ function owner() external view returns (address); ```solidity function permit2() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Call {} ///Container type for the return parameters of the [`permit2()`](permit2Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Return { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2625,16 +2819,22 @@ function permit2() external view returns (address); ```solidity function setProtocolFeeController(address _newFeeController) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerCall { + #[allow(missing_docs)] pub _newFeeController: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2746,16 +2946,22 @@ function setProtocolFeeController(address _newFeeController) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2865,14 +3071,23 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`ExclusiveDutchOrderReactor`](self) function calls. pub enum ExclusiveDutchOrderReactorCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] executeBatchWithCallback(executeBatchWithCallbackCall), + #[allow(missing_docs)] executeWithCallback(executeWithCallbackCall), + #[allow(missing_docs)] feeController(feeControllerCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] permit2(permit2Call), + #[allow(missing_docs)] setProtocolFeeController(setProtocolFeeControllerCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -2935,7 +3150,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3075,7 +3290,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3174,16 +3389,27 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`ExclusiveDutchOrderReactor`](self) custom errors. pub enum ExclusiveDutchOrderReactorErrors { + #[allow(missing_docs)] DeadlineBeforeEndTime(DeadlineBeforeEndTime), + #[allow(missing_docs)] DuplicateFeeOutput(DuplicateFeeOutput), + #[allow(missing_docs)] EndTimeBeforeStartTime(EndTimeBeforeStartTime), + #[allow(missing_docs)] FeeTooLarge(FeeTooLarge), + #[allow(missing_docs)] IncorrectAmounts(IncorrectAmounts), + #[allow(missing_docs)] InputAndOutputDecay(InputAndOutputDecay), + #[allow(missing_docs)] InputAndOutputFees(InputAndOutputFees), + #[allow(missing_docs)] InvalidFeeToken(InvalidFeeToken), + #[allow(missing_docs)] InvalidReactor(InvalidReactor), + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), + #[allow(missing_docs)] NoExclusiveOverride(NoExclusiveOverride), } #[automatically_derived] @@ -3260,7 +3486,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3424,7 +3650,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3558,8 +3784,11 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`ExclusiveDutchOrderReactor`](self) events. pub enum ExclusiveDutchOrderReactorEvents { + #[allow(missing_docs)] Fill(Fill), + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), + #[allow(missing_docs)] ProtocolFeeControllerSet(ProtocolFeeControllerSet), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/exclusivefillervalidation.rs b/crates/bindings-uniswapx/src/exclusivefillervalidation.rs index 8803ecb..d6ccf0a 100644 --- a/crates/bindings-uniswapx/src/exclusivefillervalidation.rs +++ b/crates/bindings-uniswapx/src/exclusivefillervalidation.rs @@ -162,41 +162,55 @@ interface ExclusiveFillerValidation { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod ExclusiveFillerValidation { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b5061028e806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636e84ba2b14610030575b600080fd5b61004361003e36600461012b565b610045565b005b6000806100528380610182565b6100609060a08101906101c0565b81019061006d919061022c565b915091504281101580156100ad57508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610100576040517f75c1bb1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240160405180910390fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461012857600080fd5b50565b6000806040838503121561013e57600080fd5b823561014981610106565b9150602083013567ffffffffffffffff81111561016557600080fd5b830160e0818603121561017757600080fd5b809150509250929050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff418336030181126101b657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126101f557600080fd5b83018035915067ffffffffffffffff82111561021057600080fd5b60200191503681900382131561022557600080fd5b9250929050565b6000806040838503121561023f57600080fd5b823561024a81610106565b94602093909301359350505056fea2646970667358221220e7c249447c55a6b98794fc2cdcd4f4700bef7fc0faa8e0555e1fd4c3758f4caa64736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b5061027d8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80636e84ba2b1461002d575b5f80fd5b61004061003b366004610126565b610042565b005b5f8061004e8380610179565b61005c9060a08101906101b5565b810190610069919061021d565b915091504281101580156100a957508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156100fc576040517f75c1bb1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240160405180910390fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610123575f80fd5b50565b5f8060408385031215610137575f80fd5b823561014281610102565b9150602083013567ffffffffffffffff81111561015d575f80fd5b830160e0818603121561016e575f80fd5b809150509250929050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff418336030181126101ab575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126101e8575f80fd5b83018035915067ffffffffffffffff821115610202575f80fd5b602001915036819003821315610216575f80fd5b9250929050565b5f806040838503121561022e575f80fd5b823561023981610102565b94602093909301359350505056fea26469706673582212203216ec9666d3da4e82d3832fe385eeb7078a68078f188175acabe6a7b147731864736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x02\x8E\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cn\x84\xBA+\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01+V[a\0EV[\0[`\0\x80a\0R\x83\x80a\x01\x82V[a\0`\x90`\xA0\x81\x01\x90a\x01\xC0V[\x81\x01\x90a\0m\x91\x90a\x02,V[\x91P\x91PB\x81\x10\x15\x80\x15a\0\xADWP\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15[\x15a\x01\0W`@Q\x7Fu\xC1\xBB\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01R`$\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01(W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01>W`\0\x80\xFD[\x825a\x01I\x81a\x01\x06V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01eW`\0\x80\xFD[\x83\x01`\xE0\x81\x86\x03\x12\x15a\x01wW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFA\x836\x03\x01\x81\x12a\x01\xB6W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x01\xF5W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x02\x10W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x02%W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02?W`\0\x80\xFD[\x825a\x02J\x81a\x01\x06V[\x94` \x93\x90\x93\x015\x93PPPV\xFE\xA2dipfsX\"\x12 \xE7\xC2ID|U\xA6\xB9\x87\x94\xFC,\xDC\xD4\xF4p\x0B\xEF\x7F\xC0\xFA\xA8\xE0U^\x1F\xD4\xC3u\x8FL\xAAdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x02}\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cn\x84\xBA+\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x01&V[a\0BV[\0[_\x80a\0N\x83\x80a\x01yV[a\0\\\x90`\xA0\x81\x01\x90a\x01\xB5V[\x81\x01\x90a\0i\x91\x90a\x02\x1DV[\x91P\x91PB\x81\x10\x15\x80\x15a\0\xA9WP\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15[\x15a\0\xFCW`@Q\x7Fu\xC1\xBB\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01R`$\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01#W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15a\x017W_\x80\xFD[\x825a\x01B\x81a\x01\x02V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01]W_\x80\xFD[\x83\x01`\xE0\x81\x86\x03\x12\x15a\x01nW_\x80\xFD[\x80\x91PP\x92P\x92\x90PV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFA\x836\x03\x01\x81\x12a\x01\xABW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x01\xE8W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x02\x02W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x02\x16W_\x80\xFD[\x92P\x92\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x02.W_\x80\xFD[\x825a\x029\x81a\x01\x02V[\x94` \x93\x90\x93\x015\x93PPPV\xFE\xA2dipfsX\"\x12 2\x16\xEC\x96f\xD3\xDAN\x82\xD3\x83/\xE3\x85\xEE\xB7\x07\x8Ah\x07\x8F\x18\x81u\xAC\xAB\xE6\xA7\xB1Gs\x18dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80636e84ba2b14610030575b600080fd5b61004361003e36600461012b565b610045565b005b6000806100528380610182565b6100609060a08101906101c0565b81019061006d919061022c565b915091504281101580156100ad57508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15610100576040517f75c1bb1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240160405180910390fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461012857600080fd5b50565b6000806040838503121561013e57600080fd5b823561014981610106565b9150602083013567ffffffffffffffff81111561016557600080fd5b830160e0818603121561017757600080fd5b809150509250929050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff418336030181126101b657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126101f557600080fd5b83018035915067ffffffffffffffff82111561021057600080fd5b60200191503681900382131561022557600080fd5b9250929050565b6000806040838503121561023f57600080fd5b823561024a81610106565b94602093909301359350505056fea2646970667358221220e7c249447c55a6b98794fc2cdcd4f4700bef7fc0faa8e0555e1fd4c3758f4caa64736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b5060043610610029575f3560e01c80636e84ba2b1461002d575b5f80fd5b61004061003b366004610126565b610042565b005b5f8061004e8380610179565b61005c9060a08101906101b5565b810190610069919061021d565b915091504281101580156100a957508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156100fc576040517f75c1bb1400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240160405180910390fd5b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610123575f80fd5b50565b5f8060408385031215610137575f80fd5b823561014281610102565b9150602083013567ffffffffffffffff81111561015d575f80fd5b830160e0818603121561016e575f80fd5b809150509250929050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff418336030181126101ab575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126101e8575f80fd5b83018035915067ffffffffffffffff821115610202575f80fd5b602001915036819003821315610216575f80fd5b9250929050565b5f806040838503121561022e575f80fd5b823561023981610102565b94602093909301359350505056fea26469706673582212203216ec9666d3da4e82d3832fe385eeb7078a68078f188175acabe6a7b147731864736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cn\x84\xBA+\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01+V[a\0EV[\0[`\0\x80a\0R\x83\x80a\x01\x82V[a\0`\x90`\xA0\x81\x01\x90a\x01\xC0V[\x81\x01\x90a\0m\x91\x90a\x02,V[\x91P\x91PB\x81\x10\x15\x80\x15a\0\xADWP\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15[\x15a\x01\0W`@Q\x7Fu\xC1\xBB\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01R`$\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01(W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15a\x01>W`\0\x80\xFD[\x825a\x01I\x81a\x01\x06V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01eW`\0\x80\xFD[\x83\x01`\xE0\x81\x86\x03\x12\x15a\x01wW`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFA\x836\x03\x01\x81\x12a\x01\xB6W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x01\xF5W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x02\x10W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x02%W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x02?W`\0\x80\xFD[\x825a\x02J\x81a\x01\x06V[\x94` \x93\x90\x93\x015\x93PPPV\xFE\xA2dipfsX\"\x12 \xE7\xC2ID|U\xA6\xB9\x87\x94\xFC,\xDC\xD4\xF4p\x0B\xEF\x7F\xC0\xFA\xA8\xE0U^\x1F\xD4\xC3u\x8FL\xAAdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cn\x84\xBA+\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x01&V[a\0BV[\0[_\x80a\0N\x83\x80a\x01yV[a\0\\\x90`\xA0\x81\x01\x90a\x01\xB5V[\x81\x01\x90a\0i\x91\x90a\x02\x1DV[\x91P\x91PB\x81\x10\x15\x80\x15a\0\xA9WP\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15[\x15a\0\xFCW`@Q\x7Fu\xC1\xBB\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01R`$\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01#W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15a\x017W_\x80\xFD[\x825a\x01B\x81a\x01\x02V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01]W_\x80\xFD[\x83\x01`\xE0\x81\x86\x03\x12\x15a\x01nW_\x80\xFD[\x80\x91PP\x92P\x92\x90PV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFA\x836\x03\x01\x81\x12a\x01\xABW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x01\xE8W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x02\x02W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x02\x16W_\x80\xFD[\x92P\x92\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x02.W_\x80\xFD[\x825a\x029\x81a\x01\x02V[\x94` \x93\x90\x93\x015\x93PPPV\xFE\xA2dipfsX\"\x12 2\x16\xEC\x96f\xD3\xDAN\x82\xD3\x83/\xE3\x85\xEE\xB7\x07\x8Ah\x07\x8F\x18\x81u\xAC\xAB\xE6\xA7\xB1Gs\x18dsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -208,8 +222,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -426,17 +440,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -452,8 +477,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -722,14 +747,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -741,7 +774,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -955,18 +988,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1244,12 +1287,18 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity error NotExclusiveFiller(address filler); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NotExclusiveFiller { + #[allow(missing_docs)] pub filler: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1309,17 +1358,24 @@ error NotExclusiveFiller(address filler); ```solidity function validate(address filler, ResolvedOrder memory resolvedOrder) external view; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct validateCall { + #[allow(missing_docs)] pub filler: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub resolvedOrder: ::RustType, } ///Container type for the return parameters of the [`validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](validateCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct validateReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1437,6 +1493,7 @@ function validate(address filler, ResolvedOrder memory resolvedOrder) external v }; ///Container for all the [`ExclusiveFillerValidation`](self) function calls. pub enum ExclusiveFillerValidationCalls { + #[allow(missing_docs)] validate(validateCall), } #[automatically_derived] @@ -1469,7 +1526,7 @@ function validate(address filler, ResolvedOrder memory resolvedOrder) external v Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1501,7 +1558,7 @@ function validate(address filler, ResolvedOrder memory resolvedOrder) external v ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -1525,6 +1582,7 @@ function validate(address filler, ResolvedOrder memory resolvedOrder) external v } ///Container for all the [`ExclusiveFillerValidation`](self) custom errors. pub enum ExclusiveFillerValidationErrors { + #[allow(missing_docs)] NotExclusiveFiller(NotExclusiveFiller), } #[automatically_derived] @@ -1559,7 +1617,7 @@ function validate(address filler, ResolvedOrder memory resolvedOrder) external v Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1591,7 +1649,7 @@ function validate(address filler, ResolvedOrder memory resolvedOrder) external v ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/exclusivitylib.rs b/crates/bindings-uniswapx/src/exclusivitylib.rs index 3c5c1b7..d956deb 100644 --- a/crates/bindings-uniswapx/src/exclusivitylib.rs +++ b/crates/bindings-uniswapx/src/exclusivitylib.rs @@ -17,38 +17,49 @@ interface ExclusivityLib { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod ExclusivityLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073946f01b56f7f70e4df97a3519f93046e773674fd713ba2e06e47c92dbc3c1764736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e388ff0a8a8efaed4f7f052af1f0b2c72766f172c5a03c7e284280c25f35118b64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 s\x94o\x01\xB5o\x7Fp\xE4\xDF\x97\xA3Q\x9F\x93\x04nw6t\xFDq;\xA2\xE0nG\xC9-\xBC<\x17dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xE3\x88\xFF\n\x8A\x8E\xFA\xEDO\x7F\x05*\xF1\xF0\xB2\xC7'f\xF1r\xC5\xA0<~(B\x80\xC2_5\x11\x8BdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073946f01b56f7f70e4df97a3519f93046e773674fd713ba2e06e47c92dbc3c1764736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e388ff0a8a8efaed4f7f052af1f0b2c72766f172c5a03c7e284280c25f35118b64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 s\x94o\x01\xB5o\x7Fp\xE4\xDF\x97\xA3Q\x9F\x93\x04nw6t\xFDq;\xA2\xE0nG\xC9-\xBC<\x17dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xE3\x88\xFF\n\x8A\x8E\xFA\xEDO\x7F\x05*\xF1\xF0\xB2\xC7'f\xF1r\xC5\xA0<~(B\x80\xC2_5\x11\x8BdsolcC\0\x08\x18\x003", ); /**Custom error with signature `NoExclusiveOverride()` and selector `0xb9ec1e96`. ```solidity error NoExclusiveOverride(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NoExclusiveOverride {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -102,6 +113,7 @@ error NoExclusiveOverride(); }; ///Container for all the [`ExclusivityLib`](self) custom errors. pub enum ExclusivityLibErrors { + #[allow(missing_docs)] NoExclusiveOverride(NoExclusiveOverride), } #[automatically_derived] @@ -136,7 +148,7 @@ error NoExclusiveOverride(); Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -168,7 +180,7 @@ error NoExclusiveOverride(); ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/fixedpointmathlib.rs b/crates/bindings-uniswapx/src/fixedpointmathlib.rs index 13502fb..8f8aca7 100644 --- a/crates/bindings-uniswapx/src/fixedpointmathlib.rs +++ b/crates/bindings-uniswapx/src/fixedpointmathlib.rs @@ -9,29 +9,35 @@ interface FixedPointMathLib {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod FixedPointMathLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202f137169cfb7ec8d0848db0525978fc7f73bfd9f7972e81e33eab5d46eabf1ac64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220d02856471de08da521af12a4bf4ec919b5d3d05504922a0fdb5daa7b79c4628464736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 /\x13qi\xCF\xB7\xEC\x8D\x08H\xDB\x05%\x97\x8F\xC7\xF7;\xFD\x9Fyr\xE8\x1E3\xEA\xB5\xD4n\xAB\xF1\xACdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xD0(VG\x1D\xE0\x8D\xA5!\xAF\x12\xA4\xBFN\xC9\x19\xB5\xD3\xD0U\x04\x92*\x0F\xDB]\xAA{y\xC4b\x84dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202f137169cfb7ec8d0848db0525978fc7f73bfd9f7972e81e33eab5d46eabf1ac64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220d02856471de08da521af12a4bf4ec919b5d3d05504922a0fdb5daa7b79c4628464736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 /\x13qi\xCF\xB7\xEC\x8D\x08H\xDB\x05%\x97\x8F\xC7\xF7;\xFD\x9Fyr\xE8\x1E3\xEA\xB5\xD4n\xAB\xF1\xACdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xD0(VG\x1D\xE0\x8D\xA5!\xAF\x12\xA4\xBFN\xC9\x19\xB5\xD3\xD0U\x04\x92*\x0F\xDB]\xAA{y\xC4b\x84dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`FixedPointMathLib`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/iallowancetransfer.rs b/crates/bindings-uniswapx/src/iallowancetransfer.rs index 52ce8af..98850d2 100644 --- a/crates/bindings-uniswapx/src/iallowancetransfer.rs +++ b/crates/bindings-uniswapx/src/iallowancetransfer.rs @@ -540,7 +540,13 @@ interface IAllowanceTransfer { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IAllowanceTransfer { use super::*; use alloy::sol_types as alloy_sol_types; @@ -567,17 +573,24 @@ pub mod IAllowanceTransfer { /**```solidity struct AllowanceTransferDetails { address from; address to; uint160 amount; address token; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct AllowanceTransferDetails { + #[allow(missing_docs)] pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U160, + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -591,9 +604,7 @@ struct AllowanceTransferDetails { address from; address to; uint160 amount; addr type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U160, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -824,16 +835,24 @@ struct AllowanceTransferDetails { address from; address to; uint160 amount; addr /**```solidity struct PermitBatch { PermitDetails[] details; address spender; uint256 sigDeadline; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct PermitBatch { + #[allow(missing_docs)] pub details: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub sigDeadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub sigDeadline: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -848,7 +867,7 @@ struct PermitBatch { PermitDetails[] details; address spender; uint256 sigDeadli ::RustType, >, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1070,21 +1089,24 @@ struct PermitBatch { PermitDetails[] details; address spender; uint256 sigDeadli /**```solidity struct PermitDetails { address token; uint160 amount; uint48 expiration; uint48 nonce; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct PermitDetails { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: as alloy::sol_types::SolType>::RustType, - pub expiration: as alloy::sol_types::SolType>::RustType, - pub nonce: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U160, + #[allow(missing_docs)] + pub expiration: alloy::sol_types::private::primitives::aliases::U48, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U48, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1097,13 +1119,9 @@ struct PermitDetails { address token; uint160 amount; uint48 expiration; uint48 #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - as alloy::sol_types::SolType>::RustType, - as alloy::sol_types::SolType>::RustType, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U160, + alloy::sol_types::private::primitives::aliases::U48, + alloy::sol_types::private::primitives::aliases::U48, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1337,14 +1355,22 @@ struct PermitDetails { address token; uint160 amount; uint48 expiration; uint48 /**```solidity struct PermitSingle { PermitDetails details; address spender; uint256 sigDeadline; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct PermitSingle { + #[allow(missing_docs)] pub details: ::RustType, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub sigDeadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub sigDeadline: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1357,7 +1383,7 @@ struct PermitSingle { PermitDetails details; address spender; uint256 sigDeadlin type UnderlyingRustTuple<'a> = ( ::RustType, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1573,13 +1599,20 @@ struct PermitSingle { PermitDetails details; address spender; uint256 sigDeadlin /**```solidity struct TokenSpenderPair { address token; address spender; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct TokenSpenderPair { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1785,18 +1818,26 @@ struct TokenSpenderPair { address token; address spender; } ```solidity error AllowanceExpired(uint256 deadline); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct AllowanceExpired { - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1850,10 +1891,15 @@ error AllowanceExpired(uint256 deadline); ```solidity error ExcessiveInvalidation(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ExcessiveInvalidation {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1909,18 +1955,26 @@ error ExcessiveInvalidation(); ```solidity error InsufficientAllowance(uint256 amount); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InsufficientAllowance { - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1974,7 +2028,12 @@ error InsufficientAllowance(uint256 amount); ```solidity event Approval(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -1984,15 +2043,16 @@ event Approval(address indexed owner, address indexed token, address indexed spe #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub amount: as alloy::sol_types::SolType>::RustType, + pub amount: alloy::sol_types::private::primitives::aliases::U160, #[allow(missing_docs)] - pub expiration: as alloy::sol_types::SolType>::RustType, + pub expiration: alloy::sol_types::private::primitives::aliases::U48, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2061,6 +2121,21 @@ event Approval(address indexed owner, address indexed token, address indexed spe } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -2251,7 +2351,12 @@ event Lockdown(address indexed owner, address token, address spender); ```solidity event NonceInvalidation(address indexed owner, address indexed token, address indexed spender, uint48 newNonce, uint48 oldNonce); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct NonceInvalidation { #[allow(missing_docs)] @@ -2261,15 +2366,16 @@ event NonceInvalidation(address indexed owner, address indexed token, address in #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub newNonce: as alloy::sol_types::SolType>::RustType, + pub newNonce: alloy::sol_types::private::primitives::aliases::U48, #[allow(missing_docs)] - pub oldNonce: as alloy::sol_types::SolType>::RustType, + pub oldNonce: alloy::sol_types::private::primitives::aliases::U48, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2338,6 +2444,21 @@ event NonceInvalidation(address indexed owner, address indexed token, address in } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( as alloy::sol_types::SolType>::RustType, + pub amount: alloy::sol_types::private::primitives::aliases::U160, #[allow(missing_docs)] - pub expiration: as alloy::sol_types::SolType>::RustType, + pub expiration: alloy::sol_types::private::primitives::aliases::U48, #[allow(missing_docs)] - pub nonce: as alloy::sol_types::SolType>::RustType, + pub nonce: alloy::sol_types::private::primitives::aliases::U48, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2494,6 +2619,21 @@ event Permit(address indexed owner, address indexed token, address indexed spend } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( , } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2677,28 +2823,33 @@ function DOMAIN_SEPARATOR() external view returns (bytes32); ```solidity function allowance(address user, address token, address spender) external view returns (uint160 amount, uint48 expiration, uint48 nonce); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceCall { + #[allow(missing_docs)] pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`allowance(address,address,address)`](allowanceCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceReturn { - pub amount: as alloy::sol_types::SolType>::RustType, - pub expiration: as alloy::sol_types::SolType>::RustType, - pub nonce: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U160, + #[allow(missing_docs)] + pub expiration: alloy::sol_types::private::primitives::aliases::U48, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U48, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2753,15 +2904,9 @@ function allowance(address user, address token, address spender) external view r ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - as alloy::sol_types::SolType>::RustType, - as alloy::sol_types::SolType>::RustType, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U160, + alloy::sol_types::private::primitives::aliases::U48, + alloy::sol_types::private::primitives::aliases::U48, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2850,23 +2995,28 @@ function allowance(address user, address token, address spender) external view r ```solidity function approve(address token, address spender, uint160 amount, uint48 expiration) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveCall { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub amount: as alloy::sol_types::SolType>::RustType, - pub expiration: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U160, + #[allow(missing_docs)] + pub expiration: alloy::sol_types::private::primitives::aliases::U48, } ///Container type for the return parameters of the [`approve(address,address,uint160,uint48)`](approveCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2881,12 +3031,8 @@ function approve(address token, address spender, uint160 amount, uint48 expirati type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - as alloy::sol_types::SolType>::RustType, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U160, + alloy::sol_types::private::primitives::aliases::U48, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -3007,20 +3153,26 @@ function approve(address token, address spender, uint160 amount, uint48 expirati ```solidity function invalidateNonces(address token, address spender, uint48 newNonce) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct invalidateNoncesCall { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub newNonce: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub newNonce: alloy::sol_types::private::primitives::aliases::U48, } ///Container type for the return parameters of the [`invalidateNonces(address,address,uint48)`](invalidateNoncesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct invalidateNoncesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3034,9 +3186,7 @@ function invalidateNonces(address token, address spender, uint48 newNonce) exter type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U48, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -3156,18 +3306,24 @@ function invalidateNonces(address token, address spender, uint48 newNonce) exter ```solidity function lockdown(TokenSpenderPair[] memory approvals) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct lockdownCall { + #[allow(missing_docs)] pub approvals: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`lockdown((address,address)[])`](lockdownCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct lockdownReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3281,18 +3437,26 @@ function lockdown(TokenSpenderPair[] memory approvals) external; ```solidity function permit(address owner, PermitBatch memory permitBatch, bytes memory signature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit_0Call { + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub permitBatch: ::RustType, + #[allow(missing_docs)] pub signature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)`](permit_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3422,18 +3586,26 @@ function permit(address owner, PermitBatch memory permitBatch, bytes memory sign ```solidity function permit(address owner, PermitSingle memory permitSingle, bytes memory signature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit_1Call { + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub permitSingle: ::RustType, + #[allow(missing_docs)] pub signature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)`](permit_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3563,18 +3735,24 @@ function permit(address owner, PermitSingle memory permitSingle, bytes memory si ```solidity function transferFrom(AllowanceTransferDetails[] memory transferDetails) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFrom_0Call { + #[allow(missing_docs)] pub transferDetails: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`transferFrom((address,address,uint160,address)[])`](transferFrom_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3692,21 +3870,28 @@ function transferFrom(AllowanceTransferDetails[] memory transferDetails) externa ```solidity function transferFrom(address from, address to, uint160 amount, address token) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFrom_1Call { + #[allow(missing_docs)] pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U160, + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferFrom(address,address,uint160,address)`](transferFrom_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3721,9 +3906,7 @@ function transferFrom(address from, address to, uint160 amount, address token) e type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U160, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -3845,14 +4028,23 @@ function transferFrom(address from, address to, uint160 amount, address token) e }; ///Container for all the [`IAllowanceTransfer`](self) function calls. pub enum IAllowanceTransferCalls { + #[allow(missing_docs)] DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + #[allow(missing_docs)] allowance(allowanceCall), + #[allow(missing_docs)] approve(approveCall), + #[allow(missing_docs)] invalidateNonces(invalidateNoncesCall), + #[allow(missing_docs)] lockdown(lockdownCall), + #[allow(missing_docs)] permit_0(permit_0Call), + #[allow(missing_docs)] permit_1(permit_1Call), + #[allow(missing_docs)] transferFrom_0(transferFrom_0Call), + #[allow(missing_docs)] transferFrom_1(transferFrom_1Call), } #[automatically_derived] @@ -3913,7 +4105,7 @@ function transferFrom(address from, address to, uint160 amount, address token) e Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -4049,7 +4241,7 @@ function transferFrom(address from, address to, uint160 amount, address token) e ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -4150,8 +4342,11 @@ function transferFrom(address from, address to, uint160 amount, address token) e } ///Container for all the [`IAllowanceTransfer`](self) custom errors. pub enum IAllowanceTransferErrors { + #[allow(missing_docs)] AllowanceExpired(AllowanceExpired), + #[allow(missing_docs)] ExcessiveInvalidation(ExcessiveInvalidation), + #[allow(missing_docs)] InsufficientAllowance(InsufficientAllowance), } #[automatically_derived] @@ -4196,7 +4391,7 @@ function transferFrom(address from, address to, uint160 amount, address token) e Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -4254,7 +4449,7 @@ function transferFrom(address from, address to, uint160 amount, address token) e ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -4302,9 +4497,13 @@ function transferFrom(address from, address to, uint160 amount, address token) e } ///Container for all the [`IAllowanceTransfer`](self) events. pub enum IAllowanceTransferEvents { + #[allow(missing_docs)] Approval(Approval), + #[allow(missing_docs)] Lockdown(Lockdown), + #[allow(missing_docs)] NonceInvalidation(NonceInvalidation), + #[allow(missing_docs)] Permit(Permit), } #[automatically_derived] @@ -4737,12 +4936,8 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, token: alloy::sol_types::private::Address, spender: alloy::sol_types::private::Address, - amount: as alloy::sol_types::SolType>::RustType, - expiration: as alloy::sol_types::SolType>::RustType, + amount: alloy::sol_types::private::primitives::aliases::U160, + expiration: alloy::sol_types::private::primitives::aliases::U48, ) -> alloy_contract::SolCallBuilder { self.call_builder( &approveCall { @@ -4758,9 +4953,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, token: alloy::sol_types::private::Address, spender: alloy::sol_types::private::Address, - newNonce: as alloy::sol_types::SolType>::RustType, + newNonce: alloy::sol_types::private::primitives::aliases::U48, ) -> alloy_contract::SolCallBuilder { self.call_builder( &invalidateNoncesCall { @@ -4827,9 +5020,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, from: alloy::sol_types::private::Address, to: alloy::sol_types::private::Address, - amount: as alloy::sol_types::SolType>::RustType, + amount: alloy::sol_types::private::primitives::aliases::U160, token: alloy::sol_types::private::Address, ) -> alloy_contract::SolCallBuilder { self.call_builder( diff --git a/crates/bindings-uniswapx/src/iarbsys.rs b/crates/bindings-uniswapx/src/iarbsys.rs index 7fd69ff..08442a2 100644 --- a/crates/bindings-uniswapx/src/iarbsys.rs +++ b/crates/bindings-uniswapx/src/iarbsys.rs @@ -25,7 +25,13 @@ interface IArbSys { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IArbSys { use super::*; use alloy::sol_types as alloy_sol_types; @@ -53,16 +59,22 @@ pub mod IArbSys { ```solidity function arbBlockNumber() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct arbBlockNumberCall {} ///Container type for the return parameters of the [`arbBlockNumber()`](arbBlockNumberCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct arbBlockNumberReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -100,7 +112,9 @@ function arbBlockNumber() external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -166,6 +180,7 @@ function arbBlockNumber() external view returns (uint256); }; ///Container for all the [`IArbSys`](self) function calls. pub enum IArbSysCalls { + #[allow(missing_docs)] arbBlockNumber(arbBlockNumberCall), } #[automatically_derived] @@ -200,7 +215,7 @@ function arbBlockNumber() external view returns (uint256); Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -232,7 +247,7 @@ function arbBlockNumber() external view returns (uint256); ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/ieip712.rs b/crates/bindings-uniswapx/src/ieip712.rs index 463c069..4961a4d 100644 --- a/crates/bindings-uniswapx/src/ieip712.rs +++ b/crates/bindings-uniswapx/src/ieip712.rs @@ -25,7 +25,13 @@ interface IEIP712 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IEIP712 { use super::*; use alloy::sol_types as alloy_sol_types; @@ -53,16 +59,22 @@ pub mod IEIP712 { ```solidity function DOMAIN_SEPARATOR() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DOMAIN_SEPARATORCall {} ///Container type for the return parameters of the [`DOMAIN_SEPARATOR()`](DOMAIN_SEPARATORCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DOMAIN_SEPARATORReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -168,6 +180,7 @@ function DOMAIN_SEPARATOR() external view returns (bytes32); }; ///Container for all the [`IEIP712`](self) function calls. pub enum IEIP712Calls { + #[allow(missing_docs)] DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), } #[automatically_derived] @@ -202,7 +215,7 @@ function DOMAIN_SEPARATOR() external view returns (bytes32); Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -234,7 +247,7 @@ function DOMAIN_SEPARATOR() external view returns (bytes32); ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/ierc165.rs b/crates/bindings-uniswapx/src/ierc165.rs index d9583bc..8f9ce37 100644 --- a/crates/bindings-uniswapx/src/ierc165.rs +++ b/crates/bindings-uniswapx/src/ierc165.rs @@ -31,7 +31,13 @@ interface IERC165 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IERC165 { use super::*; use alloy::sol_types as alloy_sol_types; @@ -59,18 +65,25 @@ pub mod IERC165 { ```solidity function supportsInterface(bytes4 interfaceID) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceCall { + #[allow(missing_docs)] pub interfaceID: alloy::sol_types::private::FixedBytes<4>, } ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -180,6 +193,7 @@ function supportsInterface(bytes4 interfaceID) external view returns (bool); }; ///Container for all the [`IERC165`](self) function calls. pub enum IERC165Calls { + #[allow(missing_docs)] supportsInterface(supportsInterfaceCall), } #[automatically_derived] @@ -214,7 +228,7 @@ function supportsInterface(bytes4 interfaceID) external view returns (bool); Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -246,7 +260,7 @@ function supportsInterface(bytes4 interfaceID) external view returns (bool); ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/ierc20.rs b/crates/bindings-uniswapx/src/ierc20.rs index 3a3ac36..8e14887 100644 --- a/crates/bindings-uniswapx/src/ierc20.rs +++ b/crates/bindings-uniswapx/src/ierc20.rs @@ -245,7 +245,13 @@ interface IERC20 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IERC20 { use super::*; use alloy::sol_types as alloy_sol_types; @@ -273,7 +279,12 @@ pub mod IERC20 { ```solidity event Approval(address indexed owner, address indexed spender, uint256 value); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -281,9 +292,14 @@ event Approval(address indexed owner, address indexed spender, uint256 value); #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub value: alloy::sol_types::private::U256, + pub value: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -346,6 +362,21 @@ event Approval(address indexed owner, address indexed spender, uint256 value); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -658,19 +724,27 @@ function allowance(address owner, address spender) external view returns (uint25 ```solidity function approve(address spender, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveCall { + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -682,7 +756,7 @@ function approve(address spender, uint256 amount) external returns (bool); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -793,18 +867,25 @@ function approve(address spender, uint256 amount) external returns (bool); ```solidity function balanceOf(address account) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfCall { + #[allow(missing_docs)] pub account: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -842,7 +923,9 @@ function balanceOf(address account) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -912,16 +995,22 @@ function balanceOf(address account) external view returns (uint256); ```solidity function decimals() external view returns (uint8); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsCall {} ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsReturn { + #[allow(missing_docs)] pub _0: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1025,16 +1114,22 @@ function decimals() external view returns (uint8); ```solidity function name() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameCall {} ///Container type for the return parameters of the [`name()`](nameCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1138,16 +1233,22 @@ function name() external view returns (string memory); ```solidity function symbol() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolCall {} ///Container type for the return parameters of the [`symbol()`](symbolCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1251,16 +1352,22 @@ function symbol() external view returns (string memory); ```solidity function totalSupply() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyCall {} ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1298,7 +1405,9 @@ function totalSupply() external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1364,19 +1473,27 @@ function totalSupply() external view returns (uint256); ```solidity function transfer(address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferCall { + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`transfer(address,uint256)`](transferCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1388,7 +1505,7 @@ function transfer(address to, uint256 amount) external returns (bool); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1499,20 +1616,29 @@ function transfer(address to, uint256 amount) external returns (bool); ```solidity function transferFrom(address from, address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { + #[allow(missing_docs)] pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1526,7 +1652,7 @@ function transferFrom(address from, address to, uint256 amount) external returns type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1640,14 +1766,23 @@ function transferFrom(address from, address to, uint256 amount) external returns }; ///Container for all the [`IERC20`](self) function calls. pub enum IERC20Calls { + #[allow(missing_docs)] allowance(allowanceCall), + #[allow(missing_docs)] approve(approveCall), + #[allow(missing_docs)] balanceOf(balanceOfCall), + #[allow(missing_docs)] decimals(decimalsCall), + #[allow(missing_docs)] name(nameCall), + #[allow(missing_docs)] symbol(symbolCall), + #[allow(missing_docs)] totalSupply(totalSupplyCall), + #[allow(missing_docs)] transfer(transferCall), + #[allow(missing_docs)] transferFrom(transferFromCall), } #[automatically_derived] @@ -1706,7 +1841,7 @@ function transferFrom(address from, address to, uint256 amount) external returns Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1842,7 +1977,7 @@ function transferFrom(address from, address to, uint256 amount) external returns ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -1933,7 +2068,9 @@ function transferFrom(address from, address to, uint256 amount) external returns } ///Container for all the [`IERC20`](self) events. pub enum IERC20Events { + #[allow(missing_docs)] Approval(Approval), + #[allow(missing_docs)] Transfer(Transfer), } #[automatically_derived] @@ -2254,7 +2391,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn approve( &self, spender: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&approveCall { spender, amount }) } @@ -2289,7 +2426,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn transfer( &self, to: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&transferCall { to, amount }) } @@ -2298,7 +2435,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, from: alloy::sol_types::private::Address, to: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &transferFromCall { diff --git a/crates/bindings-uniswapx/src/ierc5267.rs b/crates/bindings-uniswapx/src/ierc5267.rs index 87025f3..94b95ef 100644 --- a/crates/bindings-uniswapx/src/ierc5267.rs +++ b/crates/bindings-uniswapx/src/ierc5267.rs @@ -63,7 +63,13 @@ interface IERC5267 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IERC5267 { use super::*; use alloy::sol_types as alloy_sol_types; @@ -91,10 +97,20 @@ pub mod IERC5267 { ```solidity event EIP712DomainChanged(); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct EIP712DomainChanged {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -149,6 +165,21 @@ event EIP712DomainChanged(); Self {} } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -191,22 +222,36 @@ event EIP712DomainChanged(); ```solidity function eip712Domain() external view returns (bytes1 fields, string memory name, string memory version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] memory extensions); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct eip712DomainCall {} ///Container type for the return parameters of the [`eip712Domain()`](eip712DomainCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct eip712DomainReturn { + #[allow(missing_docs)] pub fields: alloy::sol_types::private::FixedBytes<1>, + #[allow(missing_docs)] pub name: alloy::sol_types::private::String, + #[allow(missing_docs)] pub version: alloy::sol_types::private::String, - pub chainId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub chainId: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub verifyingContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub salt: alloy::sol_types::private::FixedBytes<32>, - pub extensions: alloy::sol_types::private::Vec, + #[allow(missing_docs)] + pub extensions: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -256,10 +301,12 @@ function eip712Domain() external view returns (bytes1 fields, string memory name alloy::sol_types::private::FixedBytes<1>, alloy::sol_types::private::String, alloy::sol_types::private::String, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::FixedBytes<32>, - alloy::sol_types::private::Vec, + alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -348,6 +395,7 @@ function eip712Domain() external view returns (bytes1 fields, string memory name }; ///Container for all the [`IERC5267`](self) function calls. pub enum IERC5267Calls { + #[allow(missing_docs)] eip712Domain(eip712DomainCall), } #[automatically_derived] @@ -382,7 +430,7 @@ function eip712Domain() external view returns (bytes1 fields, string memory name Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -414,7 +462,7 @@ function eip712Domain() external view returns (bytes1 fields, string memory name ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -440,6 +488,7 @@ function eip712Domain() external view returns (bytes1 fields, string memory name } ///Container for all the [`IERC5267`](self) events. pub enum IERC5267Events { + #[allow(missing_docs)] EIP712DomainChanged(EIP712DomainChanged), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/ierc721.rs b/crates/bindings-uniswapx/src/ierc721.rs index eaa2c19..9be461b 100644 --- a/crates/bindings-uniswapx/src/ierc721.rs +++ b/crates/bindings-uniswapx/src/ierc721.rs @@ -310,7 +310,13 @@ interface IERC721 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IERC721 { use super::*; use alloy::sol_types as alloy_sol_types; @@ -338,7 +344,12 @@ pub mod IERC721 { ```solidity event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -346,9 +357,14 @@ event Approval(address indexed _owner, address indexed _approved, uint256 indexe #[allow(missing_docs)] pub _approved: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub _tokenId: alloy::sol_types::private::U256, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -412,6 +428,21 @@ event Approval(address indexed _owner, address indexed _approved, uint256 indexe } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -468,7 +499,12 @@ event Approval(address indexed _owner, address indexed _approved, uint256 indexe ```solidity event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ApprovalForAll { #[allow(missing_docs)] @@ -478,7 +514,12 @@ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _ap #[allow(missing_docs)] pub _approved: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -541,6 +582,21 @@ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _ap } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -597,7 +653,12 @@ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _ap ```solidity event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Transfer { #[allow(missing_docs)] @@ -605,9 +666,14 @@ event Transfer(address indexed _from, address indexed _to, uint256 indexed _toke #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub _tokenId: alloy::sol_types::private::U256, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -671,6 +737,21 @@ event Transfer(address indexed _from, address indexed _to, uint256 indexed _toke } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -727,17 +808,24 @@ event Transfer(address indexed _from, address indexed _to, uint256 indexed _toke ```solidity function approve(address _approved, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveCall { + #[allow(missing_docs)] pub _approved: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -749,7 +837,7 @@ function approve(address _approved, uint256 _tokenId) external payable; #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -860,18 +948,25 @@ function approve(address _approved, uint256 _tokenId) external payable; ```solidity function balanceOf(address _owner) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfCall { + #[allow(missing_docs)] pub _owner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -909,7 +1004,9 @@ function balanceOf(address _owner) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -979,25 +1076,34 @@ function balanceOf(address _owner) external view returns (uint256); ```solidity function getApproved(uint256 _tokenId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApprovedCall { - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`getApproved(uint256)`](getApprovedCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApprovedReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1098,19 +1204,27 @@ function getApproved(uint256 _tokenId) external view returns (address); ```solidity function isApprovedForAll(address _owner, address _operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isApprovedForAllCall { + #[allow(missing_docs)] pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _operator: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`isApprovedForAll(address,address)`](isApprovedForAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isApprovedForAllReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1237,25 +1351,34 @@ function isApprovedForAll(address _owner, address _operator) external view retur ```solidity function ownerOf(uint256 _tokenId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerOfCall { - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`ownerOf(uint256)`](ownerOfCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerOfReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1356,18 +1479,26 @@ function ownerOf(uint256 _tokenId) external view returns (address); ```solidity function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Call { + #[allow(missing_docs)] pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256)`](safeTransferFrom_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1381,7 +1512,7 @@ function safeTransferFrom(address _from, address _to, uint256 _tokenId) external type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1501,19 +1632,28 @@ function safeTransferFrom(address _from, address _to, uint256 _tokenId) external ```solidity function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Call { + #[allow(missing_docs)] pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub data: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256,bytes)`](safeTransferFrom_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1528,7 +1668,7 @@ function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes me type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Bytes, ); #[cfg(test)] @@ -1654,17 +1794,24 @@ function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes me ```solidity function setApprovalForAll(address _operator, bool _approved) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setApprovalForAllCall { + #[allow(missing_docs)] pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _approved: bool, } ///Container type for the return parameters of the [`setApprovalForAll(address,bool)`](setApprovalForAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setApprovalForAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1788,18 +1935,25 @@ function setApprovalForAll(address _operator, bool _approved) external; ```solidity function supportsInterface(bytes4 interfaceID) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceCall { + #[allow(missing_docs)] pub interfaceID: alloy::sol_types::private::FixedBytes<4>, } ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1911,18 +2065,26 @@ function supportsInterface(bytes4 interfaceID) external view returns (bool); ```solidity function transferFrom(address _from, address _to, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { + #[allow(missing_docs)] pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1936,7 +2098,7 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2050,15 +2212,25 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay }; ///Container for all the [`IERC721`](self) function calls. pub enum IERC721Calls { + #[allow(missing_docs)] approve(approveCall), + #[allow(missing_docs)] balanceOf(balanceOfCall), + #[allow(missing_docs)] getApproved(getApprovedCall), + #[allow(missing_docs)] isApprovedForAll(isApprovedForAllCall), + #[allow(missing_docs)] ownerOf(ownerOfCall), + #[allow(missing_docs)] safeTransferFrom_0(safeTransferFrom_0Call), + #[allow(missing_docs)] safeTransferFrom_1(safeTransferFrom_1Call), + #[allow(missing_docs)] setApprovalForAll(setApprovalForAllCall), + #[allow(missing_docs)] supportsInterface(supportsInterfaceCall), + #[allow(missing_docs)] transferFrom(transferFromCall), } #[automatically_derived] @@ -2127,7 +2299,7 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2276,7 +2448,7 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2389,8 +2561,11 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay } ///Container for all the [`IERC721`](self) events. pub enum IERC721Events { + #[allow(missing_docs)] Approval(Approval), + #[allow(missing_docs)] ApprovalForAll(ApprovalForAll), + #[allow(missing_docs)] Transfer(Transfer), } #[automatically_derived] @@ -2751,7 +2926,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn approve( &self, _approved: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&approveCall { _approved, _tokenId }) } @@ -2765,7 +2940,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`getApproved`] function. pub fn getApproved( &self, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&getApprovedCall { _tokenId }) } @@ -2785,7 +2960,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`ownerOf`] function. pub fn ownerOf( &self, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&ownerOfCall { _tokenId }) } @@ -2794,7 +2969,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, _from: alloy::sol_types::private::Address, _to: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &safeTransferFrom_0Call { @@ -2809,7 +2984,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, _from: alloy::sol_types::private::Address, _to: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, data: alloy::sol_types::private::Bytes, ) -> alloy_contract::SolCallBuilder { self.call_builder( @@ -2850,7 +3025,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, _from: alloy::sol_types::private::Address, _to: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &transferFromCall { diff --git a/crates/bindings-uniswapx/src/ierc721enumerable.rs b/crates/bindings-uniswapx/src/ierc721enumerable.rs index 174e877..9ca5a9b 100644 --- a/crates/bindings-uniswapx/src/ierc721enumerable.rs +++ b/crates/bindings-uniswapx/src/ierc721enumerable.rs @@ -369,7 +369,13 @@ interface IERC721Enumerable { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IERC721Enumerable { use super::*; use alloy::sol_types as alloy_sol_types; @@ -397,7 +403,12 @@ pub mod IERC721Enumerable { ```solidity event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -405,9 +416,14 @@ event Approval(address indexed _owner, address indexed _approved, uint256 indexe #[allow(missing_docs)] pub _approved: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub _tokenId: alloy::sol_types::private::U256, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -471,6 +487,21 @@ event Approval(address indexed _owner, address indexed _approved, uint256 indexe } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -527,7 +558,12 @@ event Approval(address indexed _owner, address indexed _approved, uint256 indexe ```solidity event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ApprovalForAll { #[allow(missing_docs)] @@ -537,7 +573,12 @@ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _ap #[allow(missing_docs)] pub _approved: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -600,6 +641,21 @@ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _ap } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -656,7 +712,12 @@ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _ap ```solidity event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Transfer { #[allow(missing_docs)] @@ -664,9 +725,14 @@ event Transfer(address indexed _from, address indexed _to, uint256 indexed _toke #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub _tokenId: alloy::sol_types::private::U256, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -730,6 +796,21 @@ event Transfer(address indexed _from, address indexed _to, uint256 indexed _toke } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -786,17 +867,24 @@ event Transfer(address indexed _from, address indexed _to, uint256 indexed _toke ```solidity function approve(address _approved, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveCall { + #[allow(missing_docs)] pub _approved: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -808,7 +896,7 @@ function approve(address _approved, uint256 _tokenId) external payable; #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -919,18 +1007,25 @@ function approve(address _approved, uint256 _tokenId) external payable; ```solidity function balanceOf(address _owner) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfCall { + #[allow(missing_docs)] pub _owner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -968,7 +1063,9 @@ function balanceOf(address _owner) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1038,25 +1135,34 @@ function balanceOf(address _owner) external view returns (uint256); ```solidity function getApproved(uint256 _tokenId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApprovedCall { - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`getApproved(uint256)`](getApprovedCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApprovedReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1157,19 +1263,27 @@ function getApproved(uint256 _tokenId) external view returns (address); ```solidity function isApprovedForAll(address _owner, address _operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isApprovedForAllCall { + #[allow(missing_docs)] pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _operator: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`isApprovedForAll(address,address)`](isApprovedForAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isApprovedForAllReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1296,25 +1410,34 @@ function isApprovedForAll(address _owner, address _operator) external view retur ```solidity function ownerOf(uint256 _tokenId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerOfCall { - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`ownerOf(uint256)`](ownerOfCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerOfReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1415,18 +1538,26 @@ function ownerOf(uint256 _tokenId) external view returns (address); ```solidity function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Call { + #[allow(missing_docs)] pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256)`](safeTransferFrom_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1440,7 +1571,7 @@ function safeTransferFrom(address _from, address _to, uint256 _tokenId) external type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1560,19 +1691,28 @@ function safeTransferFrom(address _from, address _to, uint256 _tokenId) external ```solidity function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Call { + #[allow(missing_docs)] pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub data: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256,bytes)`](safeTransferFrom_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1587,7 +1727,7 @@ function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes me type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Bytes, ); #[cfg(test)] @@ -1713,17 +1853,24 @@ function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes me ```solidity function setApprovalForAll(address _operator, bool _approved) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setApprovalForAllCall { + #[allow(missing_docs)] pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _approved: bool, } ///Container type for the return parameters of the [`setApprovalForAll(address,bool)`](setApprovalForAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setApprovalForAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1847,18 +1994,25 @@ function setApprovalForAll(address _operator, bool _approved) external; ```solidity function supportsInterface(bytes4 interfaceID) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceCall { + #[allow(missing_docs)] pub interfaceID: alloy::sol_types::private::FixedBytes<4>, } ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1970,25 +2124,34 @@ function supportsInterface(bytes4 interfaceID) external view returns (bool); ```solidity function tokenByIndex(uint256 _index) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct tokenByIndexCall { - pub _index: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _index: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`tokenByIndex(uint256)`](tokenByIndexCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct tokenByIndexReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -2019,7 +2182,9 @@ function tokenByIndex(uint256 _index) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -2089,19 +2254,27 @@ function tokenByIndex(uint256 _index) external view returns (uint256); ```solidity function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct tokenOfOwnerByIndexCall { + #[allow(missing_docs)] pub _owner: alloy::sol_types::private::Address, - pub _index: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _index: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`tokenOfOwnerByIndex(address,uint256)`](tokenOfOwnerByIndexCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct tokenOfOwnerByIndexReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2113,7 +2286,7 @@ function tokenOfOwnerByIndex(address _owner, uint256 _index) external view retur #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2150,7 +2323,9 @@ function tokenOfOwnerByIndex(address _owner, uint256 _index) external view retur #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -2228,16 +2403,22 @@ function tokenOfOwnerByIndex(address _owner, uint256 _index) external view retur ```solidity function totalSupply() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyCall {} ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2275,7 +2456,9 @@ function totalSupply() external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -2341,18 +2524,26 @@ function totalSupply() external view returns (uint256); ```solidity function transferFrom(address _from, address _to, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { + #[allow(missing_docs)] pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2366,7 +2557,7 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2480,18 +2671,31 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay }; ///Container for all the [`IERC721Enumerable`](self) function calls. pub enum IERC721EnumerableCalls { + #[allow(missing_docs)] approve(approveCall), + #[allow(missing_docs)] balanceOf(balanceOfCall), + #[allow(missing_docs)] getApproved(getApprovedCall), + #[allow(missing_docs)] isApprovedForAll(isApprovedForAllCall), + #[allow(missing_docs)] ownerOf(ownerOfCall), + #[allow(missing_docs)] safeTransferFrom_0(safeTransferFrom_0Call), + #[allow(missing_docs)] safeTransferFrom_1(safeTransferFrom_1Call), + #[allow(missing_docs)] setApprovalForAll(setApprovalForAllCall), + #[allow(missing_docs)] supportsInterface(supportsInterfaceCall), + #[allow(missing_docs)] tokenByIndex(tokenByIndexCall), + #[allow(missing_docs)] tokenOfOwnerByIndex(tokenOfOwnerByIndexCall), + #[allow(missing_docs)] totalSupply(totalSupplyCall), + #[allow(missing_docs)] transferFrom(transferFromCall), } #[automatically_derived] @@ -2572,7 +2776,7 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2760,7 +2964,7 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2906,8 +3110,11 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay } ///Container for all the [`IERC721Enumerable`](self) events. pub enum IERC721EnumerableEvents { + #[allow(missing_docs)] Approval(Approval), + #[allow(missing_docs)] ApprovalForAll(ApprovalForAll), + #[allow(missing_docs)] Transfer(Transfer), } #[automatically_derived] @@ -3268,7 +3475,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn approve( &self, _approved: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&approveCall { _approved, _tokenId }) } @@ -3282,7 +3489,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`getApproved`] function. pub fn getApproved( &self, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&getApprovedCall { _tokenId }) } @@ -3302,7 +3509,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`ownerOf`] function. pub fn ownerOf( &self, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&ownerOfCall { _tokenId }) } @@ -3311,7 +3518,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, _from: alloy::sol_types::private::Address, _to: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &safeTransferFrom_0Call { @@ -3326,7 +3533,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, _from: alloy::sol_types::private::Address, _to: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, data: alloy::sol_types::private::Bytes, ) -> alloy_contract::SolCallBuilder { self.call_builder( @@ -3365,7 +3572,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`tokenByIndex`] function. pub fn tokenByIndex( &self, - _index: alloy::sol_types::private::U256, + _index: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&tokenByIndexCall { _index }) } @@ -3373,7 +3580,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn tokenOfOwnerByIndex( &self, _owner: alloy::sol_types::private::Address, - _index: alloy::sol_types::private::U256, + _index: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &tokenOfOwnerByIndexCall { @@ -3393,7 +3600,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, _from: alloy::sol_types::private::Address, _to: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &transferFromCall { diff --git a/crates/bindings-uniswapx/src/ierc721metadata.rs b/crates/bindings-uniswapx/src/ierc721metadata.rs index f966df4..ec7854d 100644 --- a/crates/bindings-uniswapx/src/ierc721metadata.rs +++ b/crates/bindings-uniswapx/src/ierc721metadata.rs @@ -358,7 +358,13 @@ interface IERC721Metadata { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IERC721Metadata { use super::*; use alloy::sol_types as alloy_sol_types; @@ -386,7 +392,12 @@ pub mod IERC721Metadata { ```solidity event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -394,9 +405,14 @@ event Approval(address indexed _owner, address indexed _approved, uint256 indexe #[allow(missing_docs)] pub _approved: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub _tokenId: alloy::sol_types::private::U256, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -460,6 +476,21 @@ event Approval(address indexed _owner, address indexed _approved, uint256 indexe } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -516,7 +547,12 @@ event Approval(address indexed _owner, address indexed _approved, uint256 indexe ```solidity event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ApprovalForAll { #[allow(missing_docs)] @@ -526,7 +562,12 @@ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _ap #[allow(missing_docs)] pub _approved: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -589,6 +630,21 @@ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _ap } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -645,7 +701,12 @@ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _ap ```solidity event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Transfer { #[allow(missing_docs)] @@ -653,9 +714,14 @@ event Transfer(address indexed _from, address indexed _to, uint256 indexed _toke #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub _tokenId: alloy::sol_types::private::U256, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -719,6 +785,21 @@ event Transfer(address indexed _from, address indexed _to, uint256 indexed _toke } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -775,17 +856,24 @@ event Transfer(address indexed _from, address indexed _to, uint256 indexed _toke ```solidity function approve(address _approved, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveCall { + #[allow(missing_docs)] pub _approved: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -797,7 +885,7 @@ function approve(address _approved, uint256 _tokenId) external payable; #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -908,18 +996,25 @@ function approve(address _approved, uint256 _tokenId) external payable; ```solidity function balanceOf(address _owner) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfCall { + #[allow(missing_docs)] pub _owner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -957,7 +1052,9 @@ function balanceOf(address _owner) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1027,25 +1124,34 @@ function balanceOf(address _owner) external view returns (uint256); ```solidity function getApproved(uint256 _tokenId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApprovedCall { - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`getApproved(uint256)`](getApprovedCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApprovedReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1146,19 +1252,27 @@ function getApproved(uint256 _tokenId) external view returns (address); ```solidity function isApprovedForAll(address _owner, address _operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isApprovedForAllCall { + #[allow(missing_docs)] pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _operator: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`isApprovedForAll(address,address)`](isApprovedForAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isApprovedForAllReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1285,16 +1399,22 @@ function isApprovedForAll(address _owner, address _operator) external view retur ```solidity function name() external view returns (string memory _name); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameCall {} ///Container type for the return parameters of the [`name()`](nameCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameReturn { + #[allow(missing_docs)] pub _name: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1398,25 +1518,34 @@ function name() external view returns (string memory _name); ```solidity function ownerOf(uint256 _tokenId) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerOfCall { - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`ownerOf(uint256)`](ownerOfCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerOfReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1517,18 +1646,26 @@ function ownerOf(uint256 _tokenId) external view returns (address); ```solidity function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Call { + #[allow(missing_docs)] pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256)`](safeTransferFrom_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1542,7 +1679,7 @@ function safeTransferFrom(address _from, address _to, uint256 _tokenId) external type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1662,19 +1799,28 @@ function safeTransferFrom(address _from, address _to, uint256 _tokenId) external ```solidity function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Call { + #[allow(missing_docs)] pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub data: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256,bytes)`](safeTransferFrom_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1689,7 +1835,7 @@ function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes me type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Bytes, ); #[cfg(test)] @@ -1815,17 +1961,24 @@ function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes me ```solidity function setApprovalForAll(address _operator, bool _approved) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setApprovalForAllCall { + #[allow(missing_docs)] pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _approved: bool, } ///Container type for the return parameters of the [`setApprovalForAll(address,bool)`](setApprovalForAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setApprovalForAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1949,18 +2102,25 @@ function setApprovalForAll(address _operator, bool _approved) external; ```solidity function supportsInterface(bytes4 interfaceID) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceCall { + #[allow(missing_docs)] pub interfaceID: alloy::sol_types::private::FixedBytes<4>, } ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2072,16 +2232,22 @@ function supportsInterface(bytes4 interfaceID) external view returns (bool); ```solidity function symbol() external view returns (string memory _symbol); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolCall {} ///Container type for the return parameters of the [`symbol()`](symbolCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolReturn { + #[allow(missing_docs)] pub _symbol: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2185,25 +2351,34 @@ function symbol() external view returns (string memory _symbol); ```solidity function tokenURI(uint256 _tokenId) external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct tokenURICall { - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`tokenURI(uint256)`](tokenURICall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct tokenURIReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -2304,18 +2479,26 @@ function tokenURI(uint256 _tokenId) external view returns (string memory); ```solidity function transferFrom(address _from, address _to, uint256 _tokenId) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { + #[allow(missing_docs)] pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2329,7 +2512,7 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2443,18 +2626,31 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay }; ///Container for all the [`IERC721Metadata`](self) function calls. pub enum IERC721MetadataCalls { + #[allow(missing_docs)] approve(approveCall), + #[allow(missing_docs)] balanceOf(balanceOfCall), + #[allow(missing_docs)] getApproved(getApprovedCall), + #[allow(missing_docs)] isApprovedForAll(isApprovedForAllCall), + #[allow(missing_docs)] name(nameCall), + #[allow(missing_docs)] ownerOf(ownerOfCall), + #[allow(missing_docs)] safeTransferFrom_0(safeTransferFrom_0Call), + #[allow(missing_docs)] safeTransferFrom_1(safeTransferFrom_1Call), + #[allow(missing_docs)] setApprovalForAll(setApprovalForAllCall), + #[allow(missing_docs)] supportsInterface(supportsInterfaceCall), + #[allow(missing_docs)] symbol(symbolCall), + #[allow(missing_docs)] tokenURI(tokenURICall), + #[allow(missing_docs)] transferFrom(transferFromCall), } #[automatically_derived] @@ -2529,7 +2725,7 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2717,7 +2913,7 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2851,8 +3047,11 @@ function transferFrom(address _from, address _to, uint256 _tokenId) external pay } ///Container for all the [`IERC721Metadata`](self) events. pub enum IERC721MetadataEvents { + #[allow(missing_docs)] Approval(Approval), + #[allow(missing_docs)] ApprovalForAll(ApprovalForAll), + #[allow(missing_docs)] Transfer(Transfer), } #[automatically_derived] @@ -3213,7 +3412,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn approve( &self, _approved: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&approveCall { _approved, _tokenId }) } @@ -3227,7 +3426,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`getApproved`] function. pub fn getApproved( &self, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&getApprovedCall { _tokenId }) } @@ -3251,7 +3450,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`ownerOf`] function. pub fn ownerOf( &self, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&ownerOfCall { _tokenId }) } @@ -3260,7 +3459,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, _from: alloy::sol_types::private::Address, _to: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &safeTransferFrom_0Call { @@ -3275,7 +3474,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, _from: alloy::sol_types::private::Address, _to: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, data: alloy::sol_types::private::Bytes, ) -> alloy_contract::SolCallBuilder { self.call_builder( @@ -3318,7 +3517,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`tokenURI`] function. pub fn tokenURI( &self, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&tokenURICall { _tokenId }) } @@ -3327,7 +3526,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, _from: alloy::sol_types::private::Address, _to: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &transferFromCall { diff --git a/crates/bindings-uniswapx/src/ierc721tokenreceiver.rs b/crates/bindings-uniswapx/src/ierc721tokenreceiver.rs index a622af1..b43ce26 100644 --- a/crates/bindings-uniswapx/src/ierc721tokenreceiver.rs +++ b/crates/bindings-uniswapx/src/ierc721tokenreceiver.rs @@ -46,7 +46,13 @@ interface IERC721TokenReceiver { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IERC721TokenReceiver { use super::*; use alloy::sol_types as alloy_sol_types; @@ -74,21 +80,31 @@ pub mod IERC721TokenReceiver { ```solidity function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes memory _data) external returns (bytes4); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct onERC721ReceivedCall { + #[allow(missing_docs)] pub _operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _from: alloy::sol_types::private::Address, - pub _tokenId: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub _data: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`onERC721Received(address,address,uint256,bytes)`](onERC721ReceivedCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct onERC721ReceivedReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::FixedBytes<4>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -103,7 +119,7 @@ function onERC721Received(address _operator, address _from, uint256 _tokenId, by type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Bytes, ); #[cfg(test)] @@ -227,6 +243,7 @@ function onERC721Received(address _operator, address _from, uint256 _tokenId, by }; ///Container for all the [`IERC721TokenReceiver`](self) function calls. pub enum IERC721TokenReceiverCalls { + #[allow(missing_docs)] onERC721Received(onERC721ReceivedCall), } #[automatically_derived] @@ -261,7 +278,7 @@ function onERC721Received(address _operator, address _from, uint256 _tokenId, by Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -293,7 +310,7 @@ function onERC721Received(address _operator, address _from, uint256 _tokenId, by ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -490,7 +507,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, _operator: alloy::sol_types::private::Address, _from: alloy::sol_types::private::Address, - _tokenId: alloy::sol_types::private::U256, + _tokenId: alloy::sol_types::private::primitives::aliases::U256, _data: alloy::sol_types::private::Bytes, ) -> alloy_contract::SolCallBuilder { self.call_builder( diff --git a/crates/bindings-uniswapx/src/ipermit2.rs b/crates/bindings-uniswapx/src/ipermit2.rs index b2f4ac6..cb3aa7a 100644 --- a/crates/bindings-uniswapx/src/ipermit2.rs +++ b/crates/bindings-uniswapx/src/ipermit2.rs @@ -1,989 +1,46 @@ +///Module containing a contract's types and functions. /** -Generated by the following Solidity interface... ```solidity -interface IPermit2 { - struct AllowanceTransferDetails { - address from; - address to; - uint160 amount; - address token; - } - struct PermitBatch { - PermitDetails[] details; - address spender; - uint256 sigDeadline; - } - struct PermitBatchTransferFrom { - TokenPermissions[] permitted; - uint256 nonce; - uint256 deadline; - } - struct PermitDetails { - address token; - uint160 amount; - uint48 expiration; - uint48 nonce; - } - struct PermitSingle { - PermitDetails details; - address spender; - uint256 sigDeadline; - } - struct PermitTransferFrom { - TokenPermissions permitted; - uint256 nonce; - uint256 deadline; - } - struct SignatureTransferDetails { - address to; - uint256 requestedAmount; - } - struct TokenPermissions { - address token; - uint256 amount; - } - struct TokenSpenderPair { - address token; - address spender; - } - - error AllowanceExpired(uint256 deadline); - error ExcessiveInvalidation(); - error InsufficientAllowance(uint256 amount); - error InvalidAmount(uint256 maxAmount); - error LengthMismatch(); - - event Approval(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration); - event Lockdown(address indexed owner, address token, address spender); - event NonceInvalidation(address indexed owner, address indexed token, address indexed spender, uint48 newNonce, uint48 oldNonce); - event Permit(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration, uint48 nonce); - event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask); - - function DOMAIN_SEPARATOR() external view returns (bytes32); - function allowance(address user, address token, address spender) external view returns (uint160 amount, uint48 expiration, uint48 nonce); - function approve(address token, address spender, uint160 amount, uint48 expiration) external; - function invalidateNonces(address token, address spender, uint48 newNonce) external; - function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external; - function lockdown(TokenSpenderPair[] memory approvals) external; - function nonceBitmap(address, uint256) external view returns (uint256); - function permit(address owner, PermitBatch memory permitBatch, bytes memory signature) external; - function permit(address owner, PermitSingle memory permitSingle, bytes memory signature) external; - function permitTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes memory signature) external; - function permitTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes memory signature) external; - function permitWitnessTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; - function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; - function transferFrom(AllowanceTransferDetails[] memory transferDetails) external; - function transferFrom(address from, address to, uint160 amount, address token) external; +library IAllowanceTransfer { + struct AllowanceTransferDetails { address from; address to; uint160 amount; address token; } + struct PermitBatch { PermitDetails[] details; address spender; uint256 sigDeadline; } + struct PermitDetails { address token; uint160 amount; uint48 expiration; uint48 nonce; } + struct PermitSingle { PermitDetails details; address spender; uint256 sigDeadline; } + struct TokenSpenderPair { address token; address spender; } } -``` - -...which was generated by the following JSON ABI: -```json -[ - { - "type": "function", - "name": "DOMAIN_SEPARATOR", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "allowance", - "inputs": [ - { - "name": "user", - "type": "address", - "internalType": "address" - }, - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "spender", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "amount", - "type": "uint160", - "internalType": "uint160" - }, - { - "name": "expiration", - "type": "uint48", - "internalType": "uint48" - }, - { - "name": "nonce", - "type": "uint48", - "internalType": "uint48" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "approve", - "inputs": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "spender", - "type": "address", - "internalType": "address" - }, - { - "name": "amount", - "type": "uint160", - "internalType": "uint160" - }, - { - "name": "expiration", - "type": "uint48", - "internalType": "uint48" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "invalidateNonces", - "inputs": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "spender", - "type": "address", - "internalType": "address" - }, - { - "name": "newNonce", - "type": "uint48", - "internalType": "uint48" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "invalidateUnorderedNonces", - "inputs": [ - { - "name": "wordPos", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "mask", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "lockdown", - "inputs": [ - { - "name": "approvals", - "type": "tuple[]", - "internalType": "struct IAllowanceTransfer.TokenSpenderPair[]", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "spender", - "type": "address", - "internalType": "address" - } - ] - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "nonceBitmap", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - }, - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "permit", - "inputs": [ - { - "name": "owner", - "type": "address", - "internalType": "address" - }, - { - "name": "permitBatch", - "type": "tuple", - "internalType": "struct IAllowanceTransfer.PermitBatch", - "components": [ - { - "name": "details", - "type": "tuple[]", - "internalType": "struct IAllowanceTransfer.PermitDetails[]", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "amount", - "type": "uint160", - "internalType": "uint160" - }, - { - "name": "expiration", - "type": "uint48", - "internalType": "uint48" - }, - { - "name": "nonce", - "type": "uint48", - "internalType": "uint48" - } - ] - }, - { - "name": "spender", - "type": "address", - "internalType": "address" - }, - { - "name": "sigDeadline", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "signature", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "permit", - "inputs": [ - { - "name": "owner", - "type": "address", - "internalType": "address" - }, - { - "name": "permitSingle", - "type": "tuple", - "internalType": "struct IAllowanceTransfer.PermitSingle", - "components": [ - { - "name": "details", - "type": "tuple", - "internalType": "struct IAllowanceTransfer.PermitDetails", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "amount", - "type": "uint160", - "internalType": "uint160" - }, - { - "name": "expiration", - "type": "uint48", - "internalType": "uint48" - }, - { - "name": "nonce", - "type": "uint48", - "internalType": "uint48" - } - ] - }, - { - "name": "spender", - "type": "address", - "internalType": "address" - }, - { - "name": "sigDeadline", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "signature", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "permitTransferFrom", - "inputs": [ - { - "name": "permit", - "type": "tuple", - "internalType": "struct ISignatureTransfer.PermitTransferFrom", - "components": [ - { - "name": "permitted", - "type": "tuple", - "internalType": "struct ISignatureTransfer.TokenPermissions", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "deadline", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "transferDetails", - "type": "tuple", - "internalType": "struct ISignatureTransfer.SignatureTransferDetails", - "components": [ - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "requestedAmount", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "owner", - "type": "address", - "internalType": "address" - }, - { - "name": "signature", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "permitTransferFrom", - "inputs": [ - { - "name": "permit", - "type": "tuple", - "internalType": "struct ISignatureTransfer.PermitBatchTransferFrom", - "components": [ - { - "name": "permitted", - "type": "tuple[]", - "internalType": "struct ISignatureTransfer.TokenPermissions[]", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "deadline", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "transferDetails", - "type": "tuple[]", - "internalType": "struct ISignatureTransfer.SignatureTransferDetails[]", - "components": [ - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "requestedAmount", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "owner", - "type": "address", - "internalType": "address" - }, - { - "name": "signature", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "permitWitnessTransferFrom", - "inputs": [ - { - "name": "permit", - "type": "tuple", - "internalType": "struct ISignatureTransfer.PermitTransferFrom", - "components": [ - { - "name": "permitted", - "type": "tuple", - "internalType": "struct ISignatureTransfer.TokenPermissions", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "deadline", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "transferDetails", - "type": "tuple", - "internalType": "struct ISignatureTransfer.SignatureTransferDetails", - "components": [ - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "requestedAmount", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "owner", - "type": "address", - "internalType": "address" - }, - { - "name": "witness", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "witnessTypeString", - "type": "string", - "internalType": "string" - }, - { - "name": "signature", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "permitWitnessTransferFrom", - "inputs": [ - { - "name": "permit", - "type": "tuple", - "internalType": "struct ISignatureTransfer.PermitBatchTransferFrom", - "components": [ - { - "name": "permitted", - "type": "tuple[]", - "internalType": "struct ISignatureTransfer.TokenPermissions[]", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "deadline", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "transferDetails", - "type": "tuple[]", - "internalType": "struct ISignatureTransfer.SignatureTransferDetails[]", - "components": [ - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "requestedAmount", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "name": "owner", - "type": "address", - "internalType": "address" - }, - { - "name": "witness", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "witnessTypeString", - "type": "string", - "internalType": "string" - }, - { - "name": "signature", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "transferFrom", - "inputs": [ - { - "name": "transferDetails", - "type": "tuple[]", - "internalType": "struct IAllowanceTransfer.AllowanceTransferDetails[]", - "components": [ - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "amount", - "type": "uint160", - "internalType": "uint160" - }, - { - "name": "token", - "type": "address", - "internalType": "address" - } - ] - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "transferFrom", - "inputs": [ - { - "name": "from", - "type": "address", - "internalType": "address" - }, - { - "name": "to", - "type": "address", - "internalType": "address" - }, - { - "name": "amount", - "type": "uint160", - "internalType": "uint160" - }, - { - "name": "token", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "event", - "name": "Approval", - "inputs": [ - { - "name": "owner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "token", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "spender", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint160", - "indexed": false, - "internalType": "uint160" - }, - { - "name": "expiration", - "type": "uint48", - "indexed": false, - "internalType": "uint48" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Lockdown", - "inputs": [ - { - "name": "owner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "token", - "type": "address", - "indexed": false, - "internalType": "address" - }, - { - "name": "spender", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "NonceInvalidation", - "inputs": [ - { - "name": "owner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "token", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "spender", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "newNonce", - "type": "uint48", - "indexed": false, - "internalType": "uint48" - }, - { - "name": "oldNonce", - "type": "uint48", - "indexed": false, - "internalType": "uint48" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Permit", - "inputs": [ - { - "name": "owner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "token", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "spender", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "amount", - "type": "uint160", - "indexed": false, - "internalType": "uint160" - }, - { - "name": "expiration", - "type": "uint48", - "indexed": false, - "internalType": "uint48" - }, - { - "name": "nonce", - "type": "uint48", - "indexed": false, - "internalType": "uint48" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "UnorderedNonceInvalidation", - "inputs": [ - { - "name": "owner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "word", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "mask", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "error", - "name": "AllowanceExpired", - "inputs": [ - { - "name": "deadline", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "ExcessiveInvalidation", - "inputs": [] - }, - { - "type": "error", - "name": "InsufficientAllowance", - "inputs": [ - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "InvalidAmount", - "inputs": [ - { - "name": "maxAmount", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "LengthMismatch", - "inputs": [] - } -] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] -pub mod IPermit2 { +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod IAllowanceTransfer { use super::*; use alloy::sol_types as alloy_sol_types; - /// The creation / init bytecode of the contract. - /// - /// ```text - ///0x - /// ``` - #[rustfmt::skip] - #[allow(clippy::all)] - pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"", - ); - /// The runtime bytecode of the contract, as deployed on the network. - /// - /// ```text - ///0x - /// ``` - #[rustfmt::skip] - #[allow(clippy::all)] - pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"", - ); /**```solidity struct AllowanceTransferDetails { address from; address to; uint160 amount; address token; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct AllowanceTransferDetails { + #[allow(missing_docs)] pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U160, + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -997,9 +54,7 @@ struct AllowanceTransferDetails { address from; address to; uint160 amount; addr type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U160, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1230,16 +285,24 @@ struct AllowanceTransferDetails { address from; address to; uint160 amount; addr /**```solidity struct PermitBatch { PermitDetails[] details; address spender; uint256 sigDeadline; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct PermitBatch { + #[allow(missing_docs)] pub details: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub sigDeadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub sigDeadline: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1254,7 +317,7 @@ struct PermitBatch { PermitDetails[] details; address spender; uint256 sigDeadli ::RustType, >, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1474,33 +537,41 @@ struct PermitBatch { PermitDetails[] details; address spender; uint256 sigDeadli } }; /**```solidity -struct PermitBatchTransferFrom { TokenPermissions[] permitted; uint256 nonce; uint256 deadline; } +struct PermitDetails { address token; uint160 amount; uint48 expiration; uint48 nonce; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct PermitBatchTransferFrom { - pub permitted: alloy::sol_types::private::Vec< - ::RustType, - >, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + pub struct PermitDetails { + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U160, + #[allow(missing_docs)] + pub expiration: alloy::sol_types::private::primitives::aliases::U48, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U48, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Array, - alloy::sol_types::sol_data::Uint<256>, - alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<160>, + alloy::sol_types::sol_data::Uint<48>, + alloy::sol_types::sol_data::Uint<48>, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::Vec< - ::RustType, - >, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U160, + alloy::sol_types::private::primitives::aliases::U48, + alloy::sol_types::private::primitives::aliases::U48, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1515,40 +586,44 @@ struct PermitBatchTransferFrom { TokenPermissions[] permitted; uint256 nonce; ui } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: PermitBatchTransferFrom) -> Self { - (value.permitted, value.nonce, value.deadline) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitDetails) -> Self { + (value.token, value.amount, value.expiration, value.nonce) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for PermitBatchTransferFrom { + impl ::core::convert::From> for PermitDetails { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - permitted: tuple.0, - nonce: tuple.1, - deadline: tuple.2, + token: tuple.0, + amount: tuple.1, + expiration: tuple.2, + nonce: tuple.3, } } } #[automatically_derived] - impl alloy_sol_types::SolValue for PermitBatchTransferFrom { + impl alloy_sol_types::SolValue for PermitDetails { type SolType = Self; } #[automatically_derived] - impl alloy_sol_types::private::SolTypeValue for PermitBatchTransferFrom { + impl alloy_sol_types::private::SolTypeValue for PermitDetails { #[inline] fn stv_to_tokens(&self) -> ::Token<'_> { ( - as alloy_sol_types::SolType>::tokenize(&self.permitted), + ::tokenize( + &self.token, + ), as alloy_sol_types::SolType>::tokenize(&self.nonce), + 160, + > as alloy_sol_types::SolType>::tokenize(&self.amount), as alloy_sol_types::SolType>::tokenize(&self.deadline), + 48, + > as alloy_sol_types::SolType>::tokenize(&self.expiration), + as alloy_sol_types::SolType>::tokenize(&self.nonce), ) } #[inline] @@ -1593,7 +668,7 @@ struct PermitBatchTransferFrom { TokenPermissions[] permitted; uint256 nonce; ui } } #[automatically_derived] - impl alloy_sol_types::SolType for PermitBatchTransferFrom { + impl alloy_sol_types::SolType for PermitDetails { type RustType = Self; type Token<'a> = alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "PermitBatchTransferFrom(TokenPermissions[] permitted,uint256 nonce,uint256 deadline)", + "PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)", ) } #[inline] fn eip712_components() -> alloy_sol_types::private::Vec< alloy_sol_types::private::Cow<'static, str>, > { - let mut components = alloy_sol_types::private::Vec::with_capacity(1); - components - .push( - ::eip712_root_type(), - ); - components - .extend( - ::eip712_components(), - ); - components + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() } #[inline] fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { [ - as alloy_sol_types::SolType>::eip712_data_word(&self.permitted) + ::eip712_data_word( + &self.token, + ) .0, as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + 160, + > as alloy_sol_types::SolType>::eip712_data_word(&self.amount) .0, as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) + 48, + > as alloy_sol_types::SolType>::eip712_data_word(&self.expiration) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) .0, ] .concat() } } #[automatically_derived] - impl alloy_sol_types::EventTopic for PermitBatchTransferFrom { + impl alloy_sol_types::EventTopic for PermitDetails { #[inline] fn topic_preimage_length(rust: &Self::RustType) -> usize { 0usize - + as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.permitted, + + ::topic_preimage_length( + &rust.token, ) + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + 160, + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, + ) + as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.deadline, + &rust.expiration, ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) } #[inline] fn encode_topic_preimage( @@ -1687,22 +764,26 @@ struct PermitBatchTransferFrom { TokenPermissions[] permitted; uint256 nonce; ui out.reserve( ::topic_preimage_length(rust), ); - ::encode_topic_preimage( + &rust.token, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.permitted, + &rust.amount, out, ); as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.nonce, + &rust.expiration, out, ); as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.deadline, + &rust.nonce, out, ); } @@ -1722,42 +803,37 @@ struct PermitBatchTransferFrom { TokenPermissions[] permitted; uint256 nonce; ui } }; /**```solidity -struct PermitDetails { address token; uint160 amount; uint48 expiration; uint48 nonce; } +struct PermitSingle { PermitDetails details; address spender; uint256 sigDeadline; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct PermitDetails { - pub token: alloy::sol_types::private::Address, - pub amount: as alloy::sol_types::SolType>::RustType, - pub expiration: as alloy::sol_types::SolType>::RustType, - pub nonce: as alloy::sol_types::SolType>::RustType, + pub struct PermitSingle { + #[allow(missing_docs)] + pub details: ::RustType, + #[allow(missing_docs)] + pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub sigDeadline: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] type UnderlyingSolTuple<'a> = ( + PermitDetails, alloy::sol_types::sol_data::Address, - alloy::sol_types::sol_data::Uint<160>, - alloy::sol_types::sol_data::Uint<48>, - alloy::sol_types::sol_data::Uint<48>, + alloy::sol_types::sol_data::Uint<256>, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( + ::RustType, alloy::sol_types::private::Address, - as alloy::sol_types::SolType>::RustType, - as alloy::sol_types::SolType>::RustType, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1772,44 +848,38 @@ struct PermitDetails { address token; uint160 amount; uint48 expiration; uint48 } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: PermitDetails) -> Self { - (value.token, value.amount, value.expiration, value.nonce) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitSingle) -> Self { + (value.details, value.spender, value.sigDeadline) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for PermitDetails { + impl ::core::convert::From> for PermitSingle { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - token: tuple.0, - amount: tuple.1, - expiration: tuple.2, - nonce: tuple.3, + details: tuple.0, + spender: tuple.1, + sigDeadline: tuple.2, } } } #[automatically_derived] - impl alloy_sol_types::SolValue for PermitDetails { + impl alloy_sol_types::SolValue for PermitSingle { type SolType = Self; } #[automatically_derived] - impl alloy_sol_types::private::SolTypeValue for PermitDetails { + impl alloy_sol_types::private::SolTypeValue for PermitSingle { #[inline] fn stv_to_tokens(&self) -> ::Token<'_> { ( + ::tokenize(&self.details), ::tokenize( - &self.token, + &self.spender, ), as alloy_sol_types::SolType>::tokenize(&self.amount), - as alloy_sol_types::SolType>::tokenize(&self.expiration), - as alloy_sol_types::SolType>::tokenize(&self.nonce), + 256, + > as alloy_sol_types::SolType>::tokenize(&self.sigDeadline), ) } #[inline] @@ -1854,7 +924,7 @@ struct PermitDetails { address token; uint160 amount; uint48 expiration; uint48 } } #[automatically_derived] - impl alloy_sol_types::SolType for PermitDetails { + impl alloy_sol_types::SolType for PermitSingle { type RustType = Self; type Token<'a> = alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "PermitDetails(address token,uint160 amount,uint48 expiration,uint48 nonce)", + "PermitSingle(PermitDetails details,address spender,uint256 sigDeadline)", ) } #[inline] fn eip712_components() -> alloy_sol_types::private::Vec< alloy_sol_types::private::Cow<'static, str>, > { - alloy_sol_types::private::Vec::new() - } - #[inline] - fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { - ::eip712_root_type() + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components } #[inline] fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { [ - ::eip712_data_word( - &self.token, + ::eip712_data_word( + &self.details, ) .0, - as alloy_sol_types::SolType>::eip712_data_word(&self.amount) - .0, - as alloy_sol_types::SolType>::eip712_data_word(&self.expiration) + ::eip712_data_word( + &self.spender, + ) .0, as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + 256, + > as alloy_sol_types::SolType>::eip712_data_word(&self.sigDeadline) .0, ] .concat() } } #[automatically_derived] - impl alloy_sol_types::EventTopic for PermitDetails { + impl alloy_sol_types::EventTopic for PermitSingle { #[inline] fn topic_preimage_length(rust: &Self::RustType) -> usize { 0usize - + ::topic_preimage_length( - &rust.token, + + ::topic_preimage_length( + &rust.details, ) - + as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.amount, + + ::topic_preimage_length( + &rust.spender, ) + as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.expiration, + &rust.sigDeadline, ) - + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) } #[inline] fn encode_topic_preimage( @@ -1950,26 +1016,18 @@ struct PermitDetails { address token; uint160 amount; uint48 expiration; uint48 out.reserve( ::topic_preimage_length(rust), ); - ::encode_topic_preimage( - &rust.token, - out, - ); - as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.amount, + ::encode_topic_preimage( + &rust.details, out, ); - as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.expiration, + ::encode_topic_preimage( + &rust.spender, out, ); as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.nonce, + &rust.sigDeadline, out, ); } @@ -1989,29 +1047,33 @@ struct PermitDetails { address token; uint160 amount; uint48 expiration; uint48 } }; /**```solidity -struct PermitSingle { PermitDetails details; address spender; uint256 sigDeadline; } +struct TokenSpenderPair { address token; address spender; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct PermitSingle { - pub details: ::RustType, + pub struct TokenSpenderPair { + #[allow(missing_docs)] + pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub sigDeadline: alloy::sol_types::private::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - PermitDetails, alloy::sol_types::sol_data::Address, - alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Address, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - ::RustType, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::Address, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2026,38 +1088,36 @@ struct PermitSingle { PermitDetails details; address spender; uint256 sigDeadlin } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: PermitSingle) -> Self { - (value.details, value.spender, value.sigDeadline) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TokenSpenderPair) -> Self { + (value.token, value.spender) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for PermitSingle { + impl ::core::convert::From> for TokenSpenderPair { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - details: tuple.0, + token: tuple.0, spender: tuple.1, - sigDeadline: tuple.2, } } } #[automatically_derived] - impl alloy_sol_types::SolValue for PermitSingle { + impl alloy_sol_types::SolValue for TokenSpenderPair { type SolType = Self; } #[automatically_derived] - impl alloy_sol_types::private::SolTypeValue for PermitSingle { + impl alloy_sol_types::private::SolTypeValue for TokenSpenderPair { #[inline] fn stv_to_tokens(&self) -> ::Token<'_> { ( - ::tokenize(&self.details), + ::tokenize( + &self.token, + ), ::tokenize( &self.spender, ), - as alloy_sol_types::SolType>::tokenize(&self.sigDeadline), ) } #[inline] @@ -2102,7 +1162,7 @@ struct PermitSingle { PermitDetails details; address spender; uint256 sigDeadlin } } #[automatically_derived] - impl alloy_sol_types::SolType for PermitSingle { + impl alloy_sol_types::SolType for TokenSpenderPair { type RustType = Self; type Token<'a> = alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "PermitSingle(PermitDetails details,address spender,uint256 sigDeadline)", + "TokenSpenderPair(address token,address spender)", ) } #[inline] fn eip712_components() -> alloy_sol_types::private::Vec< alloy_sol_types::private::Cow<'static, str>, > { - let mut components = alloy_sol_types::private::Vec::with_capacity(1); - components - .push( - ::eip712_root_type(), - ); - components - .extend( - ::eip712_components(), - ); - components + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() } #[inline] fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { [ - ::eip712_data_word( - &self.details, + ::eip712_data_word( + &self.token, ) .0, ::eip712_data_word( &self.spender, ) .0, - as alloy_sol_types::SolType>::eip712_data_word(&self.sigDeadline) - .0, ] .concat() } } #[automatically_derived] - impl alloy_sol_types::EventTopic for PermitSingle { + impl alloy_sol_types::EventTopic for TokenSpenderPair { #[inline] fn topic_preimage_length(rust: &Self::RustType) -> usize { 0usize - + ::topic_preimage_length( - &rust.details, + + ::topic_preimage_length( + &rust.token, ) + ::topic_preimage_length( &rust.spender, ) - + as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.sigDeadline, - ) } #[inline] fn encode_topic_preimage( @@ -2194,20 +1240,14 @@ struct PermitSingle { PermitDetails details; address spender; uint256 sigDeadlin out.reserve( ::topic_preimage_length(rust), ); - ::encode_topic_preimage( - &rust.details, + ::encode_topic_preimage( + &rust.token, out, ); ::encode_topic_preimage( &rust.spender, out, ); - as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.sigDeadline, - out, - ); } #[inline] fn encode_topic( @@ -2223,31 +1263,192 @@ struct PermitSingle { PermitDetails details; address spender; uint256 sigDeadlin ) } } - }; + }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IAllowanceTransfer`](self) contract instance. + +See the [wrapper's documentation](`IAllowanceTransferInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IAllowanceTransferInstance { + IAllowanceTransferInstance::::new(address, provider) + } + /**A [`IAllowanceTransfer`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IAllowanceTransfer`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IAllowanceTransferInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IAllowanceTransferInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IAllowanceTransferInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IAllowanceTransferInstance { + /**Creates a new wrapper around an on-chain [`IAllowanceTransfer`](self) contract instance. + +See the [wrapper's documentation](`IAllowanceTransferInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IAllowanceTransferInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IAllowanceTransferInstance { + IAllowanceTransferInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IAllowanceTransferInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IAllowanceTransferInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +///Module containing a contract's types and functions. +/** + +```solidity +library ISignatureTransfer { + struct PermitBatchTransferFrom { TokenPermissions[] permitted; uint256 nonce; uint256 deadline; } + struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 deadline; } + struct SignatureTransferDetails { address to; uint256 requestedAmount; } + struct TokenPermissions { address token; uint256 amount; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod ISignatureTransfer { + use super::*; + use alloy::sol_types as alloy_sol_types; /**```solidity -struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 deadline; } +struct PermitBatchTransferFrom { TokenPermissions[] permitted; uint256 nonce; uint256 deadline; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct PermitTransferFrom { - pub permitted: ::RustType, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + pub struct PermitBatchTransferFrom { + #[allow(missing_docs)] + pub permitted: alloy::sol_types::private::Vec< + ::RustType, + >, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - TokenPermissions, + alloy::sol_types::sol_data::Array, alloy::sol_types::sol_data::Uint<256>, alloy::sol_types::sol_data::Uint<256>, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - ::RustType, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::Vec< + ::RustType, + >, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2262,14 +1463,14 @@ struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 d } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: PermitTransferFrom) -> Self { + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitBatchTransferFrom) -> Self { (value.permitted, value.nonce, value.deadline) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for PermitTransferFrom { + impl ::core::convert::From> for PermitBatchTransferFrom { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { permitted: tuple.0, @@ -2279,17 +1480,17 @@ struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 d } } #[automatically_derived] - impl alloy_sol_types::SolValue for PermitTransferFrom { + impl alloy_sol_types::SolValue for PermitBatchTransferFrom { type SolType = Self; } #[automatically_derived] - impl alloy_sol_types::private::SolTypeValue for PermitTransferFrom { + impl alloy_sol_types::private::SolTypeValue for PermitBatchTransferFrom { #[inline] fn stv_to_tokens(&self) -> ::Token<'_> { ( - ::tokenize( - &self.permitted, - ), + as alloy_sol_types::SolType>::tokenize(&self.permitted), as alloy_sol_types::SolType>::tokenize(&self.nonce), @@ -2340,7 +1541,7 @@ struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 d } } #[automatically_derived] - impl alloy_sol_types::SolType for PermitTransferFrom { + impl alloy_sol_types::SolType for PermitBatchTransferFrom { type RustType = Self; type Token<'a> = alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "PermitTransferFrom(TokenPermissions permitted,uint256 nonce,uint256 deadline)", + "PermitBatchTransferFrom(TokenPermissions[] permitted,uint256 nonce,uint256 deadline)", ) } #[inline] @@ -2391,9 +1592,9 @@ struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 d #[inline] fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { [ - ::eip712_data_word( - &self.permitted, - ) + as alloy_sol_types::SolType>::eip712_data_word(&self.permitted) .0, usize { 0usize - + ::topic_preimage_length( + + as alloy_sol_types::EventTopic>::topic_preimage_length( &rust.permitted, ) + ::topic_preimage_length(rust), ); - ::encode_topic_preimage( + as alloy_sol_types::EventTopic>::encode_topic_preimage( &rust.permitted, out, ); @@ -2465,26 +1670,37 @@ struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 d } }; /**```solidity -struct SignatureTransferDetails { address to; uint256 requestedAmount; } +struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 deadline; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct SignatureTransferDetails { - pub to: alloy::sol_types::private::Address, - pub requestedAmount: alloy::sol_types::private::U256, + pub struct PermitTransferFrom { + #[allow(missing_docs)] + pub permitted: ::RustType, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Address, + TokenPermissions, + alloy::sol_types::sol_data::Uint<256>, alloy::sol_types::sol_data::Uint<256>, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + ::RustType, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2499,38 +1715,40 @@ struct SignatureTransferDetails { address to; uint256 requestedAmount; } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From - for UnderlyingRustTuple<'_> { - fn from(value: SignatureTransferDetails) -> Self { - (value.to, value.requestedAmount) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: PermitTransferFrom) -> Self { + (value.permitted, value.nonce, value.deadline) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> - for SignatureTransferDetails { + impl ::core::convert::From> for PermitTransferFrom { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - to: tuple.0, - requestedAmount: tuple.1, + permitted: tuple.0, + nonce: tuple.1, + deadline: tuple.2, } } } #[automatically_derived] - impl alloy_sol_types::SolValue for SignatureTransferDetails { + impl alloy_sol_types::SolValue for PermitTransferFrom { type SolType = Self; } #[automatically_derived] - impl alloy_sol_types::private::SolTypeValue for SignatureTransferDetails { + impl alloy_sol_types::private::SolTypeValue for PermitTransferFrom { #[inline] fn stv_to_tokens(&self) -> ::Token<'_> { ( - ::tokenize( - &self.to, + ::tokenize( + &self.permitted, ), as alloy_sol_types::SolType>::tokenize(&self.requestedAmount), + > as alloy_sol_types::SolType>::tokenize(&self.nonce), + as alloy_sol_types::SolType>::tokenize(&self.deadline), ) } #[inline] @@ -2575,7 +1793,7 @@ struct SignatureTransferDetails { address to; uint256 requestedAmount; } } } #[automatically_derived] - impl alloy_sol_types::SolType for SignatureTransferDetails { + impl alloy_sol_types::SolType for PermitTransferFrom { type RustType = Self; type Token<'a> = alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "SignatureTransferDetails(address to,uint256 requestedAmount)", + "PermitTransferFrom(TokenPermissions permitted,uint256 nonce,uint256 deadline)", ) } #[inline] fn eip712_components() -> alloy_sol_types::private::Vec< alloy_sol_types::private::Cow<'static, str>, > { - alloy_sol_types::private::Vec::new() - } - #[inline] - fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { - ::eip712_root_type() + let mut components = alloy_sol_types::private::Vec::with_capacity(1); + components + .push( + ::eip712_root_type(), + ); + components + .extend( + ::eip712_components(), + ); + components } #[inline] fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { [ - ::eip712_data_word( - &self.to, + ::eip712_data_word( + &self.permitted, ) .0, as alloy_sol_types::SolType>::eip712_data_word( - &self.requestedAmount, - ) + > as alloy_sol_types::SolType>::eip712_data_word(&self.nonce) + .0, + as alloy_sol_types::SolType>::eip712_data_word(&self.deadline) .0, ] .concat() } } #[automatically_derived] - impl alloy_sol_types::EventTopic for SignatureTransferDetails { + impl alloy_sol_types::EventTopic for PermitTransferFrom { #[inline] fn topic_preimage_length(rust: &Self::RustType) -> usize { 0usize - + ::topic_preimage_length( - &rust.to, + + ::topic_preimage_length( + &rust.permitted, ) + + as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.nonce) + as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.requestedAmount, + &rust.deadline, ) } #[inline] @@ -2657,14 +1885,20 @@ struct SignatureTransferDetails { address to; uint256 requestedAmount; } out.reserve( ::topic_preimage_length(rust), ); - ::encode_topic_preimage( - &rust.to, + ::encode_topic_preimage( + &rust.permitted, out, ); as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.requestedAmount, + &rust.nonce, + out, + ); + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.deadline, out, ); } @@ -2684,15 +1918,22 @@ struct SignatureTransferDetails { address to; uint256 requestedAmount; } } }; /**```solidity -struct TokenPermissions { address token; uint256 amount; } +struct SignatureTransferDetails { address to; uint256 requestedAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct TokenPermissions { - pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + pub struct SignatureTransferDetails { + #[allow(missing_docs)] + pub to: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub requestedAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2703,7 +1944,7 @@ struct TokenPermissions { address token; uint256 amount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2718,36 +1959,38 @@ struct TokenPermissions { address token; uint256 amount; } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: TokenPermissions) -> Self { - (value.token, value.amount) + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: SignatureTransferDetails) -> Self { + (value.to, value.requestedAmount) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for TokenPermissions { + impl ::core::convert::From> + for SignatureTransferDetails { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { - token: tuple.0, - amount: tuple.1, + to: tuple.0, + requestedAmount: tuple.1, } } } #[automatically_derived] - impl alloy_sol_types::SolValue for TokenPermissions { + impl alloy_sol_types::SolValue for SignatureTransferDetails { type SolType = Self; } #[automatically_derived] - impl alloy_sol_types::private::SolTypeValue for TokenPermissions { + impl alloy_sol_types::private::SolTypeValue for SignatureTransferDetails { #[inline] fn stv_to_tokens(&self) -> ::Token<'_> { ( ::tokenize( - &self.token, + &self.to, ), as alloy_sol_types::SolType>::tokenize(&self.amount), + > as alloy_sol_types::SolType>::tokenize(&self.requestedAmount), ) } #[inline] @@ -2792,7 +2035,7 @@ struct TokenPermissions { address token; uint256 amount; } } } #[automatically_derived] - impl alloy_sol_types::SolType for TokenPermissions { + impl alloy_sol_types::SolType for SignatureTransferDetails { type RustType = Self; type Token<'a> = alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "TokenPermissions(address token,uint256 amount)", + "SignatureTransferDetails(address to,uint256 requestedAmount)", ) } #[inline] @@ -2839,29 +2082,31 @@ struct TokenPermissions { address token; uint256 amount; } fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { [ ::eip712_data_word( - &self.token, + &self.to, ) .0, as alloy_sol_types::SolType>::eip712_data_word(&self.amount) + > as alloy_sol_types::SolType>::eip712_data_word( + &self.requestedAmount, + ) .0, ] .concat() } } #[automatically_derived] - impl alloy_sol_types::EventTopic for TokenPermissions { + impl alloy_sol_types::EventTopic for SignatureTransferDetails { #[inline] fn topic_preimage_length(rust: &Self::RustType) -> usize { 0usize + ::topic_preimage_length( - &rust.token, + &rust.to, ) + as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.amount, + &rust.requestedAmount, ) } #[inline] @@ -2873,13 +2118,13 @@ struct TokenPermissions { address token; uint256 amount; } ::topic_preimage_length(rust), ); ::encode_topic_preimage( - &rust.token, + &rust.to, out, ); as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.amount, + &rust.requestedAmount, out, ); } @@ -2899,26 +2144,33 @@ struct TokenPermissions { address token; uint256 amount; } } }; /**```solidity -struct TokenSpenderPair { address token; address spender; } +struct TokenPermissions { address token; uint256 amount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] - pub struct TokenSpenderPair { + pub struct TokenPermissions { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub spender: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] type UnderlyingSolTuple<'a> = ( alloy::sol_types::sol_data::Address, - alloy::sol_types::sol_data::Address, + alloy::sol_types::sol_data::Uint<256>, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::Address, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2933,36 +2185,36 @@ struct TokenSpenderPair { address token; address spender; } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: TokenSpenderPair) -> Self { - (value.token, value.spender) + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: TokenPermissions) -> Self { + (value.token, value.amount) } } #[automatically_derived] #[doc(hidden)] - impl ::core::convert::From> for TokenSpenderPair { + impl ::core::convert::From> for TokenPermissions { fn from(tuple: UnderlyingRustTuple<'_>) -> Self { Self { token: tuple.0, - spender: tuple.1, + amount: tuple.1, } } } #[automatically_derived] - impl alloy_sol_types::SolValue for TokenSpenderPair { + impl alloy_sol_types::SolValue for TokenPermissions { type SolType = Self; } #[automatically_derived] - impl alloy_sol_types::private::SolTypeValue for TokenSpenderPair { + impl alloy_sol_types::private::SolTypeValue for TokenPermissions { #[inline] fn stv_to_tokens(&self) -> ::Token<'_> { ( ::tokenize( &self.token, ), - ::tokenize( - &self.spender, - ), + as alloy_sol_types::SolType>::tokenize(&self.amount), ) } #[inline] @@ -3007,7 +2259,7 @@ struct TokenSpenderPair { address token; address spender; } } } #[automatically_derived] - impl alloy_sol_types::SolType for TokenSpenderPair { + impl alloy_sol_types::SolType for TokenPermissions { type RustType = Self; type Token<'a> = alloy_sol_types::private::Cow<'static, str> { alloy_sol_types::private::Cow::Borrowed( - "TokenSpenderPair(address token,address spender)", + "TokenPermissions(address token,uint256 amount)", ) } #[inline] @@ -3057,24 +2309,26 @@ struct TokenSpenderPair { address token; address spender; } &self.token, ) .0, - ::eip712_data_word( - &self.spender, - ) + as alloy_sol_types::SolType>::eip712_data_word(&self.amount) .0, ] .concat() } } #[automatically_derived] - impl alloy_sol_types::EventTopic for TokenSpenderPair { + impl alloy_sol_types::EventTopic for TokenPermissions { #[inline] fn topic_preimage_length(rust: &Self::RustType) -> usize { 0usize + ::topic_preimage_length( &rust.token, ) - + ::topic_preimage_length( - &rust.spender, + + as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.amount, ) } #[inline] @@ -3089,8 +2343,10 @@ struct TokenSpenderPair { address token; address spender; } &rust.token, out, ); - ::encode_topic_preimage( - &rust.spender, + as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.amount, out, ); } @@ -3109,22 +2365,1141 @@ struct TokenSpenderPair { address token; address spender; } } } }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`ISignatureTransfer`](self) contract instance. + +See the [wrapper's documentation](`ISignatureTransferInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> ISignatureTransferInstance { + ISignatureTransferInstance::::new(address, provider) + } + /**A [`ISignatureTransfer`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`ISignatureTransfer`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct ISignatureTransferInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for ISignatureTransferInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("ISignatureTransferInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureTransferInstance { + /**Creates a new wrapper around an on-chain [`ISignatureTransfer`](self) contract instance. + +See the [wrapper's documentation](`ISignatureTransferInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl ISignatureTransferInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> ISignatureTransferInstance { + ISignatureTransferInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureTransferInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > ISignatureTransferInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library IAllowanceTransfer { + struct AllowanceTransferDetails { + address from; + address to; + uint160 amount; + address token; + } + struct PermitBatch { + PermitDetails[] details; + address spender; + uint256 sigDeadline; + } + struct PermitDetails { + address token; + uint160 amount; + uint48 expiration; + uint48 nonce; + } + struct PermitSingle { + PermitDetails details; + address spender; + uint256 sigDeadline; + } + struct TokenSpenderPair { + address token; + address spender; + } +} + +library ISignatureTransfer { + struct PermitBatchTransferFrom { + TokenPermissions[] permitted; + uint256 nonce; + uint256 deadline; + } + struct PermitTransferFrom { + TokenPermissions permitted; + uint256 nonce; + uint256 deadline; + } + struct SignatureTransferDetails { + address to; + uint256 requestedAmount; + } + struct TokenPermissions { + address token; + uint256 amount; + } +} + +interface IPermit2 { + error AllowanceExpired(uint256 deadline); + error ExcessiveInvalidation(); + error InsufficientAllowance(uint256 amount); + error InvalidAmount(uint256 maxAmount); + error LengthMismatch(); + + event Approval(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration); + event Lockdown(address indexed owner, address token, address spender); + event NonceInvalidation(address indexed owner, address indexed token, address indexed spender, uint48 newNonce, uint48 oldNonce); + event Permit(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration, uint48 nonce); + event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask); + + function DOMAIN_SEPARATOR() external view returns (bytes32); + function allowance(address user, address token, address spender) external view returns (uint160 amount, uint48 expiration, uint48 nonce); + function approve(address token, address spender, uint160 amount, uint48 expiration) external; + function invalidateNonces(address token, address spender, uint48 newNonce) external; + function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external; + function lockdown(IAllowanceTransfer.TokenSpenderPair[] memory approvals) external; + function nonceBitmap(address, uint256) external view returns (uint256); + function permit(address owner, IAllowanceTransfer.PermitBatch memory permitBatch, bytes memory signature) external; + function permit(address owner, IAllowanceTransfer.PermitSingle memory permitSingle, bytes memory signature) external; + function permitTransferFrom(ISignatureTransfer.PermitTransferFrom memory permit, ISignatureTransfer.SignatureTransferDetails memory transferDetails, address owner, bytes memory signature) external; + function permitTransferFrom(ISignatureTransfer.PermitBatchTransferFrom memory permit, ISignatureTransfer.SignatureTransferDetails[] memory transferDetails, address owner, bytes memory signature) external; + function permitWitnessTransferFrom(ISignatureTransfer.PermitTransferFrom memory permit, ISignatureTransfer.SignatureTransferDetails memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; + function permitWitnessTransferFrom(ISignatureTransfer.PermitBatchTransferFrom memory permit, ISignatureTransfer.SignatureTransferDetails[] memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; + function transferFrom(IAllowanceTransfer.AllowanceTransferDetails[] memory transferDetails) external; + function transferFrom(address from, address to, uint160 amount, address token) external; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "DOMAIN_SEPARATOR", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "allowance", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "nonce", + "type": "uint48", + "internalType": "uint48" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "approve", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "internalType": "uint48" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "invalidateNonces", + "inputs": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "newNonce", + "type": "uint48", + "internalType": "uint48" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "invalidateUnorderedNonces", + "inputs": [ + { + "name": "wordPos", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "mask", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "lockdown", + "inputs": [ + { + "name": "approvals", + "type": "tuple[]", + "internalType": "struct IAllowanceTransfer.TokenSpenderPair[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "nonceBitmap", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "permitBatch", + "type": "tuple", + "internalType": "struct IAllowanceTransfer.PermitBatch", + "components": [ + { + "name": "details", + "type": "tuple[]", + "internalType": "struct IAllowanceTransfer.PermitDetails[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "nonce", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "sigDeadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "permitSingle", + "type": "tuple", + "internalType": "struct IAllowanceTransfer.PermitSingle", + "components": [ + { + "name": "details", + "type": "tuple", + "internalType": "struct IAllowanceTransfer.PermitDetails", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "internalType": "uint48" + }, + { + "name": "nonce", + "type": "uint48", + "internalType": "uint48" + } + ] + }, + { + "name": "spender", + "type": "address", + "internalType": "address" + }, + { + "name": "sigDeadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permitTransferFrom", + "inputs": [ + { + "name": "permit", + "type": "tuple", + "internalType": "struct ISignatureTransfer.PermitTransferFrom", + "components": [ + { + "name": "permitted", + "type": "tuple", + "internalType": "struct ISignatureTransfer.TokenPermissions", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "transferDetails", + "type": "tuple", + "internalType": "struct ISignatureTransfer.SignatureTransferDetails", + "components": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "requestedAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permitTransferFrom", + "inputs": [ + { + "name": "permit", + "type": "tuple", + "internalType": "struct ISignatureTransfer.PermitBatchTransferFrom", + "components": [ + { + "name": "permitted", + "type": "tuple[]", + "internalType": "struct ISignatureTransfer.TokenPermissions[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "transferDetails", + "type": "tuple[]", + "internalType": "struct ISignatureTransfer.SignatureTransferDetails[]", + "components": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "requestedAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permitWitnessTransferFrom", + "inputs": [ + { + "name": "permit", + "type": "tuple", + "internalType": "struct ISignatureTransfer.PermitTransferFrom", + "components": [ + { + "name": "permitted", + "type": "tuple", + "internalType": "struct ISignatureTransfer.TokenPermissions", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "transferDetails", + "type": "tuple", + "internalType": "struct ISignatureTransfer.SignatureTransferDetails", + "components": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "requestedAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "witness", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "witnessTypeString", + "type": "string", + "internalType": "string" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "permitWitnessTransferFrom", + "inputs": [ + { + "name": "permit", + "type": "tuple", + "internalType": "struct ISignatureTransfer.PermitBatchTransferFrom", + "components": [ + { + "name": "permitted", + "type": "tuple[]", + "internalType": "struct ISignatureTransfer.TokenPermissions[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "transferDetails", + "type": "tuple[]", + "internalType": "struct ISignatureTransfer.SignatureTransferDetails[]", + "components": [ + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "requestedAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "name": "owner", + "type": "address", + "internalType": "address" + }, + { + "name": "witness", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "witnessTypeString", + "type": "string", + "internalType": "string" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "transferDetails", + "type": "tuple[]", + "internalType": "struct IAllowanceTransfer.AllowanceTransferDetails[]", + "components": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferFrom", + "inputs": [ + { + "name": "from", + "type": "address", + "internalType": "address" + }, + { + "name": "to", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "internalType": "uint160" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Approval", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "indexed": false, + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Lockdown", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NonceInvalidation", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newNonce", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + }, + { + "name": "oldNonce", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Permit", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "token", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "spender", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "amount", + "type": "uint160", + "indexed": false, + "internalType": "uint160" + }, + { + "name": "expiration", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + }, + { + "name": "nonce", + "type": "uint48", + "indexed": false, + "internalType": "uint48" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "UnorderedNonceInvalidation", + "inputs": [ + { + "name": "owner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "word", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "mask", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "AllowanceExpired", + "inputs": [ + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "ExcessiveInvalidation", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientAllowance", + "inputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "InvalidAmount", + "inputs": [ + { + "name": "maxAmount", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "LengthMismatch", + "inputs": [] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod IPermit2 { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); /**Custom error with signature `AllowanceExpired(uint256)` and selector `0xd81b2f2e`. ```solidity error AllowanceExpired(uint256 deadline); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct AllowanceExpired { - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -3178,10 +3553,15 @@ error AllowanceExpired(uint256 deadline); ```solidity error ExcessiveInvalidation(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ExcessiveInvalidation {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -3237,18 +3617,26 @@ error ExcessiveInvalidation(); ```solidity error InsufficientAllowance(uint256 amount); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InsufficientAllowance { - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -3302,18 +3690,26 @@ error InsufficientAllowance(uint256 amount); ```solidity error InvalidAmount(uint256 maxAmount); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidAmount { - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -3367,10 +3763,15 @@ error InvalidAmount(uint256 maxAmount); ```solidity error LengthMismatch(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct LengthMismatch {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -3426,7 +3827,12 @@ error LengthMismatch(); ```solidity event Approval(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -3436,15 +3842,16 @@ event Approval(address indexed owner, address indexed token, address indexed spe #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub amount: as alloy::sol_types::SolType>::RustType, + pub amount: alloy::sol_types::private::primitives::aliases::U160, #[allow(missing_docs)] - pub expiration: as alloy::sol_types::SolType>::RustType, + pub expiration: alloy::sol_types::private::primitives::aliases::U48, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3513,6 +3920,21 @@ event Approval(address indexed owner, address indexed token, address indexed spe } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -3703,7 +4150,12 @@ event Lockdown(address indexed owner, address token, address spender); ```solidity event NonceInvalidation(address indexed owner, address indexed token, address indexed spender, uint48 newNonce, uint48 oldNonce); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct NonceInvalidation { #[allow(missing_docs)] @@ -3713,15 +4165,16 @@ event NonceInvalidation(address indexed owner, address indexed token, address in #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub newNonce: as alloy::sol_types::SolType>::RustType, + pub newNonce: alloy::sol_types::private::primitives::aliases::U48, #[allow(missing_docs)] - pub oldNonce: as alloy::sol_types::SolType>::RustType, + pub oldNonce: alloy::sol_types::private::primitives::aliases::U48, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3790,6 +4243,21 @@ event NonceInvalidation(address indexed owner, address indexed token, address in } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( as alloy::sol_types::SolType>::RustType, + pub amount: alloy::sol_types::private::primitives::aliases::U160, #[allow(missing_docs)] - pub expiration: as alloy::sol_types::SolType>::RustType, + pub expiration: alloy::sol_types::private::primitives::aliases::U48, #[allow(missing_docs)] - pub nonce: as alloy::sol_types::SolType>::RustType, + pub nonce: alloy::sol_types::private::primitives::aliases::U48, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3946,6 +4418,21 @@ event Permit(address indexed owner, address indexed token, address indexed spend } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( , } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4258,28 +4776,33 @@ function DOMAIN_SEPARATOR() external view returns (bytes32); ```solidity function allowance(address user, address token, address spender) external view returns (uint160 amount, uint48 expiration, uint48 nonce); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceCall { + #[allow(missing_docs)] pub user: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`allowance(address,address,address)`](allowanceCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceReturn { - pub amount: as alloy::sol_types::SolType>::RustType, - pub expiration: as alloy::sol_types::SolType>::RustType, - pub nonce: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U160, + #[allow(missing_docs)] + pub expiration: alloy::sol_types::private::primitives::aliases::U48, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U48, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4334,15 +4857,9 @@ function allowance(address user, address token, address spender) external view r ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - as alloy::sol_types::SolType>::RustType, - as alloy::sol_types::SolType>::RustType, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U160, + alloy::sol_types::private::primitives::aliases::U48, + alloy::sol_types::private::primitives::aliases::U48, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -4431,23 +4948,28 @@ function allowance(address user, address token, address spender) external view r ```solidity function approve(address token, address spender, uint160 amount, uint48 expiration) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveCall { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub amount: as alloy::sol_types::SolType>::RustType, - pub expiration: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U160, + #[allow(missing_docs)] + pub expiration: alloy::sol_types::private::primitives::aliases::U48, } ///Container type for the return parameters of the [`approve(address,address,uint160,uint48)`](approveCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4462,12 +4984,8 @@ function approve(address token, address spender, uint160 amount, uint48 expirati type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - as alloy::sol_types::SolType>::RustType, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U160, + alloy::sol_types::private::primitives::aliases::U48, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -4588,20 +5106,26 @@ function approve(address token, address spender, uint160 amount, uint48 expirati ```solidity function invalidateNonces(address token, address spender, uint48 newNonce) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct invalidateNoncesCall { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub newNonce: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub newNonce: alloy::sol_types::private::primitives::aliases::U48, } ///Container type for the return parameters of the [`invalidateNonces(address,address,uint48)`](invalidateNoncesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct invalidateNoncesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4615,9 +5139,7 @@ function invalidateNonces(address token, address spender, uint48 newNonce) exter type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U48, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -4737,17 +5259,24 @@ function invalidateNonces(address token, address spender, uint48 newNonce) exter ```solidity function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct invalidateUnorderedNoncesCall { - pub wordPos: alloy::sol_types::private::U256, - pub mask: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub wordPos: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub mask: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`invalidateUnorderedNonces(uint256,uint256)`](invalidateUnorderedNoncesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct invalidateUnorderedNoncesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4758,8 +5287,8 @@ function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external; ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -4872,31 +5401,37 @@ function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external; }; /**Function with signature `lockdown((address,address)[])` and selector `0xcc53287f`. ```solidity -function lockdown(TokenSpenderPair[] memory approvals) external; +function lockdown(IAllowanceTransfer.TokenSpenderPair[] memory approvals) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct lockdownCall { + #[allow(missing_docs)] pub approvals: alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, } ///Container type for the return parameters of the [`lockdown((address,address)[])`](lockdownCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct lockdownReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, ); #[cfg(test)] @@ -4958,7 +5493,9 @@ function lockdown(TokenSpenderPair[] memory approvals) external; } #[automatically_derived] impl alloy_sol_types::SolCall for lockdownCall { - type Parameters<'a> = (alloy::sol_types::sol_data::Array,); + type Parameters<'a> = ( + alloy::sol_types::sol_data::Array, + ); type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; @@ -4979,7 +5516,7 @@ function lockdown(TokenSpenderPair[] memory approvals) external; fn tokenize(&self) -> Self::Token<'_> { ( as alloy_sol_types::SolType>::tokenize(&self.approvals), ) } @@ -4999,19 +5536,27 @@ function lockdown(TokenSpenderPair[] memory approvals) external; ```solidity function nonceBitmap(address, uint256) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nonceBitmapCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, - pub _1: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _1: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`nonceBitmap(address,uint256)`](nonceBitmapCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nonceBitmapReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5023,7 +5568,7 @@ function nonceBitmap(address, uint256) external view returns (uint256); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -5055,7 +5600,9 @@ function nonceBitmap(address, uint256) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -5129,33 +5676,41 @@ function nonceBitmap(address, uint256) external view returns (uint256); }; /**Function with signature `permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)` and selector `0x2a2d80d1`. ```solidity -function permit(address owner, PermitBatch memory permitBatch, bytes memory signature) external; +function permit(address owner, IAllowanceTransfer.PermitBatch memory permitBatch, bytes memory signature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit_0Call { + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, - pub permitBatch: ::RustType, + #[allow(missing_docs)] + pub permitBatch: ::RustType, + #[allow(missing_docs)] pub signature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)`](permit_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( alloy::sol_types::sol_data::Address, - PermitBatch, + IAllowanceTransfer::PermitBatch, alloy::sol_types::sol_data::Bytes, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - ::RustType, + ::RustType, alloy::sol_types::private::Bytes, ); #[cfg(test)] @@ -5223,7 +5778,7 @@ function permit(address owner, PermitBatch memory permitBatch, bytes memory sign impl alloy_sol_types::SolCall for permit_0Call { type Parameters<'a> = ( alloy::sol_types::sol_data::Address, - PermitBatch, + IAllowanceTransfer::PermitBatch, alloy::sol_types::sol_data::Bytes, ); type Token<'a> = ::tokenize( &self.owner, ), - ::tokenize( + ::tokenize( &self.permitBatch, ), ::tokenize( @@ -5270,33 +5825,41 @@ function permit(address owner, PermitBatch memory permitBatch, bytes memory sign }; /**Function with signature `permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)` and selector `0x2b67b570`. ```solidity -function permit(address owner, PermitSingle memory permitSingle, bytes memory signature) external; +function permit(address owner, IAllowanceTransfer.PermitSingle memory permitSingle, bytes memory signature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit_1Call { + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, - pub permitSingle: ::RustType, + #[allow(missing_docs)] + pub permitSingle: ::RustType, + #[allow(missing_docs)] pub signature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)`](permit_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( alloy::sol_types::sol_data::Address, - PermitSingle, + IAllowanceTransfer::PermitSingle, alloy::sol_types::sol_data::Bytes, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - ::RustType, + ::RustType, alloy::sol_types::private::Bytes, ); #[cfg(test)] @@ -5364,7 +5927,7 @@ function permit(address owner, PermitSingle memory permitSingle, bytes memory si impl alloy_sol_types::SolCall for permit_1Call { type Parameters<'a> = ( alloy::sol_types::sol_data::Address, - PermitSingle, + IAllowanceTransfer::PermitSingle, alloy::sol_types::sol_data::Bytes, ); type Token<'a> = ::tokenize( &self.owner, ), - ::tokenize( + ::tokenize( &self.permitSingle, ), ::tokenize( @@ -5411,35 +5974,44 @@ function permit(address owner, PermitSingle memory permitSingle, bytes memory si }; /**Function with signature `permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)` and selector `0x30f28b7a`. ```solidity -function permitTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes memory signature) external; +function permitTransferFrom(ISignatureTransfer.PermitTransferFrom memory permit, ISignatureTransfer.SignatureTransferDetails memory transferDetails, address owner, bytes memory signature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitTransferFrom_0Call { - pub permit: ::RustType, - pub transferDetails: ::RustType, + #[allow(missing_docs)] + pub permit: ::RustType, + #[allow(missing_docs)] + pub transferDetails: ::RustType, + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub signature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)`](permitTransferFrom_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitTransferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - PermitTransferFrom, - SignatureTransferDetails, + ISignatureTransfer::PermitTransferFrom, + ISignatureTransfer::SignatureTransferDetails, alloy::sol_types::sol_data::Address, alloy::sol_types::sol_data::Bytes, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - ::RustType, - ::RustType, + ::RustType, + ::RustType, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -5512,8 +6084,8 @@ function permitTransferFrom(PermitTransferFrom memory permit, SignatureTransferD #[automatically_derived] impl alloy_sol_types::SolCall for permitTransferFrom_0Call { type Parameters<'a> = ( - PermitTransferFrom, - SignatureTransferDetails, + ISignatureTransfer::PermitTransferFrom, + ISignatureTransfer::SignatureTransferDetails, alloy::sol_types::sol_data::Address, alloy::sol_types::sol_data::Bytes, ); @@ -5536,10 +6108,10 @@ function permitTransferFrom(PermitTransferFrom memory permit, SignatureTransferD #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( + ::tokenize( &self.permit, ), - ::tokenize( + ::tokenize( &self.transferDetails, ), ::tokenize( @@ -5564,38 +6136,49 @@ function permitTransferFrom(PermitTransferFrom memory permit, SignatureTransferD }; /**Function with signature `permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)` and selector `0xedd9444b`. ```solidity -function permitTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes memory signature) external; +function permitTransferFrom(ISignatureTransfer.PermitBatchTransferFrom memory permit, ISignatureTransfer.SignatureTransferDetails[] memory transferDetails, address owner, bytes memory signature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitTransferFrom_1Call { - pub permit: ::RustType, + #[allow(missing_docs)] + pub permit: ::RustType, + #[allow(missing_docs)] pub transferDetails: alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub signature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)`](permitTransferFrom_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitTransferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - PermitBatchTransferFrom, - alloy::sol_types::sol_data::Array, + ISignatureTransfer::PermitBatchTransferFrom, + alloy::sol_types::sol_data::Array< + ISignatureTransfer::SignatureTransferDetails, + >, alloy::sol_types::sol_data::Address, alloy::sol_types::sol_data::Bytes, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - ::RustType, + ::RustType, alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, @@ -5669,8 +6252,10 @@ function permitTransferFrom(PermitBatchTransferFrom memory permit, SignatureTran #[automatically_derived] impl alloy_sol_types::SolCall for permitTransferFrom_1Call { type Parameters<'a> = ( - PermitBatchTransferFrom, - alloy::sol_types::sol_data::Array, + ISignatureTransfer::PermitBatchTransferFrom, + alloy::sol_types::sol_data::Array< + ISignatureTransfer::SignatureTransferDetails, + >, alloy::sol_types::sol_data::Address, alloy::sol_types::sol_data::Bytes, ); @@ -5693,11 +6278,11 @@ function permitTransferFrom(PermitBatchTransferFrom memory permit, SignatureTran #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( + ::tokenize( &self.permit, ), as alloy_sol_types::SolType>::tokenize(&self.transferDetails), ::tokenize( &self.owner, @@ -5721,30 +6306,41 @@ function permitTransferFrom(PermitBatchTransferFrom memory permit, SignatureTran }; /**Function with signature `permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)` and selector `0x137c29fe`. ```solidity -function permitWitnessTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; +function permitWitnessTransferFrom(ISignatureTransfer.PermitTransferFrom memory permit, ISignatureTransfer.SignatureTransferDetails memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitWitnessTransferFrom_0Call { - pub permit: ::RustType, - pub transferDetails: ::RustType, + #[allow(missing_docs)] + pub permit: ::RustType, + #[allow(missing_docs)] + pub transferDetails: ::RustType, + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub witness: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] pub witnessTypeString: alloy::sol_types::private::String, + #[allow(missing_docs)] pub signature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)`](permitWitnessTransferFrom_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitWitnessTransferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - PermitTransferFrom, - SignatureTransferDetails, + ISignatureTransfer::PermitTransferFrom, + ISignatureTransfer::SignatureTransferDetails, alloy::sol_types::sol_data::Address, alloy::sol_types::sol_data::FixedBytes<32>, alloy::sol_types::sol_data::String, @@ -5752,8 +6348,8 @@ function permitWitnessTransferFrom(PermitTransferFrom memory permit, SignatureTr ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - ::RustType, - ::RustType, + ::RustType, + ::RustType, alloy::sol_types::private::Address, alloy::sol_types::private::FixedBytes<32>, alloy::sol_types::private::String, @@ -5837,8 +6433,8 @@ function permitWitnessTransferFrom(PermitTransferFrom memory permit, SignatureTr #[automatically_derived] impl alloy_sol_types::SolCall for permitWitnessTransferFrom_0Call { type Parameters<'a> = ( - PermitTransferFrom, - SignatureTransferDetails, + ISignatureTransfer::PermitTransferFrom, + ISignatureTransfer::SignatureTransferDetails, alloy::sol_types::sol_data::Address, alloy::sol_types::sol_data::FixedBytes<32>, alloy::sol_types::sol_data::String, @@ -5863,10 +6459,10 @@ function permitWitnessTransferFrom(PermitTransferFrom memory permit, SignatureTr #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( + ::tokenize( &self.permit, ), - ::tokenize( + ::tokenize( &self.transferDetails, ), ::tokenize( @@ -5897,32 +6493,45 @@ function permitWitnessTransferFrom(PermitTransferFrom memory permit, SignatureTr }; /**Function with signature `permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)` and selector `0xfe8ec1a7`. ```solidity -function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; +function permitWitnessTransferFrom(ISignatureTransfer.PermitBatchTransferFrom memory permit, ISignatureTransfer.SignatureTransferDetails[] memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitWitnessTransferFrom_1Call { - pub permit: ::RustType, + #[allow(missing_docs)] + pub permit: ::RustType, + #[allow(missing_docs)] pub transferDetails: alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub witness: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] pub witnessTypeString: alloy::sol_types::private::String, + #[allow(missing_docs)] pub signature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)`](permitWitnessTransferFrom_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitWitnessTransferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - PermitBatchTransferFrom, - alloy::sol_types::sol_data::Array, + ISignatureTransfer::PermitBatchTransferFrom, + alloy::sol_types::sol_data::Array< + ISignatureTransfer::SignatureTransferDetails, + >, alloy::sol_types::sol_data::Address, alloy::sol_types::sol_data::FixedBytes<32>, alloy::sol_types::sol_data::String, @@ -5930,9 +6539,9 @@ function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, Signat ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - ::RustType, + ::RustType, alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, alloy::sol_types::private::Address, alloy::sol_types::private::FixedBytes<32>, @@ -6017,8 +6626,10 @@ function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, Signat #[automatically_derived] impl alloy_sol_types::SolCall for permitWitnessTransferFrom_1Call { type Parameters<'a> = ( - PermitBatchTransferFrom, - alloy::sol_types::sol_data::Array, + ISignatureTransfer::PermitBatchTransferFrom, + alloy::sol_types::sol_data::Array< + ISignatureTransfer::SignatureTransferDetails, + >, alloy::sol_types::sol_data::Address, alloy::sol_types::sol_data::FixedBytes<32>, alloy::sol_types::sol_data::String, @@ -6043,11 +6654,11 @@ function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, Signat #[inline] fn tokenize(&self) -> Self::Token<'_> { ( - ::tokenize( + ::tokenize( &self.permit, ), as alloy_sol_types::SolType>::tokenize(&self.transferDetails), ::tokenize( &self.owner, @@ -6077,31 +6688,39 @@ function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, Signat }; /**Function with signature `transferFrom((address,address,uint160,address)[])` and selector `0x0d58b1db`. ```solidity -function transferFrom(AllowanceTransferDetails[] memory transferDetails) external; +function transferFrom(IAllowanceTransfer.AllowanceTransferDetails[] memory transferDetails) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFrom_0Call { + #[allow(missing_docs)] pub transferDetails: alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, } ///Container type for the return parameters of the [`transferFrom((address,address,uint160,address)[])`](transferFrom_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array< + IAllowanceTransfer::AllowanceTransferDetails, + >, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, ); #[cfg(test)] @@ -6166,7 +6785,9 @@ function transferFrom(AllowanceTransferDetails[] memory transferDetails) externa #[automatically_derived] impl alloy_sol_types::SolCall for transferFrom_0Call { type Parameters<'a> = ( - alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array< + IAllowanceTransfer::AllowanceTransferDetails, + >, ); type Token<'a> = Self::Token<'_> { ( as alloy_sol_types::SolType>::tokenize(&self.transferDetails), ) } @@ -6208,21 +6829,28 @@ function transferFrom(AllowanceTransferDetails[] memory transferDetails) externa ```solidity function transferFrom(address from, address to, uint160 amount, address token) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFrom_1Call { + #[allow(missing_docs)] pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U160, + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferFrom(address,address,uint160,address)`](transferFrom_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -6237,9 +6865,7 @@ function transferFrom(address from, address to, uint160 amount, address token) e type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U160, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -6361,20 +6987,35 @@ function transferFrom(address from, address to, uint160 amount, address token) e }; ///Container for all the [`IPermit2`](self) function calls. pub enum IPermit2Calls { + #[allow(missing_docs)] DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + #[allow(missing_docs)] allowance(allowanceCall), + #[allow(missing_docs)] approve(approveCall), + #[allow(missing_docs)] invalidateNonces(invalidateNoncesCall), + #[allow(missing_docs)] invalidateUnorderedNonces(invalidateUnorderedNoncesCall), + #[allow(missing_docs)] lockdown(lockdownCall), + #[allow(missing_docs)] nonceBitmap(nonceBitmapCall), + #[allow(missing_docs)] permit_0(permit_0Call), + #[allow(missing_docs)] permit_1(permit_1Call), + #[allow(missing_docs)] permitTransferFrom_0(permitTransferFrom_0Call), + #[allow(missing_docs)] permitTransferFrom_1(permitTransferFrom_1Call), + #[allow(missing_docs)] permitWitnessTransferFrom_0(permitWitnessTransferFrom_0Call), + #[allow(missing_docs)] permitWitnessTransferFrom_1(permitWitnessTransferFrom_1Call), + #[allow(missing_docs)] transferFrom_0(transferFrom_0Call), + #[allow(missing_docs)] transferFrom_1(transferFrom_1Call), } #[automatically_derived] @@ -6459,7 +7100,7 @@ function transferFrom(address from, address to, uint160 amount, address token) e Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -6673,7 +7314,7 @@ function transferFrom(address from, address to, uint160 amount, address token) e ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -6840,10 +7481,15 @@ function transferFrom(address from, address to, uint160 amount, address token) e } ///Container for all the [`IPermit2`](self) custom errors. pub enum IPermit2Errors { + #[allow(missing_docs)] AllowanceExpired(AllowanceExpired), + #[allow(missing_docs)] ExcessiveInvalidation(ExcessiveInvalidation), + #[allow(missing_docs)] InsufficientAllowance(InsufficientAllowance), + #[allow(missing_docs)] InvalidAmount(InvalidAmount), + #[allow(missing_docs)] LengthMismatch(LengthMismatch), } #[automatically_derived] @@ -6896,7 +7542,7 @@ function transferFrom(address from, address to, uint160 amount, address token) e Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -6980,7 +7626,7 @@ function transferFrom(address from, address to, uint160 amount, address token) e ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -7048,10 +7694,15 @@ function transferFrom(address from, address to, uint160 amount, address token) e } ///Container for all the [`IPermit2`](self) events. pub enum IPermit2Events { + #[allow(missing_docs)] Approval(Approval), + #[allow(missing_docs)] Lockdown(Lockdown), + #[allow(missing_docs)] NonceInvalidation(NonceInvalidation), + #[allow(missing_docs)] Permit(Permit), + #[allow(missing_docs)] UnorderedNonceInvalidation(UnorderedNonceInvalidation), } #[automatically_derived] @@ -7534,12 +8185,8 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, token: alloy::sol_types::private::Address, spender: alloy::sol_types::private::Address, - amount: as alloy::sol_types::SolType>::RustType, - expiration: as alloy::sol_types::SolType>::RustType, + amount: alloy::sol_types::private::primitives::aliases::U160, + expiration: alloy::sol_types::private::primitives::aliases::U48, ) -> alloy_contract::SolCallBuilder { self.call_builder( &approveCall { @@ -7555,9 +8202,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, token: alloy::sol_types::private::Address, spender: alloy::sol_types::private::Address, - newNonce: as alloy::sol_types::SolType>::RustType, + newNonce: alloy::sol_types::private::primitives::aliases::U48, ) -> alloy_contract::SolCallBuilder { self.call_builder( &invalidateNoncesCall { @@ -7570,8 +8215,8 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`invalidateUnorderedNonces`] function. pub fn invalidateUnorderedNonces( &self, - wordPos: alloy::sol_types::private::U256, - mask: alloy::sol_types::private::U256, + wordPos: alloy::sol_types::private::primitives::aliases::U256, + mask: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &invalidateUnorderedNoncesCall { @@ -7584,7 +8229,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn lockdown( &self, approvals: alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, ) -> alloy_contract::SolCallBuilder { self.call_builder(&lockdownCall { approvals }) @@ -7593,7 +8238,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn nonceBitmap( &self, _0: alloy::sol_types::private::Address, - _1: alloy::sol_types::private::U256, + _1: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&nonceBitmapCall { _0, _1 }) } @@ -7601,7 +8246,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn permit_0( &self, owner: alloy::sol_types::private::Address, - permitBatch: ::RustType, + permitBatch: ::RustType, signature: alloy::sol_types::private::Bytes, ) -> alloy_contract::SolCallBuilder { self.call_builder( @@ -7616,7 +8261,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn permit_1( &self, owner: alloy::sol_types::private::Address, - permitSingle: ::RustType, + permitSingle: ::RustType, signature: alloy::sol_types::private::Bytes, ) -> alloy_contract::SolCallBuilder { self.call_builder( @@ -7630,8 +8275,8 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`permitTransferFrom_0`] function. pub fn permitTransferFrom_0( &self, - permit: ::RustType, - transferDetails: ::RustType, + permit: ::RustType, + transferDetails: ::RustType, owner: alloy::sol_types::private::Address, signature: alloy::sol_types::private::Bytes, ) -> alloy_contract::SolCallBuilder { @@ -7647,9 +8292,9 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`permitTransferFrom_1`] function. pub fn permitTransferFrom_1( &self, - permit: ::RustType, + permit: ::RustType, transferDetails: alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, owner: alloy::sol_types::private::Address, signature: alloy::sol_types::private::Bytes, @@ -7666,8 +8311,8 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`permitWitnessTransferFrom_0`] function. pub fn permitWitnessTransferFrom_0( &self, - permit: ::RustType, - transferDetails: ::RustType, + permit: ::RustType, + transferDetails: ::RustType, owner: alloy::sol_types::private::Address, witness: alloy::sol_types::private::FixedBytes<32>, witnessTypeString: alloy::sol_types::private::String, @@ -7687,9 +8332,9 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`permitWitnessTransferFrom_1`] function. pub fn permitWitnessTransferFrom_1( &self, - permit: ::RustType, + permit: ::RustType, transferDetails: alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, owner: alloy::sol_types::private::Address, witness: alloy::sol_types::private::FixedBytes<32>, @@ -7711,7 +8356,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn transferFrom_0( &self, transferDetails: alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, ) -> alloy_contract::SolCallBuilder { self.call_builder( @@ -7725,9 +8370,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, from: alloy::sol_types::private::Address, to: alloy::sol_types::private::Address, - amount: as alloy::sol_types::SolType>::RustType, + amount: alloy::sol_types::private::primitives::aliases::U160, token: alloy::sol_types::private::Address, ) -> alloy_contract::SolCallBuilder { self.call_builder( diff --git a/crates/bindings-uniswapx/src/iprotocolfeecontroller.rs b/crates/bindings-uniswapx/src/iprotocolfeecontroller.rs index 34f10fa..88069cf 100644 --- a/crates/bindings-uniswapx/src/iprotocolfeecontroller.rs +++ b/crates/bindings-uniswapx/src/iprotocolfeecontroller.rs @@ -167,7 +167,13 @@ interface IProtocolFeeController { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IProtocolFeeController { use super::*; use alloy::sol_types as alloy_sol_types; @@ -194,14 +200,22 @@ pub mod IProtocolFeeController { /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -213,8 +227,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -431,17 +445,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -457,8 +482,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -727,14 +752,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -746,7 +779,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -960,18 +993,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1249,20 +1292,27 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getFeeOutputsCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](getFeeOutputsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getFeeOutputsReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Vec< ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1372,6 +1422,7 @@ function getFeeOutputs(ResolvedOrder memory order) external view returns (Output }; ///Container for all the [`IProtocolFeeController`](self) function calls. pub enum IProtocolFeeControllerCalls { + #[allow(missing_docs)] getFeeOutputs(getFeeOutputsCall), } #[automatically_derived] @@ -1406,7 +1457,7 @@ function getFeeOutputs(ResolvedOrder memory order) external view returns (Output Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1438,7 +1489,7 @@ function getFeeOutputs(ResolvedOrder memory order) external view returns (Output ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/ireactor.rs b/crates/bindings-uniswapx/src/ireactor.rs index bc14ad5..217836b 100644 --- a/crates/bindings-uniswapx/src/ireactor.rs +++ b/crates/bindings-uniswapx/src/ireactor.rs @@ -130,7 +130,13 @@ interface IReactor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IReactor { use super::*; use alloy::sol_types as alloy_sol_types; @@ -157,13 +163,20 @@ pub mod IReactor { /**```solidity struct SignedOrder { bytes order; bytes sig; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignedOrder { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -369,16 +382,22 @@ struct SignedOrder { bytes order; bytes sig; } ```solidity function execute(SignedOrder memory order) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -484,18 +503,24 @@ function execute(SignedOrder memory order) external payable; ```solidity function executeBatch(SignedOrder[] memory orders) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -609,19 +634,26 @@ function executeBatch(SignedOrder[] memory orders) external payable; ```solidity function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -750,17 +782,24 @@ function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory call ```solidity function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -880,9 +919,13 @@ function executeWithCallback(SignedOrder memory order, bytes memory callbackData }; ///Container for all the [`IReactor`](self) function calls. pub enum IReactorCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] executeBatchWithCallback(executeBatchWithCallbackCall), + #[allow(missing_docs)] executeWithCallback(executeWithCallbackCall), } #[automatically_derived] @@ -929,7 +972,7 @@ function executeWithCallback(SignedOrder memory order, bytes memory callbackData Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1000,7 +1043,7 @@ function executeWithCallback(SignedOrder memory order, bytes memory callbackData ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/ireactorcallback.rs b/crates/bindings-uniswapx/src/ireactorcallback.rs index daa1f78..9100728 100644 --- a/crates/bindings-uniswapx/src/ireactorcallback.rs +++ b/crates/bindings-uniswapx/src/ireactorcallback.rs @@ -149,7 +149,13 @@ interface IReactorCallback { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IReactorCallback { use super::*; use alloy::sol_types as alloy_sol_types; @@ -176,14 +182,22 @@ pub mod IReactorCallback { /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -195,8 +209,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -413,17 +427,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -439,8 +464,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -709,14 +734,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -728,7 +761,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -942,18 +975,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1231,19 +1274,26 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory callbackData) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackCall { + #[allow(missing_docs)] pub resolvedOrders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1368,6 +1418,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory cal }; ///Container for all the [`IReactorCallback`](self) function calls. pub enum IReactorCallbackCalls { + #[allow(missing_docs)] reactorCallback(reactorCallbackCall), } #[automatically_derived] @@ -1402,7 +1453,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory cal Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1434,7 +1485,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory cal ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/isignaturetransfer.rs b/crates/bindings-uniswapx/src/isignaturetransfer.rs index 5f063c5..bbee3ac 100644 --- a/crates/bindings-uniswapx/src/isignaturetransfer.rs +++ b/crates/bindings-uniswapx/src/isignaturetransfer.rs @@ -434,7 +434,13 @@ interface ISignatureTransfer { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod ISignatureTransfer { use super::*; use alloy::sol_types as alloy_sol_types; @@ -461,16 +467,24 @@ pub mod ISignatureTransfer { /**```solidity struct PermitBatchTransferFrom { TokenPermissions[] permitted; uint256 nonce; uint256 deadline; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct PermitBatchTransferFrom { + #[allow(missing_docs)] pub permitted: alloy::sol_types::private::Vec< ::RustType, >, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -484,8 +498,8 @@ struct PermitBatchTransferFrom { TokenPermissions[] permitted; uint256 nonce; ui alloy::sol_types::private::Vec< ::RustType, >, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -709,14 +723,22 @@ struct PermitBatchTransferFrom { TokenPermissions[] permitted; uint256 nonce; ui /**```solidity struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 deadline; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct PermitTransferFrom { + #[allow(missing_docs)] pub permitted: ::RustType, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -728,8 +750,8 @@ struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 d #[doc(hidden)] type UnderlyingRustTuple<'a> = ( ::RustType, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -949,13 +971,20 @@ struct PermitTransferFrom { TokenPermissions permitted; uint256 nonce; uint256 d /**```solidity struct SignatureTransferDetails { address to; uint256 requestedAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignatureTransferDetails { + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub requestedAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub requestedAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -966,7 +995,7 @@ struct SignatureTransferDetails { address to; uint256 requestedAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1168,13 +1197,20 @@ struct SignatureTransferDetails { address to; uint256 requestedAmount; } /**```solidity struct TokenPermissions { address token; uint256 amount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct TokenPermissions { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1185,7 +1221,7 @@ struct TokenPermissions { address token; uint256 amount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1384,18 +1420,26 @@ struct TokenPermissions { address token; uint256 amount; } ```solidity error InvalidAmount(uint256 maxAmount); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidAmount { - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1449,10 +1493,15 @@ error InvalidAmount(uint256 maxAmount); ```solidity error LengthMismatch(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct LengthMismatch {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1508,17 +1557,27 @@ error LengthMismatch(); ```solidity event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct UnorderedNonceInvalidation { #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub word: alloy::sol_types::private::U256, + pub word: alloy::sol_types::private::primitives::aliases::U256, #[allow(missing_docs)] - pub mask: alloy::sol_types::private::U256, + pub mask: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1583,6 +1642,21 @@ event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 ma } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( , } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1754,17 +1834,24 @@ function DOMAIN_SEPARATOR() external view returns (bytes32); ```solidity function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct invalidateUnorderedNoncesCall { - pub wordPos: alloy::sol_types::private::U256, - pub mask: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub wordPos: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub mask: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`invalidateUnorderedNonces(uint256,uint256)`](invalidateUnorderedNoncesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct invalidateUnorderedNoncesReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1775,8 +1862,8 @@ function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external; ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1891,19 +1978,27 @@ function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external; ```solidity function nonceBitmap(address, uint256) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nonceBitmapCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, - pub _1: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _1: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`nonceBitmap(address,uint256)`](nonceBitmapCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nonceBitmapReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1915,7 +2010,7 @@ function nonceBitmap(address, uint256) external view returns (uint256); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1947,7 +2042,9 @@ function nonceBitmap(address, uint256) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -2023,19 +2120,28 @@ function nonceBitmap(address, uint256) external view returns (uint256); ```solidity function permitTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes memory signature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitTransferFrom_0Call { + #[allow(missing_docs)] pub permit: ::RustType, + #[allow(missing_docs)] pub transferDetails: ::RustType, + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub signature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)`](permitTransferFrom_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitTransferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2176,21 +2282,30 @@ function permitTransferFrom(PermitTransferFrom memory permit, SignatureTransferD ```solidity function permitTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes memory signature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitTransferFrom_1Call { + #[allow(missing_docs)] pub permit: ::RustType, + #[allow(missing_docs)] pub transferDetails: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub signature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)`](permitTransferFrom_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitTransferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2333,21 +2448,32 @@ function permitTransferFrom(PermitBatchTransferFrom memory permit, SignatureTran ```solidity function permitWitnessTransferFrom(PermitTransferFrom memory permit, SignatureTransferDetails memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitWitnessTransferFrom_0Call { + #[allow(missing_docs)] pub permit: ::RustType, + #[allow(missing_docs)] pub transferDetails: ::RustType, + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub witness: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] pub witnessTypeString: alloy::sol_types::private::String, + #[allow(missing_docs)] pub signature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)`](permitWitnessTransferFrom_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitWitnessTransferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2509,23 +2635,34 @@ function permitWitnessTransferFrom(PermitTransferFrom memory permit, SignatureTr ```solidity function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, SignatureTransferDetails[] memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitWitnessTransferFrom_1Call { + #[allow(missing_docs)] pub permit: ::RustType, + #[allow(missing_docs)] pub transferDetails: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub witness: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] pub witnessTypeString: alloy::sol_types::private::String, + #[allow(missing_docs)] pub signature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)`](permitWitnessTransferFrom_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitWitnessTransferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2687,12 +2824,19 @@ function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, Signat }; ///Container for all the [`ISignatureTransfer`](self) function calls. pub enum ISignatureTransferCalls { + #[allow(missing_docs)] DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + #[allow(missing_docs)] invalidateUnorderedNonces(invalidateUnorderedNoncesCall), + #[allow(missing_docs)] nonceBitmap(nonceBitmapCall), + #[allow(missing_docs)] permitTransferFrom_0(permitTransferFrom_0Call), + #[allow(missing_docs)] permitTransferFrom_1(permitTransferFrom_1Call), + #[allow(missing_docs)] permitWitnessTransferFrom_0(permitWitnessTransferFrom_0Call), + #[allow(missing_docs)] permitWitnessTransferFrom_1(permitWitnessTransferFrom_1Call), } #[automatically_derived] @@ -2753,7 +2897,7 @@ function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, Signat Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2863,7 +3007,7 @@ function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, Signat ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2955,7 +3099,9 @@ function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, Signat } ///Container for all the [`ISignatureTransfer`](self) custom errors. pub enum ISignatureTransferErrors { + #[allow(missing_docs)] InvalidAmount(InvalidAmount), + #[allow(missing_docs)] LengthMismatch(LengthMismatch), } #[automatically_derived] @@ -2996,7 +3142,7 @@ function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, Signat Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3041,7 +3187,7 @@ function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, Signat ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3076,6 +3222,7 @@ function permitWitnessTransferFrom(PermitBatchTransferFrom memory permit, Signat } ///Container for all the [`ISignatureTransfer`](self) events. pub enum ISignatureTransferEvents { + #[allow(missing_docs)] UnorderedNonceInvalidation(UnorderedNonceInvalidation), } #[automatically_derived] @@ -3347,8 +3494,8 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`invalidateUnorderedNonces`] function. pub fn invalidateUnorderedNonces( &self, - wordPos: alloy::sol_types::private::U256, - mask: alloy::sol_types::private::U256, + wordPos: alloy::sol_types::private::primitives::aliases::U256, + mask: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &invalidateUnorderedNoncesCall { @@ -3361,7 +3508,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn nonceBitmap( &self, _0: alloy::sol_types::private::Address, - _1: alloy::sol_types::private::U256, + _1: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&nonceBitmapCall { _0, _1 }) } diff --git a/crates/bindings-uniswapx/src/iswaprouter02.rs b/crates/bindings-uniswapx/src/iswaprouter02.rs index 7f622cb..1c5381c 100644 --- a/crates/bindings-uniswapx/src/iswaprouter02.rs +++ b/crates/bindings-uniswapx/src/iswaprouter02.rs @@ -214,7 +214,13 @@ interface ISwapRouter02 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod ISwapRouter02 { use super::*; use alloy::sol_types as alloy_sol_types; @@ -241,15 +247,24 @@ pub mod ISwapRouter02 { /**```solidity struct ExactInputParams { bytes path; address recipient; uint256 amountIn; uint256 amountOutMinimum; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ExactInputParams { + #[allow(missing_docs)] pub path: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, - pub amountIn: alloy::sol_types::private::U256, - pub amountOutMinimum: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amountIn: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub amountOutMinimum: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -263,8 +278,8 @@ struct ExactInputParams { bytes path; address recipient; uint256 amountIn; uint2 type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Bytes, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -498,22 +513,30 @@ struct ExactInputParams { bytes path; address recipient; uint256 amountIn; uint2 /**```solidity struct ExactInputSingleParams { address tokenIn; address tokenOut; uint24 fee; address recipient; uint256 amountIn; uint256 amountOutMinimum; uint160 sqrtPriceLimitX96; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ExactInputSingleParams { + #[allow(missing_docs)] pub tokenIn: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub tokenOut: alloy::sol_types::private::Address, - pub fee: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub fee: alloy::sol_types::private::primitives::aliases::U24, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, - pub amountIn: alloy::sol_types::private::U256, - pub amountOutMinimum: alloy::sol_types::private::U256, - pub sqrtPriceLimitX96: as alloy::sol_types::SolType>::RustType, + #[allow(missing_docs)] + pub amountIn: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub amountOutMinimum: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub sqrtPriceLimitX96: alloy::sol_types::private::primitives::aliases::U160, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -530,15 +553,11 @@ struct ExactInputSingleParams { address tokenIn; address tokenOut; uint24 fee; a type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U24, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, - as alloy::sol_types::SolType>::RustType, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U160, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -831,16 +850,22 @@ struct ExactInputSingleParams { address tokenIn; address tokenOut; uint24 fee; a ```solidity function WETH9() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct WETH9Call {} ///Container type for the return parameters of the [`WETH9()`](WETH9Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct WETH9Return { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -944,18 +969,25 @@ function WETH9() external view returns (address); ```solidity function exactInput(ExactInputParams memory params) external payable returns (uint256 amountOut); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct exactInputCall { + #[allow(missing_docs)] pub params: ::RustType, } ///Container type for the return parameters of the [`exactInput((bytes,address,uint256,uint256))`](exactInputCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct exactInputReturn { - pub amountOut: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amountOut: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -995,7 +1027,9 @@ function exactInput(ExactInputParams memory params) external payable returns (ui #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1061,18 +1095,25 @@ function exactInput(ExactInputParams memory params) external payable returns (ui ```solidity function exactInputSingle(ExactInputSingleParams memory params) external payable returns (uint256 amountOut); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct exactInputSingleCall { + #[allow(missing_docs)] pub params: ::RustType, } ///Container type for the return parameters of the [`exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))`](exactInputSingleCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct exactInputSingleReturn { - pub amountOut: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amountOut: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1114,7 +1155,9 @@ function exactInputSingle(ExactInputSingleParams memory params) external payable #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1186,19 +1229,27 @@ function exactInputSingle(ExactInputSingleParams memory params) external payable ```solidity function multicall(uint256 deadline, bytes[] memory data) external payable returns (bytes[] memory results); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct multicallCall { - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub data: alloy::sol_types::private::Vec, } ///Container type for the return parameters of the [`multicall(uint256,bytes[])`](multicallCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct multicallReturn { + #[allow(missing_docs)] pub results: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1209,7 +1260,7 @@ function multicall(uint256 deadline, bytes[] memory data) external payable retur ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Vec, ); #[cfg(test)] @@ -1327,21 +1378,31 @@ function multicall(uint256 deadline, bytes[] memory data) external payable retur ```solidity function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] memory path, address to) external payable returns (uint256 amountOut); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct swapExactTokensForTokensCall { - pub amountIn: alloy::sol_types::private::U256, - pub amountOutMin: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amountIn: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub amountOutMin: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub path: alloy::sol_types::private::Vec, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`swapExactTokensForTokens(uint256,uint256,address[],address)`](swapExactTokensForTokensCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct swapExactTokensForTokensReturn { - pub amountOut: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amountOut: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1354,8 +1415,8 @@ function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, addres ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Vec, alloy::sol_types::private::Address, ); @@ -1396,7 +1457,9 @@ function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, addres #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1482,23 +1545,31 @@ function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, addres ```solidity function unwrapWETH9(uint256 amountMinimum) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unwrapWETH9Call { - pub amountMinimum: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amountMinimum: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`unwrapWETH9(uint256)`](unwrapWETH9Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unwrapWETH9Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1597,11 +1668,17 @@ function unwrapWETH9(uint256 amountMinimum) external payable; }; ///Container for all the [`ISwapRouter02`](self) function calls. pub enum ISwapRouter02Calls { + #[allow(missing_docs)] WETH9(WETH9Call), + #[allow(missing_docs)] exactInput(exactInputCall), + #[allow(missing_docs)] exactInputSingle(exactInputSingleCall), + #[allow(missing_docs)] multicall(multicallCall), + #[allow(missing_docs)] swapExactTokensForTokens(swapExactTokensForTokensCall), + #[allow(missing_docs)] unwrapWETH9(unwrapWETH9Call), } #[automatically_derived] @@ -1656,7 +1733,7 @@ function unwrapWETH9(uint256 amountMinimum) external payable; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1753,7 +1830,7 @@ function unwrapWETH9(uint256 amountMinimum) external payable; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2008,7 +2085,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`multicall`] function. pub fn multicall( &self, - deadline: alloy::sol_types::private::U256, + deadline: alloy::sol_types::private::primitives::aliases::U256, data: alloy::sol_types::private::Vec, ) -> alloy_contract::SolCallBuilder { self.call_builder(&multicallCall { deadline, data }) @@ -2016,8 +2093,8 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`swapExactTokensForTokens`] function. pub fn swapExactTokensForTokens( &self, - amountIn: alloy::sol_types::private::U256, - amountOutMin: alloy::sol_types::private::U256, + amountIn: alloy::sol_types::private::primitives::aliases::U256, + amountOutMin: alloy::sol_types::private::primitives::aliases::U256, path: alloy::sol_types::private::Vec, to: alloy::sol_types::private::Address, ) -> alloy_contract::SolCallBuilder { @@ -2033,7 +2110,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`unwrapWETH9`] function. pub fn unwrapWETH9( &self, - amountMinimum: alloy::sol_types::private::U256, + amountMinimum: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&unwrapWETH9Call { amountMinimum }) } diff --git a/crates/bindings-uniswapx/src/ivalidationcallback.rs b/crates/bindings-uniswapx/src/ivalidationcallback.rs index b9fb29b..3960296 100644 --- a/crates/bindings-uniswapx/src/ivalidationcallback.rs +++ b/crates/bindings-uniswapx/src/ivalidationcallback.rs @@ -149,7 +149,13 @@ interface IValidationCallback { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod IValidationCallback { use super::*; use alloy::sol_types as alloy_sol_types; @@ -176,14 +182,22 @@ pub mod IValidationCallback { /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -195,8 +209,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -413,17 +427,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -439,8 +464,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -709,14 +734,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -728,7 +761,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -942,18 +975,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1231,17 +1274,24 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity function validate(address filler, ResolvedOrder memory resolvedOrder) external view; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct validateCall { + #[allow(missing_docs)] pub filler: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub resolvedOrder: ::RustType, } ///Container type for the return parameters of the [`validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](validateCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct validateReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1359,6 +1409,7 @@ function validate(address filler, ResolvedOrder memory resolvedOrder) external v }; ///Container for all the [`IValidationCallback`](self) function calls. pub enum IValidationCallbackCalls { + #[allow(missing_docs)] validate(validateCall), } #[automatically_derived] @@ -1391,7 +1442,7 @@ function validate(address filler, ResolvedOrder memory resolvedOrder) external v Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1423,7 +1474,7 @@ function validate(address filler, ResolvedOrder memory resolvedOrder) external v ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/limitorderlib.rs b/crates/bindings-uniswapx/src/limitorderlib.rs index 14fec01..03691f7 100644 --- a/crates/bindings-uniswapx/src/limitorderlib.rs +++ b/crates/bindings-uniswapx/src/limitorderlib.rs @@ -9,29 +9,35 @@ interface LimitOrderLib {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod LimitOrderLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122095bd1eb8b1a57102059bbfbe06672aa9509062121126f0a64e2cb8108159ff5b64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205bb392c433bff37daa479ad4558e091770846eeab47cb0bb8bab595cc473b15464736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x95\xBD\x1E\xB8\xB1\xA5q\x02\x05\x9B\xBF\xBE\x06g*\xA9P\x90b\x12\x11&\xF0\xA6N,\xB8\x10\x81Y\xFF[dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 [\xB3\x92\xC43\xBF\xF3}\xAAG\x9A\xD4U\x8E\t\x17p\x84n\xEA\xB4|\xB0\xBB\x8B\xABY\\\xC4s\xB1TdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122095bd1eb8b1a57102059bbfbe06672aa9509062121126f0a64e2cb8108159ff5b64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212205bb392c433bff37daa479ad4558e091770846eeab47cb0bb8bab595cc473b15464736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x95\xBD\x1E\xB8\xB1\xA5q\x02\x05\x9B\xBF\xBE\x06g*\xA9P\x90b\x12\x11&\xF0\xA6N,\xB8\x10\x81Y\xFF[dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 [\xB3\x92\xC43\xBF\xF3}\xAAG\x9A\xD4U\x8E\t\x17p\x84n\xEA\xB4|\xB0\xBB\x8B\xABY\\\xC4s\xB1TdsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`LimitOrderLib`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/limitorderreactor.rs b/crates/bindings-uniswapx/src/limitorderreactor.rs index ec652cd..3e7a596 100644 --- a/crates/bindings-uniswapx/src/limitorderreactor.rs +++ b/crates/bindings-uniswapx/src/limitorderreactor.rs @@ -362,40 +362,53 @@ interface LimitOrderReactor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod LimitOrderReactor { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a06040523480156200001157600080fd5b506040516200284e3803806200284e8339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051612735620001196000396000818160e0015261137501526127356000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046119d2565b6101eb565b005b6100b96100c9366004611a80565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004611ac2565b6104c5565b34801561014a57600080fd5b506100b9610159366004611b50565b610683565b6100b961016c366004611b74565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004611b50565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5611be0565b60200260200101819052506102d981610b03565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401611de3565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610b54565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388611bb1565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466611be0565b90506020028101906104789190611ea9565b6109f6565b82828151811061048f5761048f611be0565b6020908102919091010152600101610449565b506104ac81610b03565b6104b581610b54565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9611bb1565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466611be0565b8282815181106105d9576105d9611be0565b60209081029190910101526001016105aa565b506105f681610b03565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401611de3565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610b54565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869611be0565b602002602001018190525061087d81610b03565b61088681610b54565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380611ee7565b810190610a7c9190612189565b90506040518060a00160405280826000015181526020018260200151815260200182604001518152602001848060200190610ab79190611ee7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610afa83610ca7565b90529392505050565b805160005b8181101561035f576000838281518110610b2457610b24611be0565b60200260200101519050610b3781610d82565b610b418133611272565b610b4b8133611373565b50600101610b08565b805160005b81811015610c96576000838281518110610b7557610b75611be0565b602002602001015190506000816040015151905060005b81811015610bf657600083604001518281518110610bac57610bac611be0565b60200260200101519050610bed81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff1661157c9092919063ffffffff16565b50600101610b8c565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c3f57610c3f611be0565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610c8491815260200190565b60405180910390a45050600101610b59565b5047156104c1576104c133476115c3565b60006040518060c00160405280608d8152602001612673608d91396040518060600160405280603b815260200161260a603b9139604051602001610cec9291906122a7565b60405160208183030381529060405280519060200120610d0f836000015161165d565b60208085015180519101516040860151610d28906116f7565b60408051602081019690965285019390935273ffffffffffffffffffffffffffffffffffffffff9091166060840152608083015260a082015260c0015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff16610da25750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390610df990859060040161239a565b600060405180830381865afa158015610e16573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e5c91908101906123ad565b6040830151518151919250906000610e74828461247d565b67ffffffffffffffff811115610e8c57610e8c611bb1565b604051908082528060200260200182016040528015610ef557816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610eaa5790505b50905060005b83811015610f465785604001518181518110610f1957610f19611be0565b6020026020010151828281518110610f3357610f33611be0565b6020908102919091010152600101610efb565b5060008060005b84811015611261576000878281518110610f6957610f69611be0565b6020026020010151905060005b8281101561102757888181518110610f9057610f90611be0565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361101f5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b600101610f76565b506000805b888110156110e85760008b60400151828151811061104c5761104c611be0565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036110df5785156110c9576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516110d8908461247d565b9250600196505b5060010161102c565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff918216911603611161578415611148576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b0151015161115a908261247d565b9050600193505b806000036111b65781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6111c4816005612710611795565b82602001511115611237578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a018151811061124c5761124c611be0565b60209081029190910101525050600101610f4d565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146112c3576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b9061133f90849086906004016124b7565b60006040518083038186803b15801561135757600080fd5b505afa15801561136b573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611433846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b61143d85856117d1565b85600001516020015186608001516040518060c00160405280608d8152602001612673608d91396040518060600160405280603b815260200161260a603b913960405160200161148e9291906122a7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e80835290919061264560208301396040516020016114e19291906124e6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16835261154e9695949392600401612541565b600060405180830381600087803b15801561156857600080fd5b505af115801561136b573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff83166115a15761035f82826115c3565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484611818565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461161d576040519150601f19603f3d011682016040523d82523d6000602084013e611622565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001612673608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610d6598939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff81111561171757611717611bb1565b6040519080825280601f01601f191660200182016040528015611741576020820181803683370190505b50905060005b835181101561178657600061177485838151811061176757611767611be0565b602002602001015161190a565b60208381028501015250600101611747565b50805160209091012092915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026117ca57600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611903576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060600160405280603b815260200161260a603b9139805160209182012083518483015160408087015181519586019490945273ffffffffffffffffffffffffffffffffffffffff92831690850152606084015216608082015260a001610d65565b60006040828403121561198357600080fd5b50919050565b60008083601f84011261199b57600080fd5b50813567ffffffffffffffff8111156119b357600080fd5b6020830191508360208285010111156119cb57600080fd5b9250929050565b6000806000604084860312156119e757600080fd5b833567ffffffffffffffff808211156119ff57600080fd5b611a0b87838801611971565b94506020860135915080821115611a2157600080fd5b50611a2e86828701611989565b9497909650939450505050565b60008083601f840112611a4d57600080fd5b50813567ffffffffffffffff811115611a6557600080fd5b6020830191508360208260051b85010111156119cb57600080fd5b60008060208385031215611a9357600080fd5b823567ffffffffffffffff811115611aaa57600080fd5b611ab685828601611a3b565b90969095509350505050565b60008060008060408587031215611ad857600080fd5b843567ffffffffffffffff80821115611af057600080fd5b611afc88838901611a3b565b90965094506020870135915080821115611b1557600080fd5b50611b2287828801611989565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b600060208284031215611b6257600080fd5b8135611b6d81611b2e565b9392505050565b600060208284031215611b8657600080fd5b813567ffffffffffffffff811115611b9d57600080fd5b611ba984828501611971565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b83811015611c2a578181015183820152602001611c12565b50506000910152565b60008151808452611c4b816020860160208601611c0f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015611cdd578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101611c92565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c0610180850152611d5c6101a0850182611c33565b90506020830151611d9a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152611db28282611c7d565b915050606083015184820360a0860152611dcc8282611c33565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015611e58577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552611e46868351611ce8565b95509382019390820190600101611e0c565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112611edd57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f1c57600080fd5b83018035915067ffffffffffffffff821115611f3757600080fd5b6020019150368190038213156119cb57600080fd5b6040516060810167ffffffffffffffff81118282101715611f6f57611f6f611bb1565b60405290565b60405160c0810167ffffffffffffffff81118282101715611f6f57611f6f611bb1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611fdf57611fdf611bb1565b604052919050565b600082601f830112611ff857600080fd5b813567ffffffffffffffff81111561201257612012611bb1565b61204360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611f98565b81815284602083860101111561205857600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561208757600080fd5b61208f611f4c565b9050813561209c81611b2e565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff8211156120d4576120d4611bb1565b5060051b60200190565b600082601f8301126120ef57600080fd5b813560206121046120ff836120ba565b611f98565b8281526060928302850182019282820191908785111561212357600080fd5b8387015b8581101561217c5781818a03121561213f5760008081fd5b612147611f4c565b813561215281611b2e565b8152818601358682015260408083013561216b81611b2e565b908201528452928401928101612127565b5090979650505050505050565b60006020828403121561219b57600080fd5b813567ffffffffffffffff808211156121b357600080fd5b9083019060a082860312156121c757600080fd5b6121cf611f4c565b8235828111156121de57600080fd5b830160c081880312156121f057600080fd5b6121f8611f75565b813561220381611b2e565b8152602082013561221381611b2e565b806020830152506040820135604082015260608201356060820152608082013561223c81611b2e565b608082015260a08201358481111561225357600080fd5b61225f89828501611fe7565b60a0830152508252506122758660208501612075565b602082015260808301358281111561228c57600080fd5b612298878286016120de565b60408301525095945050505050565b7f4c696d69744f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f6164647265737320696e707574546f6b656e2c00000000000000000000000000601a8201527f75696e7432353620696e707574416d6f756e742c000000000000000000000000602d8201527f4f7574707574546f6b656e5b5d206f7574707574732900000000000000000000604182015260008351612377816057850160208801611c0f565b83519083019061238e816057840160208801611c0f565b01605701949350505050565b602081526000611b6d6020830184611ce8565b600060208083850312156123c057600080fd5b825167ffffffffffffffff8111156123d757600080fd5b8301601f810185136123e857600080fd5b80516123f66120ff826120ba565b8181526060918202830184019184820191908884111561241557600080fd5b938501935b838510156124715780858a0312156124325760008081fd5b61243a611f4c565b855161244581611b2e565b8152858701518782015260408087015161245e81611b2e565b908201528352938401939185019161241a565b50979650505050505050565b80820180821115611812577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611ba96040830184611ce8565b7f4c696d69744f72646572207769746e657373290000000000000000000000000081526000835161251e816013850160208801611c0f565b835190830190612535816013840160208801611c0f565b01601301949350505050565b6000610140612571838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526125b26080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526125e781840186611c33565b90508281036101208401526125fc8185611c33565b999850505050505050505056fe4f7574707574546f6b656e286164647265737320746f6b656e2c75696e7432353620616d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220d4d14b5726d449eaf302dfca86ae6979f6c36a875f1b771d39c9d8c74d2c47f664736f6c63430008180033 + ///0x60a060405234801562000010575f80fd5b5060405162002793380380620027938339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b608051612682620001115f395f818160da015261132b01526126825ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af36600461196b565b6101e0565b005b6100b46100c4366004611a10565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004611a4f565b6104af565b348015610143575f80fd5b506100b4610152366004611ad7565b610665565b6100b4610165366004611af9565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db366004611ad7565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b7611b60565b60200260200101819052506102cb81610adc565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b90849087908790600401611d5b565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b2b565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff81111561037457610374611b33565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c5761046785858381811061045057610450611b60565b90506020028101906104629190611e1e565b6109d2565b82828151811061047957610479611b60565b6020908102919091010152600101610433565b5061049681610adc565b61049f81610b2b565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d2611b33565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae87878381811061045057610450611b60565b8282815181106105c0576105c0611b60565b6020908102919091010152600101610591565b506105dd81610adc565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d90849088908890600401611d5b565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b2b565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f8151811061084757610847611b60565b602002602001018190525061085b81610adc565b61086481610b2b565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a8380611e5a565b810190610a5791906120ec565b90506040518060a00160405280825f015181526020018260200151815260200182604001518152602001848060200190610a919190611e5a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610ad383610c76565b90529392505050565b80515f5b8181101561034c575f838281518110610afb57610afb611b60565b60200260200101519050610b0e81610d4f565b610b18813361122c565b610b228133611329565b50600101610ae0565b80515f5b81811015610c65575f838281518110610b4a57610b4a611b60565b602002602001015190505f81604001515190505f5b81811015610bc7575f83604001518281518110610b7e57610b7e611b60565b60200260200101519050610bbe81604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff1661152b9092919063ffffffff16565b50600101610b5f565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c0f57610c0f611b60565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610c5391815260200190565b60405180910390a45050600101610b2f565b5047156104ab576104ab3347611572565b5f6040518060c00160405280608d81526020016125c0608d91396040518060600160405280603b8152602001612557603b9139604051602001610cba929190612202565b60405160208183030381529060405280519060200120610cdc835f0151611608565b60208085015180519101516040860151610cf5906116a1565b60408051602081019690965285019390935273ffffffffffffffffffffffffffffffffffffffff9091166060840152608083015260a082015260c0015b604051602081830303815290604052805190602001209050919050565b60015473ffffffffffffffffffffffffffffffffffffffff16610d6f5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390610dc59085906004016122f4565b5f60405180830381865afa158015610ddf573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e249190810190612306565b6040830151518151919250905f610e3b82846123cf565b67ffffffffffffffff811115610e5357610e53611b33565b604051908082528060200260200182016040528015610ebb57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610e715790505b5090505f5b83811015610f0b5785604001518181518110610ede57610ede611b60565b6020026020010151828281518110610ef857610ef8611b60565b6020908102919091010152600101610ec0565b505f805f5b8481101561121b575f878281518110610f2b57610f2b611b60565b602002602001015190505f5b82811015610fe657888181518110610f5157610f51611b60565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff1603610fde5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b600101610f37565b505f805b888110156110a3575f8b60400151828151811061100957611009611b60565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff160361109a578515611084576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161109390846123cf565b9250600196505b50600101610fea565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361111c578415611103576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b0151015161111590826123cf565b9050600193505b805f036111705781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b61117e81600561271061173c565b826020015111156111f1578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a018151811061120657611206611b60565b60209081029190910101525050600101610f10565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff16301461127d576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906112f99084908690600401612407565b5f6040518083038186803b15801561130f575f80fd5b505afa158015611321573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6113e8846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6113f28585611776565b855f01516020015186608001516040518060c00160405280608d81526020016125c0608d91396040518060600160405280603b8152602001612557603b9139604051602001611442929190612202565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e8083529091906125926020830139604051602001611495929190612435565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611502969594939260040161248f565b5f604051808303815f87803b158015611519575f80fd5b505af1158015611321573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff83166115505761034c8282611572565b61034c73ffffffffffffffffffffffffffffffffffffffff84163384846117bc565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f81146115c8576040519150601f19603f3d011682016040523d82523d5f602084013e6115cd565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060c00160405280608d81526020016125c0608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610d3298939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff8111156116c0576116c0611b33565b6040519080825280601f01601f1916602001820160405280156116ea576020820181803683370190505b5090505f5b835181101561172d575f61171b85838151811061170e5761170e611b60565b60200260200101516118aa565b602083810285010152506001016116ef565b50805160209091012092915050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261176f575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5050505050565b5f6040518060600160405280603b8152602001612557603b9139805160209182012083518483015160408087015181519586019490945273ffffffffffffffffffffffffffffffffffffffff92831690850152606084015216608082015260a001610d32565b5f60408284031215611920575f80fd5b50919050565b5f8083601f840112611936575f80fd5b50813567ffffffffffffffff81111561194d575f80fd5b602083019150836020828501011115611964575f80fd5b9250929050565b5f805f6040848603121561197d575f80fd5b833567ffffffffffffffff80821115611994575f80fd5b6119a087838801611910565b945060208601359150808211156119b5575f80fd5b506119c286828701611926565b9497909650939450505050565b5f8083601f8401126119df575f80fd5b50813567ffffffffffffffff8111156119f6575f80fd5b6020830191508360208260051b8501011115611964575f80fd5b5f8060208385031215611a21575f80fd5b823567ffffffffffffffff811115611a37575f80fd5b611a43858286016119cf565b90969095509350505050565b5f805f8060408587031215611a62575f80fd5b843567ffffffffffffffff80821115611a79575f80fd5b611a85888389016119cf565b90965094506020870135915080821115611a9d575f80fd5b50611aaa87828801611926565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b5f60208284031215611ae7575f80fd5b8135611af281611ab6565b9392505050565b5f60208284031215611b09575f80fd5b813567ffffffffffffffff811115611b1f575f80fd5b611b2b84828501611910565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b83811015611ba7578181015183820152602001611b8f565b50505f910152565b5f8151808452611bc6816020860160208601611b8d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b83811015611c56578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101611c0b565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c0610180850152611cd46101a0850182611baf565b90506020830151611d126020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152611d2a8282611bf8565b915050606083015184820360a0860152611d448282611baf565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b83811015611dce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552611dbc868351611c61565b95509382019390820190600101611d82565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112611e50575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611e8d575f80fd5b83018035915067ffffffffffffffff821115611ea7575f80fd5b602001915036819003821315611964575f80fd5b6040516060810167ffffffffffffffff81118282101715611ede57611ede611b33565b60405290565b60405160c0810167ffffffffffffffff81118282101715611ede57611ede611b33565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611f4e57611f4e611b33565b604052919050565b5f82601f830112611f65575f80fd5b813567ffffffffffffffff811115611f7f57611f7f611b33565b611fb060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611f07565b818152846020838601011115611fc4575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608284031215611ff0575f80fd5b611ff8611ebb565b9050813561200581611ab6565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff82111561203c5761203c611b33565b5060051b60200190565b5f82601f830112612055575f80fd5b8135602061206a61206583612023565b611f07565b82815260609283028501820192828201919087851115612088575f80fd5b8387015b858110156120df5781818a0312156120a2575f80fd5b6120aa611ebb565b81356120b581611ab6565b815281860135868201526040808301356120ce81611ab6565b90820152845292840192810161208c565b5090979650505050505050565b5f602082840312156120fc575f80fd5b813567ffffffffffffffff80821115612113575f80fd5b9083019060a08286031215612126575f80fd5b61212e611ebb565b82358281111561213c575f80fd5b830160c0818803121561214d575f80fd5b612155611ee4565b813561216081611ab6565b8152602082013561217081611ab6565b806020830152506040820135604082015260608201356060820152608082013561219981611ab6565b608082015260a0820135848111156121af575f80fd5b6121bb89828501611f56565b60a0830152508252506121d18660208501611fe0565b60208201526080830135828111156121e7575f80fd5b6121f387828601612046565b60408301525095945050505050565b7f4c696d69744f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f6164647265737320696e707574546f6b656e2c00000000000000000000000000601a8201527f75696e7432353620696e707574416d6f756e742c000000000000000000000000602d8201527f4f7574707574546f6b656e5b5d206f757470757473290000000000000000000060418201525f83516122d1816057850160208801611b8d565b8351908301906122e8816057840160208801611b8d565b01605701949350505050565b602081525f611af26020830184611c61565b5f6020808385031215612317575f80fd5b825167ffffffffffffffff81111561232d575f80fd5b8301601f8101851361233d575f80fd5b805161234b61206582612023565b81815260609182028301840191848201919088841115612369575f80fd5b938501935b838510156123c35780858a031215612384575f80fd5b61238c611ebb565b855161239781611ab6565b815285870151878201526040808701516123b081611ab6565b908201528352938401939185019161236e565b50979650505050505050565b808201808211156117b6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611b2b6040830184611c61565b7f4c696d69744f72646572207769746e657373290000000000000000000000000081525f835161246c816013850160208801611b8d565b835190830190612483816013840160208801611b8d565b01601301949350505050565b5f6101406124be838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526124ff6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e08401528061010084015261253481840186611baf565b90508281036101208401526125498185611baf565b999850505050505050505056fe4f7574707574546f6b656e286164647265737320746f6b656e2c75696e7432353620616d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220d9d58675808dab8af41b7d2c180d888ae556d67f8a4b3da765a8a6a582735b5f64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0(N8\x03\x80b\0(N\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa'5b\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x13u\x01Ra'5`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a\x19\xD2V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a\x1A\x80V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a\x1A\xC2V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a\x1BPV[a\x06\x83V[a\0\xB9a\x01l6`\x04a\x1BtV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a\x1BPV[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a\x1B\xE0V[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0B\x03V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a\x1D\xE3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0BTV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a\x1B\xB1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa\x1B\xE0V[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a\x1E\xA9V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0B\x03V[a\x04\xB5\x81a\x0BTV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a\x1B\xB1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa\x1B\xE0V[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0B\x03V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\x1D\xE3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0BTV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia\x1B\xE0V[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0B\x03V[a\x08\x86\x81a\x0BTV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a\x1E\xE7V[\x81\x01\x90a\n|\x91\x90a!\x89V[\x90P`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01\x82` \x01Q\x81R` \x01\x82`@\x01Q\x81R` \x01\x84\x80` \x01\x90a\n\xB7\x91\x90a\x1E\xE7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\n\xFA\x83a\x0C\xA7V[\x90R\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B$Wa\x0B$a\x1B\xE0V[` \x02` \x01\x01Q\x90Pa\x0B7\x81a\r\x82V[a\x0BA\x813a\x12rV[a\x0BK\x813a\x13sV[P`\x01\x01a\x0B\x08V[\x80Q`\0[\x81\x81\x10\x15a\x0C\x96W`\0\x83\x82\x81Q\x81\x10a\x0BuWa\x0Bua\x1B\xE0V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0B\xF6W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xACWa\x0B\xACa\x1B\xE0V[` \x02` \x01\x01Q\x90Pa\x0B\xED\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15|\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\x8CV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C?Wa\x0C?a\x1B\xE0V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\x84\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0BYV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x15\xC3V[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a&s`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a&\n`;\x919`@Q` \x01a\x0C\xEC\x92\x91\x90a\"\xA7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\r\x0F\x83`\0\x01Qa\x16]V[` \x80\x85\x01Q\x80Q\x91\x01Q`@\x86\x01Qa\r(\x90a\x16\xF7V[`@\x80Q` \x81\x01\x96\x90\x96R\x85\x01\x93\x90\x93Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\r\xA2WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\r\xF9\x90\x85\x90`\x04\x01a#\x9AV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x16W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0E\\\x91\x90\x81\x01\x90a#\xADV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x0Et\x82\x84a$}V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x8CWa\x0E\x8Ca\x1B\xB1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xF5W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xAAW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x0FFW\x85`@\x01Q\x81\x81Q\x81\x10a\x0F\x19Wa\x0F\x19a\x1B\xE0V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0F3Wa\x0F3a\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E\xFBV[P`\0\x80`\0[\x84\x81\x10\x15a\x12aW`\0\x87\x82\x81Q\x81\x10a\x0FiWa\x0Fia\x1B\xE0V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x10'W\x88\x81\x81Q\x81\x10a\x0F\x90Wa\x0F\x90a\x1B\xE0V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\x1FW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x0FvV[P`\0\x80[\x88\x81\x10\x15a\x10\xE8W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x10LWa\x10La\x1B\xE0V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\xDFW\x85\x15a\x10\xC9W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x10\xD8\x90\x84a$}V[\x92P`\x01\x96P[P`\x01\x01a\x10,V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x11aW\x84\x15a\x11HW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11Z\x90\x82a$}V[\x90P`\x01\x93P[\x80`\0\x03a\x11\xB6W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x11\xC4\x81`\x05a'\x10a\x17\x95V[\x82` \x01Q\x11\x15a\x127W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x12LWa\x12La\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x0FMV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x12\xC3W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x13?\x90\x84\x90\x86\x90`\x04\x01a$\xB7V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x13WW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x13kW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x143\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x14=\x85\x85a\x17\xD1V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a&s`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a&\n`;\x919`@Q` \x01a\x14\x8E\x92\x91\x90a\"\xA7V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a&E` \x83\x019`@Q` \x01a\x14\xE1\x92\x91\x90a$\xE6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x15N\x96\x95\x94\x93\x92`\x04\x01a%AV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15hW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13kW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x15\xA1Wa\x03_\x82\x82a\x15\xC3V[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x18\x18V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x16\x1DW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x16\"V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a&s`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\re\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x17\x17Wa\x17\x17a\x1B\xB1V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x17AW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x17\x86W`\0a\x17t\x85\x83\x81Q\x81\x10a\x17gWa\x17ga\x1B\xE0V[` \x02` \x01\x01Qa\x19\nV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x17GV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x17\xCAW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x19\x03W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0`@Q\x80``\x01`@R\x80`;\x81R` \x01a&\n`;\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x81Q\x95\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x90\x85\x01R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01a\reV[`\0`@\x82\x84\x03\x12\x15a\x19\x83W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x19\x9BW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xB3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x19\xCBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x19\xE7W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFFW`\0\x80\xFD[a\x1A\x0B\x87\x83\x88\x01a\x19qV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\x1A!W`\0\x80\xFD[Pa\x1A.\x86\x82\x87\x01a\x19\x89V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x1AMW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1AeW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x19\xCBW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x1A\x93W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A\xAAW`\0\x80\xFD[a\x1A\xB6\x85\x82\x86\x01a\x1A;V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x1A\xD8W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1A\xF0W`\0\x80\xFD[a\x1A\xFC\x88\x83\x89\x01a\x1A;V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x1B\x15W`\0\x80\xFD[Pa\x1B\"\x87\x82\x88\x01a\x19\x89V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1BbW`\0\x80\xFD[\x815a\x1Bm\x81a\x1B.V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x1B\x86W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\x9DW`\0\x80\xFD[a\x1B\xA9\x84\x82\x85\x01a\x19qV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x1C*W\x81\x81\x01Q\x83\x82\x01R` \x01a\x1C\x12V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x1CK\x81` \x86\x01` \x86\x01a\x1C\x0FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x1C\xDDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x1C\x92V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra\x1D\\a\x01\xA0\x85\x01\x82a\x1C3V[\x90P` \x83\x01Qa\x1D\x9A` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra\x1D\xB2\x82\x82a\x1C}V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra\x1D\xCC\x82\x82a\x1C3V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a\x1EXW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra\x1EF\x86\x83Qa\x1C\xE8V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a\x1E\x0CV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a\x1E\xDDW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x1F\x1CW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x1F7W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x19\xCBW`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1FoWa\x1Foa\x1B\xB1V[`@R\x90V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1FoWa\x1Foa\x1B\xB1V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1F\xDFWa\x1F\xDFa\x1B\xB1V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x1F\xF8W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \x12Wa \x12a\x1B\xB1V[a C` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x1F\x98V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a XW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a \x87W`\0\x80\xFD[a \x8Fa\x1FLV[\x90P\x815a \x9C\x81a\x1B.V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a \xD4Wa \xD4a\x1B\xB1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a \xEFW`\0\x80\xFD[\x815` a!\x04a \xFF\x83a \xBAV[a\x1F\x98V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a!#W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a!|W\x81\x81\x8A\x03\x12\x15a!?W`\0\x80\x81\xFD[a!Ga\x1FLV[\x815a!R\x81a\x1B.V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a!k\x81a\x1B.V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a!'V[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a!\x9BW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a!\xB3W`\0\x80\xFD[\x90\x83\x01\x90`\xA0\x82\x86\x03\x12\x15a!\xC7W`\0\x80\xFD[a!\xCFa\x1FLV[\x825\x82\x81\x11\x15a!\xDEW`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a!\xF0W`\0\x80\xFD[a!\xF8a\x1FuV[\x815a\"\x03\x81a\x1B.V[\x81R` \x82\x015a\"\x13\x81a\x1B.V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\"<\x81a\x1B.V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a\"SW`\0\x80\xFD[a\"_\x89\x82\x85\x01a\x1F\xE7V[`\xA0\x83\x01RP\x82RPa\"u\x86` \x85\x01a uV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\"\x8CW`\0\x80\xFD[a\"\x98\x87\x82\x86\x01a \xDEV[`@\x83\x01RP\x95\x94PPPPPV[\x7FLimitOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 inputAmount,\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7FOutputToken[] outputs)\0\0\0\0\0\0\0\0\0\0`A\x82\x01R`\0\x83Qa#w\x81`W\x85\x01` \x88\x01a\x1C\x0FV[\x83Q\x90\x83\x01\x90a#\x8E\x81`W\x84\x01` \x88\x01a\x1C\x0FV[\x01`W\x01\x94\x93PPPPV[` \x81R`\0a\x1Bm` \x83\x01\x84a\x1C\xE8V[`\0` \x80\x83\x85\x03\x12\x15a#\xC0W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xD7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a#\xE8W`\0\x80\xFD[\x80Qa#\xF6a \xFF\x82a \xBAV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a$\x15W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a$qW\x80\x85\x8A\x03\x12\x15a$2W`\0\x80\x81\xFD[a$:a\x1FLV[\x85Qa$E\x81a\x1B.V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa$^\x81a\x1B.V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a$\x1AV[P\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x18\x12W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1B\xA9`@\x83\x01\x84a\x1C\xE8V[\x7FLimitOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa%\x1E\x81`\x13\x85\x01` \x88\x01a\x1C\x0FV[\x83Q\x90\x83\x01\x90a%5\x81`\x13\x84\x01` \x88\x01a\x1C\x0FV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a%q\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra%\xB2`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra%\xE7\x81\x84\x01\x86a\x1C3V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%\xFC\x81\x85a\x1C3V[\x99\x98PPPPPPPPPV\xFEOutputToken(address token,uint256 amount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xD4\xD1KW&\xD4I\xEA\xF3\x02\xDF\xCA\x86\xAEiy\xF6\xC3j\x87_\x1Bw\x1D9\xC9\xD8\xC7M,G\xF6dsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0'\x938\x03\x80b\0'\x93\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa&\x82b\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x13+\x01Ra&\x82_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a\x19kV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a\x1A\x10V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a\x1AOV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a\x1A\xD7V[a\x06eV[a\0\xB4a\x01e6`\x04a\x1A\xF9V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a\x1A\xD7V[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a\x1B`V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\n\xDCV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a\x1D[V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B+V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta\x1B3V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa\x1B`V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a\x1E\x1EV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya\x1B`V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\n\xDCV[a\x04\x9F\x81a\x0B+V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a\x1B3V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa\x1B`V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a\x1B`V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\n\xDCV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\x1D[V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B+V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga\x1B`V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\n\xDCV[a\x08d\x81a\x0B+V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a\x1EZV[\x81\x01\x90a\nW\x91\x90a \xECV[\x90P`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01\x82` \x01Q\x81R` \x01\x82`@\x01Q\x81R` \x01\x84\x80` \x01\x90a\n\x91\x91\x90a\x1EZV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\n\xD3\x83a\x0CvV[\x90R\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\n\xFBWa\n\xFBa\x1B`V[` \x02` \x01\x01Q\x90Pa\x0B\x0E\x81a\rOV[a\x0B\x18\x813a\x12,V[a\x0B\"\x813a\x13)V[P`\x01\x01a\n\xE0V[\x80Q_[\x81\x81\x10\x15a\x0CeW_\x83\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x1B`V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0B\xC7W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B~Wa\x0B~a\x1B`V[` \x02` \x01\x01Q\x90Pa\x0B\xBE\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15+\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B_V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x0FWa\x0C\x0Fa\x1B`V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0CS\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B/V[PG\x15a\x04\xABWa\x04\xAB3Ga\x15rV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a%\xC0`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a%W`;\x919`@Q` \x01a\x0C\xBA\x92\x91\x90a\"\x02V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0C\xDC\x83_\x01Qa\x16\x08V[` \x80\x85\x01Q\x80Q\x91\x01Q`@\x86\x01Qa\x0C\xF5\x90a\x16\xA1V[`@\x80Q` \x81\x01\x96\x90\x96R\x85\x01\x93\x90\x93Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\roWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\r\xC5\x90\x85\x90`\x04\x01a\"\xF4V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xDFW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0E$\x91\x90\x81\x01\x90a#\x06V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x0E;\x82\x84a#\xCFV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ESWa\x0ESa\x1B3V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xBBW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0EqW\x90P[P\x90P_[\x83\x81\x10\x15a\x0F\x0BW\x85`@\x01Q\x81\x81Q\x81\x10a\x0E\xDEWa\x0E\xDEa\x1B`V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0E\xF8Wa\x0E\xF8a\x1B`V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E\xC0V[P_\x80_[\x84\x81\x10\x15a\x12\x1BW_\x87\x82\x81Q\x81\x10a\x0F+Wa\x0F+a\x1B`V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x0F\xE6W\x88\x81\x81Q\x81\x10a\x0FQWa\x0FQa\x1B`V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x0F\xDEW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x0F7V[P_\x80[\x88\x81\x10\x15a\x10\xA3W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x10\tWa\x10\ta\x1B`V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\x9AW\x85\x15a\x10\x84W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x10\x93\x90\x84a#\xCFV[\x92P`\x01\x96P[P`\x01\x01a\x0F\xEAV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x11\x1CW\x84\x15a\x11\x03W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11\x15\x90\x82a#\xCFV[\x90P`\x01\x93P[\x80_\x03a\x11pW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x11~\x81`\x05a'\x10a\x17=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x13\xE8\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x13\xF2\x85\x85a\x17vV[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a%\xC0`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a%W`;\x919`@Q` \x01a\x14B\x92\x91\x90a\"\x02V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a%\x92` \x83\x019`@Q` \x01a\x14\x95\x92\x91\x90a$5V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x15\x02\x96\x95\x94\x93\x92`\x04\x01a$\x8FV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x15\x19W_\x80\xFD[PZ\xF1\x15\x80\x15a\x13!W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x15PWa\x03L\x82\x82a\x15rV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x17\xBCV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x15\xC8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x15\xCDV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a%\xC0`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\r2\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16\xC0Wa\x16\xC0a\x1B3V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x16\xEAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x17-W_a\x17\x1B\x85\x83\x81Q\x81\x10a\x17\x0EWa\x17\x0Ea\x1B`V[` \x02` \x01\x01Qa\x18\xAAV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x16\xEFV[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x17oW_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x18\xA3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_`@Q\x80``\x01`@R\x80`;\x81R` \x01a%W`;\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x81Q\x95\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x90\x85\x01R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01a\r2V[_`@\x82\x84\x03\x12\x15a\x19 W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x196W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19MW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x19dW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\x19}W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\x94W_\x80\xFD[a\x19\xA0\x87\x83\x88\x01a\x19\x10V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\x19\xB5W_\x80\xFD[Pa\x19\xC2\x86\x82\x87\x01a\x19&V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a\x19\xDFW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xF6W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x19dW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a\x1A!W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A7W_\x80\xFD[a\x1AC\x85\x82\x86\x01a\x19\xCFV[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x1AbW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1AyW_\x80\xFD[a\x1A\x85\x88\x83\x89\x01a\x19\xCFV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x1A\x9DW_\x80\xFD[Pa\x1A\xAA\x87\x82\x88\x01a\x19&V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[_` \x82\x84\x03\x12\x15a\x1A\xE7W_\x80\xFD[\x815a\x1A\xF2\x81a\x1A\xB6V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x1B\tW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\x1FW_\x80\xFD[a\x1B+\x84\x82\x85\x01a\x19\x10V[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x1B\xA7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x1B\x8FV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x1B\xC6\x81` \x86\x01` \x86\x01a\x1B\x8DV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x1CVW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x1C\x0BV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra\x1C\xD4a\x01\xA0\x85\x01\x82a\x1B\xAFV[\x90P` \x83\x01Qa\x1D\x12` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra\x1D*\x82\x82a\x1B\xF8V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra\x1DD\x82\x82a\x1B\xAFV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a\x1D\xCEW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra\x1D\xBC\x86\x83Qa\x1CaV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a\x1D\x82V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a\x1EPW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x1E\x8DW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x1E\xA7W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x19dW_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1E\xDEWa\x1E\xDEa\x1B3V[`@R\x90V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1E\xDEWa\x1E\xDEa\x1B3V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1FNWa\x1FNa\x1B3V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x1FeW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1F\x7FWa\x1F\x7Fa\x1B3V[a\x1F\xB0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x1F\x07V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x1F\xC4W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a\x1F\xF0W_\x80\xFD[a\x1F\xF8a\x1E\xBBV[\x90P\x815a \x05\x81a\x1A\xB6V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a\x19\xD2V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a\x1A\x80V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a\x1A\xC2V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a\x1BPV[a\x06\x83V[a\0\xB9a\x01l6`\x04a\x1BtV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a\x1BPV[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a\x1B\xE0V[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0B\x03V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a\x1D\xE3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0BTV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a\x1B\xB1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa\x1B\xE0V[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a\x1E\xA9V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0B\x03V[a\x04\xB5\x81a\x0BTV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a\x1B\xB1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa\x1B\xE0V[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0B\x03V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\x1D\xE3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0BTV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia\x1B\xE0V[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0B\x03V[a\x08\x86\x81a\x0BTV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a\x1E\xE7V[\x81\x01\x90a\n|\x91\x90a!\x89V[\x90P`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01\x82` \x01Q\x81R` \x01\x82`@\x01Q\x81R` \x01\x84\x80` \x01\x90a\n\xB7\x91\x90a\x1E\xE7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\n\xFA\x83a\x0C\xA7V[\x90R\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B$Wa\x0B$a\x1B\xE0V[` \x02` \x01\x01Q\x90Pa\x0B7\x81a\r\x82V[a\x0BA\x813a\x12rV[a\x0BK\x813a\x13sV[P`\x01\x01a\x0B\x08V[\x80Q`\0[\x81\x81\x10\x15a\x0C\x96W`\0\x83\x82\x81Q\x81\x10a\x0BuWa\x0Bua\x1B\xE0V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0B\xF6W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xACWa\x0B\xACa\x1B\xE0V[` \x02` \x01\x01Q\x90Pa\x0B\xED\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15|\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\x8CV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C?Wa\x0C?a\x1B\xE0V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\x84\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0BYV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x15\xC3V[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a&s`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a&\n`;\x919`@Q` \x01a\x0C\xEC\x92\x91\x90a\"\xA7V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\r\x0F\x83`\0\x01Qa\x16]V[` \x80\x85\x01Q\x80Q\x91\x01Q`@\x86\x01Qa\r(\x90a\x16\xF7V[`@\x80Q` \x81\x01\x96\x90\x96R\x85\x01\x93\x90\x93Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\r\xA2WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\r\xF9\x90\x85\x90`\x04\x01a#\x9AV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x16W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0E\\\x91\x90\x81\x01\x90a#\xADV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x0Et\x82\x84a$}V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x8CWa\x0E\x8Ca\x1B\xB1V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xF5W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0E\xAAW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x0FFW\x85`@\x01Q\x81\x81Q\x81\x10a\x0F\x19Wa\x0F\x19a\x1B\xE0V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0F3Wa\x0F3a\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E\xFBV[P`\0\x80`\0[\x84\x81\x10\x15a\x12aW`\0\x87\x82\x81Q\x81\x10a\x0FiWa\x0Fia\x1B\xE0V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x10'W\x88\x81\x81Q\x81\x10a\x0F\x90Wa\x0F\x90a\x1B\xE0V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\x1FW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x0FvV[P`\0\x80[\x88\x81\x10\x15a\x10\xE8W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x10LWa\x10La\x1B\xE0V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\xDFW\x85\x15a\x10\xC9W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x10\xD8\x90\x84a$}V[\x92P`\x01\x96P[P`\x01\x01a\x10,V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x11aW\x84\x15a\x11HW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11Z\x90\x82a$}V[\x90P`\x01\x93P[\x80`\0\x03a\x11\xB6W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x11\xC4\x81`\x05a'\x10a\x17\x95V[\x82` \x01Q\x11\x15a\x127W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x12LWa\x12La\x1B\xE0V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x0FMV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x12\xC3W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x13?\x90\x84\x90\x86\x90`\x04\x01a$\xB7V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x13WW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x13kW=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x143\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x14=\x85\x85a\x17\xD1V[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a&s`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a&\n`;\x919`@Q` \x01a\x14\x8E\x92\x91\x90a\"\xA7V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a&E` \x83\x019`@Q` \x01a\x14\xE1\x92\x91\x90a$\xE6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x15N\x96\x95\x94\x93\x92`\x04\x01a%AV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15hW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x13kW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x15\xA1Wa\x03_\x82\x82a\x15\xC3V[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x18\x18V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x16\x1DW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x16\"V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a&s`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\re\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x17\x17Wa\x17\x17a\x1B\xB1V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x17AW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x17\x86W`\0a\x17t\x85\x83\x81Q\x81\x10a\x17gWa\x17ga\x1B\xE0V[` \x02` \x01\x01Qa\x19\nV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x17GV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x17\xCAW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x19\x03W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0`@Q\x80``\x01`@R\x80`;\x81R` \x01a&\n`;\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x81Q\x95\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x90\x85\x01R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01a\reV[`\0`@\x82\x84\x03\x12\x15a\x19\x83W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x19\x9BW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xB3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x19\xCBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x19\xE7W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\xFFW`\0\x80\xFD[a\x1A\x0B\x87\x83\x88\x01a\x19qV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\x1A!W`\0\x80\xFD[Pa\x1A.\x86\x82\x87\x01a\x19\x89V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x1AMW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1AeW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x19\xCBW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x1A\x93W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A\xAAW`\0\x80\xFD[a\x1A\xB6\x85\x82\x86\x01a\x1A;V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x1A\xD8W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1A\xF0W`\0\x80\xFD[a\x1A\xFC\x88\x83\x89\x01a\x1A;V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x1B\x15W`\0\x80\xFD[Pa\x1B\"\x87\x82\x88\x01a\x19\x89V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x1BbW`\0\x80\xFD[\x815a\x1Bm\x81a\x1B.V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x1B\x86W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\x9DW`\0\x80\xFD[a\x1B\xA9\x84\x82\x85\x01a\x19qV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x1C*W\x81\x81\x01Q\x83\x82\x01R` \x01a\x1C\x12V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x1CK\x81` \x86\x01` \x86\x01a\x1C\x0FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x1C\xDDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x1C\x92V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra\x1D\\a\x01\xA0\x85\x01\x82a\x1C3V[\x90P` \x83\x01Qa\x1D\x9A` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra\x1D\xB2\x82\x82a\x1C}V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra\x1D\xCC\x82\x82a\x1C3V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a\x1EXW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra\x1EF\x86\x83Qa\x1C\xE8V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a\x1E\x0CV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a\x1E\xDDW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x1F\x1CW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x1F7W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x19\xCBW`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1FoWa\x1Foa\x1B\xB1V[`@R\x90V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1FoWa\x1Foa\x1B\xB1V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1F\xDFWa\x1F\xDFa\x1B\xB1V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x1F\xF8W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \x12Wa \x12a\x1B\xB1V[a C` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x1F\x98V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a XW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a \x87W`\0\x80\xFD[a \x8Fa\x1FLV[\x90P\x815a \x9C\x81a\x1B.V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a \xD4Wa \xD4a\x1B\xB1V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a \xEFW`\0\x80\xFD[\x815` a!\x04a \xFF\x83a \xBAV[a\x1F\x98V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a!#W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a!|W\x81\x81\x8A\x03\x12\x15a!?W`\0\x80\x81\xFD[a!Ga\x1FLV[\x815a!R\x81a\x1B.V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a!k\x81a\x1B.V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a!'V[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a!\x9BW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a!\xB3W`\0\x80\xFD[\x90\x83\x01\x90`\xA0\x82\x86\x03\x12\x15a!\xC7W`\0\x80\xFD[a!\xCFa\x1FLV[\x825\x82\x81\x11\x15a!\xDEW`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a!\xF0W`\0\x80\xFD[a!\xF8a\x1FuV[\x815a\"\x03\x81a\x1B.V[\x81R` \x82\x015a\"\x13\x81a\x1B.V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\"<\x81a\x1B.V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a\"SW`\0\x80\xFD[a\"_\x89\x82\x85\x01a\x1F\xE7V[`\xA0\x83\x01RP\x82RPa\"u\x86` \x85\x01a uV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\"\x8CW`\0\x80\xFD[a\"\x98\x87\x82\x86\x01a \xDEV[`@\x83\x01RP\x95\x94PPPPPV[\x7FLimitOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 inputAmount,\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7FOutputToken[] outputs)\0\0\0\0\0\0\0\0\0\0`A\x82\x01R`\0\x83Qa#w\x81`W\x85\x01` \x88\x01a\x1C\x0FV[\x83Q\x90\x83\x01\x90a#\x8E\x81`W\x84\x01` \x88\x01a\x1C\x0FV[\x01`W\x01\x94\x93PPPPV[` \x81R`\0a\x1Bm` \x83\x01\x84a\x1C\xE8V[`\0` \x80\x83\x85\x03\x12\x15a#\xC0W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xD7W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a#\xE8W`\0\x80\xFD[\x80Qa#\xF6a \xFF\x82a \xBAV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a$\x15W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a$qW\x80\x85\x8A\x03\x12\x15a$2W`\0\x80\x81\xFD[a$:a\x1FLV[\x85Qa$E\x81a\x1B.V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa$^\x81a\x1B.V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a$\x1AV[P\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x18\x12W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1B\xA9`@\x83\x01\x84a\x1C\xE8V[\x7FLimitOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa%\x1E\x81`\x13\x85\x01` \x88\x01a\x1C\x0FV[\x83Q\x90\x83\x01\x90a%5\x81`\x13\x84\x01` \x88\x01a\x1C\x0FV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a%q\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra%\xB2`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra%\xE7\x81\x84\x01\x86a\x1C3V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%\xFC\x81\x85a\x1C3V[\x99\x98PPPPPPPPPV\xFEOutputToken(address token,uint256 amount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xD4\xD1KW&\xD4I\xEA\xF3\x02\xDF\xCA\x86\xAEiy\xF6\xC3j\x87_\x1Bw\x1D9\xC9\xD8\xC7M,G\xF6dsolcC\0\x08\x18\x003", + b"`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a\x19kV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a\x1A\x10V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a\x1AOV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a\x1A\xD7V[a\x06eV[a\0\xB4a\x01e6`\x04a\x1A\xF9V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a\x1A\xD7V[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a\x1B`V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\n\xDCV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a\x1D[V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B+V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta\x1B3V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa\x1B`V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a\x1E\x1EV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya\x1B`V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\n\xDCV[a\x04\x9F\x81a\x0B+V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a\x1B3V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa\x1B`V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a\x1B`V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\n\xDCV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a\x1D[V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B+V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga\x1B`V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\n\xDCV[a\x08d\x81a\x0B+V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a\x1EZV[\x81\x01\x90a\nW\x91\x90a \xECV[\x90P`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01\x82` \x01Q\x81R` \x01\x82`@\x01Q\x81R` \x01\x84\x80` \x01\x90a\n\x91\x91\x90a\x1EZV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\n\xD3\x83a\x0CvV[\x90R\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\n\xFBWa\n\xFBa\x1B`V[` \x02` \x01\x01Q\x90Pa\x0B\x0E\x81a\rOV[a\x0B\x18\x813a\x12,V[a\x0B\"\x813a\x13)V[P`\x01\x01a\n\xE0V[\x80Q_[\x81\x81\x10\x15a\x0CeW_\x83\x82\x81Q\x81\x10a\x0BJWa\x0BJa\x1B`V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0B\xC7W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B~Wa\x0B~a\x1B`V[` \x02` \x01\x01Q\x90Pa\x0B\xBE\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15+\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B_V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x0FWa\x0C\x0Fa\x1B`V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0CS\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B/V[PG\x15a\x04\xABWa\x04\xAB3Ga\x15rV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a%\xC0`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a%W`;\x919`@Q` \x01a\x0C\xBA\x92\x91\x90a\"\x02V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0C\xDC\x83_\x01Qa\x16\x08V[` \x80\x85\x01Q\x80Q\x91\x01Q`@\x86\x01Qa\x0C\xF5\x90a\x16\xA1V[`@\x80Q` \x81\x01\x96\x90\x96R\x85\x01\x93\x90\x93Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\roWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\r\xC5\x90\x85\x90`\x04\x01a\"\xF4V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xDFW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0E$\x91\x90\x81\x01\x90a#\x06V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x0E;\x82\x84a#\xCFV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ESWa\x0ESa\x1B3V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0E\xBBW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0EqW\x90P[P\x90P_[\x83\x81\x10\x15a\x0F\x0BW\x85`@\x01Q\x81\x81Q\x81\x10a\x0E\xDEWa\x0E\xDEa\x1B`V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0E\xF8Wa\x0E\xF8a\x1B`V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0E\xC0V[P_\x80_[\x84\x81\x10\x15a\x12\x1BW_\x87\x82\x81Q\x81\x10a\x0F+Wa\x0F+a\x1B`V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x0F\xE6W\x88\x81\x81Q\x81\x10a\x0FQWa\x0FQa\x1B`V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x0F\xDEW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x0F7V[P_\x80[\x88\x81\x10\x15a\x10\xA3W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x10\tWa\x10\ta\x1B`V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\x9AW\x85\x15a\x10\x84W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x10\x93\x90\x84a#\xCFV[\x92P`\x01\x96P[P`\x01\x01a\x0F\xEAV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x11\x1CW\x84\x15a\x11\x03W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11\x15\x90\x82a#\xCFV[\x90P`\x01\x93P[\x80_\x03a\x11pW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x11~\x81`\x05a'\x10a\x17=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x13\xE8\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x13\xF2\x85\x85a\x17vV[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a%\xC0`\x8D\x919`@Q\x80``\x01`@R\x80`;\x81R` \x01a%W`;\x919`@Q` \x01a\x14B\x92\x91\x90a\"\x02V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a%\x92` \x83\x019`@Q` \x01a\x14\x95\x92\x91\x90a$5V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x15\x02\x96\x95\x94\x93\x92`\x04\x01a$\x8FV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x15\x19W_\x80\xFD[PZ\xF1\x15\x80\x15a\x13!W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x15PWa\x03L\x82\x82a\x15rV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x17\xBCV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x15\xC8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x15\xCDV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a%\xC0`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\r2\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16\xC0Wa\x16\xC0a\x1B3V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x16\xEAW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x17-W_a\x17\x1B\x85\x83\x81Q\x81\x10a\x17\x0EWa\x17\x0Ea\x1B`V[` \x02` \x01\x01Qa\x18\xAAV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x16\xEFV[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x17oW_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x18\xA3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_`@Q\x80``\x01`@R\x80`;\x81R` \x01a%W`;\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x81Q\x95\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16\x90\x85\x01R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01a\r2V[_`@\x82\x84\x03\x12\x15a\x19 W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x196W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19MW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x19dW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\x19}W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x19\x94W_\x80\xFD[a\x19\xA0\x87\x83\x88\x01a\x19\x10V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\x19\xB5W_\x80\xFD[Pa\x19\xC2\x86\x82\x87\x01a\x19&V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a\x19\xDFW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x19\xF6W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x19dW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a\x1A!W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A7W_\x80\xFD[a\x1AC\x85\x82\x86\x01a\x19\xCFV[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x1AbW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x1AyW_\x80\xFD[a\x1A\x85\x88\x83\x89\x01a\x19\xCFV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x1A\x9DW_\x80\xFD[Pa\x1A\xAA\x87\x82\x88\x01a\x19&V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[_` \x82\x84\x03\x12\x15a\x1A\xE7W_\x80\xFD[\x815a\x1A\xF2\x81a\x1A\xB6V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x1B\tW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1B\x1FW_\x80\xFD[a\x1B+\x84\x82\x85\x01a\x19\x10V[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x1B\xA7W\x81\x81\x01Q\x83\x82\x01R` \x01a\x1B\x8FV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x1B\xC6\x81` \x86\x01` \x86\x01a\x1B\x8DV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x1CVW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x1C\x0BV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra\x1C\xD4a\x01\xA0\x85\x01\x82a\x1B\xAFV[\x90P` \x83\x01Qa\x1D\x12` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra\x1D*\x82\x82a\x1B\xF8V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra\x1DD\x82\x82a\x1B\xAFV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a\x1D\xCEW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra\x1D\xBC\x86\x83Qa\x1CaV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a\x1D\x82V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a\x1EPW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x1E\x8DW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x1E\xA7W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x19dW_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1E\xDEWa\x1E\xDEa\x1B3V[`@R\x90V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1E\xDEWa\x1E\xDEa\x1B3V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1FNWa\x1FNa\x1B3V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x1FeW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1F\x7FWa\x1F\x7Fa\x1B3V[a\x1F\xB0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x1F\x07V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x1F\xC4W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a\x1F\xF0W_\x80\xFD[a\x1F\xF8a\x1E\xBBV[\x90P\x815a \x05\x81a\x1A\xB6V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -751,10 +778,15 @@ error FeeTooLarge(address token, uint256 amount, address recipient); ```solidity error InputAndOutputFees(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputFees {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -810,12 +842,18 @@ error InputAndOutputFees(); ```solidity error InvalidFeeToken(address feeToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidFeeToken { + #[allow(missing_docs)] pub feeToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -875,10 +913,15 @@ error InvalidFeeToken(address feeToken); ```solidity error InvalidReactor(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidReactor {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -934,10 +977,15 @@ error InvalidReactor(); ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -993,7 +1041,12 @@ error NativeTransferFailed(); ```solidity event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Fill { #[allow(missing_docs)] @@ -1003,9 +1056,14 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub nonce: alloy::sol_types::private::U256, + pub nonce: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1070,6 +1128,21 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1248,7 +1346,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ProtocolFeeControllerSet { #[allow(missing_docs)] @@ -1256,7 +1359,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle #[allow(missing_docs)] pub newFeeController: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1317,6 +1425,21 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -1368,10 +1491,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle ```solidity constructor(address _permit2, address _protocolFeeOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _permit2: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _protocolFeeOwner: alloy::sol_types::private::Address, } const _: () = { @@ -1448,16 +1573,22 @@ constructor(address _permit2, address _protocolFeeOwner); ```solidity function execute(SignedOrder memory order) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1563,18 +1694,24 @@ function execute(SignedOrder memory order) external payable; ```solidity function executeBatch(SignedOrder[] memory orders) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1688,19 +1825,26 @@ function executeBatch(SignedOrder[] memory orders) external payable; ```solidity function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1829,17 +1973,24 @@ function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory call ```solidity function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1961,16 +2112,22 @@ function executeWithCallback(SignedOrder memory order, bytes memory callbackData ```solidity function feeController() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerCall {} ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2074,16 +2231,22 @@ function feeController() external view returns (address); ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2187,16 +2350,22 @@ function owner() external view returns (address); ```solidity function permit2() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Call {} ///Container type for the return parameters of the [`permit2()`](permit2Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Return { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2300,16 +2469,22 @@ function permit2() external view returns (address); ```solidity function setProtocolFeeController(address _newFeeController) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerCall { + #[allow(missing_docs)] pub _newFeeController: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2421,16 +2596,22 @@ function setProtocolFeeController(address _newFeeController) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2540,14 +2721,23 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`LimitOrderReactor`](self) function calls. pub enum LimitOrderReactorCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] executeBatchWithCallback(executeBatchWithCallbackCall), + #[allow(missing_docs)] executeWithCallback(executeWithCallbackCall), + #[allow(missing_docs)] feeController(feeControllerCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] permit2(permit2Call), + #[allow(missing_docs)] setProtocolFeeController(setProtocolFeeControllerCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -2610,7 +2800,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2746,7 +2936,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2845,11 +3035,17 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`LimitOrderReactor`](self) custom errors. pub enum LimitOrderReactorErrors { + #[allow(missing_docs)] DuplicateFeeOutput(DuplicateFeeOutput), + #[allow(missing_docs)] FeeTooLarge(FeeTooLarge), + #[allow(missing_docs)] InputAndOutputFees(InputAndOutputFees), + #[allow(missing_docs)] InvalidFeeToken(InvalidFeeToken), + #[allow(missing_docs)] InvalidReactor(InvalidReactor), + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), } #[automatically_derived] @@ -2906,7 +3102,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3003,7 +3199,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3082,8 +3278,11 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`LimitOrderReactor`](self) events. pub enum LimitOrderReactorEvents { + #[allow(missing_docs)] Fill(Fill), + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), + #[allow(missing_docs)] ProtocolFeeControllerSet(ProtocolFeeControllerSet), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/math.rs b/crates/bindings-uniswapx/src/math.rs index 4586c8d..36fe524 100644 --- a/crates/bindings-uniswapx/src/math.rs +++ b/crates/bindings-uniswapx/src/math.rs @@ -9,29 +9,35 @@ interface Math {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod Math { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eb66d4687cbe0ed8d033401bf5bfcb02f99879f7e01bc31b2c73edeeee81438564736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220945881513b2cb4aacab13a7d2b471a8242b2ba43aca96c910ebd8d79fd3bc77664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEBf\xD4h|\xBE\x0E\xD8\xD03@\x1B\xF5\xBF\xCB\x02\xF9\x98y\xF7\xE0\x1B\xC3\x1B,s\xED\xEE\xEE\x81C\x85dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x94X\x81Q;,\xB4\xAA\xCA\xB1:}+G\x1A\x82B\xB2\xBAC\xAC\xA9l\x91\x0E\xBD\x8Dy\xFD;\xC7vdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eb66d4687cbe0ed8d033401bf5bfcb02f99879f7e01bc31b2c73edeeee81438564736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220945881513b2cb4aacab13a7d2b471a8242b2ba43aca96c910ebd8d79fd3bc77664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEBf\xD4h|\xBE\x0E\xD8\xD03@\x1B\xF5\xBF\xCB\x02\xF9\x98y\xF7\xE0\x1B\xC3\x1B,s\xED\xEE\xEE\x81C\x85dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x94X\x81Q;,\xB4\xAA\xCA\xB1:}+G\x1A\x82B\xB2\xBAC\xAC\xA9l\x91\x0E\xBD\x8Dy\xFD;\xC7vdsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`Math`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/mathext.rs b/crates/bindings-uniswapx/src/mathext.rs index 25f2056..6625cc9 100644 --- a/crates/bindings-uniswapx/src/mathext.rs +++ b/crates/bindings-uniswapx/src/mathext.rs @@ -9,29 +9,35 @@ interface MathExt {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MathExt { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122076b335432d1f7f53fc73ea76dd037abf7f8d5486ad4bb84bcfa50db8a3b9effc64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212201377637f7cfbcbff6c96aa3e04c5405684c30ed17d341ceba48a285ed9a67b1564736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 v\xB35C-\x1F\x7FS\xFCs\xEAv\xDD\x03z\xBF\x7F\x8DT\x86\xADK\xB8K\xCF\xA5\r\xB8\xA3\xB9\xEF\xFCdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x13wc\x7F|\xFB\xCB\xFFl\x96\xAA>\x04\xC5@V\x84\xC3\x0E\xD1}4\x1C\xEB\xA4\x8A(^\xD9\xA6{\x15dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122076b335432d1f7f53fc73ea76dd037abf7f8d5486ad4bb84bcfa50db8a3b9effc64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212201377637f7cfbcbff6c96aa3e04c5405684c30ed17d341ceba48a285ed9a67b1564736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 v\xB35C-\x1F\x7FS\xFCs\xEAv\xDD\x03z\xBF\x7F\x8DT\x86\xADK\xB8K\xCF\xA5\r\xB8\xA3\xB9\xEF\xFCdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x13wc\x7F|\xFB\xCB\xFFl\x96\xAA>\x04\xC5@V\x84\xC3\x0E\xD1}4\x1C\xEB\xA4\x8A(^\xD9\xA6{\x15dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`MathExt`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/mockarbsys.rs b/crates/bindings-uniswapx/src/mockarbsys.rs index eabac9d..9806964 100644 --- a/crates/bindings-uniswapx/src/mockarbsys.rs +++ b/crates/bindings-uniswapx/src/mockarbsys.rs @@ -39,44 +39,56 @@ interface MockArbSys { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockArbSys { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6080604052348015600f57600080fd5b5060ac8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063a3b1b31d146037578063a8c3c85014604c575b600080fd5b60005460405190815260200160405180910390f35b605c6057366004605e565b600055565b005b600060208284031215606f57600080fd5b503591905056fea2646970667358221220e7d3f10689d2e9fb5e8a938fb9383f27cf062835ed1bb59a79ed4ca9688817aa64736f6c63430008180033 + ///0x6080604052348015600e575f80fd5b5060a58061001b5f395ff3fe6080604052348015600e575f80fd5b50600436106030575f3560e01c8063a3b1b31d146034578063a8c3c850146048575b5f80fd5b5f5460405190815260200160405180910390f35b605760533660046059565b5f55565b005b5f602082840312156068575f80fd5b503591905056fea26469706673582212208a41effee1e08aaaa090b78b77b97a9c5b717dba10a85f61b41078cf45d6425064736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\xAC\x80a\0\x1E`\09`\0\xF3\xFE`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`2W`\x005`\xE0\x1C\x80c\xA3\xB1\xB3\x1D\x14`7W\x80c\xA8\xC3\xC8P\x14`LW[`\0\x80\xFD[`\0T`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\\`W6`\x04`^V[`\0UV[\0[`\0` \x82\x84\x03\x12\x15`oW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \xE7\xD3\xF1\x06\x89\xD2\xE9\xFB^\x8A\x93\x8F\xB98?'\xCF\x06(5\xED\x1B\xB5\x9Ay\xEDL\xA9h\x88\x17\xAAdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15`\x0EW_\x80\xFD[P`\xA5\x80a\0\x1B_9_\xF3\xFE`\x80`@R4\x80\x15`\x0EW_\x80\xFD[P`\x046\x10`0W_5`\xE0\x1C\x80c\xA3\xB1\xB3\x1D\x14`4W\x80c\xA8\xC3\xC8P\x14`HW[_\x80\xFD[_T`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`W`S6`\x04`YV[_UV[\0[_` \x82\x84\x03\x12\x15`hW_\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \x8AA\xEF\xFE\xE1\xE0\x8A\xAA\xA0\x90\xB7\x8Bw\xB9z\x9C[q}\xBA\x10\xA8_a\xB4\x10x\xCFE\xD6BPdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080604052348015600f57600080fd5b506004361060325760003560e01c8063a3b1b31d146037578063a8c3c85014604c575b600080fd5b60005460405190815260200160405180910390f35b605c6057366004605e565b600055565b005b600060208284031215606f57600080fd5b503591905056fea2646970667358221220e7d3f10689d2e9fb5e8a938fb9383f27cf062835ed1bb59a79ed4ca9688817aa64736f6c63430008180033 + ///0x6080604052348015600e575f80fd5b50600436106030575f3560e01c8063a3b1b31d146034578063a8c3c850146048575b5f80fd5b5f5460405190815260200160405180910390f35b605760533660046059565b5f55565b005b5f602082840312156068575f80fd5b503591905056fea26469706673582212208a41effee1e08aaaa090b78b77b97a9c5b717dba10a85f61b41078cf45d6425064736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15`\x0FW`\0\x80\xFD[P`\x046\x10`2W`\x005`\xE0\x1C\x80c\xA3\xB1\xB3\x1D\x14`7W\x80c\xA8\xC3\xC8P\x14`LW[`\0\x80\xFD[`\0T`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\\`W6`\x04`^V[`\0UV[\0[`\0` \x82\x84\x03\x12\x15`oW`\0\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \xE7\xD3\xF1\x06\x89\xD2\xE9\xFB^\x8A\x93\x8F\xB98?'\xCF\x06(5\xED\x1B\xB5\x9Ay\xEDL\xA9h\x88\x17\xAAdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15`\x0EW_\x80\xFD[P`\x046\x10`0W_5`\xE0\x1C\x80c\xA3\xB1\xB3\x1D\x14`4W\x80c\xA8\xC3\xC8P\x14`HW[_\x80\xFD[_T`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`W`S6`\x04`YV[_UV[\0[_` \x82\x84\x03\x12\x15`hW_\x80\xFD[P5\x91\x90PV\xFE\xA2dipfsX\"\x12 \x8AA\xEF\xFE\xE1\xE0\x8A\xAA\xA0\x90\xB7\x8Bw\xB9z\x9C[q}\xBA\x10\xA8_a\xB4\x10x\xCFE\xD6BPdsolcC\0\x08\x18\x003", ); /**Function with signature `arbBlockNumber()` and selector `0xa3b1b31d`. ```solidity function arbBlockNumber() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct arbBlockNumberCall {} ///Container type for the return parameters of the [`arbBlockNumber()`](arbBlockNumberCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct arbBlockNumberReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -114,7 +126,9 @@ function arbBlockNumber() external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -182,23 +196,31 @@ function arbBlockNumber() external view returns (uint256); ```solidity function setBlockNumber(uint256 blockNumber) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setBlockNumberCall { - pub blockNumber: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub blockNumber: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`setBlockNumber(uint256)`](setBlockNumberCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setBlockNumberReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -299,7 +321,9 @@ function setBlockNumber(uint256 blockNumber) external; }; ///Container for all the [`MockArbSys`](self) function calls. pub enum MockArbSysCalls { + #[allow(missing_docs)] arbBlockNumber(arbBlockNumberCall), + #[allow(missing_docs)] setBlockNumber(setBlockNumberCall), } #[automatically_derived] @@ -340,7 +364,7 @@ function setBlockNumber(uint256 blockNumber) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -385,7 +409,7 @@ function setBlockNumber(uint256 blockNumber) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -593,7 +617,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`setBlockNumber`] function. pub fn setBlockNumber( &self, - blockNumber: alloy::sol_types::private::U256, + blockNumber: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&setBlockNumberCall { blockNumber }) } diff --git a/crates/bindings-uniswapx/src/mockblocknumberish.rs b/crates/bindings-uniswapx/src/mockblocknumberish.rs index 5c73a21..7932b9b 100644 --- a/crates/bindings-uniswapx/src/mockblocknumberish.rs +++ b/crates/bindings-uniswapx/src/mockblocknumberish.rs @@ -25,44 +25,56 @@ interface MockBlockNumberish { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockBlockNumberish { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a060405234801561001057600080fd5b5061a4b14603610035576001600160401b0361007d61005060201b17166080526100d7565b6001600160401b036100ef6100ba60201b17166080526100d7565b600060646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b591906100be565b905090565b4390565b6000602082840312156100d057600080fd5b5051919050565b6080516101426100f16000396000605101526101426000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80634ddcff8e14610030575b600080fd5b61003861004a565b60405190815260200160405180910390f35b60006100787f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100cb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061007891906100f3565b4390565b60006020828403121561010557600080fd5b505191905056fea2646970667358221220d865a023cfa68b2602b12cc4b5c55cacd435516c10a7e3170176c6e72d78038264736f6c63430008180033 + ///0x60a060405234801561000f575f80fd5b5061a4b14603610034576001600160401b0361007961004f60201b17166080526100d1565b6001600160401b036100e86100b660201b17166080526100d1565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561008d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100b191906100ba565b905090565b4390565b5f602082840312156100ca575f80fd5b5051919050565b6080516101396100e85f395f604d01526101395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80634ddcff8e1461002d575b5f80fd5b610035610047565b60405190815260200160405180910390f35b5f6100747f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b905090565b5f606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061007491906100ec565b4390565b5f602082840312156100fc575f80fd5b505191905056fea26469706673582212205f1b1313205ec6cc6721ee287cdb283028bc9084aae8306ab87d37866de2282d64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\xA4\xB1F\x03a\x005W`\x01`\x01`@\x1B\x03a\0}a\0P` \x1B\x17\x16`\x80Ra\0\xD7V[`\x01`\x01`@\x1B\x03a\0\xEFa\0\xBA` \x1B\x17\x16`\x80Ra\0\xD7V[`\0`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\x91W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xB5\x91\x90a\0\xBEV[\x90P\x90V[C\x90V[`\0` \x82\x84\x03\x12\x15a\0\xD0W`\0\x80\xFD[PQ\x91\x90PV[`\x80Qa\x01Ba\0\xF1`\09`\0`Q\x01Ra\x01B`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cM\xDC\xFF\x8E\x14a\x000W[`\0\x80\xFD[a\08a\0JV[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0a\0x\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P\x90V[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xCBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0x\x91\x90a\0\xF3V[C\x90V[`\0` \x82\x84\x03\x12\x15a\x01\x05W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xD8e\xA0#\xCF\xA6\x8B&\x02\xB1,\xC4\xB5\xC5\\\xAC\xD45Ql\x10\xA7\xE3\x17\x01v\xC6\xE7-x\x03\x82dsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\xA4\xB1F\x03a\x004W`\x01`\x01`@\x1B\x03a\0ya\0O` \x1B\x17\x16`\x80Ra\0\xD1V[`\x01`\x01`@\x1B\x03a\0\xE8a\0\xB6` \x1B\x17\x16`\x80Ra\0\xD1V[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\x8DW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xB1\x91\x90a\0\xBAV[\x90P\x90V[C\x90V[_` \x82\x84\x03\x12\x15a\0\xCAW_\x80\xFD[PQ\x91\x90PV[`\x80Qa\x019a\0\xE8_9_`M\x01Ra\x019_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cM\xDC\xFF\x8E\x14a\0-W[_\x80\xFD[a\x005a\0GV[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[_a\0t\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P\x90V[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC4W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0t\x91\x90a\0\xECV[C\x90V[_` \x82\x84\x03\x12\x15a\0\xFCW_\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 _\x1B\x13\x13 ^\xC6\xCCg!\xEE(|\xDB(0(\xBC\x90\x84\xAA\xE80j\xB8}7\x86m\xE2(-dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80634ddcff8e14610030575b600080fd5b61003861004a565b60405190815260200160405180910390f35b60006100787f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b905090565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100cb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061007891906100f3565b4390565b60006020828403121561010557600080fd5b505191905056fea2646970667358221220d865a023cfa68b2602b12cc4b5c55cacd435516c10a7e3170176c6e72d78038264736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b5060043610610029575f3560e01c80634ddcff8e1461002d575b5f80fd5b610035610047565b60405190815260200160405180910390f35b5f6100747f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b905090565b5f606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061007491906100ec565b4390565b5f602082840312156100fc575f80fd5b505191905056fea26469706673582212205f1b1313205ec6cc6721ee287cdb283028bc9084aae8306ab87d37866de2282d64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cM\xDC\xFF\x8E\x14a\x000W[`\0\x80\xFD[a\08a\0JV[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0a\0x\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P\x90V[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xCBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0x\x91\x90a\0\xF3V[C\x90V[`\0` \x82\x84\x03\x12\x15a\x01\x05W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xD8e\xA0#\xCF\xA6\x8B&\x02\xB1,\xC4\xB5\xC5\\\xAC\xD45Ql\x10\xA7\xE3\x17\x01v\xC6\xE7-x\x03\x82dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cM\xDC\xFF\x8E\x14a\0-W[_\x80\xFD[a\x005a\0GV[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[_a\0t\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P\x90V[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xC4W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0t\x91\x90a\0\xECV[C\x90V[_` \x82\x84\x03\x12\x15a\0\xFCW_\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 _\x1B\x13\x13 ^\xC6\xCCg!\xEE(|\xDB(0(\xBC\x90\x84\xAA\xE80j\xB8}7\x86m\xE2(-dsolcC\0\x08\x18\x003", ); /**Function with signature `getBlockNumberish()` and selector `0x4ddcff8e`. ```solidity function getBlockNumberish() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getBlockNumberishCall {} ///Container type for the return parameters of the [`getBlockNumberish()`](getBlockNumberishCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getBlockNumberishReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -102,7 +114,9 @@ function getBlockNumberish() external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -168,6 +182,7 @@ function getBlockNumberish() external view returns (uint256); }; ///Container for all the [`MockBlockNumberish`](self) function calls. pub enum MockBlockNumberishCalls { + #[allow(missing_docs)] getBlockNumberish(getBlockNumberishCall), } #[automatically_derived] @@ -202,7 +217,7 @@ function getBlockNumberish() external view returns (uint256); Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -234,7 +249,7 @@ function getBlockNumberish() external view returns (uint256); ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/mockcosignerlibcontract.rs b/crates/bindings-uniswapx/src/mockcosignerlibcontract.rs index 26d240f..64dcc09 100644 --- a/crates/bindings-uniswapx/src/mockcosignerlibcontract.rs +++ b/crates/bindings-uniswapx/src/mockcosignerlibcontract.rs @@ -42,38 +42,49 @@ interface MockCosignerLibContract { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockCosignerLibContract { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b50610339806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631a86b55014610030575b600080fd5b61004361003e3660046101ac565b610045565b005b610050838383610055565b505050565b6000808280602001905181019061006c91906102b0565b91509150600083604081518110610085576100856102d4565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156100e2573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158061013d575073ffffffffffffffffffffffffffffffffffffffff8116155b15610174576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156101c157600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146101e557600080fd5b925060208401359150604084013567ffffffffffffffff8082111561020957600080fd5b818601915086601f83011261021d57600080fd5b81358181111561022f5761022f61017d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156102755761027561017d565b8160405282815289602084870101111561028e57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080604083850312156102c357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220ed58753e7da908296b6666861af247eef36639f7a8c4d0afcf579f646d109dbc64736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506103238061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80631a86b5501461002d575b5f80fd5b61004061003b3660046101a2565b610042565b005b61004d838383610052565b505050565b5f8082806020019051810190610068919061029e565b915091505f83604081518110610080576100806102c0565b01602090810151604080515f80825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156100da573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580610135575073ffffffffffffffffffffffffffffffffffffffff8116155b1561016c576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f606084860312156101b4575f80fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146101d7575f80fd5b925060208401359150604084013567ffffffffffffffff808211156101fa575f80fd5b818601915086601f83011261020d575f80fd5b81358181111561021f5761021f610175565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561026557610265610175565b8160405282815289602084870101111561027d575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f80604083850312156102af575f80fd5b505080516020909101519092909150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122011e29ec06fabe2f26998885489532bb9bdc6866588c0518d51896e3bd42c29cf64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x039\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80c\x1A\x86\xB5P\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01\xACV[a\0EV[\0[a\0P\x83\x83\x83a\0UV[PPPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a\0l\x91\x90a\x02\xB0V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a\0\x85Wa\0\x85a\x02\xD4V[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\0\xE2W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x01=WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x01tW`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\x01\xC1W`\0\x80\xFD[\x835s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xE5W`\0\x80\xFD[\x92P` \x84\x015\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\tW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02\x1DW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02/Wa\x02/a\x01}V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02uWa\x02ua\x01}V[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x02\x8EW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\x02\xC3W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xEDXu>}\xA9\x08)kff\x86\x1A\xF2G\xEE\xF3f9\xF7\xA8\xC4\xD0\xAF\xCFW\x9Fdm\x10\x9D\xBCdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x03#\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80c\x1A\x86\xB5P\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x01\xA2V[a\0BV[\0[a\0M\x83\x83\x83a\0RV[PPPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\0h\x91\x90a\x02\x9EV[\x91P\x91P_\x83`@\x81Q\x81\x10a\0\x80Wa\0\x80a\x02\xC0V[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\0\xDAW=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x015WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x01lW`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[_\x80_``\x84\x86\x03\x12\x15a\x01\xB4W_\x80\xFD[\x835s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xD7W_\x80\xFD[\x92P` \x84\x015\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xFAW_\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02\rW_\x80\xFD[\x815\x81\x81\x11\x15a\x02\x1FWa\x02\x1Fa\x01uV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02eWa\x02ea\x01uV[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x02}W_\x80\xFD[\x82` \x86\x01` \x83\x017_` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[_\x80`@\x83\x85\x03\x12\x15a\x02\xAFW_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD\xFE\xA2dipfsX\"\x12 \x11\xE2\x9E\xC0o\xAB\xE2\xF2i\x98\x88T\x89S+\xB9\xBD\xC6\x86e\x88\xC0Q\x8DQ\x89n;\xD4,)\xCFdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80631a86b55014610030575b600080fd5b61004361003e3660046101ac565b610045565b005b610050838383610055565b505050565b6000808280602001905181019061006c91906102b0565b91509150600083604081518110610085576100856102d4565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156100e2573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158061013d575073ffffffffffffffffffffffffffffffffffffffff8116155b15610174576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000606084860312156101c157600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146101e557600080fd5b925060208401359150604084013567ffffffffffffffff8082111561020957600080fd5b818601915086601f83011261021d57600080fd5b81358181111561022f5761022f61017d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156102755761027561017d565b8160405282815289602084870101111561028e57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b600080604083850312156102c357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220ed58753e7da908296b6666861af247eef36639f7a8c4d0afcf579f646d109dbc64736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b5060043610610029575f3560e01c80631a86b5501461002d575b5f80fd5b61004061003b3660046101a2565b610042565b005b61004d838383610052565b505050565b5f8082806020019051810190610068919061029e565b915091505f83604081518110610080576100806102c0565b01602090810151604080515f80825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156100da573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580610135575073ffffffffffffffffffffffffffffffffffffffff8116155b1561016c576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f805f606084860312156101b4575f80fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146101d7575f80fd5b925060208401359150604084013567ffffffffffffffff808211156101fa575f80fd5b818601915086601f83011261020d575f80fd5b81358181111561021f5761021f610175565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561026557610265610175565b8160405282815289602084870101111561027d575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f80604083850312156102af575f80fd5b505080516020909101519092909150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122011e29ec06fabe2f26998885489532bb9bdc6866588c0518d51896e3bd42c29cf64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80c\x1A\x86\xB5P\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01\xACV[a\0EV[\0[a\0P\x83\x83\x83a\0UV[PPPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a\0l\x91\x90a\x02\xB0V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a\0\x85Wa\0\x85a\x02\xD4V[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\0\xE2W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x01=WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x01tW`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\x01\xC1W`\0\x80\xFD[\x835s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xE5W`\0\x80\xFD[\x92P` \x84\x015\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\tW`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02\x1DW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02/Wa\x02/a\x01}V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02uWa\x02ua\x01}V[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x02\x8EW`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[`\0\x80`@\x83\x85\x03\x12\x15a\x02\xC3W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xEDXu>}\xA9\x08)kff\x86\x1A\xF2G\xEE\xF3f9\xF7\xA8\xC4\xD0\xAF\xCFW\x9Fdm\x10\x9D\xBCdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80c\x1A\x86\xB5P\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x01\xA2V[a\0BV[\0[a\0M\x83\x83\x83a\0RV[PPPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\0h\x91\x90a\x02\x9EV[\x91P\x91P_\x83`@\x81Q\x81\x10a\0\x80Wa\0\x80a\x02\xC0V[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\0\xDAW=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x015WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x01lW`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[_\x80_``\x84\x86\x03\x12\x15a\x01\xB4W_\x80\xFD[\x835s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\xD7W_\x80\xFD[\x92P` \x84\x015\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xFAW_\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02\rW_\x80\xFD[\x815\x81\x81\x11\x15a\x02\x1FWa\x02\x1Fa\x01uV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02eWa\x02ea\x01uV[\x81`@R\x82\x81R\x89` \x84\x87\x01\x01\x11\x15a\x02}W_\x80\xFD[\x82` \x86\x01` \x83\x017_` \x84\x83\x01\x01R\x80\x95PPPPPP\x92P\x92P\x92V[_\x80`@\x83\x85\x03\x12\x15a\x02\xAFW_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD\xFE\xA2dipfsX\"\x12 \x11\xE2\x9E\xC0o\xAB\xE2\xF2i\x98\x88T\x89S+\xB9\xBD\xC6\x86e\x88\xC0Q\x8DQ\x89n;\xD4,)\xCFdsolcC\0\x08\x18\x003", ); /**Custom error with signature `InvalidCosignature()` and selector `0xd7815be1`. ```solidity error InvalidCosignature(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidCosignature {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -129,18 +140,26 @@ error InvalidCosignature(); ```solidity function verify(address cosigner, bytes32 data, bytes memory cosignature) external pure; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct verifyCall { + #[allow(missing_docs)] pub cosigner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub data: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] pub cosignature: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`verify(address,bytes32,bytes)`](verifyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct verifyReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -268,6 +287,7 @@ function verify(address cosigner, bytes32 data, bytes memory cosignature) extern }; ///Container for all the [`MockCosignerLibContract`](self) function calls. pub enum MockCosignerLibContractCalls { + #[allow(missing_docs)] verify(verifyCall), } #[automatically_derived] @@ -300,7 +320,7 @@ function verify(address cosigner, bytes32 data, bytes memory cosignature) extern Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -332,7 +352,7 @@ function verify(address cosigner, bytes32 data, bytes memory cosignature) extern ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -353,6 +373,7 @@ function verify(address cosigner, bytes32 data, bytes memory cosignature) extern } ///Container for all the [`MockCosignerLibContract`](self) custom errors. pub enum MockCosignerLibContractErrors { + #[allow(missing_docs)] InvalidCosignature(InvalidCosignature), } #[automatically_derived] @@ -387,7 +408,7 @@ function verify(address cosigner, bytes32 data, bytes memory cosignature) extern Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -419,7 +440,7 @@ function verify(address cosigner, bytes32 data, bytes memory cosignature) extern ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/mockdutchorderreactor.rs b/crates/bindings-uniswapx/src/mockdutchorderreactor.rs index 69c77fb..57633ad 100644 --- a/crates/bindings-uniswapx/src/mockdutchorderreactor.rs +++ b/crates/bindings-uniswapx/src/mockdutchorderreactor.rs @@ -536,41 +536,55 @@ interface MockDutchOrderReactor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockDutchOrderReactor { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a06040523480156200001157600080fd5b50604051620031b6380380620031b68339810160408190526200003491620000c0565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849284928492839283929091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000ff92505050565b6001600160a01b0381168114620000bd57600080fd5b50565b60008060408385031215620000d457600080fd5b8251620000e181620000a7565b6020840151909250620000f481620000a7565b809150509250929050565b608051613095620001216000396000818160fb015261141a01526130956000f3fe6080604052600436106100b55760003560e01c80633f62192e116100695780638da5cb5b1161004e5780638da5cb5b146101ba5780639bb32265146101e7578063f2fde38b1461021457600080fd5b80633f62192e1461017a5780636999b3771461018d57600080fd5b806312261ee71161009a57806312261ee7146100e957806313fb72c7146101475780632d7713891461015a57600080fd5b80630d335884146100c15780630d7a16c3146100d657600080fd5b366100bc57005b600080fd5b6100d46100cf3660046122d8565b610234565b005b6100d46100e4366004612386565b6103ad565b3480156100f557600080fd5b5061011d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d46101553660046123c8565b61050e565b34801561016657600080fd5b506100d4610175366004612456565b6106cc565b6100d461018836600461247a565b6107d8565b34801561019957600080fd5b5060015461011d9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101c657600080fd5b5060005461011d9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101f357600080fd5b5061020761020236600461247a565b6108dd565b60405161013e9190612683565b34801561022057600080fd5b506100d461022f366004612456565b61095b565b61023c610a4c565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816102535790505090506102fb84610abd565b8160008151811061030e5761030e6126c5565b602002602001018190525061032281610b35565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610362908490879087906004016126f4565b600060405180830381600087803b15801561037c57600080fd5b505af1158015610390573d6000803e3d6000fd5b5050505061039d81610b86565b506103a86001600255565b505050565b6103b5610a4c565b8060008167ffffffffffffffff8111156103d1576103d1612696565b60405190808252806020026020018201604052801561048c57816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103ef5790505b50905060005b828110156104eb576104c68585838181106104af576104af6126c5565b90506020028101906104c191906127ba565b610abd565b8282815181106104d8576104d86126c5565b6020908102919091010152600101610492565b506104f581610b35565b6104fe81610b86565b505061050a6001600255565b5050565b610516610a4c565b8260008167ffffffffffffffff81111561053257610532612696565b6040519080825280602002602001820160405280156105ed57816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105505790505b50905060005b82811015610635576106108787838181106104af576104af6126c5565b828281518110610622576106226126c5565b60209081029190910101526001016105f3565b5061063f81610b35565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061067f908490889088906004016126f4565b600060405180830381600087803b15801561069957600080fd5b505af11580156106ad573d6000803e3d6000fd5b505050506106ba81610b86565b50506106c66001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b6107e0610a4c565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107f757905050905061089f82610abd565b816000815181106108b2576108b26126c5565b60200260200101819052506108c681610b35565b6108cf81610b86565b506108da6001600255565b50565b6040805161016081018252600060a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261095582610abd565b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610749565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6002805403610ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610749565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261095582610cd9565b805160005b818110156103a8576000838281518110610b5657610b566126c5565b60200260200101519050610b6981610e27565b610b738133611317565b610b7d8133611418565b50600101610b3a565b805160005b81811015610cc8576000838281518110610ba757610ba76126c5565b602002602001015190506000816040015151905060005b81811015610c2857600083604001518281518110610bde57610bde6126c5565b60200260200101519050610c1f81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff166117be9092919063ffffffff16565b50600101610bbe565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c7157610c716126c5565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cb691815260200190565b60405180910390a45050600101610b8b565b50471561050a5761050a3347611805565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610d5283806127f8565b810190610d5f9190612aea565b9050610d6a8161189f565b6040518060a0016040528082600001518152602001610da083602001518460400151856060015161198a9092919063ffffffff16565b8152602001610dc6836020015184604001518560800151611a5c9092919063ffffffff16565b8152602001848060200190610ddb91906127f8565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610e1e83611b43565b90529392505050565b60015473ffffffffffffffffffffffffffffffffffffffff16610e475750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390610e9e908590600401612683565b600060405180830381865afa158015610ebb573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f019190810190612c1e565b6040830151518151919250906000610f198284612d1d565b67ffffffffffffffff811115610f3157610f31612696565b604051908082528060200260200182016040528015610f9a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610f4f5790505b50905060005b83811015610feb5785604001518181518110610fbe57610fbe6126c5565b6020026020010151828281518110610fd857610fd86126c5565b6020908102919091010152600101610fa0565b5060008060005b8481101561130657600087828151811061100e5761100e6126c5565b6020026020010151905060005b828110156110cc57888181518110611035576110356126c5565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036110c45781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610749565b60010161101b565b506000805b8881101561118d5760008b6040015182815181106110f1576110f16126c5565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361118457851561116e576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161117d9084612d1d565b9250600196505b506001016110d1565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036112065784156111ed576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516111ff9082612d1d565b9050600193505b8060000361125b5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610749565b611269816005612710611dad565b826020015111156112dc578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610749565b8186848a01815181106112f1576112f16126c5565b60209081029190910101525050600101610ff2565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611368576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff161561050a578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906113e49084908690600401612d30565b60006040518083038186803b1580156113fc57600080fd5b505afa158015611410573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6114d8846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051602001611663907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612f5360208301396040518060c00160405280608d8152602001612fd3608d91396040516020016116d093929190612d5f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612fa56020830139604051602001611723929190612da2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1683526117909695949392600401612dfd565b600060405180830381600087803b1580156117aa57600080fd5b505af1158015611410573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff83166117e3576103a88282611805565b6103a873ffffffffffffffffffffffffffffffffffffffff8416338484611de9565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461185f576040519150601f19603f3d011682016040523d82523d6000602084013e611864565b606091505b50509050806103a8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604081015181516060015110156118e2576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108da5760005b81608001515181101561050a578160800151818151811061191d5761191d6126c5565b6020026020010151604001518260800151828151811061193f5761193f6126c5565b60200260200101516020015114611982576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001016118fa565b6119c46040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115611a06576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611a1c856020015186604001518686611edb565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611a7a57611a7a612696565b604051908082528060200260200182016040528015611ae357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611a985790505b50915060005b81811015611b3a57611b15868281518110611b0657611b066126c5565b60200260200101518686611f58565b838281518110611b2757611b276126c5565b6020908102919091010152600101611ae9565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a982015260009060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612f5360208301396040518060c00160405280608d8152602001612fd3608d9139604051602001611ce993929190612d5f565b60405160208183030381529060405280519060200120611d0c8360000151612028565b83602001518460400151856060015160000151866060015160200151876060015160400151611d3e89608001516120c2565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611de257600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611ed4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610749565b5050505050565b6000838503611eeb575083611f50565b828211611f24576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611f32575082611f50565b428310611f40575083611f50565b611f4d8383428888612160565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611fb7576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fcd856020015186604001518686611edb565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d8152602001612fd3608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351611d9098939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff8111156120e2576120e2612696565b6040519080825280601f01601f19166020018201604052801561210c576020820181803683370190505b50905060005b835181101561215157600061213f858381518110612132576121326126c5565b602002602001015161217b565b60208381028501015250600101612112565b50805160209091012092915050565b600061216f86868686866121f2565b90505b95945050505050565b6000604051806080016040528060528152602001612f5360529139805160209182012083518483015160408087015160608801519151611d90969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000848410612202575080612172565b600061220e8786612eb8565b9050600061221c8888612eb8565b905060008585121561224e5761223e8383612237888a612ecb565b9190611dad565b61224790612ef2565b9050612260565b61225d83836122378989612ecb565b90505b61226a8187612f2a565b9998505050505050505050565b60006040828403121561228957600080fd5b50919050565b60008083601f8401126122a157600080fd5b50813567ffffffffffffffff8111156122b957600080fd5b6020830191508360208285010111156122d157600080fd5b9250929050565b6000806000604084860312156122ed57600080fd5b833567ffffffffffffffff8082111561230557600080fd5b61231187838801612277565b9450602086013591508082111561232757600080fd5b506123348682870161228f565b9497909650939450505050565b60008083601f84011261235357600080fd5b50813567ffffffffffffffff81111561236b57600080fd5b6020830191508360208260051b85010111156122d157600080fd5b6000806020838503121561239957600080fd5b823567ffffffffffffffff8111156123b057600080fd5b6123bc85828601612341565b90969095509350505050565b600080600080604085870312156123de57600080fd5b843567ffffffffffffffff808211156123f657600080fd5b61240288838901612341565b9096509450602087013591508082111561241b57600080fd5b506124288782880161228f565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108da57600080fd5b60006020828403121561246857600080fd5b813561247381612434565b9392505050565b60006020828403121561248c57600080fd5b813567ffffffffffffffff8111156124a357600080fd5b611f5084828501612277565b60005b838110156124ca5781810151838201526020016124b2565b50506000910152565b600081518084526124eb8160208601602086016124af565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b8381101561257d578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612532565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526125fc6101a08501826124d3565b9050602083015161263a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612652828261251d565b915050606083015184820360a086015261266c82826124d3565b915050608083015160c08501528091505092915050565b6020815260006124736020830184612588565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612769577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612757868351612588565b9550938201939082019060010161271d565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126127ee57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261282d57600080fd5b83018035915067ffffffffffffffff82111561284857600080fd5b6020019150368190038213156122d157600080fd5b6040516060810167ffffffffffffffff8111828210171561288057612880612696565b60405290565b6040516080810167ffffffffffffffff8111828210171561288057612880612696565b60405160a0810167ffffffffffffffff8111828210171561288057612880612696565b60405160c0810167ffffffffffffffff8111828210171561288057612880612696565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561293657612936612696565b604052919050565b600082601f83011261294f57600080fd5b813567ffffffffffffffff81111561296957612969612696565b61299a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128ef565b8181528460208386010111156129af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156129de57600080fd5b6129e661285d565b905081356129f381612434565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612a2b57612a2b612696565b5060051b60200190565b600082601f830112612a4657600080fd5b81356020612a5b612a5683612a11565b6128ef565b82815260079290921b84018101918181019086841115612a7a57600080fd5b8286015b84811015612adf5760808189031215612a975760008081fd5b612a9f612886565b8135612aaa81612434565b8152818501358582015260408083013590820152606080830135612acd81612434565b90820152835291830191608001612a7e565b509695505050505050565b600060208284031215612afc57600080fd5b813567ffffffffffffffff80821115612b1457600080fd5b9083019060e08286031215612b2857600080fd5b612b306128a9565b823582811115612b3f57600080fd5b830160c08188031215612b5157600080fd5b612b596128cc565b8135612b6481612434565b81526020820135612b7481612434565b8060208301525060408201356040820152606082013560608201526080820135612b9d81612434565b608082015260a082013584811115612bb457600080fd5b612bc08982850161293e565b60a08301525080835250506020830135602082015260408301356040820152612bec86606085016129cc565b606082015260c083013582811115612c0357600080fd5b612c0f87828601612a35565b60808301525095945050505050565b60006020808385031215612c3157600080fd5b825167ffffffffffffffff811115612c4857600080fd5b8301601f81018513612c5957600080fd5b8051612c67612a5682612a11565b81815260609182028301840191848201919088841115612c8657600080fd5b938501935b83851015612ce25780858a031215612ca35760008081fd5b612cab61285d565b8551612cb681612434565b81528587015187820152604080870151612ccf81612434565b9082015283529384019391850191612c8b565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561095557610955612cee565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611f506040830184612588565b60008451612d718184602089016124af565b845190830190612d858183602089016124af565b8451910190612d988183602088016124af565b0195945050505050565b7f44757463684f72646572207769746e6573732900000000000000000000000000815260008351612dda8160138501602088016124af565b835190830190612df18160138401602088016124af565b01601301949350505050565b6000610140612e2d838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612e6e6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612ea3818401866124d3565b905082810361012084015261226a81856124d3565b8181038181111561095557610955612cee565b8181036000831280158383131683831282161715612eeb57612eeb612cee565b5092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203612f2357612f23612cee565b5060000390565b8082018281126000831280158216821582161715612f4a57612f4a612cee565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220430ad8ee4f437c7cb92a9d49ef5b10b2917e10d4dee5b45d97aa1049173516e464736f6c63430008180033 + ///0x60a060405234801562000010575f80fd5b50604051620030e2380380620030e28339810160408190526200003391620000bd565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849284928492839283929091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000fa92505050565b6001600160a01b0381168114620000ba575f80fd5b50565b5f8060408385031215620000cf575f80fd5b8251620000dc81620000a5565b6020840151909250620000ef81620000a5565b809150509250929050565b608051612fc9620001195f395f818160f401526113ce0152612fc95ff3fe6080604052600436106100b0575f3560e01c80633f62192e116100665780638da5cb5b1161004c5780638da5cb5b146101b15780639bb32265146101dc578063f2fde38b14610208575f80fd5b80633f62192e146101725780636999b37714610185575f80fd5b806312261ee71161009657806312261ee7146100e357806313fb72c7146101405780632d77138914610153575f80fd5b80630d335884146100bb5780630d7a16c3146100d0575f80fd5b366100b757005b5f80fd5b6100ce6100c936600461225c565b610227565b005b6100ce6100de366004612301565b610398565b3480156100ee575f80fd5b506101167f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100ce61014e366004612340565b6104f6565b34801561015e575f80fd5b506100ce61016d3660046123c8565b6106ac565b6100ce6101803660046123ea565b6107b7565b348015610190575f80fd5b506001546101169073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101bc575f80fd5b505f546101169073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101e7575f80fd5b506101fb6101f63660046123ea565b6108b9565b60405161013791906125ea565b348015610213575f80fd5b506100ce6102223660046123c8565b610936565b61022f610a25565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816102455790505090506102ec84610a96565b815f815181106102fe576102fe612629565b602002602001018190525061031281610b0d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061035290849087908790600401612656565b5f604051808303815f87803b158015610369575f80fd5b505af115801561037b573d5f803e3d5ffd5b5050505061038881610b5c565b506103936001600255565b505050565b6103a0610a25565b805f8167ffffffffffffffff8111156103bb576103bb6125fc565b60405190808252806020026020018201604052801561047557816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103d95790505b5090505f5b828110156104d3576104ae85858381811061049757610497612629565b90506020028101906104a99190612719565b610a96565b8282815181106104c0576104c0612629565b602090810291909101015260010161047a565b506104dd81610b0d565b6104e681610b5c565b50506104f26001600255565b5050565b6104fe610a25565b825f8167ffffffffffffffff811115610519576105196125fc565b6040519080825280602002602001820160405280156105d357816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105375790505b5090505f5b8281101561061a576105f587878381811061049757610497612629565b82828151811061060757610607612629565b60209081029190910101526001016105d8565b5061062481610b0d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061066490849088908890600401612656565b5f604051808303815f87803b15801561067b575f80fd5b505af115801561068d573d5f803e3d5ffd5b5050505061069a81610b5c565b50506106a66001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b6107bf610a25565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107d557905050905061087c82610a96565b815f8151811061088e5761088e612629565b60200260200101819052506108a281610b0d565b6108ab81610b5c565b506108b66001600255565b50565b60408051610160810182525f60a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261093082610a96565b92915050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146109b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610728565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6002805403610a90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610728565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261093082610ca7565b80515f5b81811015610393575f838281518110610b2c57610b2c612629565b60200260200101519050610b3f81610df2565b610b4981336112cf565b610b5381336113cc565b50600101610b11565b80515f5b81811015610c96575f838281518110610b7b57610b7b612629565b602002602001015190505f81604001515190505f5b81811015610bf8575f83604001518281518110610baf57610baf612629565b60200260200101519050610bef81604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff1661176a9092919063ffffffff16565b50600101610b90565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c4057610c40612629565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610c8491815260200190565b60405180910390a45050600101610b60565b5047156104f2576104f233476117b1565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610d1f8380612755565b810190610d2c9190612a37565b9050610d3781611847565b6040518060a00160405280825f01518152602001610d6c8360200151846040015185606001516119319092919063ffffffff16565b8152602001610d928360200151846040015185608001516119ff9092919063ffffffff16565b8152602001848060200190610da79190612755565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610de983611ae4565b90529392505050565b60015473ffffffffffffffffffffffffffffffffffffffff16610e125750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390610e689085906004016125ea565b5f60405180830381865afa158015610e82573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ec79190810190612b63565b6040830151518151919250905f610ede8284612c59565b67ffffffffffffffff811115610ef657610ef66125fc565b604051908082528060200260200182016040528015610f5e57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610f145790505b5090505f5b83811015610fae5785604001518181518110610f8157610f81612629565b6020026020010151828281518110610f9b57610f9b612629565b6020908102919091010152600101610f63565b505f805f5b848110156112be575f878281518110610fce57610fce612629565b602002602001015190505f5b8281101561108957888181518110610ff457610ff4612629565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036110815781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610728565b600101610fda565b505f805b88811015611146575f8b6040015182815181106110ac576110ac612629565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff160361113d578515611127576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516111369084612c59565b9250600196505b5060010161108d565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036111bf5784156111a6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516111b89082612c59565b9050600193505b805f036112135781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610728565b611221816005612710611d4b565b82602001511115611294578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610728565b8186848a01815181106112a9576112a9612629565b60209081029190910101525050600101610fb3565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611320576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104f2578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b9061139c9084908690600401612c6c565b5f6040518083038186803b1580156113b2575f80fd5b505afa1580156113c4573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61148b846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff861682528087015181015190820152855f0151602001518660800151604051602001611614907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e8760208301396040518060c00160405280608d8152602001612f07608d913960405160200161168193929190612c9a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612ed960208301396040516020016116d4929190612cdc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1683526117419695949392600401612d36565b5f604051808303815f87803b158015611758575f80fd5b505af11580156113c4573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff831661178f5761039382826117b1565b61039373ffffffffffffffffffffffffffffffffffffffff8416338484611d85565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611807576040519150601f19603f3d011682016040523d82523d5f602084013e61180c565b606091505b5050905080610393576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151815160600151101561188a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108b6575f5b8160800151518110156104f257816080015181815181106118c4576118c4612629565b602002602001015160400151826080015182815181106118e6576118e6612629565b60200260200101516020015114611929576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001016118a1565b61196860405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b8360400151846020015111156119aa576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6119bf856020015186604001518686611e73565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611a1d57611a1d6125fc565b604051908082528060200260200182016040528015611a8557816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611a3b5790505b5091505f5b81811015611adb57611ab6868281518110611aa757611aa7612629565b60200260200101518686611eef565b838281518110611ac857611ac8612629565b6020908102919091010152600101611a8a565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a98201525f9060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e8760208301396040518060c00160405280608d8152602001612f07608d9139604051602001611c8993929190612c9a565b60405160208183030381529060405280519060200120611cab835f0151611fbc565b8360200151846040015185606001515f0151866060015160200151876060015160400151611cdc8960800151612055565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611d7e575f80fd5b5091020490565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611e6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610728565b5050505050565b5f838503611e82575083611ee7565b828211611ebb576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611ec9575082611ee7565b428310611ed7575083611ee7565b611ee483834288886120f0565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611f4d576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611f62856020015186604001518686611e73565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b5f6040518060c00160405280608d8152602001612f07608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351611d2e98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115612074576120746125fc565b6040519080825280601f01601f19166020018201604052801561209e576020820181803683370190505b5090505f5b83518110156120e1575f6120cf8583815181106120c2576120c2612629565b602002602001015161210a565b602083810285010152506001016120a3565b50805160209091012092915050565b5f6120fe8686868686612180565b90505b95945050505050565b5f604051806080016040528060528152602001612e8760529139805160209182012083518483015160408087015160608801519151611d2e969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f84841061218f575080612101565b5f61219a8786612df0565b90505f6121a78888612df0565b90505f858512156121d8576121c883836121c1888a612e03565b9190611d4b565b6121d190612e29565b90506121ea565b6121e783836121c18989612e03565b90505b6121f48187612e5f565b9998505050505050505050565b5f60408284031215612211575f80fd5b50919050565b5f8083601f840112612227575f80fd5b50813567ffffffffffffffff81111561223e575f80fd5b602083019150836020828501011115612255575f80fd5b9250929050565b5f805f6040848603121561226e575f80fd5b833567ffffffffffffffff80821115612285575f80fd5b61229187838801612201565b945060208601359150808211156122a6575f80fd5b506122b386828701612217565b9497909650939450505050565b5f8083601f8401126122d0575f80fd5b50813567ffffffffffffffff8111156122e7575f80fd5b6020830191508360208260051b8501011115612255575f80fd5b5f8060208385031215612312575f80fd5b823567ffffffffffffffff811115612328575f80fd5b612334858286016122c0565b90969095509350505050565b5f805f8060408587031215612353575f80fd5b843567ffffffffffffffff8082111561236a575f80fd5b612376888389016122c0565b9096509450602087013591508082111561238e575f80fd5b5061239b87828801612217565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108b6575f80fd5b5f602082840312156123d8575f80fd5b81356123e3816123a7565b9392505050565b5f602082840312156123fa575f80fd5b813567ffffffffffffffff811115612410575f80fd5b611ee784828501612201565b5f5b8381101561243657818101518382015260200161241e565b50505f910152565b5f815180845261245581602086016020860161241c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156124e5578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161249a565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526125636101a085018261243e565b905060208301516125a16020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526125b98282612487565b915050606083015184820360a08601526125d3828261243e565b915050608083015160c08501528091505092915050565b602081525f6123e360208301846124f0565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b838110156126c9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526126b78683516124f0565b9550938201939082019060010161267d565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261274b575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612788575f80fd5b83018035915067ffffffffffffffff8211156127a2575f80fd5b602001915036819003821315612255575f80fd5b6040516060810167ffffffffffffffff811182821017156127d9576127d96125fc565b60405290565b6040516080810167ffffffffffffffff811182821017156127d9576127d96125fc565b60405160a0810167ffffffffffffffff811182821017156127d9576127d96125fc565b60405160c0810167ffffffffffffffff811182821017156127d9576127d96125fc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561288f5761288f6125fc565b604052919050565b5f82601f8301126128a6575f80fd5b813567ffffffffffffffff8111156128c0576128c06125fc565b6128f160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612848565b818152846020838601011115612905575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608284031215612931575f80fd5b6129396127b6565b90508135612946816123a7565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff82111561297d5761297d6125fc565b5060051b60200190565b5f82601f830112612996575f80fd5b813560206129ab6129a683612964565b612848565b82815260079290921b840181019181810190868411156129c9575f80fd5b8286015b84811015612a2c57608081890312156129e4575f80fd5b6129ec6127df565b81356129f7816123a7565b8152818501358582015260408083013590820152606080830135612a1a816123a7565b908201528352918301916080016129cd565b509695505050505050565b5f60208284031215612a47575f80fd5b813567ffffffffffffffff80821115612a5e575f80fd5b9083019060e08286031215612a71575f80fd5b612a79612802565b823582811115612a87575f80fd5b830160c08188031215612a98575f80fd5b612aa0612825565b8135612aab816123a7565b81526020820135612abb816123a7565b8060208301525060408201356040820152606082013560608201526080820135612ae4816123a7565b608082015260a082013584811115612afa575f80fd5b612b0689828501612897565b60a08301525080835250506020830135602082015260408301356040820152612b328660608501612921565b606082015260c083013582811115612b48575f80fd5b612b5487828601612987565b60808301525095945050505050565b5f6020808385031215612b74575f80fd5b825167ffffffffffffffff811115612b8a575f80fd5b8301601f81018513612b9a575f80fd5b8051612ba86129a682612964565b81815260609182028301840191848201919088841115612bc6575f80fd5b938501935b83851015612c205780858a031215612be1575f80fd5b612be96127b6565b8551612bf4816123a7565b81528587015187820152604080870151612c0d816123a7565b9082015283529384019391850191612bcb565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561093057610930612c2c565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611ee760408301846124f0565b5f8451612cab81846020890161241c565b845190830190612cbf81836020890161241c565b8451910190612cd281836020880161241c565b0195945050505050565b7f44757463684f72646572207769746e657373290000000000000000000000000081525f8351612d1381601385016020880161241c565b835190830190612d2a81601384016020880161241c565b01601301949350505050565b5f610140612d65838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612da66080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612ddb8184018661243e565b90508281036101208401526121f4818561243e565b8181038181111561093057610930612c2c565b8181035f831280158383131683831282161715612e2257612e22612c2c565b5092915050565b5f7f80000000000000000000000000000000000000000000000000000000000000008203612e5957612e59612c2c565b505f0390565b8082018281125f831280158216821582161715612e7e57612e7e612c2c565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220d72d1112bd17055c13589a696235c0269c3cfb14516e5af8786acfc41b1f3bca64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x001\xB68\x03\x80b\x001\xB6\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xC0V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x84\x92\x84\x92\x83\x92\x83\x92\x90\x91\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xFF\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xBDW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xD4W`\0\x80\xFD[\x82Qb\0\0\xE1\x81b\0\0\xA7V[` \x84\x01Q\x90\x92Pb\0\0\xF4\x81b\0\0\xA7V[\x80\x91PP\x92P\x92\x90PV[`\x80Qa0\x95b\0\x01!`\09`\0\x81\x81`\xFB\x01Ra\x14\x1A\x01Ra0\x95`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xB5W`\x005`\xE0\x1C\x80c?b\x19.\x11a\0iW\x80c\x8D\xA5\xCB[\x11a\0NW\x80c\x8D\xA5\xCB[\x14a\x01\xBAW\x80c\x9B\xB3\"e\x14a\x01\xE7W\x80c\xF2\xFD\xE3\x8B\x14a\x02\x14W`\0\x80\xFD[\x80c?b\x19.\x14a\x01zW\x80ci\x99\xB3w\x14a\x01\x8DW`\0\x80\xFD[\x80c\x12&\x1E\xE7\x11a\0\x9AW\x80c\x12&\x1E\xE7\x14a\0\xE9W\x80c\x13\xFBr\xC7\x14a\x01GW\x80c-w\x13\x89\x14a\x01ZW`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xC1W\x80c\rz\x16\xC3\x14a\0\xD6W`\0\x80\xFD[6a\0\xBCW\0[`\0\x80\xFD[a\0\xD4a\0\xCF6`\x04a\"\xD8V[a\x024V[\0[a\0\xD4a\0\xE46`\x04a#\x86V[a\x03\xADV[4\x80\x15a\0\xF5W`\0\x80\xFD[Pa\x01\x1D\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD4a\x01U6`\x04a#\xC8V[a\x05\x0EV[4\x80\x15a\x01fW`\0\x80\xFD[Pa\0\xD4a\x01u6`\x04a$VV[a\x06\xCCV[a\0\xD4a\x01\x886`\x04a$zV[a\x07\xD8V[4\x80\x15a\x01\x99W`\0\x80\xFD[P`\x01Ta\x01\x1D\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xC6W`\0\x80\xFD[P`\0Ta\x01\x1D\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xF3W`\0\x80\xFD[Pa\x02\x07a\x02\x026`\x04a$zV[a\x08\xDDV[`@Qa\x01>\x91\x90a&\x83V[4\x80\x15a\x02 W`\0\x80\xFD[Pa\0\xD4a\x02/6`\x04a$VV[a\t[V[a\x02=`\0\xFD[PPPPa\x03\x9D\x81a\x0B\x86V[Pa\x03\xA8`\x01`\x02UV[PPPV[a\x03\xB5a\nLV[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\xD1Wa\x03\xD1a&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xEFW\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xEBWa\x04\xC6\x85\x85\x83\x81\x81\x10a\x04\xAFWa\x04\xAFa&\xC5V[\x90P` \x02\x81\x01\x90a\x04\xC1\x91\x90a'\xBAV[a\n\xBDV[\x82\x82\x81Q\x81\x10a\x04\xD8Wa\x04\xD8a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04\x92V[Pa\x04\xF5\x81a\x0B5V[a\x04\xFE\x81a\x0B\x86V[PPa\x05\n`\x01`\x02UV[PPV[a\x05\x16a\nLV[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x052Wa\x052a&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xEDW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05PW\x90P[P\x90P`\0[\x82\x81\x10\x15a\x065Wa\x06\x10\x87\x87\x83\x81\x81\x10a\x04\xAFWa\x04\xAFa&\xC5V[\x82\x82\x81Q\x81\x10a\x06\"Wa\x06\"a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xF3V[Pa\x06?\x81a\x0B5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x7F\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&\xF4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06\x99W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06\xADW=`\0\x80>=`\0\xFD[PPPPa\x06\xBA\x81a\x0B\x86V[PPa\x06\xC6`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07RW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\xE0a\nLV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xF7W\x90PP\x90Pa\x08\x9F\x82a\n\xBDV[\x81`\0\x81Q\x81\x10a\x08\xB2Wa\x08\xB2a&\xC5V[` \x02` \x01\x01\x81\x90RPa\x08\xC6\x81a\x0B5V[a\x08\xCF\x81a\x0B\x86V[Pa\x08\xDA`\x01`\x02UV[PV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\tU\x82a\n\xBDV[\x92\x91PPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\xDCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07IV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\n\xB7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07IV[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\tU\x82a\x0C\xD9V[\x80Q`\0[\x81\x81\x10\x15a\x03\xA8W`\0\x83\x82\x81Q\x81\x10a\x0BVWa\x0BVa&\xC5V[` \x02` \x01\x01Q\x90Pa\x0Bi\x81a\x0E'V[a\x0Bs\x813a\x13\x17V[a\x0B}\x813a\x14\x18V[P`\x01\x01a\x0B:V[\x80Q`\0[\x81\x81\x10\x15a\x0C\xC8W`\0\x83\x82\x81Q\x81\x10a\x0B\xA7Wa\x0B\xA7a&\xC5V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C(W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xDEWa\x0B\xDEa&\xC5V[` \x02` \x01\x01Q\x90Pa\x0C\x1F\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x17\xBE\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBEV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CqWa\x0Cqa&\xC5V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xB6\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8BV[PG\x15a\x05\nWa\x05\n3Ga\x18\x05V[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\rR\x83\x80a'\xF8V[\x81\x01\x90a\r_\x91\x90a*\xEAV[\x90Pa\rj\x81a\x18\x9FV[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\r\xA0\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x19\x8A\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\r\xC6\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x1A\\\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\r\xDB\x91\x90a'\xF8V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0E\x1E\x83a\x1BCV[\x90R\x93\x92PPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0EGWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x0E\x9E\x90\x85\x90`\x04\x01a&\x83V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xBBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0F\x01\x91\x90\x81\x01\x90a,\x1EV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x0F\x19\x82\x84a-\x1DV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0F1Wa\x0F1a&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\x9AW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0FOW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x0F\xEBW\x85`@\x01Q\x81\x81Q\x81\x10a\x0F\xBEWa\x0F\xBEa&\xC5V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0F\xD8Wa\x0F\xD8a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F\xA0V[P`\0\x80`\0[\x84\x81\x10\x15a\x13\x06W`\0\x87\x82\x81Q\x81\x10a\x10\x0EWa\x10\x0Ea&\xC5V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x10\xCCW\x88\x81\x81Q\x81\x10a\x105Wa\x105a&\xC5V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\xC4W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07IV[`\x01\x01a\x10\x1BV[P`\0\x80[\x88\x81\x10\x15a\x11\x8DW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x10\xF1Wa\x10\xF1a&\xC5V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x11\x84W\x85\x15a\x11nW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x11}\x90\x84a-\x1DV[\x92P`\x01\x96P[P`\x01\x01a\x10\xD1V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x12\x06W\x84\x15a\x11\xEDW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11\xFF\x90\x82a-\x1DV[\x90P`\x01\x93P[\x80`\0\x03a\x12[W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07IV[a\x12i\x81`\x05a'\x10a\x1D\xADV[\x82` \x01Q\x11\x15a\x12\xDCW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07IV[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x12\xF1Wa\x12\xF1a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x0F\xF2V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x13hW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x05\nW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x13\xE4\x90\x84\x90\x86\x90`\x04\x01a-0V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x13\xFCW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x14\x10W=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x14\xD8\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x16c\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/S` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xD3`\x8D\x919`@Q` \x01a\x16\xD0\x93\x92\x91\x90a-_V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a/\xA5` \x83\x019`@Q` \x01a\x17#\x92\x91\x90a-\xA2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x17\x90\x96\x95\x94\x93\x92`\x04\x01a-\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x17\xAAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x14\x10W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x17\xE3Wa\x03\xA8\x82\x82a\x18\x05V[a\x03\xA8s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1D\xE9V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x18_W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x18dV[``\x91P[PP\x90P\x80a\x03\xA8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\x18\xE2W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\xDAW`\0[\x81`\x80\x01QQ\x81\x10\x15a\x05\nW\x81`\x80\x01Q\x81\x81Q\x81\x10a\x19\x1DWa\x19\x1Da&\xC5V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\x19?Wa\x19?a&\xC5V[` \x02` \x01\x01Q` \x01Q\x14a\x19\x82W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x18\xFAV[a\x19\xC4`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x1A\x06W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1A\x1C\x85` \x01Q\x86`@\x01Q\x86\x86a\x1E\xDBV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1AzWa\x1Aza&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1A\xE3W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x1A\x98W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x1B:Wa\x1B\x15\x86\x82\x81Q\x81\x10a\x1B\x06Wa\x1B\x06a&\xC5V[` \x02` \x01\x01Q\x86\x86a\x1FXV[\x83\x82\x81Q\x81\x10a\x1B'Wa\x1B'a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1A\xE9V[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R`\0\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/S` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xD3`\x8D\x919`@Q` \x01a\x1C\xE9\x93\x92\x91\x90a-_V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1D\x0C\x83`\0\x01Qa (V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q`\0\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x1D>\x89`\x80\x01Qa \xC2V[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1D\xE2W`\0\x80\xFD[P\x91\x02\x04\x90V[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x1E\xD4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07IV[PPPPPV[`\0\x83\x85\x03a\x1E\xEBWP\x83a\x1FPV[\x82\x82\x11a\x1F$W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1F2WP\x82a\x1FPV[B\x83\x10a\x1F@WP\x83a\x1FPV[a\x1FM\x83\x83B\x88\x88a!`V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1F\xB7W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1F\xCD\x85` \x01Q\x86`@\x01Q\x86\x86a\x1E\xDBV[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xD3`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x1D\x90\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \xE2Wa \xE2a&\x96V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a!\x0CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a!QW`\0a!?\x85\x83\x81Q\x81\x10a!2Wa!2a&\xC5V[` \x02` \x01\x01Qa!{V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a!\x12V[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0a!o\x86\x86\x86\x86\x86a!\xF2V[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/S`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x1D\x90\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x84\x84\x10a\"\x02WP\x80a!rV[`\0a\"\x0E\x87\x86a.\xB8V[\x90P`\0a\"\x1C\x88\x88a.\xB8V[\x90P`\0\x85\x85\x12\x15a\"NWa\">\x83\x83a\"7\x88\x8Aa.\xCBV[\x91\x90a\x1D\xADV[a\"G\x90a.\xF2V[\x90Pa\"`V[a\"]\x83\x83a\"7\x89\x89a.\xCBV[\x90P[a\"j\x81\x87a/*V[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a\"\x89W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\"\xA1W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xB9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\xD1W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\"\xEDW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x05W`\0\x80\xFD[a#\x11\x87\x83\x88\x01a\"wV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#'W`\0\x80\xFD[Pa#4\x86\x82\x87\x01a\"\x8FV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a#SW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#kW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"\xD1W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a#\x99W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xB0W`\0\x80\xFD[a#\xBC\x85\x82\x86\x01a#AV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a#\xDEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xF6W`\0\x80\xFD[a$\x02\x88\x83\x89\x01a#AV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\x1BW`\0\x80\xFD[Pa$(\x87\x82\x88\x01a\"\x8FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xDAW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a$hW`\0\x80\xFD[\x815a$s\x81a$4V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a$\x8CW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xA3W`\0\x80\xFD[a\x1FP\x84\x82\x85\x01a\"wV[`\0[\x83\x81\x10\x15a$\xCAW\x81\x81\x01Q\x83\x82\x01R` \x01a$\xB2V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra$\xEB\x81` \x86\x01` \x86\x01a$\xAFV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a%}W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a%2V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%\xFCa\x01\xA0\x85\x01\x82a$\xD3V[\x90P` \x83\x01Qa&:` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra&R\x82\x82a%\x1DV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra&l\x82\x82a$\xD3V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[` \x81R`\0a$s` \x83\x01\x84a%\x88V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a'iW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'W\x86\x83Qa%\x88V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\x1DV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'\xEEW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(-W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(HW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"\xD1W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)6Wa)6a&\x96V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a)OW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)iWa)ia&\x96V[a)\x9A` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(\xEFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)\xAFW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a)\xDEW`\0\x80\xFD[a)\xE6a(]V[\x90P\x815a)\xF3\x81a$4V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*+Wa*+a&\x96V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a*FW`\0\x80\xFD[\x815` a*[a*V\x83a*\x11V[a(\xEFV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a*zW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a*\xDFW`\x80\x81\x89\x03\x12\x15a*\x97W`\0\x80\x81\xFD[a*\x9Fa(\x86V[\x815a*\xAA\x81a$4V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a*\xCD\x81a$4V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a*~V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a*\xFCW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a+\x14W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a+(W`\0\x80\xFD[a+0a(\xA9V[\x825\x82\x81\x11\x15a+?W`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a+QW`\0\x80\xFD[a+Ya(\xCCV[\x815a+d\x81a$4V[\x81R` \x82\x015a+t\x81a$4V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a+\x9D\x81a$4V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a+\xB4W`\0\x80\xFD[a+\xC0\x89\x82\x85\x01a)>V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+\xEC\x86``\x85\x01a)\xCCV[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a,\x03W`\0\x80\xFD[a,\x0F\x87\x82\x86\x01a*5V[`\x80\x83\x01RP\x95\x94PPPPPV[`\0` \x80\x83\x85\x03\x12\x15a,1W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,HW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,YW`\0\x80\xFD[\x80Qa,ga*V\x82a*\x11V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a,\x86W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a,\xE2W\x80\x85\x8A\x03\x12\x15a,\xA3W`\0\x80\x81\xFD[a,\xABa(]V[\x85Qa,\xB6\x81a$4V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa,\xCF\x81a$4V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a,\x8BV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\tUWa\tUa,\xEEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1FP`@\x83\x01\x84a%\x88V[`\0\x84Qa-q\x81\x84` \x89\x01a$\xAFV[\x84Q\x90\x83\x01\x90a-\x85\x81\x83` \x89\x01a$\xAFV[\x84Q\x91\x01\x90a-\x98\x81\x83` \x88\x01a$\xAFV[\x01\x95\x94PPPPPV[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa-\xDA\x81`\x13\x85\x01` \x88\x01a$\xAFV[\x83Q\x90\x83\x01\x90a-\xF1\x81`\x13\x84\x01` \x88\x01a$\xAFV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a.-\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra.n`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra.\xA3\x81\x84\x01\x86a$\xD3V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"j\x81\x85a$\xD3V[\x81\x81\x03\x81\x81\x11\x15a\tUWa\tUa,\xEEV[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a.\xEBWa.\xEBa,\xEEV[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a/#Wa/#a,\xEEV[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a/JWa/Ja,\xEEV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 C\n\xD8\xEEOC||\xB9*\x9DI\xEF[\x10\xB2\x91~\x10\xD4\xDE\xE5\xB4]\x97\xAA\x10I\x175\x16\xE4dsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x000\xE28\x03\x80b\x000\xE2\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xBDV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x84\x92\x84\x92\x83\x92\x83\x92\x90\x91\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xFA\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xBAW_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xCFW_\x80\xFD[\x82Qb\0\0\xDC\x81b\0\0\xA5V[` \x84\x01Q\x90\x92Pb\0\0\xEF\x81b\0\0\xA5V[\x80\x91PP\x92P\x92\x90PV[`\x80Qa/\xC9b\0\x01\x19_9_\x81\x81`\xF4\x01Ra\x13\xCE\x01Ra/\xC9_\xF3\xFE`\x80`@R`\x046\x10a\0\xB0W_5`\xE0\x1C\x80c?b\x19.\x11a\0fW\x80c\x8D\xA5\xCB[\x11a\0LW\x80c\x8D\xA5\xCB[\x14a\x01\xB1W\x80c\x9B\xB3\"e\x14a\x01\xDCW\x80c\xF2\xFD\xE3\x8B\x14a\x02\x08W_\x80\xFD[\x80c?b\x19.\x14a\x01rW\x80ci\x99\xB3w\x14a\x01\x85W_\x80\xFD[\x80c\x12&\x1E\xE7\x11a\0\x96W\x80c\x12&\x1E\xE7\x14a\0\xE3W\x80c\x13\xFBr\xC7\x14a\x01@W\x80c-w\x13\x89\x14a\x01SW_\x80\xFD[\x80c\r3X\x84\x14a\0\xBBW\x80c\rz\x16\xC3\x14a\0\xD0W_\x80\xFD[6a\0\xB7W\0[_\x80\xFD[a\0\xCEa\0\xC96`\x04a\"\\V[a\x02'V[\0[a\0\xCEa\0\xDE6`\x04a#\x01V[a\x03\x98V[4\x80\x15a\0\xEEW_\x80\xFD[Pa\x01\x16\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xCEa\x01N6`\x04a#@V[a\x04\xF6V[4\x80\x15a\x01^W_\x80\xFD[Pa\0\xCEa\x01m6`\x04a#\xC8V[a\x06\xACV[a\0\xCEa\x01\x806`\x04a#\xEAV[a\x07\xB7V[4\x80\x15a\x01\x90W_\x80\xFD[P`\x01Ta\x01\x16\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xBCW_\x80\xFD[P_Ta\x01\x16\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xE7W_\x80\xFD[Pa\x01\xFBa\x01\xF66`\x04a#\xEAV[a\x08\xB9V[`@Qa\x017\x91\x90a%\xEAV[4\x80\x15a\x02\x13W_\x80\xFD[Pa\0\xCEa\x02\"6`\x04a#\xC8V[a\t6V[a\x02/a\n%V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02EW\x90PP\x90Pa\x02\xEC\x84a\n\x96V[\x81_\x81Q\x81\x10a\x02\xFEWa\x02\xFEa&)V[` \x02` \x01\x01\x81\x90RPa\x03\x12\x81a\x0B\rV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03R\x90\x84\x90\x87\x90\x87\x90`\x04\x01a&VV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03iW_\x80\xFD[PZ\xF1\x15\x80\x15a\x03{W=_\x80>=_\xFD[PPPPa\x03\x88\x81a\x0B\\V[Pa\x03\x93`\x01`\x02UV[PPPV[a\x03\xA0a\n%V[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\xBBWa\x03\xBBa%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04uW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xD9W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\xD3Wa\x04\xAE\x85\x85\x83\x81\x81\x10a\x04\x97Wa\x04\x97a&)V[\x90P` \x02\x81\x01\x90a\x04\xA9\x91\x90a'\x19V[a\n\x96V[\x82\x82\x81Q\x81\x10a\x04\xC0Wa\x04\xC0a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04zV[Pa\x04\xDD\x81a\x0B\rV[a\x04\xE6\x81a\x0B\\V[PPa\x04\xF2`\x01`\x02UV[PPV[a\x04\xFEa\n%V[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\x19Wa\x05\x19a%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xD3W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x057W\x90P[P\x90P_[\x82\x81\x10\x15a\x06\x1AWa\x05\xF5\x87\x87\x83\x81\x81\x10a\x04\x97Wa\x04\x97a&)V[\x82\x82\x81Q\x81\x10a\x06\x07Wa\x06\x07a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xD8V[Pa\x06$\x81a\x0B\rV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06d\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&VV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06{W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06\x8DW=_\x80>=_\xFD[PPPPa\x06\x9A\x81a\x0B\\V[PPa\x06\xA6`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x071W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\xBFa\n%V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xD5W\x90PP\x90Pa\x08|\x82a\n\x96V[\x81_\x81Q\x81\x10a\x08\x8EWa\x08\x8Ea&)V[` \x02` \x01\x01\x81\x90RPa\x08\xA2\x81a\x0B\rV[a\x08\xAB\x81a\x0B\\V[Pa\x08\xB6`\x01`\x02UV[PV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\t0\x82a\n\x96V[\x92\x91PPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\xB6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07(V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\n\x90W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07(V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\t0\x82a\x0C\xA7V[\x80Q_[\x81\x81\x10\x15a\x03\x93W_\x83\x82\x81Q\x81\x10a\x0B,Wa\x0B,a&)V[` \x02` \x01\x01Q\x90Pa\x0B?\x81a\r\xF2V[a\x0BI\x813a\x12\xCFV[a\x0BS\x813a\x13\xCCV[P`\x01\x01a\x0B\x11V[\x80Q_[\x81\x81\x10\x15a\x0C\x96W_\x83\x82\x81Q\x81\x10a\x0B{Wa\x0B{a&)V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0B\xF8W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xAFWa\x0B\xAFa&)V[` \x02` \x01\x01Q\x90Pa\x0B\xEF\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x17j\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\x90V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C@Wa\x0C@a&)V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\x84\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B`V[PG\x15a\x04\xF2Wa\x04\xF23Ga\x17\xB1V[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\r\x1F\x83\x80a'UV[\x81\x01\x90a\r,\x91\x90a*7V[\x90Pa\r7\x81a\x18GV[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\rl\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x191\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\r\x92\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x19\xFF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\r\xA7\x91\x90a'UV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\r\xE9\x83a\x1A\xE4V[\x90R\x93\x92PPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0E\x12WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x0Eh\x90\x85\x90`\x04\x01a%\xEAV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x82W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0E\xC7\x91\x90\x81\x01\x90a+cV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x0E\xDE\x82\x84a,YV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xF6Wa\x0E\xF6a%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0F\x14W\x90P[P\x90P_[\x83\x81\x10\x15a\x0F\xAEW\x85`@\x01Q\x81\x81Q\x81\x10a\x0F\x81Wa\x0F\x81a&)V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0F\x9BWa\x0F\x9Ba&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0FcV[P_\x80_[\x84\x81\x10\x15a\x12\xBEW_\x87\x82\x81Q\x81\x10a\x0F\xCEWa\x0F\xCEa&)V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x10\x89W\x88\x81\x81Q\x81\x10a\x0F\xF4Wa\x0F\xF4a&)V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\x81W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07(V[`\x01\x01a\x0F\xDAV[P_\x80[\x88\x81\x10\x15a\x11FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x10\xACWa\x10\xACa&)V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x11=W\x85\x15a\x11'W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x116\x90\x84a,YV[\x92P`\x01\x96P[P`\x01\x01a\x10\x8DV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x11\xBFW\x84\x15a\x11\xA6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11\xB8\x90\x82a,YV[\x90P`\x01\x93P[\x80_\x03a\x12\x13W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07(V[a\x12!\x81`\x05a'\x10a\x1DKV[\x82` \x01Q\x11\x15a\x12\x94W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07(V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x12\xA9Wa\x12\xA9a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x0F\xB3V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x13 W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xF2W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x13\x9C\x90\x84\x90\x86\x90`\x04\x01a,lV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x13\xB2W_\x80\xFD[PZ\xFA\x15\x80\x15a\x13\xC4W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x14\x8B\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x16\x14\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.\x87` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\x07`\x8D\x919`@Q` \x01a\x16\x81\x93\x92\x91\x90a,\x9AV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a.\xD9` \x83\x019`@Q` \x01a\x16\xD4\x92\x91\x90a,\xDCV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x17A\x96\x95\x94\x93\x92`\x04\x01a-6V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x17XW_\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xC4W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x17\x8FWa\x03\x93\x82\x82a\x17\xB1V[a\x03\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1D\x85V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x18\x07W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x18\x0CV[``\x91P[PP\x90P\x80a\x03\x93W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\x18\x8AW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\xB6W_[\x81`\x80\x01QQ\x81\x10\x15a\x04\xF2W\x81`\x80\x01Q\x81\x81Q\x81\x10a\x18\xC4Wa\x18\xC4a&)V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\x18\xE6Wa\x18\xE6a&)V[` \x02` \x01\x01Q` \x01Q\x14a\x19)W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x18\xA1V[a\x19h`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x19\xAAW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x19\xBF\x85` \x01Q\x86`@\x01Q\x86\x86a\x1EsV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A\x1DWa\x1A\x1Da%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1A\x85W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x1A;W\x90P[P\x91P_[\x81\x81\x10\x15a\x1A\xDBWa\x1A\xB6\x86\x82\x81Q\x81\x10a\x1A\xA7Wa\x1A\xA7a&)V[` \x02` \x01\x01Q\x86\x86a\x1E\xEFV[\x83\x82\x81Q\x81\x10a\x1A\xC8Wa\x1A\xC8a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1A\x8AV[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R_\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.\x87` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\x07`\x8D\x919`@Q` \x01a\x1C\x89\x93\x92\x91\x90a,\x9AV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1C\xAB\x83_\x01Qa\x1F\xBCV[\x83` \x01Q\x84`@\x01Q\x85``\x01Q_\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x1C\xDC\x89`\x80\x01Qa UV[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1D~W_\x80\xFD[P\x91\x02\x04\x90V[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1ElW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07(V[PPPPPV[_\x83\x85\x03a\x1E\x82WP\x83a\x1E\xE7V[\x82\x82\x11a\x1E\xBBW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1E\xC9WP\x82a\x1E\xE7V[B\x83\x10a\x1E\xD7WP\x83a\x1E\xE7V[a\x1E\xE4\x83\x83B\x88\x88a \xF0V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1FMW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1Fb\x85` \x01Q\x86`@\x01Q\x86\x86a\x1EsV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\x07`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x1D.\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a tWa ta%\xFCV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a \x9EW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a \xE1W_a \xCF\x85\x83\x81Q\x81\x10a \xC2Wa \xC2a&)V[` \x02` \x01\x01Qa!\nV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a \xA3V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_a \xFE\x86\x86\x86\x86\x86a!\x80V[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a.\x87`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x1D.\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x84\x84\x10a!\x8FWP\x80a!\x01V[_a!\x9A\x87\x86a-\xF0V[\x90P_a!\xA7\x88\x88a-\xF0V[\x90P_\x85\x85\x12\x15a!\xD8Wa!\xC8\x83\x83a!\xC1\x88\x8Aa.\x03V[\x91\x90a\x1DKV[a!\xD1\x90a.)V[\x90Pa!\xEAV[a!\xE7\x83\x83a!\xC1\x89\x89a.\x03V[\x90P[a!\xF4\x81\x87a._V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a\"\x11W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a\"'W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\">W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"UW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\"nW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"\x85W_\x80\xFD[a\"\x91\x87\x83\x88\x01a\"\x01V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\"\xA6W_\x80\xFD[Pa\"\xB3\x86\x82\x87\x01a\"\x17V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a\"\xD0W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xE7W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"UW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a#\x12W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#(W_\x80\xFD[a#4\x85\x82\x86\x01a\"\xC0V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a#SW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#jW_\x80\xFD[a#v\x88\x83\x89\x01a\"\xC0V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a#\x8EW_\x80\xFD[Pa#\x9B\x87\x82\x88\x01a\"\x17V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xB6W_\x80\xFD[_` \x82\x84\x03\x12\x15a#\xD8W_\x80\xFD[\x815a#\xE3\x81a#\xA7V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a#\xFAW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x10W_\x80\xFD[a\x1E\xE7\x84\x82\x85\x01a\"\x01V[_[\x83\x81\x10\x15a$6W\x81\x81\x01Q\x83\x82\x01R` \x01a$\x1EV[PP_\x91\x01RV[_\x81Q\x80\x84Ra$U\x81` \x86\x01` \x86\x01a$\x1CV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a$\xE5W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a$\x9AV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%ca\x01\xA0\x85\x01\x82a$>V[\x90P` \x83\x01Qa%\xA1` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra%\xB9\x82\x82a$\x87V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\xD3\x82\x82a$>V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[` \x81R_a#\xE3` \x83\x01\x84a$\xF0V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a&\xC9W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra&\xB7\x86\x83Qa$\xF0V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a&}V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'KW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a'\x88W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a'\xA2W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"UW_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x8FWa(\x8Fa%\xFCV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a(\xA6W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\xC0Wa(\xC0a%\xFCV[a(\xF1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(HV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)\x05W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a)1W_\x80\xFD[a)9a'\xB6V[\x90P\x815a)F\x81a#\xA7V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)}Wa)}a%\xFCV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a)\x96W_\x80\xFD[\x815` a)\xABa)\xA6\x83a)dV[a(HV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a)\xC9W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a*,W`\x80\x81\x89\x03\x12\x15a)\xE4W_\x80\xFD[a)\xECa'\xDFV[\x815a)\xF7\x81a#\xA7V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a*\x1A\x81a#\xA7V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a)\xCDV[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a*GW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a*^W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a*qW_\x80\xFD[a*ya(\x02V[\x825\x82\x81\x11\x15a*\x87W_\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a*\x98W_\x80\xFD[a*\xA0a(%V[\x815a*\xAB\x81a#\xA7V[\x81R` \x82\x015a*\xBB\x81a#\xA7V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a*\xE4\x81a#\xA7V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a*\xFAW_\x80\xFD[a+\x06\x89\x82\x85\x01a(\x97V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+2\x86``\x85\x01a)!V[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a+HW_\x80\xFD[a+T\x87\x82\x86\x01a)\x87V[`\x80\x83\x01RP\x95\x94PPPPPV[_` \x80\x83\x85\x03\x12\x15a+tW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+\x8AW_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a+\x9AW_\x80\xFD[\x80Qa+\xA8a)\xA6\x82a)dV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a+\xC6W_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a, W\x80\x85\x8A\x03\x12\x15a+\xE1W_\x80\xFD[a+\xE9a'\xB6V[\x85Qa+\xF4\x81a#\xA7V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa,\r\x81a#\xA7V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a+\xCBV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\t0Wa\t0a,,V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1E\xE7`@\x83\x01\x84a$\xF0V[_\x84Qa,\xAB\x81\x84` \x89\x01a$\x1CV[\x84Q\x90\x83\x01\x90a,\xBF\x81\x83` \x89\x01a$\x1CV[\x84Q\x91\x01\x90a,\xD2\x81\x83` \x88\x01a$\x1CV[\x01\x95\x94PPPPPV[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x83Qa-\x13\x81`\x13\x85\x01` \x88\x01a$\x1CV[\x83Q\x90\x83\x01\x90a-*\x81`\x13\x84\x01` \x88\x01a$\x1CV[\x01`\x13\x01\x94\x93PPPPV[_a\x01@a-e\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra-\xA6`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra-\xDB\x81\x84\x01\x86a$>V[\x90P\x82\x81\x03a\x01 \x84\x01Ra!\xF4\x81\x85a$>V[\x81\x81\x03\x81\x81\x11\x15a\t0Wa\t0a,,V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a.\"Wa.\"a,,V[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a.YWa.Ya,,V[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a.~Wa.~a,,V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xD7-\x11\x12\xBD\x17\x05\\\x13X\x9Aib5\xC0&\x9C<\xFB\x14QnZ\xF8xj\xCF\xC4\x1B\x1F;\xCAdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080604052600436106100b55760003560e01c80633f62192e116100695780638da5cb5b1161004e5780638da5cb5b146101ba5780639bb32265146101e7578063f2fde38b1461021457600080fd5b80633f62192e1461017a5780636999b3771461018d57600080fd5b806312261ee71161009a57806312261ee7146100e957806313fb72c7146101475780632d7713891461015a57600080fd5b80630d335884146100c15780630d7a16c3146100d657600080fd5b366100bc57005b600080fd5b6100d46100cf3660046122d8565b610234565b005b6100d46100e4366004612386565b6103ad565b3480156100f557600080fd5b5061011d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d46101553660046123c8565b61050e565b34801561016657600080fd5b506100d4610175366004612456565b6106cc565b6100d461018836600461247a565b6107d8565b34801561019957600080fd5b5060015461011d9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101c657600080fd5b5060005461011d9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101f357600080fd5b5061020761020236600461247a565b6108dd565b60405161013e9190612683565b34801561022057600080fd5b506100d461022f366004612456565b61095b565b61023c610a4c565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816102535790505090506102fb84610abd565b8160008151811061030e5761030e6126c5565b602002602001018190525061032281610b35565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610362908490879087906004016126f4565b600060405180830381600087803b15801561037c57600080fd5b505af1158015610390573d6000803e3d6000fd5b5050505061039d81610b86565b506103a86001600255565b505050565b6103b5610a4c565b8060008167ffffffffffffffff8111156103d1576103d1612696565b60405190808252806020026020018201604052801561048c57816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103ef5790505b50905060005b828110156104eb576104c68585838181106104af576104af6126c5565b90506020028101906104c191906127ba565b610abd565b8282815181106104d8576104d86126c5565b6020908102919091010152600101610492565b506104f581610b35565b6104fe81610b86565b505061050a6001600255565b5050565b610516610a4c565b8260008167ffffffffffffffff81111561053257610532612696565b6040519080825280602002602001820160405280156105ed57816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105505790505b50905060005b82811015610635576106108787838181106104af576104af6126c5565b828281518110610622576106226126c5565b60209081029190910101526001016105f3565b5061063f81610b35565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061067f908490889088906004016126f4565b600060405180830381600087803b15801561069957600080fd5b505af11580156106ad573d6000803e3d6000fd5b505050506106ba81610b86565b50506106c66001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b6107e0610a4c565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107f757905050905061089f82610abd565b816000815181106108b2576108b26126c5565b60200260200101819052506108c681610b35565b6108cf81610b86565b506108da6001600255565b50565b6040805161016081018252600060a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261095582610abd565b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610749565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6002805403610ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610749565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261095582610cd9565b805160005b818110156103a8576000838281518110610b5657610b566126c5565b60200260200101519050610b6981610e27565b610b738133611317565b610b7d8133611418565b50600101610b3a565b805160005b81811015610cc8576000838281518110610ba757610ba76126c5565b602002602001015190506000816040015151905060005b81811015610c2857600083604001518281518110610bde57610bde6126c5565b60200260200101519050610c1f81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff166117be9092919063ffffffff16565b50600101610bbe565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c7157610c716126c5565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cb691815260200190565b60405180910390a45050600101610b8b565b50471561050a5761050a3347611805565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610d5283806127f8565b810190610d5f9190612aea565b9050610d6a8161189f565b6040518060a0016040528082600001518152602001610da083602001518460400151856060015161198a9092919063ffffffff16565b8152602001610dc6836020015184604001518560800151611a5c9092919063ffffffff16565b8152602001848060200190610ddb91906127f8565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001610e1e83611b43565b90529392505050565b60015473ffffffffffffffffffffffffffffffffffffffff16610e475750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390610e9e908590600401612683565b600060405180830381865afa158015610ebb573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f019190810190612c1e565b6040830151518151919250906000610f198284612d1d565b67ffffffffffffffff811115610f3157610f31612696565b604051908082528060200260200182016040528015610f9a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610f4f5790505b50905060005b83811015610feb5785604001518181518110610fbe57610fbe6126c5565b6020026020010151828281518110610fd857610fd86126c5565b6020908102919091010152600101610fa0565b5060008060005b8481101561130657600087828151811061100e5761100e6126c5565b6020026020010151905060005b828110156110cc57888181518110611035576110356126c5565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036110c45781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610749565b60010161101b565b506000805b8881101561118d5760008b6040015182815181106110f1576110f16126c5565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361118457851561116e576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015161117d9084612d1d565b9250600196505b506001016110d1565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036112065784156111ed576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516111ff9082612d1d565b9050600193505b8060000361125b5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610749565b611269816005612710611dad565b826020015111156112dc578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610749565b8186848a01815181106112f1576112f16126c5565b60209081029190910101525050600101610ff2565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611368576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff161561050a578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906113e49084908690600401612d30565b60006040518083038186803b1580156113fc57600080fd5b505afa158015611410573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe6114d8846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051602001611663907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612f5360208301396040518060c00160405280608d8152602001612fd3608d91396040516020016116d093929190612d5f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612fa56020830139604051602001611723929190612da2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1683526117909695949392600401612dfd565b600060405180830381600087803b1580156117aa57600080fd5b505af1158015611410573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff83166117e3576103a88282611805565b6103a873ffffffffffffffffffffffffffffffffffffffff8416338484611de9565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461185f576040519150601f19603f3d011682016040523d82523d6000602084013e611864565b606091505b50509050806103a8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604081015181516060015110156118e2576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108da5760005b81608001515181101561050a578160800151818151811061191d5761191d6126c5565b6020026020010151604001518260800151828151811061193f5761193f6126c5565b60200260200101516020015114611982576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001016118fa565b6119c46040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b836040015184602001511115611a06576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611a1c856020015186604001518686611edb565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611a7a57611a7a612696565b604051908082528060200260200182016040528015611ae357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611a985790505b50915060005b81811015611b3a57611b15868281518110611b0657611b066126c5565b60200260200101518686611f58565b838281518110611b2757611b276126c5565b6020908102919091010152600101611ae9565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a982015260009060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612f5360208301396040518060c00160405280608d8152602001612fd3608d9139604051602001611ce993929190612d5f565b60405160208183030381529060405280519060200120611d0c8360000151612028565b83602001518460400151856060015160000151866060015160200151876060015160400151611d3e89608001516120c2565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611de257600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611ed4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610749565b5050505050565b6000838503611eeb575083611f50565b828211611f24576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611f32575082611f50565b428310611f40575083611f50565b611f4d8383428888612160565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015611fb7576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fcd856020015186604001518686611edb565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b60006040518060c00160405280608d8152602001612fd3608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351611d9098939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff8111156120e2576120e2612696565b6040519080825280601f01601f19166020018201604052801561210c576020820181803683370190505b50905060005b835181101561215157600061213f858381518110612132576121326126c5565b602002602001015161217b565b60208381028501015250600101612112565b50805160209091012092915050565b600061216f86868686866121f2565b90505b95945050505050565b6000604051806080016040528060528152602001612f5360529139805160209182012083518483015160408087015160608801519151611d90969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000848410612202575080612172565b600061220e8786612eb8565b9050600061221c8888612eb8565b905060008585121561224e5761223e8383612237888a612ecb565b9190611dad565b61224790612ef2565b9050612260565b61225d83836122378989612ecb565b90505b61226a8187612f2a565b9998505050505050505050565b60006040828403121561228957600080fd5b50919050565b60008083601f8401126122a157600080fd5b50813567ffffffffffffffff8111156122b957600080fd5b6020830191508360208285010111156122d157600080fd5b9250929050565b6000806000604084860312156122ed57600080fd5b833567ffffffffffffffff8082111561230557600080fd5b61231187838801612277565b9450602086013591508082111561232757600080fd5b506123348682870161228f565b9497909650939450505050565b60008083601f84011261235357600080fd5b50813567ffffffffffffffff81111561236b57600080fd5b6020830191508360208260051b85010111156122d157600080fd5b6000806020838503121561239957600080fd5b823567ffffffffffffffff8111156123b057600080fd5b6123bc85828601612341565b90969095509350505050565b600080600080604085870312156123de57600080fd5b843567ffffffffffffffff808211156123f657600080fd5b61240288838901612341565b9096509450602087013591508082111561241b57600080fd5b506124288782880161228f565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108da57600080fd5b60006020828403121561246857600080fd5b813561247381612434565b9392505050565b60006020828403121561248c57600080fd5b813567ffffffffffffffff8111156124a357600080fd5b611f5084828501612277565b60005b838110156124ca5781810151838201526020016124b2565b50506000910152565b600081518084526124eb8160208601602086016124af565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b8381101561257d578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612532565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526125fc6101a08501826124d3565b9050602083015161263a6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408301518482036080860152612652828261251d565b915050606083015184820360a086015261266c82826124d3565b915050608083015160c08501528091505092915050565b6020815260006124736020830184612588565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612769577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612757868351612588565b9550938201939082019060010161271d565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126127ee57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261282d57600080fd5b83018035915067ffffffffffffffff82111561284857600080fd5b6020019150368190038213156122d157600080fd5b6040516060810167ffffffffffffffff8111828210171561288057612880612696565b60405290565b6040516080810167ffffffffffffffff8111828210171561288057612880612696565b60405160a0810167ffffffffffffffff8111828210171561288057612880612696565b60405160c0810167ffffffffffffffff8111828210171561288057612880612696565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561293657612936612696565b604052919050565b600082601f83011261294f57600080fd5b813567ffffffffffffffff81111561296957612969612696565b61299a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128ef565b8181528460208386010111156129af57600080fd5b816020850160208301376000918101602001919091529392505050565b6000606082840312156129de57600080fd5b6129e661285d565b905081356129f381612434565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612a2b57612a2b612696565b5060051b60200190565b600082601f830112612a4657600080fd5b81356020612a5b612a5683612a11565b6128ef565b82815260079290921b84018101918181019086841115612a7a57600080fd5b8286015b84811015612adf5760808189031215612a975760008081fd5b612a9f612886565b8135612aaa81612434565b8152818501358582015260408083013590820152606080830135612acd81612434565b90820152835291830191608001612a7e565b509695505050505050565b600060208284031215612afc57600080fd5b813567ffffffffffffffff80821115612b1457600080fd5b9083019060e08286031215612b2857600080fd5b612b306128a9565b823582811115612b3f57600080fd5b830160c08188031215612b5157600080fd5b612b596128cc565b8135612b6481612434565b81526020820135612b7481612434565b8060208301525060408201356040820152606082013560608201526080820135612b9d81612434565b608082015260a082013584811115612bb457600080fd5b612bc08982850161293e565b60a08301525080835250506020830135602082015260408301356040820152612bec86606085016129cc565b606082015260c083013582811115612c0357600080fd5b612c0f87828601612a35565b60808301525095945050505050565b60006020808385031215612c3157600080fd5b825167ffffffffffffffff811115612c4857600080fd5b8301601f81018513612c5957600080fd5b8051612c67612a5682612a11565b81815260609182028301840191848201919088841115612c8657600080fd5b938501935b83851015612ce25780858a031215612ca35760008081fd5b612cab61285d565b8551612cb681612434565b81528587015187820152604080870151612ccf81612434565b9082015283529384019391850191612c8b565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561095557610955612cee565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611f506040830184612588565b60008451612d718184602089016124af565b845190830190612d858183602089016124af565b8451910190612d988183602088016124af565b0195945050505050565b7f44757463684f72646572207769746e6573732900000000000000000000000000815260008351612dda8160138501602088016124af565b835190830190612df18160138401602088016124af565b01601301949350505050565b6000610140612e2d838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612e6e6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612ea3818401866124d3565b905082810361012084015261226a81856124d3565b8181038181111561095557610955612cee565b8181036000831280158383131683831282161715612eeb57612eeb612cee565b5092915050565b60007f80000000000000000000000000000000000000000000000000000000000000008203612f2357612f23612cee565b5060000390565b8082018281126000831280158216821582161715612f4a57612f4a612cee565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220430ad8ee4f437c7cb92a9d49ef5b10b2917e10d4dee5b45d97aa1049173516e464736f6c63430008180033 + ///0x6080604052600436106100b0575f3560e01c80633f62192e116100665780638da5cb5b1161004c5780638da5cb5b146101b15780639bb32265146101dc578063f2fde38b14610208575f80fd5b80633f62192e146101725780636999b37714610185575f80fd5b806312261ee71161009657806312261ee7146100e357806313fb72c7146101405780632d77138914610153575f80fd5b80630d335884146100bb5780630d7a16c3146100d0575f80fd5b366100b757005b5f80fd5b6100ce6100c936600461225c565b610227565b005b6100ce6100de366004612301565b610398565b3480156100ee575f80fd5b506101167f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100ce61014e366004612340565b6104f6565b34801561015e575f80fd5b506100ce61016d3660046123c8565b6106ac565b6100ce6101803660046123ea565b6107b7565b348015610190575f80fd5b506001546101169073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101bc575f80fd5b505f546101169073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101e7575f80fd5b506101fb6101f63660046123ea565b6108b9565b60405161013791906125ea565b348015610213575f80fd5b506100ce6102223660046123c8565b610936565b61022f610a25565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816102455790505090506102ec84610a96565b815f815181106102fe576102fe612629565b602002602001018190525061031281610b0d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061035290849087908790600401612656565b5f604051808303815f87803b158015610369575f80fd5b505af115801561037b573d5f803e3d5ffd5b5050505061038881610b5c565b506103936001600255565b505050565b6103a0610a25565b805f8167ffffffffffffffff8111156103bb576103bb6125fc565b60405190808252806020026020018201604052801561047557816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103d95790505b5090505f5b828110156104d3576104ae85858381811061049757610497612629565b90506020028101906104a99190612719565b610a96565b8282815181106104c0576104c0612629565b602090810291909101015260010161047a565b506104dd81610b0d565b6104e681610b5c565b50506104f26001600255565b5050565b6104fe610a25565b825f8167ffffffffffffffff811115610519576105196125fc565b6040519080825280602002602001820160405280156105d357816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105375790505b5090505f5b8281101561061a576105f587878381811061049757610497612629565b82828151811061060757610607612629565b60209081029190910101526001016105d8565b5061062481610b0d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061066490849088908890600401612656565b5f604051808303815f87803b15801561067b575f80fd5b505af115801561068d573d5f803e3d5ffd5b5050505061069a81610b5c565b50506106a66001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b6107bf610a25565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107d557905050905061087c82610a96565b815f8151811061088e5761088e612629565b60200260200101819052506108a281610b0d565b6108ab81610b5c565b506108b66001600255565b50565b60408051610160810182525f60a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261093082610a96565b92915050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146109b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610728565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6002805403610a90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610728565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261093082610ca7565b80515f5b81811015610393575f838281518110610b2c57610b2c612629565b60200260200101519050610b3f81610df2565b610b4981336112cf565b610b5381336113cc565b50600101610b11565b80515f5b81811015610c96575f838281518110610b7b57610b7b612629565b602002602001015190505f81604001515190505f5b81811015610bf8575f83604001518281518110610baf57610baf612629565b60200260200101519050610bef81604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff1661176a9092919063ffffffff16565b50600101610b90565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c4057610c40612629565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610c8491815260200190565b60405180910390a45050600101610b60565b5047156104f2576104f233476117b1565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610d1f8380612755565b810190610d2c9190612a37565b9050610d3781611847565b6040518060a00160405280825f01518152602001610d6c8360200151846040015185606001516119319092919063ffffffff16565b8152602001610d928360200151846040015185608001516119ff9092919063ffffffff16565b8152602001848060200190610da79190612755565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610de983611ae4565b90529392505050565b60015473ffffffffffffffffffffffffffffffffffffffff16610e125750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390610e689085906004016125ea565b5f60405180830381865afa158015610e82573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ec79190810190612b63565b6040830151518151919250905f610ede8284612c59565b67ffffffffffffffff811115610ef657610ef66125fc565b604051908082528060200260200182016040528015610f5e57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610f145790505b5090505f5b83811015610fae5785604001518181518110610f8157610f81612629565b6020026020010151828281518110610f9b57610f9b612629565b6020908102919091010152600101610f63565b505f805f5b848110156112be575f878281518110610fce57610fce612629565b602002602001015190505f5b8281101561108957888181518110610ff457610ff4612629565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036110815781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610728565b600101610fda565b505f805b88811015611146575f8b6040015182815181106110ac576110ac612629565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff160361113d578515611127576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516111369084612c59565b9250600196505b5060010161108d565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036111bf5784156111a6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516111b89082612c59565b9050600193505b805f036112135781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610728565b611221816005612710611d4b565b82602001511115611294578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610728565b8186848a01815181106112a9576112a9612629565b60209081029190910101525050600101610fb3565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611320576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104f2578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b9061139c9084908690600401612c6c565b5f6040518083038186803b1580156113b2575f80fd5b505afa1580156113c4573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe61148b846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff861682528087015181015190820152855f0151602001518660800151604051602001611614907f44757463684f726465722800000000000000000000000000000000000000000081527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000600b8201527f75696e74323536206465636179537461727454696d652c000000000000000000601a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060318201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060468201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060598201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060728201527f44757463684f75747075745b5d206f75747075747329000000000000000000006089820152609f0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e8760208301396040518060c00160405280608d8152602001612f07608d913960405160200161168193929190612c9a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152602e808352909190612ed960208301396040516020016116d4929190612cdc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1683526117419695949392600401612d36565b5f604051808303815f87803b158015611758575f80fd5b505af11580156113c4573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff831661178f5761039382826117b1565b61039373ffffffffffffffffffffffffffffffffffffffff8416338484611d85565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611807576040519150601f19603f3d011682016040523d82523d5f602084013e61180c565b606091505b5050905080610393576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151815160600151101561188a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608101516040810151602090910151146108b6575f5b8160800151518110156104f257816080015181815181106118c4576118c4612629565b602002602001015160400151826080015182815181106118e6576118e6612629565b60200260200101516020015114611929576040517fd303758b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001016118a1565b61196860405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b8360400151846020015111156119aa576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6119bf856020015186604001518686611e73565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611a1d57611a1d6125fc565b604051908082528060200260200182016040528015611a8557816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611a3b5790505b5091505f5b81811015611adb57611ab6868281518110611aa757611aa7612629565b60200260200101518686611eef565b838281518110611ac857611ac8612629565b6020908102919091010152600101611a8a565b50509392505050565b6040517f44757463684f726465722800000000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602b8201527f75696e74323536206465636179537461727454696d652c000000000000000000603a8201527f75696e74323536206465636179456e6454696d652c000000000000000000000060518201527f6164647265737320696e707574546f6b656e2c0000000000000000000000000060668201527f75696e7432353620696e7075745374617274416d6f756e742c0000000000000060798201527f75696e7432353620696e707574456e64416d6f756e742c00000000000000000060928201527f44757463684f75747075745b5d206f757470757473290000000000000000000060a98201525f9060bf01604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152608083019091526052808352909190612e8760208301396040518060c00160405280608d8152602001612f07608d9139604051602001611c8993929190612c9a565b60405160208183030381529060405280519060200120611cab835f0151611fbc565b8360200151846040015185606001515f0151866060015160200151876060015160400151611cdc8960800151612055565b6040805160208101999099528801969096526060870194909452608086019290925273ffffffffffffffffffffffffffffffffffffffff1660a085015260c084015260e0830152610100820152610120015b604051602081830303815290604052805190602001209050919050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202611d7e575f80fd5b5091020490565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f511416171691505080611e6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610728565b5050505050565b5f838503611e82575083611ee7565b828211611ebb576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611ec9575082611ee7565b428310611ed7575083611ee7565b611ee483834288886120f0565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611f4d576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611f62856020015186604001518686611e73565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b5f6040518060c00160405280608d8152602001612f07608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351611d2e98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115612074576120746125fc565b6040519080825280601f01601f19166020018201604052801561209e576020820181803683370190505b5090505f5b83518110156120e1575f6120cf8583815181106120c2576120c2612629565b602002602001015161210a565b602083810285010152506001016120a3565b50805160209091012092915050565b5f6120fe8686868686612180565b90505b95945050505050565b5f604051806080016040528060528152602001612e8760529139805160209182012083518483015160408087015160608801519151611d2e969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f84841061218f575080612101565b5f61219a8786612df0565b90505f6121a78888612df0565b90505f858512156121d8576121c883836121c1888a612e03565b9190611d4b565b6121d190612e29565b90506121ea565b6121e783836121c18989612e03565b90505b6121f48187612e5f565b9998505050505050505050565b5f60408284031215612211575f80fd5b50919050565b5f8083601f840112612227575f80fd5b50813567ffffffffffffffff81111561223e575f80fd5b602083019150836020828501011115612255575f80fd5b9250929050565b5f805f6040848603121561226e575f80fd5b833567ffffffffffffffff80821115612285575f80fd5b61229187838801612201565b945060208601359150808211156122a6575f80fd5b506122b386828701612217565b9497909650939450505050565b5f8083601f8401126122d0575f80fd5b50813567ffffffffffffffff8111156122e7575f80fd5b6020830191508360208260051b8501011115612255575f80fd5b5f8060208385031215612312575f80fd5b823567ffffffffffffffff811115612328575f80fd5b612334858286016122c0565b90969095509350505050565b5f805f8060408587031215612353575f80fd5b843567ffffffffffffffff8082111561236a575f80fd5b612376888389016122c0565b9096509450602087013591508082111561238e575f80fd5b5061239b87828801612217565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108b6575f80fd5b5f602082840312156123d8575f80fd5b81356123e3816123a7565b9392505050565b5f602082840312156123fa575f80fd5b813567ffffffffffffffff811115612410575f80fd5b611ee784828501612201565b5f5b8381101561243657818101518382015260200161241e565b50505f910152565b5f815180845261245581602086016020860161241c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156124e5578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161249a565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526125636101a085018261243e565b905060208301516125a16020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526125b98282612487565b915050606083015184820360a08601526125d3828261243e565b915050608083015160c08501528091505092915050565b602081525f6123e360208301846124f0565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b838110156126c9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526126b78683516124f0565b9550938201939082019060010161267d565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261274b575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612788575f80fd5b83018035915067ffffffffffffffff8211156127a2575f80fd5b602001915036819003821315612255575f80fd5b6040516060810167ffffffffffffffff811182821017156127d9576127d96125fc565b60405290565b6040516080810167ffffffffffffffff811182821017156127d9576127d96125fc565b60405160a0810167ffffffffffffffff811182821017156127d9576127d96125fc565b60405160c0810167ffffffffffffffff811182821017156127d9576127d96125fc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561288f5761288f6125fc565b604052919050565b5f82601f8301126128a6575f80fd5b813567ffffffffffffffff8111156128c0576128c06125fc565b6128f160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612848565b818152846020838601011115612905575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608284031215612931575f80fd5b6129396127b6565b90508135612946816123a7565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff82111561297d5761297d6125fc565b5060051b60200190565b5f82601f830112612996575f80fd5b813560206129ab6129a683612964565b612848565b82815260079290921b840181019181810190868411156129c9575f80fd5b8286015b84811015612a2c57608081890312156129e4575f80fd5b6129ec6127df565b81356129f7816123a7565b8152818501358582015260408083013590820152606080830135612a1a816123a7565b908201528352918301916080016129cd565b509695505050505050565b5f60208284031215612a47575f80fd5b813567ffffffffffffffff80821115612a5e575f80fd5b9083019060e08286031215612a71575f80fd5b612a79612802565b823582811115612a87575f80fd5b830160c08188031215612a98575f80fd5b612aa0612825565b8135612aab816123a7565b81526020820135612abb816123a7565b8060208301525060408201356040820152606082013560608201526080820135612ae4816123a7565b608082015260a082013584811115612afa575f80fd5b612b0689828501612897565b60a08301525080835250506020830135602082015260408301356040820152612b328660608501612921565b606082015260c083013582811115612b48575f80fd5b612b5487828601612987565b60808301525095945050505050565b5f6020808385031215612b74575f80fd5b825167ffffffffffffffff811115612b8a575f80fd5b8301601f81018513612b9a575f80fd5b8051612ba86129a682612964565b81815260609182028301840191848201919088841115612bc6575f80fd5b938501935b83851015612c205780858a031215612be1575f80fd5b612be96127b6565b8551612bf4816123a7565b81528587015187820152604080870151612c0d816123a7565b9082015283529384019391850191612bcb565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561093057610930612c2c565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611ee760408301846124f0565b5f8451612cab81846020890161241c565b845190830190612cbf81836020890161241c565b8451910190612cd281836020880161241c565b0195945050505050565b7f44757463684f72646572207769746e657373290000000000000000000000000081525f8351612d1381601385016020880161241c565b835190830190612d2a81601384016020880161241c565b01601301949350505050565b5f610140612d65838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b6020890151604084015260408901516060840152612da66080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152612ddb8184018661243e565b90508281036101208401526121f4818561243e565b8181038181111561093057610930612c2c565b8181035f831280158383131683831282161715612e2257612e22612c2c565b5092915050565b5f7f80000000000000000000000000000000000000000000000000000000000000008203612e5957612e59612c2c565b505f0390565b8082018281125f831280158216821582161715612e7e57612e7e612c2c565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220d72d1112bd17055c13589a696235c0269c3cfb14516e5af8786acfc41b1f3bca64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x046\x10a\0\xB5W`\x005`\xE0\x1C\x80c?b\x19.\x11a\0iW\x80c\x8D\xA5\xCB[\x11a\0NW\x80c\x8D\xA5\xCB[\x14a\x01\xBAW\x80c\x9B\xB3\"e\x14a\x01\xE7W\x80c\xF2\xFD\xE3\x8B\x14a\x02\x14W`\0\x80\xFD[\x80c?b\x19.\x14a\x01zW\x80ci\x99\xB3w\x14a\x01\x8DW`\0\x80\xFD[\x80c\x12&\x1E\xE7\x11a\0\x9AW\x80c\x12&\x1E\xE7\x14a\0\xE9W\x80c\x13\xFBr\xC7\x14a\x01GW\x80c-w\x13\x89\x14a\x01ZW`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xC1W\x80c\rz\x16\xC3\x14a\0\xD6W`\0\x80\xFD[6a\0\xBCW\0[`\0\x80\xFD[a\0\xD4a\0\xCF6`\x04a\"\xD8V[a\x024V[\0[a\0\xD4a\0\xE46`\x04a#\x86V[a\x03\xADV[4\x80\x15a\0\xF5W`\0\x80\xFD[Pa\x01\x1D\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD4a\x01U6`\x04a#\xC8V[a\x05\x0EV[4\x80\x15a\x01fW`\0\x80\xFD[Pa\0\xD4a\x01u6`\x04a$VV[a\x06\xCCV[a\0\xD4a\x01\x886`\x04a$zV[a\x07\xD8V[4\x80\x15a\x01\x99W`\0\x80\xFD[P`\x01Ta\x01\x1D\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xC6W`\0\x80\xFD[P`\0Ta\x01\x1D\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xF3W`\0\x80\xFD[Pa\x02\x07a\x02\x026`\x04a$zV[a\x08\xDDV[`@Qa\x01>\x91\x90a&\x83V[4\x80\x15a\x02 W`\0\x80\xFD[Pa\0\xD4a\x02/6`\x04a$VV[a\t[V[a\x02=`\0\xFD[PPPPa\x03\x9D\x81a\x0B\x86V[Pa\x03\xA8`\x01`\x02UV[PPPV[a\x03\xB5a\nLV[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\xD1Wa\x03\xD1a&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xEFW\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xEBWa\x04\xC6\x85\x85\x83\x81\x81\x10a\x04\xAFWa\x04\xAFa&\xC5V[\x90P` \x02\x81\x01\x90a\x04\xC1\x91\x90a'\xBAV[a\n\xBDV[\x82\x82\x81Q\x81\x10a\x04\xD8Wa\x04\xD8a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04\x92V[Pa\x04\xF5\x81a\x0B5V[a\x04\xFE\x81a\x0B\x86V[PPa\x05\n`\x01`\x02UV[PPV[a\x05\x16a\nLV[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x052Wa\x052a&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xEDW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05PW\x90P[P\x90P`\0[\x82\x81\x10\x15a\x065Wa\x06\x10\x87\x87\x83\x81\x81\x10a\x04\xAFWa\x04\xAFa&\xC5V[\x82\x82\x81Q\x81\x10a\x06\"Wa\x06\"a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xF3V[Pa\x06?\x81a\x0B5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x7F\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&\xF4V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06\x99W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06\xADW=`\0\x80>=`\0\xFD[PPPPa\x06\xBA\x81a\x0B\x86V[PPa\x06\xC6`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07RW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\xE0a\nLV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xF7W\x90PP\x90Pa\x08\x9F\x82a\n\xBDV[\x81`\0\x81Q\x81\x10a\x08\xB2Wa\x08\xB2a&\xC5V[` \x02` \x01\x01\x81\x90RPa\x08\xC6\x81a\x0B5V[a\x08\xCF\x81a\x0B\x86V[Pa\x08\xDA`\x01`\x02UV[PV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\tU\x82a\n\xBDV[\x92\x91PPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\xDCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07IV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\n\xB7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07IV[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\tU\x82a\x0C\xD9V[\x80Q`\0[\x81\x81\x10\x15a\x03\xA8W`\0\x83\x82\x81Q\x81\x10a\x0BVWa\x0BVa&\xC5V[` \x02` \x01\x01Q\x90Pa\x0Bi\x81a\x0E'V[a\x0Bs\x813a\x13\x17V[a\x0B}\x813a\x14\x18V[P`\x01\x01a\x0B:V[\x80Q`\0[\x81\x81\x10\x15a\x0C\xC8W`\0\x83\x82\x81Q\x81\x10a\x0B\xA7Wa\x0B\xA7a&\xC5V[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C(W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xDEWa\x0B\xDEa&\xC5V[` \x02` \x01\x01Q\x90Pa\x0C\x1F\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x17\xBE\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBEV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CqWa\x0Cqa&\xC5V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xB6\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8BV[PG\x15a\x05\nWa\x05\n3Ga\x18\x05V[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\rR\x83\x80a'\xF8V[\x81\x01\x90a\r_\x91\x90a*\xEAV[\x90Pa\rj\x81a\x18\x9FV[`@Q\x80`\xA0\x01`@R\x80\x82`\0\x01Q\x81R` \x01a\r\xA0\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x19\x8A\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\r\xC6\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x1A\\\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\r\xDB\x91\x90a'\xF8V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\x0E\x1E\x83a\x1BCV[\x90R\x93\x92PPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0EGWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x0E\x9E\x90\x85\x90`\x04\x01a&\x83V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xBBW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0F\x01\x91\x90\x81\x01\x90a,\x1EV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x0F\x19\x82\x84a-\x1DV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0F1Wa\x0F1a&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F\x9AW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0FOW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x0F\xEBW\x85`@\x01Q\x81\x81Q\x81\x10a\x0F\xBEWa\x0F\xBEa&\xC5V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0F\xD8Wa\x0F\xD8a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0F\xA0V[P`\0\x80`\0[\x84\x81\x10\x15a\x13\x06W`\0\x87\x82\x81Q\x81\x10a\x10\x0EWa\x10\x0Ea&\xC5V[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x10\xCCW\x88\x81\x81Q\x81\x10a\x105Wa\x105a&\xC5V[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\xC4W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07IV[`\x01\x01a\x10\x1BV[P`\0\x80[\x88\x81\x10\x15a\x11\x8DW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x10\xF1Wa\x10\xF1a&\xC5V[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x11\x84W\x85\x15a\x11nW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x11}\x90\x84a-\x1DV[\x92P`\x01\x96P[P`\x01\x01a\x10\xD1V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x12\x06W\x84\x15a\x11\xEDW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11\xFF\x90\x82a-\x1DV[\x90P`\x01\x93P[\x80`\0\x03a\x12[W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07IV[a\x12i\x81`\x05a'\x10a\x1D\xADV[\x82` \x01Q\x11\x15a\x12\xDCW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07IV[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x12\xF1Wa\x12\xF1a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x0F\xF2V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x13hW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x05\nW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x13\xE4\x90\x84\x90\x86\x90`\x04\x01a-0V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x13\xFCW`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x14\x10W=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x14\xD8\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x16c\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/S` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xD3`\x8D\x919`@Q` \x01a\x16\xD0\x93\x92\x91\x90a-_V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a/\xA5` \x83\x019`@Q` \x01a\x17#\x92\x91\x90a-\xA2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x17\x90\x96\x95\x94\x93\x92`\x04\x01a-\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x17\xAAW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x14\x10W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x17\xE3Wa\x03\xA8\x82\x82a\x18\x05V[a\x03\xA8s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1D\xE9V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x18_W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x18dV[``\x91P[PP\x90P\x80a\x03\xA8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\x18\xE2W`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\xDAW`\0[\x81`\x80\x01QQ\x81\x10\x15a\x05\nW\x81`\x80\x01Q\x81\x81Q\x81\x10a\x19\x1DWa\x19\x1Da&\xC5V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\x19?Wa\x19?a&\xC5V[` \x02` \x01\x01Q` \x01Q\x14a\x19\x82W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x18\xFAV[a\x19\xC4`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x1A\x06W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1A\x1C\x85` \x01Q\x86`@\x01Q\x86\x86a\x1E\xDBV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1AzWa\x1Aza&\x96V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1A\xE3W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x1A\x98W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x1B:Wa\x1B\x15\x86\x82\x81Q\x81\x10a\x1B\x06Wa\x1B\x06a&\xC5V[` \x02` \x01\x01Q\x86\x86a\x1FXV[\x83\x82\x81Q\x81\x10a\x1B'Wa\x1B'a&\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1A\xE9V[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R`\0\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a/S` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xD3`\x8D\x919`@Q` \x01a\x1C\xE9\x93\x92\x91\x90a-_V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1D\x0C\x83`\0\x01Qa (V[\x83` \x01Q\x84`@\x01Q\x85``\x01Q`\0\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x1D>\x89`\x80\x01Qa \xC2V[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1D\xE2W`\0\x80\xFD[P\x91\x02\x04\x90V[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x1E\xD4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07IV[PPPPPV[`\0\x83\x85\x03a\x1E\xEBWP\x83a\x1FPV[\x82\x82\x11a\x1F$W`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1F2WP\x82a\x1FPV[B\x83\x10a\x1F@WP\x83a\x1FPV[a\x1FM\x83\x83B\x88\x88a!`V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1F\xB7W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x1F\xCD\x85` \x01Q\x86`@\x01Q\x86\x86a\x1E\xDBV[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\xD3`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x1D\x90\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a \xE2Wa \xE2a&\x96V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a!\x0CW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a!QW`\0a!?\x85\x83\x81Q\x81\x10a!2Wa!2a&\xC5V[` \x02` \x01\x01Qa!{V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a!\x12V[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0a!o\x86\x86\x86\x86\x86a!\xF2V[\x90P[\x95\x94PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a/S`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x1D\x90\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x84\x84\x10a\"\x02WP\x80a!rV[`\0a\"\x0E\x87\x86a.\xB8V[\x90P`\0a\"\x1C\x88\x88a.\xB8V[\x90P`\0\x85\x85\x12\x15a\"NWa\">\x83\x83a\"7\x88\x8Aa.\xCBV[\x91\x90a\x1D\xADV[a\"G\x90a.\xF2V[\x90Pa\"`V[a\"]\x83\x83a\"7\x89\x89a.\xCBV[\x90P[a\"j\x81\x87a/*V[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a\"\x89W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\"\xA1W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xB9W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"\xD1W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\"\xEDW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\x05W`\0\x80\xFD[a#\x11\x87\x83\x88\x01a\"wV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a#'W`\0\x80\xFD[Pa#4\x86\x82\x87\x01a\"\x8FV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a#SW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#kW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"\xD1W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a#\x99W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\xB0W`\0\x80\xFD[a#\xBC\x85\x82\x86\x01a#AV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a#\xDEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xF6W`\0\x80\xFD[a$\x02\x88\x83\x89\x01a#AV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\x1BW`\0\x80\xFD[Pa$(\x87\x82\x88\x01a\"\x8FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xDAW`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a$hW`\0\x80\xFD[\x815a$s\x81a$4V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a$\x8CW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xA3W`\0\x80\xFD[a\x1FP\x84\x82\x85\x01a\"wV[`\0[\x83\x81\x10\x15a$\xCAW\x81\x81\x01Q\x83\x82\x01R` \x01a$\xB2V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra$\xEB\x81` \x86\x01` \x86\x01a$\xAFV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a%}W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a%2V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%\xFCa\x01\xA0\x85\x01\x82a$\xD3V[\x90P` \x83\x01Qa&:` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra&R\x82\x82a%\x1DV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra&l\x82\x82a$\xD3V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[` \x81R`\0a$s` \x83\x01\x84a%\x88V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a'iW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra'W\x86\x83Qa%\x88V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\x1DV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'\xEEW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(-W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a(HW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"\xD1W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x80Wa(\x80a&\x96V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)6Wa)6a&\x96V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a)OW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a)iWa)ia&\x96V[a)\x9A` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(\xEFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)\xAFW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0``\x82\x84\x03\x12\x15a)\xDEW`\0\x80\xFD[a)\xE6a(]V[\x90P\x815a)\xF3\x81a$4V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*+Wa*+a&\x96V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a*FW`\0\x80\xFD[\x815` a*[a*V\x83a*\x11V[a(\xEFV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a*zW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a*\xDFW`\x80\x81\x89\x03\x12\x15a*\x97W`\0\x80\x81\xFD[a*\x9Fa(\x86V[\x815a*\xAA\x81a$4V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a*\xCD\x81a$4V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a*~V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a*\xFCW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a+\x14W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a+(W`\0\x80\xFD[a+0a(\xA9V[\x825\x82\x81\x11\x15a+?W`\0\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a+QW`\0\x80\xFD[a+Ya(\xCCV[\x815a+d\x81a$4V[\x81R` \x82\x015a+t\x81a$4V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a+\x9D\x81a$4V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a+\xB4W`\0\x80\xFD[a+\xC0\x89\x82\x85\x01a)>V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+\xEC\x86``\x85\x01a)\xCCV[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a,\x03W`\0\x80\xFD[a,\x0F\x87\x82\x86\x01a*5V[`\x80\x83\x01RP\x95\x94PPPPPV[`\0` \x80\x83\x85\x03\x12\x15a,1W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,HW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,YW`\0\x80\xFD[\x80Qa,ga*V\x82a*\x11V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a,\x86W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a,\xE2W\x80\x85\x8A\x03\x12\x15a,\xA3W`\0\x80\x81\xFD[a,\xABa(]V[\x85Qa,\xB6\x81a$4V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa,\xCF\x81a$4V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a,\x8BV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\tUWa\tUa,\xEEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1FP`@\x83\x01\x84a%\x88V[`\0\x84Qa-q\x81\x84` \x89\x01a$\xAFV[\x84Q\x90\x83\x01\x90a-\x85\x81\x83` \x89\x01a$\xAFV[\x84Q\x91\x01\x90a-\x98\x81\x83` \x88\x01a$\xAFV[\x01\x95\x94PPPPPV[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x83Qa-\xDA\x81`\x13\x85\x01` \x88\x01a$\xAFV[\x83Q\x90\x83\x01\x90a-\xF1\x81`\x13\x84\x01` \x88\x01a$\xAFV[\x01`\x13\x01\x94\x93PPPPV[`\0a\x01@a.-\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra.n`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra.\xA3\x81\x84\x01\x86a$\xD3V[\x90P\x82\x81\x03a\x01 \x84\x01Ra\"j\x81\x85a$\xD3V[\x81\x81\x03\x81\x81\x11\x15a\tUWa\tUa,\xEEV[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a.\xEBWa.\xEBa,\xEEV[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a/#Wa/#a,\xEEV[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a/JWa/Ja,\xEEV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 C\n\xD8\xEEOC||\xB9*\x9DI\xEF[\x10\xB2\x91~\x10\xD4\xDE\xE5\xB4]\x97\xAA\x10I\x175\x16\xE4dsolcC\0\x08\x18\x003", + b"`\x80`@R`\x046\x10a\0\xB0W_5`\xE0\x1C\x80c?b\x19.\x11a\0fW\x80c\x8D\xA5\xCB[\x11a\0LW\x80c\x8D\xA5\xCB[\x14a\x01\xB1W\x80c\x9B\xB3\"e\x14a\x01\xDCW\x80c\xF2\xFD\xE3\x8B\x14a\x02\x08W_\x80\xFD[\x80c?b\x19.\x14a\x01rW\x80ci\x99\xB3w\x14a\x01\x85W_\x80\xFD[\x80c\x12&\x1E\xE7\x11a\0\x96W\x80c\x12&\x1E\xE7\x14a\0\xE3W\x80c\x13\xFBr\xC7\x14a\x01@W\x80c-w\x13\x89\x14a\x01SW_\x80\xFD[\x80c\r3X\x84\x14a\0\xBBW\x80c\rz\x16\xC3\x14a\0\xD0W_\x80\xFD[6a\0\xB7W\0[_\x80\xFD[a\0\xCEa\0\xC96`\x04a\"\\V[a\x02'V[\0[a\0\xCEa\0\xDE6`\x04a#\x01V[a\x03\x98V[4\x80\x15a\0\xEEW_\x80\xFD[Pa\x01\x16\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xCEa\x01N6`\x04a#@V[a\x04\xF6V[4\x80\x15a\x01^W_\x80\xFD[Pa\0\xCEa\x01m6`\x04a#\xC8V[a\x06\xACV[a\0\xCEa\x01\x806`\x04a#\xEAV[a\x07\xB7V[4\x80\x15a\x01\x90W_\x80\xFD[P`\x01Ta\x01\x16\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xBCW_\x80\xFD[P_Ta\x01\x16\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xE7W_\x80\xFD[Pa\x01\xFBa\x01\xF66`\x04a#\xEAV[a\x08\xB9V[`@Qa\x017\x91\x90a%\xEAV[4\x80\x15a\x02\x13W_\x80\xFD[Pa\0\xCEa\x02\"6`\x04a#\xC8V[a\t6V[a\x02/a\n%V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02EW\x90PP\x90Pa\x02\xEC\x84a\n\x96V[\x81_\x81Q\x81\x10a\x02\xFEWa\x02\xFEa&)V[` \x02` \x01\x01\x81\x90RPa\x03\x12\x81a\x0B\rV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03R\x90\x84\x90\x87\x90\x87\x90`\x04\x01a&VV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03iW_\x80\xFD[PZ\xF1\x15\x80\x15a\x03{W=_\x80>=_\xFD[PPPPa\x03\x88\x81a\x0B\\V[Pa\x03\x93`\x01`\x02UV[PPPV[a\x03\xA0a\n%V[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\xBBWa\x03\xBBa%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04uW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xD9W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\xD3Wa\x04\xAE\x85\x85\x83\x81\x81\x10a\x04\x97Wa\x04\x97a&)V[\x90P` \x02\x81\x01\x90a\x04\xA9\x91\x90a'\x19V[a\n\x96V[\x82\x82\x81Q\x81\x10a\x04\xC0Wa\x04\xC0a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04zV[Pa\x04\xDD\x81a\x0B\rV[a\x04\xE6\x81a\x0B\\V[PPa\x04\xF2`\x01`\x02UV[PPV[a\x04\xFEa\n%V[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\x19Wa\x05\x19a%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xD3W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x057W\x90P[P\x90P_[\x82\x81\x10\x15a\x06\x1AWa\x05\xF5\x87\x87\x83\x81\x81\x10a\x04\x97Wa\x04\x97a&)V[\x82\x82\x81Q\x81\x10a\x06\x07Wa\x06\x07a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xD8V[Pa\x06$\x81a\x0B\rV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06d\x90\x84\x90\x88\x90\x88\x90`\x04\x01a&VV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06{W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06\x8DW=_\x80>=_\xFD[PPPPa\x06\x9A\x81a\x0B\\V[PPa\x06\xA6`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x071W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\xBFa\n%V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xD5W\x90PP\x90Pa\x08|\x82a\n\x96V[\x81_\x81Q\x81\x10a\x08\x8EWa\x08\x8Ea&)V[` \x02` \x01\x01\x81\x90RPa\x08\xA2\x81a\x0B\rV[a\x08\xAB\x81a\x0B\\V[Pa\x08\xB6`\x01`\x02UV[PV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\t0\x82a\n\x96V[\x92\x91PPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\xB6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07(V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\n\x90W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07(V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\t0\x82a\x0C\xA7V[\x80Q_[\x81\x81\x10\x15a\x03\x93W_\x83\x82\x81Q\x81\x10a\x0B,Wa\x0B,a&)V[` \x02` \x01\x01Q\x90Pa\x0B?\x81a\r\xF2V[a\x0BI\x813a\x12\xCFV[a\x0BS\x813a\x13\xCCV[P`\x01\x01a\x0B\x11V[\x80Q_[\x81\x81\x10\x15a\x0C\x96W_\x83\x82\x81Q\x81\x10a\x0B{Wa\x0B{a&)V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0B\xF8W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xAFWa\x0B\xAFa&)V[` \x02` \x01\x01Q\x90Pa\x0B\xEF\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x17j\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\x90V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C@Wa\x0C@a&)V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\x84\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B`V[PG\x15a\x04\xF2Wa\x04\xF23Ga\x17\xB1V[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\r\x1F\x83\x80a'UV[\x81\x01\x90a\r,\x91\x90a*7V[\x90Pa\r7\x81a\x18GV[`@Q\x80`\xA0\x01`@R\x80\x82_\x01Q\x81R` \x01a\rl\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x191\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\r\x92\x83` \x01Q\x84`@\x01Q\x85`\x80\x01Qa\x19\xFF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x84\x80` \x01\x90a\r\xA7\x91\x90a'UV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01a\r\xE9\x83a\x1A\xE4V[\x90R\x93\x92PPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0E\x12WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x0Eh\x90\x85\x90`\x04\x01a%\xEAV[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\x82W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x0E\xC7\x91\x90\x81\x01\x90a+cV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x0E\xDE\x82\x84a,YV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xF6Wa\x0E\xF6a%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x0F\x14W\x90P[P\x90P_[\x83\x81\x10\x15a\x0F\xAEW\x85`@\x01Q\x81\x81Q\x81\x10a\x0F\x81Wa\x0F\x81a&)V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x0F\x9BWa\x0F\x9Ba&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x0FcV[P_\x80_[\x84\x81\x10\x15a\x12\xBEW_\x87\x82\x81Q\x81\x10a\x0F\xCEWa\x0F\xCEa&)V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x10\x89W\x88\x81\x81Q\x81\x10a\x0F\xF4Wa\x0F\xF4a&)V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x10\x81W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07(V[`\x01\x01a\x0F\xDAV[P_\x80[\x88\x81\x10\x15a\x11FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x10\xACWa\x10\xACa&)V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x11=W\x85\x15a\x11'W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x116\x90\x84a,YV[\x92P`\x01\x96P[P`\x01\x01a\x10\x8DV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x11\xBFW\x84\x15a\x11\xA6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x11\xB8\x90\x82a,YV[\x90P`\x01\x93P[\x80_\x03a\x12\x13W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07(V[a\x12!\x81`\x05a'\x10a\x1DKV[\x82` \x01Q\x11\x15a\x12\x94W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07(V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x12\xA9Wa\x12\xA9a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x0F\xB3V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x13 W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xF2W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x13\x9C\x90\x84\x90\x86\x90`\x04\x01a,lV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x13\xB2W_\x80\xFD[PZ\xFA\x15\x80\x15a\x13\xC4W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x14\x8B\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x16\x14\x90\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0B\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`\x1A\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`1\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`F\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`Y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`r\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\x89\x82\x01R`\x9F\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.\x87` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\x07`\x8D\x919`@Q` \x01a\x16\x81\x93\x92\x91\x90a,\x9AV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`.\x80\x83R\x90\x91\x90a.\xD9` \x83\x019`@Q` \x01a\x16\xD4\x92\x91\x90a,\xDCV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x17A\x96\x95\x94\x93\x92`\x04\x01a-6V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x17XW_\x80\xFD[PZ\xF1\x15\x80\x15a\x13\xC4W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x17\x8FWa\x03\x93\x82\x82a\x17\xB1V[a\x03\x93s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\x1D\x85V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x18\x07W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x18\x0CV[``\x91P[PP\x90P\x80a\x03\x93W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q\x81Q``\x01Q\x10\x15a\x18\x8AW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x81\x01Q`@\x81\x01Q` \x90\x91\x01Q\x14a\x08\xB6W_[\x81`\x80\x01QQ\x81\x10\x15a\x04\xF2W\x81`\x80\x01Q\x81\x81Q\x81\x10a\x18\xC4Wa\x18\xC4a&)V[` \x02` \x01\x01Q`@\x01Q\x82`\x80\x01Q\x82\x81Q\x81\x10a\x18\xE6Wa\x18\xE6a&)V[` \x02` \x01\x01Q` \x01Q\x14a\x19)W`@Q\x7F\xD3\x03u\x8B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x18\xA1V[a\x19h`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x19\xAAW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x19\xBF\x85` \x01Q\x86`@\x01Q\x86\x86a\x1EsV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A\x1DWa\x1A\x1Da%\xFCV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1A\x85W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x1A;W\x90P[P\x91P_[\x81\x81\x10\x15a\x1A\xDBWa\x1A\xB6\x86\x82\x81Q\x81\x10a\x1A\xA7Wa\x1A\xA7a&)V[` \x02` \x01\x01Q\x86\x86a\x1E\xEFV[\x83\x82\x81Q\x81\x10a\x1A\xC8Wa\x1A\xC8a&)V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x1A\x8AV[PP\x93\x92PPPV[`@Q\x7FDutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`+\x82\x01R\x7Fuint256 decayStartTime,\0\0\0\0\0\0\0\0\0`:\x82\x01R\x7Fuint256 decayEndTime,\0\0\0\0\0\0\0\0\0\0\0`Q\x82\x01R\x7Faddress inputToken,\0\0\0\0\0\0\0\0\0\0\0\0\0`f\x82\x01R\x7Fuint256 inputStartAmount,\0\0\0\0\0\0\0`y\x82\x01R\x7Fuint256 inputEndAmount,\0\0\0\0\0\0\0\0\0`\x92\x82\x01R\x7FDutchOutput[] outputs)\0\0\0\0\0\0\0\0\0\0`\xA9\x82\x01R_\x90`\xBF\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a.\x87` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\x07`\x8D\x919`@Q` \x01a\x1C\x89\x93\x92\x91\x90a,\x9AV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x1C\xAB\x83_\x01Qa\x1F\xBCV[\x83` \x01Q\x84`@\x01Q\x85``\x01Q_\x01Q\x86``\x01Q` \x01Q\x87``\x01Q`@\x01Qa\x1C\xDC\x89`\x80\x01Qa UV[`@\x80Q` \x81\x01\x99\x90\x99R\x88\x01\x96\x90\x96R``\x87\x01\x94\x90\x94R`\x80\x86\x01\x92\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\xA0\x85\x01R`\xC0\x84\x01R`\xE0\x83\x01Ra\x01\0\x82\x01Ra\x01 \x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x1D~W_\x80\xFD[P\x91\x02\x04\x90V[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x1ElW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07(V[PPPPPV[_\x83\x85\x03a\x1E\x82WP\x83a\x1E\xE7V[\x82\x82\x11a\x1E\xBBW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1E\xC9WP\x82a\x1E\xE7V[B\x83\x10a\x1E\xD7WP\x83a\x1E\xE7V[a\x1E\xE4\x83\x83B\x88\x88a \xF0V[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1FMW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1Fb\x85` \x01Q\x86`@\x01Q\x86\x86a\x1EsV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a/\x07`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x1D.\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a tWa ta%\xFCV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a \x9EW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a \xE1W_a \xCF\x85\x83\x81Q\x81\x10a \xC2Wa \xC2a&)V[` \x02` \x01\x01Qa!\nV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a \xA3V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_a \xFE\x86\x86\x86\x86\x86a!\x80V[\x90P[\x95\x94PPPPPV[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a.\x87`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x1D.\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x84\x84\x10a!\x8FWP\x80a!\x01V[_a!\x9A\x87\x86a-\xF0V[\x90P_a!\xA7\x88\x88a-\xF0V[\x90P_\x85\x85\x12\x15a!\xD8Wa!\xC8\x83\x83a!\xC1\x88\x8Aa.\x03V[\x91\x90a\x1DKV[a!\xD1\x90a.)V[\x90Pa!\xEAV[a!\xE7\x83\x83a!\xC1\x89\x89a.\x03V[\x90P[a!\xF4\x81\x87a._V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a\"\x11W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a\"'W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\">W_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\"UW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\"nW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\"\x85W_\x80\xFD[a\"\x91\x87\x83\x88\x01a\"\x01V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\"\xA6W_\x80\xFD[Pa\"\xB3\x86\x82\x87\x01a\"\x17V[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a\"\xD0W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\xE7W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\"UW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a#\x12W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#(W_\x80\xFD[a#4\x85\x82\x86\x01a\"\xC0V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a#SW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#jW_\x80\xFD[a#v\x88\x83\x89\x01a\"\xC0V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a#\x8EW_\x80\xFD[Pa#\x9B\x87\x82\x88\x01a\"\x17V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xB6W_\x80\xFD[_` \x82\x84\x03\x12\x15a#\xD8W_\x80\xFD[\x815a#\xE3\x81a#\xA7V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a#\xFAW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x10W_\x80\xFD[a\x1E\xE7\x84\x82\x85\x01a\"\x01V[_[\x83\x81\x10\x15a$6W\x81\x81\x01Q\x83\x82\x01R` \x01a$\x1EV[PP_\x91\x01RV[_\x81Q\x80\x84Ra$U\x81` \x86\x01` \x86\x01a$\x1CV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a$\xE5W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a$\x9AV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra%ca\x01\xA0\x85\x01\x82a$>V[\x90P` \x83\x01Qa%\xA1` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra%\xB9\x82\x82a$\x87V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra%\xD3\x82\x82a$>V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[` \x81R_a#\xE3` \x83\x01\x84a$\xF0V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a&\xC9W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra&\xB7\x86\x83Qa$\xF0V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a&}V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a'KW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a'\x88W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a'\xA2W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\"UW_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a'\xD9Wa'\xD9a%\xFCV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a(\x8FWa(\x8Fa%\xFCV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a(\xA6W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\xC0Wa(\xC0a%\xFCV[a(\xF1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a(HV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)\x05W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_``\x82\x84\x03\x12\x15a)1W_\x80\xFD[a)9a'\xB6V[\x90P\x815a)F\x81a#\xA7V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)}Wa)}a%\xFCV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a)\x96W_\x80\xFD[\x815` a)\xABa)\xA6\x83a)dV[a(HV[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a)\xC9W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a*,W`\x80\x81\x89\x03\x12\x15a)\xE4W_\x80\xFD[a)\xECa'\xDFV[\x815a)\xF7\x81a#\xA7V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a*\x1A\x81a#\xA7V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a)\xCDV[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a*GW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a*^W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a*qW_\x80\xFD[a*ya(\x02V[\x825\x82\x81\x11\x15a*\x87W_\x80\xFD[\x83\x01`\xC0\x81\x88\x03\x12\x15a*\x98W_\x80\xFD[a*\xA0a(%V[\x815a*\xAB\x81a#\xA7V[\x81R` \x82\x015a*\xBB\x81a#\xA7V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a*\xE4\x81a#\xA7V[`\x80\x82\x01R`\xA0\x82\x015\x84\x81\x11\x15a*\xFAW_\x80\xFD[a+\x06\x89\x82\x85\x01a(\x97V[`\xA0\x83\x01RP\x80\x83RPP` \x83\x015` \x82\x01R`@\x83\x015`@\x82\x01Ra+2\x86``\x85\x01a)!V[``\x82\x01R`\xC0\x83\x015\x82\x81\x11\x15a+HW_\x80\xFD[a+T\x87\x82\x86\x01a)\x87V[`\x80\x83\x01RP\x95\x94PPPPPV[_` \x80\x83\x85\x03\x12\x15a+tW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+\x8AW_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a+\x9AW_\x80\xFD[\x80Qa+\xA8a)\xA6\x82a)dV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a+\xC6W_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a, W\x80\x85\x8A\x03\x12\x15a+\xE1W_\x80\xFD[a+\xE9a'\xB6V[\x85Qa+\xF4\x81a#\xA7V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa,\r\x81a#\xA7V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a+\xCBV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\t0Wa\t0a,,V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1E\xE7`@\x83\x01\x84a$\xF0V[_\x84Qa,\xAB\x81\x84` \x89\x01a$\x1CV[\x84Q\x90\x83\x01\x90a,\xBF\x81\x83` \x89\x01a$\x1CV[\x84Q\x91\x01\x90a,\xD2\x81\x83` \x88\x01a$\x1CV[\x01\x95\x94PPPPPV[\x7FDutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x83Qa-\x13\x81`\x13\x85\x01` \x88\x01a$\x1CV[\x83Q\x90\x83\x01\x90a-*\x81`\x13\x84\x01` \x88\x01a$\x1CV[\x01`\x13\x01\x94\x93PPPPV[_a\x01@a-e\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra-\xA6`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra-\xDB\x81\x84\x01\x86a$>V[\x90P\x82\x81\x03a\x01 \x84\x01Ra!\xF4\x81\x85a$>V[\x81\x81\x03\x81\x81\x11\x15a\t0Wa\t0a,,V[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a.\"Wa.\"a,,V[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a.YWa.Ya,,V[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a.~Wa.~a,,V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xD7-\x11\x12\xBD\x17\x05\\\x13X\x9Aib5\xC0&\x9C<\xFB\x14QnZ\xF8xj\xCF\xC4\x1B\x1F;\xCAdsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -582,8 +596,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -800,17 +814,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -826,8 +851,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -1096,14 +1121,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1115,7 +1148,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1329,18 +1362,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1617,13 +1660,20 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; /**```solidity struct SignedOrder { bytes order; bytes sig; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignedOrder { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1829,10 +1879,15 @@ struct SignedOrder { bytes order; bytes sig; } ```solidity error DeadlineBeforeEndTime(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DeadlineBeforeEndTime {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1888,12 +1943,18 @@ error DeadlineBeforeEndTime(); ```solidity error DuplicateFeeOutput(address duplicateToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DuplicateFeeOutput { + #[allow(missing_docs)] pub duplicateToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1953,10 +2014,15 @@ error DuplicateFeeOutput(address duplicateToken); ```solidity error EndTimeBeforeStartTime(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct EndTimeBeforeStartTime {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2012,14 +2078,22 @@ error EndTimeBeforeStartTime(); ```solidity error FeeTooLarge(address token, uint256 amount, address recipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct FeeTooLarge { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2031,7 +2105,7 @@ error FeeTooLarge(address token, uint256 amount, address recipient); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -2097,10 +2171,15 @@ error FeeTooLarge(address token, uint256 amount, address recipient); ```solidity error IncorrectAmounts(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IncorrectAmounts {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2156,10 +2235,15 @@ error IncorrectAmounts(); ```solidity error InputAndOutputDecay(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputDecay {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2215,10 +2299,15 @@ error InputAndOutputDecay(); ```solidity error InputAndOutputFees(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputFees {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2274,12 +2363,18 @@ error InputAndOutputFees(); ```solidity error InvalidFeeToken(address feeToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidFeeToken { + #[allow(missing_docs)] pub feeToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2339,10 +2434,15 @@ error InvalidFeeToken(address feeToken); ```solidity error InvalidReactor(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidReactor {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2398,10 +2498,15 @@ error InvalidReactor(); ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -2457,7 +2562,12 @@ error NativeTransferFailed(); ```solidity event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Fill { #[allow(missing_docs)] @@ -2467,9 +2577,14 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub nonce: alloy::sol_types::private::U256, + pub nonce: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2534,6 +2649,21 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -2712,7 +2867,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ProtocolFeeControllerSet { #[allow(missing_docs)] @@ -2720,7 +2880,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle #[allow(missing_docs)] pub newFeeController: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2781,6 +2946,21 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -2832,10 +3012,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle ```solidity constructor(address _permit2, address _protocolFeeOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _permit2: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _protocolFeeOwner: alloy::sol_types::private::Address, } const _: () = { @@ -2912,16 +3094,22 @@ constructor(address _permit2, address _protocolFeeOwner); ```solidity function execute(SignedOrder memory order) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3027,18 +3215,24 @@ function execute(SignedOrder memory order) external payable; ```solidity function executeBatch(SignedOrder[] memory orders) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3152,19 +3346,26 @@ function executeBatch(SignedOrder[] memory orders) external payable; ```solidity function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3293,17 +3494,24 @@ function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory call ```solidity function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3425,16 +3633,22 @@ function executeWithCallback(SignedOrder memory order, bytes memory callbackData ```solidity function feeController() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerCall {} ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3538,16 +3752,22 @@ function feeController() external view returns (address); ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3651,16 +3871,22 @@ function owner() external view returns (address); ```solidity function permit2() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Call {} ///Container type for the return parameters of the [`permit2()`](permit2Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Return { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3764,18 +3990,25 @@ function permit2() external view returns (address); ```solidity function resolveOrder(SignedOrder memory order) external view returns (ResolvedOrder memory resolvedOrder); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct resolveOrderCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`resolveOrder((bytes,bytes))`](resolveOrderCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct resolveOrderReturn { + #[allow(missing_docs)] pub resolvedOrder: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3883,16 +4116,22 @@ function resolveOrder(SignedOrder memory order) external view returns (ResolvedO ```solidity function setProtocolFeeController(address _newFeeController) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerCall { + #[allow(missing_docs)] pub _newFeeController: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4004,16 +4243,22 @@ function setProtocolFeeController(address _newFeeController) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4123,15 +4368,25 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`MockDutchOrderReactor`](self) function calls. pub enum MockDutchOrderReactorCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] executeBatchWithCallback(executeBatchWithCallbackCall), + #[allow(missing_docs)] executeWithCallback(executeWithCallbackCall), + #[allow(missing_docs)] feeController(feeControllerCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] permit2(permit2Call), + #[allow(missing_docs)] resolveOrder(resolveOrderCall), + #[allow(missing_docs)] setProtocolFeeController(setProtocolFeeControllerCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -4198,7 +4453,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -4347,7 +4602,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -4457,15 +4712,25 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`MockDutchOrderReactor`](self) custom errors. pub enum MockDutchOrderReactorErrors { + #[allow(missing_docs)] DeadlineBeforeEndTime(DeadlineBeforeEndTime), + #[allow(missing_docs)] DuplicateFeeOutput(DuplicateFeeOutput), + #[allow(missing_docs)] EndTimeBeforeStartTime(EndTimeBeforeStartTime), + #[allow(missing_docs)] FeeTooLarge(FeeTooLarge), + #[allow(missing_docs)] IncorrectAmounts(IncorrectAmounts), + #[allow(missing_docs)] InputAndOutputDecay(InputAndOutputDecay), + #[allow(missing_docs)] InputAndOutputFees(InputAndOutputFees), + #[allow(missing_docs)] InvalidFeeToken(InvalidFeeToken), + #[allow(missing_docs)] InvalidReactor(InvalidReactor), + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), } #[automatically_derived] @@ -4538,7 +4803,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -4687,7 +4952,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -4810,8 +5075,11 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`MockDutchOrderReactor`](self) events. pub enum MockDutchOrderReactorEvents { + #[allow(missing_docs)] Fill(Fill), + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), + #[allow(missing_docs)] ProtocolFeeControllerSet(ProtocolFeeControllerSet), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/mockerc20.rs b/crates/bindings-uniswapx/src/mockerc20.rs index e934267..cdd752b 100644 --- a/crates/bindings-uniswapx/src/mockerc20.rs +++ b/crates/bindings-uniswapx/src/mockerc20.rs @@ -395,35 +395,46 @@ interface MockERC20 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockERC20 { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60e06040523480156200001157600080fd5b5060405162001236380380620012368339810160408190526200003491620001de565b8282826000620000458482620002f4565b506001620000548382620002f4565b5060ff81166080524660a0526200006a6200007a565b60c052506200043e945050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000ae9190620003c0565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013e57600080fd5b81516001600160401b03808211156200015b576200015b62000116565b604051601f8301601f19908116603f0116810190828211818310171562000186576200018662000116565b8160405283815260209250866020858801011115620001a457600080fd5b600091505b83821015620001c85785820183015181830184015290820190620001a9565b6000602085830101528094505050505092915050565b600080600060608486031215620001f457600080fd5b83516001600160401b03808211156200020c57600080fd5b6200021a878388016200012c565b945060208601519150808211156200023157600080fd5b5062000240868287016200012c565b925050604084015160ff811681146200025857600080fd5b809150509250925092565b600181811c908216806200027857607f821691505b6020821081036200029957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002ef576000816000526020600020601f850160051c81016020861015620002ca5750805b601f850160051c820191505b81811015620002eb57828155600101620002d6565b5050505b505050565b81516001600160401b0381111562000310576200031062000116565b620003288162000321845462000263565b846200029f565b602080601f831160018114620003605760008415620003475750858301515b600019600386901b1c1916600185901b178555620002eb565b600085815260208120601f198616915b82811015620003915788860151825594840194600190910190840162000370565b5085821015620003b05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620003d08162000263565b60018281168015620003eb5760018114620004015762000432565b60ff198416875282151583028701945062000432565b8760005260208060002060005b85811015620004295781548a8201529084019082016200040e565b50505082870194505b50929695505050505050565b60805160a05160c051610dc86200046e60003960006104e1015260006104ac0152600061015f0152610dc86000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806361f49ed61161008c57806395d89b411161006657806395d89b4114610203578063a9059cbb1461020b578063d505accf1461021e578063dd62ed3e1461023157600080fd5b806361f49ed6146101b057806370a08231146101c35780637ecebe00146101e357600080fd5b806323b872dd116100c857806323b872dd14610147578063313ce5671461015a5780633644e5151461019357806340c10f191461019b57600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761025c565b6040516101049190610a4e565b60405180910390f35b61012061011b366004610ae4565b6102ea565b6040519015158152602001610104565b61013960025481565b604051908152602001610104565b610120610155366004610b0e565b610364565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610104565b6101396104a8565b6101ae6101a9366004610ae4565b610503565b005b6101206101be366004610b0e565b610511565b6101396101d1366004610b4a565b60036020526000908152604090205481565b6101396101f1366004610b4a565b60056020526000908152604090205481565b6100f7610586565b610120610219366004610ae4565b610593565b6101ae61022c366004610b6c565b610618565b61013961023f366004610bdf565b600460209081526000928352604080842090915290825290205481565b6000805461026990610c12565b80601f016020809104026020016040519081016040528092919081815260200182805461029590610c12565b80156102e25780601f106102b7576101008083540402835291602001916102e2565b820191906000526020600020905b8154815290600101906020018083116102c557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103529086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103f8576103c68382610c94565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260408120805485929061042d908490610c94565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104959087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104de576104d961093c565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b61050d82826109d6565b5050565b73ffffffffffffffffffffffffffffffffffffffff838116600081815260046020908152604080832094871680845294825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6001805461026990610c12565b336000908152600360205260408120805483919083906105b4908490610c94565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103529086815260200190565b42841015610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b600060016106936104a8565b73ffffffffffffffffffffffffffffffffffffffff8a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156107e5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061086057508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e4552000000000000000000000000000000000000604482015260640161067e565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161096e9190610ca7565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546109e89190610d7f565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006020808352835180602085015260005b81811015610a7c57858101830151858201604001528201610a60565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610adf57600080fd5b919050565b60008060408385031215610af757600080fd5b610b0083610abb565b946020939093013593505050565b600080600060608486031215610b2357600080fd5b610b2c84610abb565b9250610b3a60208501610abb565b9150604084013590509250925092565b600060208284031215610b5c57600080fd5b610b6582610abb565b9392505050565b600080600080600080600060e0888a031215610b8757600080fd5b610b9088610abb565b9650610b9e60208901610abb565b95506040880135945060608801359350608088013560ff81168114610bc257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610bf257600080fd5b610bfb83610abb565b9150610c0960208401610abb565b90509250929050565b600181811c90821680610c2657607f821691505b602082108103610c5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561035e5761035e610c65565b60008083548160018260011c91506001831680610cc557607f831692505b60208084108203610cfd577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015610d115760018114610d4457610d71565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610d71565b60008a81526020902060005b86811015610d695781548b820152908501908301610d50565b505084890196505b509498975050505050505050565b8082018082111561035e5761035e610c6556fea2646970667358221220ec21b1b1a52f607978c931fa67a27c863050b1f3891df7934f090dc04515ec5464736f6c63430008180033 + ///0x60e060405234801562000010575f80fd5b50604051620011dc380380620011dc8339810160408190526200003391620001d3565b8282825f620000438482620002dc565b506001620000528382620002dc565b5060ff81166080524660a0526200006862000078565b60c0525062000422945050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051620000aa9190620003a8565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000136575f80fd5b81516001600160401b038082111562000153576200015362000112565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e62000112565b81604052838152602092508660208588010111156200019b575f80fd5b5f91505b83821015620001be57858201830151818301840152908201906200019f565b5f602085830101528094505050505092915050565b5f805f60608486031215620001e6575f80fd5b83516001600160401b0380821115620001fd575f80fd5b6200020b8783880162000126565b9450602086015191508082111562000221575f80fd5b50620002308682870162000126565b925050604084015160ff8116811462000247575f80fd5b809150509250925092565b600181811c908216806200026757607f821691505b6020821081036200028657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002d757805f5260205f20601f840160051c81016020851015620002b35750805b601f840160051c820191505b81811015620002d4575f8155600101620002bf565b50505b505050565b81516001600160401b03811115620002f857620002f862000112565b620003108162000309845462000252565b846200028c565b602080601f83116001811462000346575f84156200032e5750858301515b5f19600386901b1c1916600185901b178555620003a0565b5f85815260208120601f198616915b82811015620003765788860151825594840194600190910190840162000355565b50858210156200039457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f808354620003b78162000252565b60018281168015620003d25760018114620003e85762000416565b60ff198416875282151583028701945062000416565b875f526020805f205f5b858110156200040d5781548a820152908401908201620003f2565b50505082870194505b50929695505050505050565b60805160a05160c051610d8f6200044d5f395f6104cf01525f61049a01525f6101590152610d8f5ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806361f49ed61161008857806395d89b411161006357806395d89b41146101fb578063a9059cbb14610203578063d505accf14610216578063dd62ed3e14610229575f80fd5b806361f49ed6146101aa57806370a08231146101bd5780637ecebe00146101dc575f80fd5b806323b872dd116100c357806323b872dd14610141578063313ce567146101545780633644e5151461018d57806340c10f1914610195575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610253565b6040516100fe9190610a2f565b60405180910390f35b61011a610115366004610ac1565b6102de565b60405190151581526020016100fe565b61013360025481565b6040519081526020016100fe565b61011a61014f366004610ae9565b610357565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100fe565b610133610497565b6101a86101a3366004610ac1565b6104f1565b005b61011a6101b8366004610ae9565b6104ff565b6101336101cb366004610b22565b60036020525f908152604090205481565b6101336101ea366004610b22565b60056020525f908152604090205481565b6100f1610573565b61011a610211366004610ac1565b610580565b6101a8610224366004610b42565b610603565b610133610237366004610baf565b600460209081525f928352604080842090915290825290205481565b5f805461025f90610be0565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610be0565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b505050505081565b335f81815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103459086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103e9576103b88382610c5e565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260408120805485929061041d908490610c5e565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104849087815260200190565b60405180910390a3506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146104cc576104c7610921565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6104fb82826109b9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381165f81815260046020908152604080832094871680845294825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6001805461025f90610be0565b335f908152600360205260408120805483919083906105a0908490610c5e565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103459086815260200190565b42841015610672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f600161067d610497565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156107cb573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061084657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610669565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516109519190610c71565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546109ca9190610d46565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5f602080835283518060208501525f5b81811015610a5b57858101830151858201604001528201610a3f565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610abc575f80fd5b919050565b5f8060408385031215610ad2575f80fd5b610adb83610a99565b946020939093013593505050565b5f805f60608486031215610afb575f80fd5b610b0484610a99565b9250610b1260208501610a99565b9150604084013590509250925092565b5f60208284031215610b32575f80fd5b610b3b82610a99565b9392505050565b5f805f805f805f60e0888a031215610b58575f80fd5b610b6188610a99565b9650610b6f60208901610a99565b95506040880135945060608801359350608088013560ff81168114610b92575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610bc0575f80fd5b610bc983610a99565b9150610bd760208401610a99565b90509250929050565b600181811c90821680610bf457607f821691505b602082108103610c2b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561035157610351610c31565b5f8083545f60018260011c91506001831680610c8e57607f831692505b60208084108203610cc6577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015610cda5760018114610d0d57610d38565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610d38565b5f8a8152602090205f5b86811015610d305781548b820152908501908301610d17565b505084890196505b509498975050505050505050565b8082018082111561035157610351610c3156fea26469706673582212206d3f9f34045524319a901830f0382e2a6e2a2f295c0b0d7efba441a62e58fd4064736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x1268\x03\x80b\0\x126\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\xDEV[\x82\x82\x82`\0b\0\0E\x84\x82b\0\x02\xF4V[P`\x01b\0\0T\x83\x82b\0\x02\xF4V[P`\xFF\x81\x16`\x80RF`\xA0Rb\0\0jb\0\0zV[`\xC0RPb\0\x04>\x94PPPPPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qb\0\0\xAE\x91\x90b\0\x03\xC0V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x01>W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01[Wb\0\x01[b\0\x01\x16V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x01\x86Wb\0\x01\x86b\0\x01\x16V[\x81`@R\x83\x81R` \x92P\x86` \x85\x88\x01\x01\x11\x15b\0\x01\xA4W`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x01\xC8W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x01\xA9V[`\0` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01\xF4W`\0\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02\x0CW`\0\x80\xFD[b\0\x02\x1A\x87\x83\x88\x01b\0\x01,V[\x94P` \x86\x01Q\x91P\x80\x82\x11\x15b\0\x021W`\0\x80\xFD[Pb\0\x02@\x86\x82\x87\x01b\0\x01,V[\x92PP`@\x84\x01Q`\xFF\x81\x16\x81\x14b\0\x02XW`\0\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02xW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x02\x99WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x02\xEFW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x02\xCAWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x02\xEBW\x82\x81U`\x01\x01b\0\x02\xD6V[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03\x10Wb\0\x03\x10b\0\x01\x16V[b\0\x03(\x81b\0\x03!\x84Tb\0\x02cV[\x84b\0\x02\x9FV[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03`W`\0\x84\x15b\0\x03GWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x02\xEBV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x03\x91W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03pV[P\x85\x82\x10\x15b\0\x03\xB0W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\0\x80\x83Tb\0\x03\xD0\x81b\0\x02cV[`\x01\x82\x81\x16\x80\x15b\0\x03\xEBW`\x01\x81\x14b\0\x04\x01Wb\0\x042V[`\xFF\x19\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pb\0\x042V[\x87`\0R` \x80`\0 `\0[\x85\x81\x10\x15b\0\x04)W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01b\0\x04\x0EV[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[`\x80Q`\xA0Q`\xC0Qa\r\xC8b\0\x04n`\09`\0a\x04\xE1\x01R`\0a\x04\xAC\x01R`\0a\x01_\x01Ra\r\xC8`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80ca\xF4\x9E\xD6\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x02\x03W\x80c\xA9\x05\x9C\xBB\x14a\x02\x0BW\x80c\xD5\x05\xAC\xCF\x14a\x02\x1EW\x80c\xDDb\xED>\x14a\x021W`\0\x80\xFD[\x80ca\xF4\x9E\xD6\x14a\x01\xB0W\x80cp\xA0\x821\x14a\x01\xC3W\x80c~\xCE\xBE\0\x14a\x01\xE3W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC8W\x80c#\xB8r\xDD\x14a\x01GW\x80c1<\xE5g\x14a\x01ZW\x80c6D\xE5\x15\x14a\x01\x93W\x80c@\xC1\x0F\x19\x14a\x01\x9BW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\rW\x80c\x18\x16\r\xDD\x14a\x010W[`\0\x80\xFD[a\0\xF7a\x02\\V[`@Qa\x01\x04\x91\x90a\nNV[`@Q\x80\x91\x03\x90\xF3[a\x01 a\x01\x1B6`\x04a\n\xE4V[a\x02\xEAV[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x019`\x02T\x81V[`@Q\x90\x81R` \x01a\x01\x04V[a\x01 a\x01U6`\x04a\x0B\x0EV[a\x03dV[a\x01\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x01\x04V[a\x019a\x04\xA8V[a\x01\xAEa\x01\xA96`\x04a\n\xE4V[a\x05\x03V[\0[a\x01 a\x01\xBE6`\x04a\x0B\x0EV[a\x05\x11V[a\x019a\x01\xD16`\x04a\x0BJV[`\x03` R`\0\x90\x81R`@\x90 T\x81V[a\x019a\x01\xF16`\x04a\x0BJV[`\x05` R`\0\x90\x81R`@\x90 T\x81V[a\0\xF7a\x05\x86V[a\x01 a\x02\x196`\x04a\n\xE4V[a\x05\x93V[a\x01\xAEa\x02,6`\x04a\x0BlV[a\x06\x18V[a\x019a\x02?6`\x04a\x0B\xDFV[`\x04` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`\0\x80Ta\x02i\x90a\x0C\x12V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\x95\x90a\x0C\x12V[\x80\x15a\x02\xE2W\x80`\x1F\x10a\x02\xB7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xE2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xC5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x81\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x03R\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x03\xF8Wa\x03\xC6\x83\x82a\x0C\x94V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x04-\x90\x84\x90a\x0C\x94V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16`\0\x81\x81R`\x03` R`@\x90\x81\x90 \x80T\x87\x01\x90UQ\x90\x91\x87\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x04\x95\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14a\x04\xDEWa\x04\xD9a\t=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\x08`WP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\x08\xC6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06~V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\tn\x91\x90a\x0C\xA7V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[\x80`\x02`\0\x82\x82Ta\t\xE8\x91\x90a\r\x7FV[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\n|W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\n`V[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\n\xDFW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\n\xF7W`\0\x80\xFD[a\x0B\0\x83a\n\xBBV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B#W`\0\x80\xFD[a\x0B,\x84a\n\xBBV[\x92Pa\x0B:` \x85\x01a\n\xBBV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x0B\\W`\0\x80\xFD[a\x0Be\x82a\n\xBBV[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\x0B\x87W`\0\x80\xFD[a\x0B\x90\x88a\n\xBBV[\x96Pa\x0B\x9E` \x89\x01a\n\xBBV[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\x0B\xC2W`\0\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xF2W`\0\x80\xFD[a\x0B\xFB\x83a\n\xBBV[\x91Pa\x0C\t` \x84\x01a\n\xBBV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C&W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0C_W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x03^Wa\x03^a\x0CeV[`\0\x80\x83T\x81`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0C\xC5W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0C\xFDW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\"`\x04R`$\x86\xFD[\x81\x80\x15a\r\x11W`\x01\x81\x14a\rDWa\rqV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\rqV[`\0\x8A\x81R` \x90 `\0[\x86\x81\x10\x15a\riW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\rPV[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x03^Wa\x03^a\x0CeV\xFE\xA2dipfsX\"\x12 \xEC!\xB1\xB1\xA5/`yx\xC91\xFAg\xA2|\x860P\xB1\xF3\x89\x1D\xF7\x93O\t\r\xC0E\x15\xECTdsolcC\0\x08\x18\x003", + b"`\xE0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0\x11\xDC8\x03\x80b\0\x11\xDC\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01\xD3V[\x82\x82\x82_b\0\0C\x84\x82b\0\x02\xDCV[P`\x01b\0\0R\x83\x82b\0\x02\xDCV[P`\xFF\x81\x16`\x80RF`\xA0Rb\0\0hb\0\0xV[`\xC0RPb\0\x04\"\x94PPPPPV[_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F_`@Qb\0\0\xAA\x91\x90b\0\x03\xA8V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12b\0\x016W_\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01SWb\0\x01Sb\0\x01\x12V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x01~Wb\0\x01~b\0\x01\x12V[\x81`@R\x83\x81R` \x92P\x86` \x85\x88\x01\x01\x11\x15b\0\x01\x9BW_\x80\xFD[_\x91P[\x83\x82\x10\x15b\0\x01\xBEW\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x01\x9FV[_` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[_\x80_``\x84\x86\x03\x12\x15b\0\x01\xE6W_\x80\xFD[\x83Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xFDW_\x80\xFD[b\0\x02\x0B\x87\x83\x88\x01b\0\x01&V[\x94P` \x86\x01Q\x91P\x80\x82\x11\x15b\0\x02!W_\x80\xFD[Pb\0\x020\x86\x82\x87\x01b\0\x01&V[\x92PP`@\x84\x01Q`\xFF\x81\x16\x81\x14b\0\x02GW_\x80\xFD[\x80\x91PP\x92P\x92P\x92V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02gW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x02\x86WcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x02\xD7W\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15b\0\x02\xB3WP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x02\xD4W_\x81U`\x01\x01b\0\x02\xBFV[PP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x02\xF8Wb\0\x02\xF8b\0\x01\x12V[b\0\x03\x10\x81b\0\x03\t\x84Tb\0\x02RV[\x84b\0\x02\x8CV[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03FW_\x84\x15b\0\x03.WP\x85\x83\x01Q[_\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x03\xA0V[_\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x03vW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03UV[P\x85\x82\x10\x15b\0\x03\x94W\x87\x85\x01Q_\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PP`\x01\x84`\x01\x1B\x01\x85U[PPPPPPV[_\x80\x83Tb\0\x03\xB7\x81b\0\x02RV[`\x01\x82\x81\x16\x80\x15b\0\x03\xD2W`\x01\x81\x14b\0\x03\xE8Wb\0\x04\x16V[`\xFF\x19\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pb\0\x04\x16V[\x87_R` \x80_ _[\x85\x81\x10\x15b\0\x04\rW\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01b\0\x03\xF2V[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[`\x80Q`\xA0Q`\xC0Qa\r\x8Fb\0\x04M_9_a\x04\xCF\x01R_a\x04\x9A\x01R_a\x01Y\x01Ra\r\x8F_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0\xE5W_5`\xE0\x1C\x80ca\xF4\x9E\xD6\x11a\0\x88W\x80c\x95\xD8\x9BA\x11a\0cW\x80c\x95\xD8\x9BA\x14a\x01\xFBW\x80c\xA9\x05\x9C\xBB\x14a\x02\x03W\x80c\xD5\x05\xAC\xCF\x14a\x02\x16W\x80c\xDDb\xED>\x14a\x02)W_\x80\xFD[\x80ca\xF4\x9E\xD6\x14a\x01\xAAW\x80cp\xA0\x821\x14a\x01\xBDW\x80c~\xCE\xBE\0\x14a\x01\xDCW_\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC3W\x80c#\xB8r\xDD\x14a\x01AW\x80c1<\xE5g\x14a\x01TW\x80c6D\xE5\x15\x14a\x01\x8DW\x80c@\xC1\x0F\x19\x14a\x01\x95W_\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xE9W\x80c\t^\xA7\xB3\x14a\x01\x07W\x80c\x18\x16\r\xDD\x14a\x01*W[_\x80\xFD[a\0\xF1a\x02SV[`@Qa\0\xFE\x91\x90a\n/V[`@Q\x80\x91\x03\x90\xF3[a\x01\x1Aa\x01\x156`\x04a\n\xC1V[a\x02\xDEV[`@Q\x90\x15\x15\x81R` \x01a\0\xFEV[a\x013`\x02T\x81V[`@Q\x90\x81R` \x01a\0\xFEV[a\x01\x1Aa\x01O6`\x04a\n\xE9V[a\x03WV[a\x01{\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\0\xFEV[a\x013a\x04\x97V[a\x01\xA8a\x01\xA36`\x04a\n\xC1V[a\x04\xF1V[\0[a\x01\x1Aa\x01\xB86`\x04a\n\xE9V[a\x04\xFFV[a\x013a\x01\xCB6`\x04a\x0B\"V[`\x03` R_\x90\x81R`@\x90 T\x81V[a\x013a\x01\xEA6`\x04a\x0B\"V[`\x05` R_\x90\x81R`@\x90 T\x81V[a\0\xF1a\x05sV[a\x01\x1Aa\x02\x116`\x04a\n\xC1V[a\x05\x80V[a\x01\xA8a\x02$6`\x04a\x0BBV[a\x06\x03V[a\x013a\x0276`\x04a\x0B\xAFV[`\x04` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[_\x80Ta\x02_\x90a\x0B\xE0V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\x8B\x90a\x0B\xE0V[\x80\x15a\x02\xD6W\x80`\x1F\x10a\x02\xADWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xD6V[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xB9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3_\x81\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x03E\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x03\xE9Wa\x03\xB8\x83\x82a\x0C^V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x04\x1D\x90\x84\x90a\x0C^V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16_\x81\x81R`\x03` R`@\x90\x81\x90 \x80T\x87\x01\x90UQ\x90\x91\x87\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x04\x84\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14a\x04\xCCWa\x04\xC7a\t!V[\x90P\x90V[P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[a\x04\xFB\x82\x82a\t\xB9V[PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16_\x81\x81R`\x04` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x80\x83 \x86\x90UQ\x85\x81R\x91\x93\x92\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3P`\x01\x93\x92PPPV[`\x01\x80Ta\x02_\x90a\x0B\xE0V[3_\x90\x81R`\x03` R`@\x81 \x80T\x83\x91\x90\x83\x90a\x05\xA0\x90\x84\x90a\x0C^V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x81\x81R`\x03` R`@\x90\x81\x90 \x80T\x85\x01\x90UQ3\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x03E\x90\x86\x81R` \x01\x90V[B\x84\x10\x15a\x06rW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_`\x01a\x06}a\x04\x97V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8A\x81\x16_\x81\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x80T`\x01\x81\x01\x90\x91U\x82Q\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x81\x84\x01R\x80\x84\x01\x94\x90\x94R\x93\x8D\x16``\x84\x01R`\x80\x83\x01\x8C\x90R`\xA0\x83\x01\x93\x90\x93R`\xC0\x80\x83\x01\x8B\x90R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xE0\x83\x01\x90\x91R\x80Q\x92\x01\x91\x90\x91 \x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x01\0\x83\x01Ra\x01\x02\x82\x01\x92\x90\x92Ra\x01\"\x81\x01\x91\x90\x91Ra\x01B\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 _\x84R\x90\x83\x01\x80\x83RR`\xFF\x87\x16\x90\x82\x01R``\x81\x01\x85\x90R`\x80\x81\x01\x84\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x07\xCBW=_\x80>=_\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\x08FWP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\x08\xACW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06iV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F_`@Qa\tQ\x91\x90a\x0CqV[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[\x80`\x02_\x82\x82Ta\t\xCA\x91\x90a\rFV[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[_` \x80\x83R\x83Q\x80` \x85\x01R_[\x81\x81\x10\x15a\n[W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\n?V[P_`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\n\xBCW_\x80\xFD[\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\n\xD2W_\x80\xFD[a\n\xDB\x83a\n\x99V[\x94` \x93\x90\x93\x015\x93PPPV[_\x80_``\x84\x86\x03\x12\x15a\n\xFBW_\x80\xFD[a\x0B\x04\x84a\n\x99V[\x92Pa\x0B\x12` \x85\x01a\n\x99V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x0B2W_\x80\xFD[a\x0B;\x82a\n\x99V[\x93\x92PPPV[_\x80_\x80_\x80_`\xE0\x88\x8A\x03\x12\x15a\x0BXW_\x80\xFD[a\x0Ba\x88a\n\x99V[\x96Pa\x0Bo` \x89\x01a\n\x99V[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\x0B\x92W_\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[_\x80`@\x83\x85\x03\x12\x15a\x0B\xC0W_\x80\xFD[a\x0B\xC9\x83a\n\x99V[\x91Pa\x0B\xD7` \x84\x01a\n\x99V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0B\xF4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0C+W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x03QWa\x03Qa\x0C1V[_\x80\x83T_`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0C\x8EW`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0C\xC6W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[\x81\x80\x15a\x0C\xDAW`\x01\x81\x14a\r\rWa\r8V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\r8V[_\x8A\x81R` \x90 _[\x86\x81\x10\x15a\r0W\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\r\x17V[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x03QWa\x03Qa\x0C1V\xFE\xA2dipfsX\"\x12 m?\x9F4\x04U$1\x9A\x90\x180\xF08.*n*/)\\\x0B\r~\xFB\xA4A\xA6.X\xFD@dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806361f49ed61161008c57806395d89b411161006657806395d89b4114610203578063a9059cbb1461020b578063d505accf1461021e578063dd62ed3e1461023157600080fd5b806361f49ed6146101b057806370a08231146101c35780637ecebe00146101e357600080fd5b806323b872dd116100c857806323b872dd14610147578063313ce5671461015a5780633644e5151461019357806340c10f191461019b57600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761025c565b6040516101049190610a4e565b60405180910390f35b61012061011b366004610ae4565b6102ea565b6040519015158152602001610104565b61013960025481565b604051908152602001610104565b610120610155366004610b0e565b610364565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610104565b6101396104a8565b6101ae6101a9366004610ae4565b610503565b005b6101206101be366004610b0e565b610511565b6101396101d1366004610b4a565b60036020526000908152604090205481565b6101396101f1366004610b4a565b60056020526000908152604090205481565b6100f7610586565b610120610219366004610ae4565b610593565b6101ae61022c366004610b6c565b610618565b61013961023f366004610bdf565b600460209081526000928352604080842090915290825290205481565b6000805461026990610c12565b80601f016020809104026020016040519081016040528092919081815260200182805461029590610c12565b80156102e25780601f106102b7576101008083540402835291602001916102e2565b820191906000526020600020905b8154815290600101906020018083116102c557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103529086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103f8576103c68382610c94565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260408120805485929061042d908490610c94565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104959087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104de576104d961093c565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b61050d82826109d6565b5050565b73ffffffffffffffffffffffffffffffffffffffff838116600081815260046020908152604080832094871680845294825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6001805461026990610c12565b336000908152600360205260408120805483919083906105b4908490610c94565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103529086815260200190565b42841015610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b600060016106936104a8565b73ffffffffffffffffffffffffffffffffffffffff8a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156107e5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061086057508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e4552000000000000000000000000000000000000604482015260640161067e565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161096e9190610ca7565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546109e89190610d7f565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006020808352835180602085015260005b81811015610a7c57858101830151858201604001528201610a60565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610adf57600080fd5b919050565b60008060408385031215610af757600080fd5b610b0083610abb565b946020939093013593505050565b600080600060608486031215610b2357600080fd5b610b2c84610abb565b9250610b3a60208501610abb565b9150604084013590509250925092565b600060208284031215610b5c57600080fd5b610b6582610abb565b9392505050565b600080600080600080600060e0888a031215610b8757600080fd5b610b9088610abb565b9650610b9e60208901610abb565b95506040880135945060608801359350608088013560ff81168114610bc257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610bf257600080fd5b610bfb83610abb565b9150610c0960208401610abb565b90509250929050565b600181811c90821680610c2657607f821691505b602082108103610c5f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561035e5761035e610c65565b60008083548160018260011c91506001831680610cc557607f831692505b60208084108203610cfd577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015610d115760018114610d4457610d71565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610d71565b60008a81526020902060005b86811015610d695781548b820152908501908301610d50565b505084890196505b509498975050505050505050565b8082018082111561035e5761035e610c6556fea2646970667358221220ec21b1b1a52f607978c931fa67a27c863050b1f3891df7934f090dc04515ec5464736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806361f49ed61161008857806395d89b411161006357806395d89b41146101fb578063a9059cbb14610203578063d505accf14610216578063dd62ed3e14610229575f80fd5b806361f49ed6146101aa57806370a08231146101bd5780637ecebe00146101dc575f80fd5b806323b872dd116100c357806323b872dd14610141578063313ce567146101545780633644e5151461018d57806340c10f1914610195575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610253565b6040516100fe9190610a2f565b60405180910390f35b61011a610115366004610ac1565b6102de565b60405190151581526020016100fe565b61013360025481565b6040519081526020016100fe565b61011a61014f366004610ae9565b610357565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100fe565b610133610497565b6101a86101a3366004610ac1565b6104f1565b005b61011a6101b8366004610ae9565b6104ff565b6101336101cb366004610b22565b60036020525f908152604090205481565b6101336101ea366004610b22565b60056020525f908152604090205481565b6100f1610573565b61011a610211366004610ac1565b610580565b6101a8610224366004610b42565b610603565b610133610237366004610baf565b600460209081525f928352604080842090915290825290205481565b5f805461025f90610be0565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610be0565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b505050505081565b335f81815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103459086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103e9576103b88382610c5e565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260408120805485929061041d908490610c5e565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104849087815260200190565b60405180910390a3506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146104cc576104c7610921565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6104fb82826109b9565b5050565b73ffffffffffffffffffffffffffffffffffffffff8381165f81815260046020908152604080832094871680845294825280832086905551858152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060019392505050565b6001805461025f90610be0565b335f908152600360205260408120805483919083906105a0908490610c5e565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103459086815260200190565b42841015610672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f600161067d610497565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156107cb573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061084657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610669565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516109519190610c71565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546109ca9190610d46565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5f602080835283518060208501525f5b81811015610a5b57858101830151858201604001528201610a3f565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610abc575f80fd5b919050565b5f8060408385031215610ad2575f80fd5b610adb83610a99565b946020939093013593505050565b5f805f60608486031215610afb575f80fd5b610b0484610a99565b9250610b1260208501610a99565b9150604084013590509250925092565b5f60208284031215610b32575f80fd5b610b3b82610a99565b9392505050565b5f805f805f805f60e0888a031215610b58575f80fd5b610b6188610a99565b9650610b6f60208901610a99565b95506040880135945060608801359350608088013560ff81168114610b92575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610bc0575f80fd5b610bc983610a99565b9150610bd760208401610a99565b90509250929050565b600181811c90821680610bf457607f821691505b602082108103610c2b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561035157610351610c31565b5f8083545f60018260011c91506001831680610c8e57607f831692505b60208084108203610cc6577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015610cda5760018114610d0d57610d38565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610d38565b5f8a8152602090205f5b86811015610d305781548b820152908501908301610d17565b505084890196505b509498975050505050505050565b8082018082111561035157610351610c3156fea26469706673582212206d3f9f34045524319a901830f0382e2a6e2a2f295c0b0d7efba441a62e58fd4064736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80ca\xF4\x9E\xD6\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x02\x03W\x80c\xA9\x05\x9C\xBB\x14a\x02\x0BW\x80c\xD5\x05\xAC\xCF\x14a\x02\x1EW\x80c\xDDb\xED>\x14a\x021W`\0\x80\xFD[\x80ca\xF4\x9E\xD6\x14a\x01\xB0W\x80cp\xA0\x821\x14a\x01\xC3W\x80c~\xCE\xBE\0\x14a\x01\xE3W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC8W\x80c#\xB8r\xDD\x14a\x01GW\x80c1<\xE5g\x14a\x01ZW\x80c6D\xE5\x15\x14a\x01\x93W\x80c@\xC1\x0F\x19\x14a\x01\x9BW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\rW\x80c\x18\x16\r\xDD\x14a\x010W[`\0\x80\xFD[a\0\xF7a\x02\\V[`@Qa\x01\x04\x91\x90a\nNV[`@Q\x80\x91\x03\x90\xF3[a\x01 a\x01\x1B6`\x04a\n\xE4V[a\x02\xEAV[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[a\x019`\x02T\x81V[`@Q\x90\x81R` \x01a\x01\x04V[a\x01 a\x01U6`\x04a\x0B\x0EV[a\x03dV[a\x01\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x01\x04V[a\x019a\x04\xA8V[a\x01\xAEa\x01\xA96`\x04a\n\xE4V[a\x05\x03V[\0[a\x01 a\x01\xBE6`\x04a\x0B\x0EV[a\x05\x11V[a\x019a\x01\xD16`\x04a\x0BJV[`\x03` R`\0\x90\x81R`@\x90 T\x81V[a\x019a\x01\xF16`\x04a\x0BJV[`\x05` R`\0\x90\x81R`@\x90 T\x81V[a\0\xF7a\x05\x86V[a\x01 a\x02\x196`\x04a\n\xE4V[a\x05\x93V[a\x01\xAEa\x02,6`\x04a\x0BlV[a\x06\x18V[a\x019a\x02?6`\x04a\x0B\xDFV[`\x04` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`\0\x80Ta\x02i\x90a\x0C\x12V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\x95\x90a\x0C\x12V[\x80\x15a\x02\xE2W\x80`\x1F\x10a\x02\xB7Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xE2V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xC5W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x81\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x03R\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x03\xF8Wa\x03\xC6\x83\x82a\x0C\x94V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x04-\x90\x84\x90a\x0C\x94V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16`\0\x81\x81R`\x03` R`@\x90\x81\x90 \x80T\x87\x01\x90UQ\x90\x91\x87\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x04\x95\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[`\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14a\x04\xDEWa\x04\xD9a\t=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\x08`WP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\x08\xC6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06~V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\tn\x91\x90a\x0C\xA7V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[\x80`\x02`\0\x82\x82Ta\t\xE8\x91\x90a\r\x7FV[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\n|W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\n`V[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\n\xDFW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\n\xF7W`\0\x80\xFD[a\x0B\0\x83a\n\xBBV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B#W`\0\x80\xFD[a\x0B,\x84a\n\xBBV[\x92Pa\x0B:` \x85\x01a\n\xBBV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x0B\\W`\0\x80\xFD[a\x0Be\x82a\n\xBBV[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\x0B\x87W`\0\x80\xFD[a\x0B\x90\x88a\n\xBBV[\x96Pa\x0B\x9E` \x89\x01a\n\xBBV[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\x0B\xC2W`\0\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xF2W`\0\x80\xFD[a\x0B\xFB\x83a\n\xBBV[\x91Pa\x0C\t` \x84\x01a\n\xBBV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C&W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0C_W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x03^Wa\x03^a\x0CeV[`\0\x80\x83T\x81`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0C\xC5W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0C\xFDW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\"`\x04R`$\x86\xFD[\x81\x80\x15a\r\x11W`\x01\x81\x14a\rDWa\rqV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\rqV[`\0\x8A\x81R` \x90 `\0[\x86\x81\x10\x15a\riW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\rPV[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x03^Wa\x03^a\x0CeV\xFE\xA2dipfsX\"\x12 \xEC!\xB1\xB1\xA5/`yx\xC91\xFAg\xA2|\x860P\xB1\xF3\x89\x1D\xF7\x93O\t\r\xC0E\x15\xECTdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0\xE5W_5`\xE0\x1C\x80ca\xF4\x9E\xD6\x11a\0\x88W\x80c\x95\xD8\x9BA\x11a\0cW\x80c\x95\xD8\x9BA\x14a\x01\xFBW\x80c\xA9\x05\x9C\xBB\x14a\x02\x03W\x80c\xD5\x05\xAC\xCF\x14a\x02\x16W\x80c\xDDb\xED>\x14a\x02)W_\x80\xFD[\x80ca\xF4\x9E\xD6\x14a\x01\xAAW\x80cp\xA0\x821\x14a\x01\xBDW\x80c~\xCE\xBE\0\x14a\x01\xDCW_\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC3W\x80c#\xB8r\xDD\x14a\x01AW\x80c1<\xE5g\x14a\x01TW\x80c6D\xE5\x15\x14a\x01\x8DW\x80c@\xC1\x0F\x19\x14a\x01\x95W_\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xE9W\x80c\t^\xA7\xB3\x14a\x01\x07W\x80c\x18\x16\r\xDD\x14a\x01*W[_\x80\xFD[a\0\xF1a\x02SV[`@Qa\0\xFE\x91\x90a\n/V[`@Q\x80\x91\x03\x90\xF3[a\x01\x1Aa\x01\x156`\x04a\n\xC1V[a\x02\xDEV[`@Q\x90\x15\x15\x81R` \x01a\0\xFEV[a\x013`\x02T\x81V[`@Q\x90\x81R` \x01a\0\xFEV[a\x01\x1Aa\x01O6`\x04a\n\xE9V[a\x03WV[a\x01{\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\0\xFEV[a\x013a\x04\x97V[a\x01\xA8a\x01\xA36`\x04a\n\xC1V[a\x04\xF1V[\0[a\x01\x1Aa\x01\xB86`\x04a\n\xE9V[a\x04\xFFV[a\x013a\x01\xCB6`\x04a\x0B\"V[`\x03` R_\x90\x81R`@\x90 T\x81V[a\x013a\x01\xEA6`\x04a\x0B\"V[`\x05` R_\x90\x81R`@\x90 T\x81V[a\0\xF1a\x05sV[a\x01\x1Aa\x02\x116`\x04a\n\xC1V[a\x05\x80V[a\x01\xA8a\x02$6`\x04a\x0BBV[a\x06\x03V[a\x013a\x0276`\x04a\x0B\xAFV[`\x04` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[_\x80Ta\x02_\x90a\x0B\xE0V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\x8B\x90a\x0B\xE0V[\x80\x15a\x02\xD6W\x80`\x1F\x10a\x02\xADWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\xD6V[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\xB9W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3_\x81\x81R`\x04` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x03E\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x14a\x03\xE9Wa\x03\xB8\x83\x82a\x0C^V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16_\x90\x81R`\x03` R`@\x81 \x80T\x85\x92\x90a\x04\x1D\x90\x84\x90a\x0C^V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16_\x81\x81R`\x03` R`@\x90\x81\x90 \x80T\x87\x01\x90UQ\x90\x91\x87\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x04\x84\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[_\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x14a\x04\xCCWa\x04\xC7a\t!V[\x90P\x90V[P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90V[a\x04\xFB\x82\x82a\t\xB9V[PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16_\x81\x81R`\x04` \x90\x81R`@\x80\x83 \x94\x87\x16\x80\x84R\x94\x82R\x80\x83 \x86\x90UQ\x85\x81R\x91\x93\x92\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3P`\x01\x93\x92PPPV[`\x01\x80Ta\x02_\x90a\x0B\xE0V[3_\x90\x81R`\x03` R`@\x81 \x80T\x83\x91\x90\x83\x90a\x05\xA0\x90\x84\x90a\x0C^V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x81\x81R`\x03` R`@\x90\x81\x90 \x80T\x85\x01\x90UQ3\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x03E\x90\x86\x81R` \x01\x90V[B\x84\x10\x15a\x06rW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_`\x01a\x06}a\x04\x97V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x8A\x81\x16_\x81\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x80T`\x01\x81\x01\x90\x91U\x82Q\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x81\x84\x01R\x80\x84\x01\x94\x90\x94R\x93\x8D\x16``\x84\x01R`\x80\x83\x01\x8C\x90R`\xA0\x83\x01\x93\x90\x93R`\xC0\x80\x83\x01\x8B\x90R\x81Q\x80\x84\x03\x90\x91\x01\x81R`\xE0\x83\x01\x90\x91R\x80Q\x92\x01\x91\x90\x91 \x7F\x19\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x01\0\x83\x01Ra\x01\x02\x82\x01\x92\x90\x92Ra\x01\"\x81\x01\x91\x90\x91Ra\x01B\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 _\x84R\x90\x83\x01\x80\x83RR`\xFF\x87\x16\x90\x82\x01R``\x81\x01\x85\x90R`\x80\x81\x01\x84\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x07\xCBW=_\x80>=_\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\x08FWP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\x08\xACW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06iV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F_`@Qa\tQ\x91\x90a\x0CqV[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[\x80`\x02_\x82\x82Ta\t\xCA\x91\x90a\rFV[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[_` \x80\x83R\x83Q\x80` \x85\x01R_[\x81\x81\x10\x15a\n[W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\n?V[P_`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\n\xBCW_\x80\xFD[\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\n\xD2W_\x80\xFD[a\n\xDB\x83a\n\x99V[\x94` \x93\x90\x93\x015\x93PPPV[_\x80_``\x84\x86\x03\x12\x15a\n\xFBW_\x80\xFD[a\x0B\x04\x84a\n\x99V[\x92Pa\x0B\x12` \x85\x01a\n\x99V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x0B2W_\x80\xFD[a\x0B;\x82a\n\x99V[\x93\x92PPPV[_\x80_\x80_\x80_`\xE0\x88\x8A\x03\x12\x15a\x0BXW_\x80\xFD[a\x0Ba\x88a\n\x99V[\x96Pa\x0Bo` \x89\x01a\n\x99V[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\x0B\x92W_\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[_\x80`@\x83\x85\x03\x12\x15a\x0B\xC0W_\x80\xFD[a\x0B\xC9\x83a\n\x99V[\x91Pa\x0B\xD7` \x84\x01a\n\x99V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0B\xF4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0C+W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x03QWa\x03Qa\x0C1V[_\x80\x83T_`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0C\x8EW`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0C\xC6W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[\x81\x80\x15a\x0C\xDAW`\x01\x81\x14a\r\rWa\r8V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\r8V[_\x8A\x81R` \x90 _[\x86\x81\x10\x15a\r0W\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\r\x17V[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x03QWa\x03Qa\x0C1V\xFE\xA2dipfsX\"\x12 m?\x9F4\x04U$1\x9A\x90\x180\xF08.*n*/)\\\x0B\r~\xFB\xA4A\xA6.X\xFD@dsolcC\0\x08\x18\x003", ); /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. ```solidity event Approval(address indexed owner, address indexed spender, uint256 amount); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -431,9 +442,14 @@ event Approval(address indexed owner, address indexed spender, uint256 amount); #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub amount: alloy::sol_types::private::U256, + pub amount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -496,6 +512,21 @@ event Approval(address indexed owner, address indexed spender, uint256 amount); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( , } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -878,19 +943,27 @@ function DOMAIN_SEPARATOR() external view returns (bytes32); ```solidity function allowance(address, address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _1: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`allowance(address,address)`](allowanceCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -934,7 +1007,9 @@ function allowance(address, address) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1010,19 +1085,27 @@ function allowance(address, address) external view returns (uint256); ```solidity function approve(address spender, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveCall { + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1034,7 +1117,7 @@ function approve(address spender, uint256 amount) external returns (bool); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1145,18 +1228,25 @@ function approve(address spender, uint256 amount) external returns (bool); ```solidity function balanceOf(address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1194,7 +1284,9 @@ function balanceOf(address) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1264,16 +1356,22 @@ function balanceOf(address) external view returns (uint256); ```solidity function decimals() external view returns (uint8); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsCall {} ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsReturn { + #[allow(missing_docs)] pub _0: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1377,20 +1475,29 @@ function decimals() external view returns (uint8); ```solidity function forceApprove(address _from, address _to, uint256 _amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct forceApproveCall { + #[allow(missing_docs)] pub _from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, - pub _amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`forceApprove(address,address,uint256)`](forceApproveCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct forceApproveReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1404,7 +1511,7 @@ function forceApprove(address _from, address _to, uint256 _amount) external retu type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1520,17 +1627,24 @@ function forceApprove(address _from, address _to, uint256 _amount) external retu ```solidity function mint(address _to, uint256 _amount) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct mintCall { + #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, - pub _amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`mint(address,uint256)`](mintCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct mintReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1542,7 +1656,7 @@ function mint(address _to, uint256 _amount) external; #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1653,16 +1767,22 @@ function mint(address _to, uint256 _amount) external; ```solidity function name() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameCall {} ///Container type for the return parameters of the [`name()`](nameCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1766,18 +1886,25 @@ function name() external view returns (string memory); ```solidity function nonces(address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct noncesCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`nonces(address)`](noncesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct noncesReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1815,7 +1942,9 @@ function nonces(address) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1885,22 +2014,34 @@ function nonces(address) external view returns (uint256); ```solidity function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitCall { + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub value: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub v: u8, + #[allow(missing_docs)] pub r: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] pub s: alloy::sol_types::private::FixedBytes<32>, } ///Container type for the return parameters of the [`permit(address,address,uint256,uint256,uint8,bytes32,bytes32)`](permitCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1918,8 +2059,8 @@ function permit(address owner, address spender, uint256 value, uint256 deadline, type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, u8, alloy::sol_types::private::FixedBytes<32>, alloy::sol_types::private::FixedBytes<32>, @@ -2066,16 +2207,22 @@ function permit(address owner, address spender, uint256 value, uint256 deadline, ```solidity function symbol() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolCall {} ///Container type for the return parameters of the [`symbol()`](symbolCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2179,16 +2326,22 @@ function symbol() external view returns (string memory); ```solidity function totalSupply() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyCall {} ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2226,7 +2379,9 @@ function totalSupply() external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -2292,19 +2447,27 @@ function totalSupply() external view returns (uint256); ```solidity function transfer(address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferCall { + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`transfer(address,uint256)`](transferCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2316,7 +2479,7 @@ function transfer(address to, uint256 amount) external returns (bool); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2427,20 +2590,29 @@ function transfer(address to, uint256 amount) external returns (bool); ```solidity function transferFrom(address from, address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { + #[allow(missing_docs)] pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2454,7 +2626,7 @@ function transferFrom(address from, address to, uint256 amount) external returns type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2568,19 +2740,33 @@ function transferFrom(address from, address to, uint256 amount) external returns }; ///Container for all the [`MockERC20`](self) function calls. pub enum MockERC20Calls { + #[allow(missing_docs)] DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + #[allow(missing_docs)] allowance(allowanceCall), + #[allow(missing_docs)] approve(approveCall), + #[allow(missing_docs)] balanceOf(balanceOfCall), + #[allow(missing_docs)] decimals(decimalsCall), + #[allow(missing_docs)] forceApprove(forceApproveCall), + #[allow(missing_docs)] mint(mintCall), + #[allow(missing_docs)] name(nameCall), + #[allow(missing_docs)] nonces(noncesCall), + #[allow(missing_docs)] permit(permitCall), + #[allow(missing_docs)] symbol(symbolCall), + #[allow(missing_docs)] totalSupply(totalSupplyCall), + #[allow(missing_docs)] transfer(transferCall), + #[allow(missing_docs)] transferFrom(transferFromCall), } #[automatically_derived] @@ -2653,7 +2839,7 @@ function transferFrom(address from, address to, uint256 amount) external returns Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2854,7 +3040,7 @@ function transferFrom(address from, address to, uint256 amount) external returns ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2985,7 +3171,9 @@ function transferFrom(address from, address to, uint256 amount) external returns } ///Container for all the [`MockERC20`](self) events. pub enum MockERC20Events { + #[allow(missing_docs)] Approval(Approval), + #[allow(missing_docs)] Transfer(Transfer), } #[automatically_derived] @@ -3339,7 +3527,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn approve( &self, spender: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&approveCall { spender, amount }) } @@ -3361,7 +3549,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, _from: alloy::sol_types::private::Address, _to: alloy::sol_types::private::Address, - _amount: alloy::sol_types::private::U256, + _amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &forceApproveCall { @@ -3375,7 +3563,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn mint( &self, _to: alloy::sol_types::private::Address, - _amount: alloy::sol_types::private::U256, + _amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&mintCall { _to, _amount }) } @@ -3395,8 +3583,8 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, owner: alloy::sol_types::private::Address, spender: alloy::sol_types::private::Address, - value: alloy::sol_types::private::U256, - deadline: alloy::sol_types::private::U256, + value: alloy::sol_types::private::primitives::aliases::U256, + deadline: alloy::sol_types::private::primitives::aliases::U256, v: u8, r: alloy::sol_types::private::FixedBytes<32>, s: alloy::sol_types::private::FixedBytes<32>, @@ -3427,7 +3615,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn transfer( &self, to: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&transferCall { to, amount }) } @@ -3436,7 +3624,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, from: alloy::sol_types::private::Address, to: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &transferFromCall { diff --git a/crates/bindings-uniswapx/src/mockerc721.rs b/crates/bindings-uniswapx/src/mockerc721.rs index eae70a6..c691b3c 100644 --- a/crates/bindings-uniswapx/src/mockerc721.rs +++ b/crates/bindings-uniswapx/src/mockerc721.rs @@ -377,35 +377,46 @@ interface MockERC721 { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockERC721 { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b5061149f806100206000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611040565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110a4565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110bf565b610c16565b6101b461028d3660046110fb565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611177565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111aa565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111aa565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f58361122c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b83611261565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190611299565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a918382611306565b506001610a9e8282611306565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111aa565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611420565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190611299565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115610fa757610fa7610f5d565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610fed57610fed610f5d565b8160405280935085815286868601111561100657600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261103157600080fd5b610e3c83833560208501610f8c565b6000806040838503121561105357600080fd5b823567ffffffffffffffff8082111561106b57600080fd5b61107786838701611020565b9350602085013591508082111561108d57600080fd5b5061109a85828601611020565b9150509250929050565b6000602082840312156110b657600080fd5b610e3c82610ed3565b600080604083850312156110d257600080fd5b6110db83610ed3565b9150602083013580151581146110f057600080fd5b809150509250929050565b6000806000806080858703121561111157600080fd5b61111a85610ed3565b935061112860208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561114b57600080fd5b8501601f8101871361115c57600080fd5b61116b87823560208401610f8c565b91505092959194509250565b6000806040838503121561118a57600080fd5b61119383610ed3565b91506111a160208401610ed3565b90509250929050565b600181811c908216806111be57607f821691505b6020821081036111f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161123b5761123b6111fd565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611292576112926111fd565b5060010190565b6000602082840312156112ab57600080fd5b8151610e3c81610dee565b601f821115610a13576000816000526020600020601f850160051c810160208610156112df5750805b601f850160051c820191505b818110156112fe578281556001016112eb565b505050505050565b815167ffffffffffffffff81111561132057611320610f5d565b6113348161132e84546111aa565b846112b6565b602080601f83116001811461138757600084156113515750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556112fe565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156113d4578886015182559484019460019091019084016113b5565b508582101561141057878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261145f6080830184610e43565b969550505050505056fea26469706673582212207b5268e63263aff1f3750d4f8e9f032fe153bd56f1fa0107dc1665d715b3b5bf64736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506114438061001d5f395ff3fe6080604052600436106100d9575f3560e01c80636352211e1161007c578063a22cb46511610057578063a22cb46514610252578063b88d4fde14610271578063c87b56dd14610284578063e985e9c5146102a4575f80fd5b80636352211e146101f257806370a082311461021157806395d89b411461023e575f80fd5b8063095ea7b3116100b7578063095ea7b31461019857806323b872dd146101ad57806342842e0e146101c05780634cd88b76146101d3575f80fd5b806301ffc9a7146100dd57806306fdde0314610111578063081812fc14610132575b5f80fd5b3480156100e8575f80fd5b506100fc6100f7366004610df4565b6102f8565b60405190151581526020015b60405180910390f35b34801561011c575f80fd5b506101256103dc565b6040516101089190610e77565b34801561013d575f80fd5b5061017361014c366004610e89565b5f9081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610108565b6101ab6101a6366004610ec3565b61046b565b005b6101ab6101bb366004610eeb565b6105b7565b6101ab6101ce366004610eeb565b6108a6565b3480156101de575f80fd5b506101ab6101ed366004611000565b6109f6565b3480156101fd575f80fd5b5061017361020c366004610e89565b610aab565b34801561021c575f80fd5b5061023061022b366004611060565b610b3b565b604051908152602001610108565b348015610249575f80fd5b50610125610be1565b34801561025d575f80fd5b506101ab61026c366004611079565b610bf0565b6101ab61027f3660046110b2565b610c86565b34801561028f575f80fd5b5061012561029e366004610e89565b50606090565b3480156102af575f80fd5b506100fc6102be366004611129565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061038a57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103d657507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60605f80546103ea9061115a565b80601f01602080910402602001604051908101604052809291908181526020018280546104169061115a565b80156104615780601f1061043857610100808354040283529160200191610461565b820191905f5260205f20905b81548152906001019060200180831161044457829003601f168201915b5050505050905090565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104cc575073ffffffffffffffffffffffffffffffffffffffff81165f90815260056020908152604080832033845290915290205460ff165b610537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b5f8281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff848116911614610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d00000000000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff82166106c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e54000000000000000000000000000000604482015260640161052e565b3373ffffffffffffffffffffffffffffffffffffffff84161480610716575073ffffffffffffffffffffffffffffffffffffffff83165f90815260056020908152604080832033845290915290205460ff165b8061074357505f8181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526003602052604081208054916107d9836111d8565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f90815260036020526040812080549161080e8361120c565b90915550505f818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108b18383836105b7565b813b158061098b57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610943573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109679190611243565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b6109f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161052e565b505050565b60065460ff1615610a63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a454400000000000000000000000000604482015260640161052e565b5f610a6e83826112a9565b506001610a7b82826112a9565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e54454400000000000000000000000000000000000000000000604482015260640161052e565b919050565b5f73ffffffffffffffffffffffffffffffffffffffff8216610bb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015260640161052e565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b6060600180546103ea9061115a565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610c918484846105b7565b823b1580610d5857506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610cf49033908990889088906004016113c5565b6020604051808303815f875af1158015610d10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d349190611243565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161052e565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610df1575f80fd5b50565b5f60208284031215610e04575f80fd5b8135610e0f81610dc4565b9392505050565b5f81518084525f5b81811015610e3a57602081850181015186830182015201610e1e565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610e0f6020830184610e16565b5f60208284031215610e99575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b36575f80fd5b5f8060408385031215610ed4575f80fd5b610edd83610ea0565b946020939093013593505050565b5f805f60608486031215610efd575f80fd5b610f0684610ea0565b9250610f1460208501610ea0565b9150604084013590509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f67ffffffffffffffff80841115610f6b57610f6b610f24565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610fb157610fb1610f24565b81604052809350858152868686011115610fc9575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112610ff1575f80fd5b610e0f83833560208501610f51565b5f8060408385031215611011575f80fd5b823567ffffffffffffffff80821115611028575f80fd5b61103486838701610fe2565b93506020850135915080821115611049575f80fd5b5061105685828601610fe2565b9150509250929050565b5f60208284031215611070575f80fd5b610e0f82610ea0565b5f806040838503121561108a575f80fd5b61109383610ea0565b9150602083013580151581146110a7575f80fd5b809150509250929050565b5f805f80608085870312156110c5575f80fd5b6110ce85610ea0565b93506110dc60208601610ea0565b925060408501359150606085013567ffffffffffffffff8111156110fe575f80fd5b8501601f8101871361110e575f80fd5b61111d87823560208401610f51565b91505092959194509250565b5f806040838503121561113a575f80fd5b61114383610ea0565b915061115160208401610ea0565b90509250929050565b600181811c9082168061116e57607f821691505b6020821081036111a5577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f816111e6576111e66111ab565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361123c5761123c6111ab565b5060010190565b5f60208284031215611253575f80fd5b8151610e0f81610dc4565b601f8211156109f157805f5260205f20601f840160051c810160208510156112835750805b601f840160051c820191505b818110156112a2575f815560010161128f565b5050505050565b815167ffffffffffffffff8111156112c3576112c3610f24565b6112d7816112d1845461115a565b8461125e565b602080601f831160018114611329575f84156112f35750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556113bd565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561137557888601518255948401946001909101908401611356565b50858210156113b157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526114036080830184610e16565b969550505050505056fea2646970667358221220efe241dbbf37d465e9aa785f6e42ee11373e9d827fea48b735aab651f993332664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x14\x9F\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xDDW`\x005`\xE0\x1C\x80ccR!\x1E\x11a\0\x7FW\x80c\xA2,\xB4e\x11a\0YW\x80c\xA2,\xB4e\x14a\x02_W\x80c\xB8\x8DO\xDE\x14a\x02\x7FW\x80c\xC8{V\xDD\x14a\x02\x92W\x80c\xE9\x85\xE9\xC5\x14a\x02\xB3W`\0\x80\xFD[\x80ccR!\x1E\x14a\x01\xFCW\x80cp\xA0\x821\x14a\x02\x1CW\x80c\x95\xD8\x9BA\x14a\x02JW`\0\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xBBW\x80c\t^\xA7\xB3\x14a\x01\xA1W\x80c#\xB8r\xDD\x14a\x01\xB6W\x80cB\x84.\x0E\x14a\x01\xC9W\x80cL\xD8\x8Bv\x14a\x01\xDCW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xE2W\x80c\x06\xFD\xDE\x03\x14a\x01\x17W\x80c\x08\x18\x12\xFC\x14a\x019W[`\0\x80\xFD[4\x80\x15a\0\xEEW`\0\x80\xFD[Pa\x01\x02a\0\xFD6`\x04a\x0E\x1FV[a\x03\tV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01#W`\0\x80\xFD[Pa\x01,a\x03\xEEV[`@Qa\x01\x0E\x91\x90a\x0E\xA7V[4\x80\x15a\x01EW`\0\x80\xFD[Pa\x01|a\x01T6`\x04a\x0E\xBAV[`\0\x90\x81R`\x04` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x0EV[a\x01\xB4a\x01\xAF6`\x04a\x0E\xF7V[a\x04\x80V[\0[a\x01\xB4a\x01\xC46`\x04a\x0F!V[a\x05\xCFV[a\x01\xB4a\x01\xD76`\x04a\x0F!V[a\x08\xC4V[4\x80\x15a\x01\xE8W`\0\x80\xFD[Pa\x01\xB4a\x01\xF76`\x04a\x10@V[a\n\x18V[4\x80\x15a\x02\x08W`\0\x80\xFD[Pa\x01|a\x02\x176`\x04a\x0E\xBAV[a\n\xCEV[4\x80\x15a\x02(W`\0\x80\xFD[Pa\x02=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\x89\x91\x90a\x12\x99V[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\n\x13W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[PPPV[`\x06T`\xFF\x16\x15a\n\x85W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FALREADY_INITIALIZED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[`\0a\n\x91\x83\x82a\x13\x06V[P`\x01a\n\x9E\x82\x82a\x13\x06V[PP`\x06\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UPV[`\0\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x80a\x0BZW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\n`$\x82\x01R\x7FNOT_MINTED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[\x91\x90PV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x0B\xDEW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FZERO_ADDRESS\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[```\x01\x80Ta\x03\xFD\x90a\x11\xAAV[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\x0C\xB8\x84\x84\x84a\x05\xCFV[\x82;\x15\x80a\r\x82WP`@Q\x7F\x15\x0Bz\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x82R\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x15\x0Bz\x02\x90a\r\x1B\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x14 V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\r:W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r^\x91\x90a\x12\x99V[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\r\xE8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[PPPPV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\x0E\x1CW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\x0E1W`\0\x80\xFD[\x815a\x0E<\x81a\r\xEEV[\x93\x92PPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x0EiW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0EMV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R`\0a\x0E<` \x83\x01\x84a\x0ECV[`\0` \x82\x84\x03\x12\x15a\x0E\xCCW`\0\x80\xFD[P5\x91\x90PV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0BZW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0F\nW`\0\x80\xFD[a\x0F\x13\x83a\x0E\xD3V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0F6W`\0\x80\xFD[a\x0F?\x84a\x0E\xD3V[\x92Pa\x0FM` \x85\x01a\x0E\xD3V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x0F\xA7Wa\x0F\xA7a\x0F]V[`@Q`\x1F\x85\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0F\xEDWa\x0F\xEDa\x0F]V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\x06W`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x101W`\0\x80\xFD[a\x0E<\x83\x835` \x85\x01a\x0F\x8CV[`\0\x80`@\x83\x85\x03\x12\x15a\x10SW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x10kW`\0\x80\xFD[a\x10w\x86\x83\x87\x01a\x10 V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x10\x8DW`\0\x80\xFD[Pa\x10\x9A\x85\x82\x86\x01a\x10 V[\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\xB6W`\0\x80\xFD[a\x0E<\x82a\x0E\xD3V[`\0\x80`@\x83\x85\x03\x12\x15a\x10\xD2W`\0\x80\xFD[a\x10\xDB\x83a\x0E\xD3V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x10\xF0W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x11\x11W`\0\x80\xFD[a\x11\x1A\x85a\x0E\xD3V[\x93Pa\x11(` \x86\x01a\x0E\xD3V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11KW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x11\\W`\0\x80\xFD[a\x11k\x87\x825` \x84\x01a\x0F\x8CV[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x8AW`\0\x80\xFD[a\x11\x93\x83a\x0E\xD3V[\x91Pa\x11\xA1` \x84\x01a\x0E\xD3V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x11\xBEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x11\xF7W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[`\0\x81a\x12;Wa\x12;a\x11\xFDV[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x12\x92Wa\x12\x92a\x11\xFDV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x12\xABW`\0\x80\xFD[\x81Qa\x0E<\x81a\r\xEEV[`\x1F\x82\x11\x15a\n\x13W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x12\xDFWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x12\xFEW\x82\x81U`\x01\x01a\x12\xEBV[PPPPPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13 Wa\x13 a\x0F]V[a\x134\x81a\x13.\x84Ta\x11\xAAV[\x84a\x12\xB6V[` \x80`\x1F\x83\x11`\x01\x81\x14a\x13\x87W`\0\x84\x15a\x13QWP\x85\x83\x01Q[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x12\xFEV[`\0\x85\x81R` \x81 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x86\x16\x91[\x82\x81\x10\x15a\x13\xD4W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x13\xB5V[P\x85\x82\x10\x15a\x14\x10W\x87\x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16\x83R\x80\x86\x16` \x84\x01RP\x83`@\x83\x01R`\x80``\x83\x01Ra\x14_`\x80\x83\x01\x84a\x0ECV[\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 {Rh\xE62c\xAF\xF1\xF3u\rO\x8E\x9F\x03/\xE1S\xBDV\xF1\xFA\x01\x07\xDC\x16e\xD7\x15\xB3\xB5\xBFdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x14C\x80a\0\x1D_9_\xF3\xFE`\x80`@R`\x046\x10a\0\xD9W_5`\xE0\x1C\x80ccR!\x1E\x11a\0|W\x80c\xA2,\xB4e\x11a\0WW\x80c\xA2,\xB4e\x14a\x02RW\x80c\xB8\x8DO\xDE\x14a\x02qW\x80c\xC8{V\xDD\x14a\x02\x84W\x80c\xE9\x85\xE9\xC5\x14a\x02\xA4W_\x80\xFD[\x80ccR!\x1E\x14a\x01\xF2W\x80cp\xA0\x821\x14a\x02\x11W\x80c\x95\xD8\x9BA\x14a\x02>W_\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xB7W\x80c\t^\xA7\xB3\x14a\x01\x98W\x80c#\xB8r\xDD\x14a\x01\xADW\x80cB\x84.\x0E\x14a\x01\xC0W\x80cL\xD8\x8Bv\x14a\x01\xD3W_\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xDDW\x80c\x06\xFD\xDE\x03\x14a\x01\x11W\x80c\x08\x18\x12\xFC\x14a\x012W[_\x80\xFD[4\x80\x15a\0\xE8W_\x80\xFD[Pa\0\xFCa\0\xF76`\x04a\r\xF4V[a\x02\xF8V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x1CW_\x80\xFD[Pa\x01%a\x03\xDCV[`@Qa\x01\x08\x91\x90a\x0EwV[4\x80\x15a\x01=W_\x80\xFD[Pa\x01sa\x01L6`\x04a\x0E\x89V[_\x90\x81R`\x04` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x08V[a\x01\xABa\x01\xA66`\x04a\x0E\xC3V[a\x04kV[\0[a\x01\xABa\x01\xBB6`\x04a\x0E\xEBV[a\x05\xB7V[a\x01\xABa\x01\xCE6`\x04a\x0E\xEBV[a\x08\xA6V[4\x80\x15a\x01\xDEW_\x80\xFD[Pa\x01\xABa\x01\xED6`\x04a\x10\0V[a\t\xF6V[4\x80\x15a\x01\xFDW_\x80\xFD[Pa\x01sa\x02\x0C6`\x04a\x0E\x89V[a\n\xABV[4\x80\x15a\x02\x1CW_\x80\xFD[Pa\x020a\x02+6`\x04a\x10`V[a\x0B;V[`@Q\x90\x81R` \x01a\x01\x08V[4\x80\x15a\x02IW_\x80\xFD[Pa\x01%a\x0B\xE1V[4\x80\x15a\x02]W_\x80\xFD[Pa\x01\xABa\x02l6`\x04a\x10yV[a\x0B\xF0V[a\x01\xABa\x02\x7F6`\x04a\x10\xB2V[a\x0C\x86V[4\x80\x15a\x02\x8FW_\x80\xFD[Pa\x01%a\x02\x9E6`\x04a\x0E\x89V[P``\x90V[4\x80\x15a\x02\xAFW_\x80\xFD[Pa\0\xFCa\x02\xBE6`\x04a\x11)V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T`\xFF\x16\x90V[_\x7F\x01\xFF\xC9\xA7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x14\x80a\x03\x8AWP\x7F\x80\xACX\xCD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x14[\x80a\x03\xD6WP\x7F[^\x13\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x14[\x92\x91PPV[``_\x80Ta\x03\xEA\x90a\x11ZV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x16\x90a\x11ZV[\x80\x15a\x04aW\x80`\x1F\x10a\x048Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04aV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x04DW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[_\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x81\x14\x80a\x04\xCCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 T`\xFF\x16[a\x057W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FNOT_AUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_\x82\x81R`\x04` R`@\x80\x82 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x81\x16\x91\x82\x17\x90\x92U\x91Q\x85\x93\x91\x85\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\xA4PPPV[_\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x81\x16\x91\x16\x14a\x06FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\n`$\x82\x01R\x7FWRONG_FROM\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x06\xC3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FINVALID_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x14\x80a\x07\x16WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 T`\xFF\x16[\x80a\x07CWP_\x81\x81R`\x04` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14[a\x07\xA9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FNOT_AUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x90\x81R`\x03` R`@\x81 \x80T\x91a\x07\xD9\x83a\x11\xD8V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x90\x81R`\x03` R`@\x81 \x80T\x91a\x08\x0E\x83a\x12\x0CV[\x90\x91UPP_\x81\x81R`\x02` \x90\x81R`@\x80\x83 \x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x88\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x92\x83\x16\x81\x17\x90\x93U`\x04\x90\x94R\x82\x85 \x80T\x90\x91\x16\x90U\x90Q\x84\x93\x91\x92\x87\x16\x91\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\xA4PPPV[a\x08\xB1\x83\x83\x83a\x05\xB7V[\x81;\x15\x80a\t\x8BWP`@Q\x7F\x15\x0Bz\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x82R3`\x04\x83\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x81\x16`$\x84\x01R`D\x83\x01\x84\x90R`\x80`d\x84\x01R_`\x84\x84\x01R\x90\x91\x90\x84\x16\x90c\x15\x0Bz\x02\x90`\xA4\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\tCW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tg\x91\x90a\x12CV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\t\xF1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[PPPV[`\x06T`\xFF\x16\x15a\ncW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FALREADY_INITIALIZED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[_a\nn\x83\x82a\x12\xA9V[P`\x01a\n{\x82\x82a\x12\xA9V[PP`\x06\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UPV[_\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x80a\x0B6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\n`$\x82\x01R\x7FNOT_MINTED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[\x91\x90PV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x0B\xB9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FZERO_ADDRESS\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[```\x01\x80Ta\x03\xEA\x90a\x11ZV[3_\x81\x81R`\x05` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\x0C\x91\x84\x84\x84a\x05\xB7V[\x82;\x15\x80a\rXWP`@Q\x7F\x15\x0Bz\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x82R\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x15\x0Bz\x02\x90a\x0C\xF4\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x13\xC5V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\r\x10W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r4\x91\x90a\x12CV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\r\xBEW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[PPPPV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\r\xF1W_\x80\xFD[PV[_` \x82\x84\x03\x12\x15a\x0E\x04W_\x80\xFD[\x815a\x0E\x0F\x81a\r\xC4V[\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x0E:W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0E\x1EV[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a\x0E\x0F` \x83\x01\x84a\x0E\x16V[_` \x82\x84\x03\x12\x15a\x0E\x99W_\x80\xFD[P5\x91\x90PV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B6W_\x80\xFD[_\x80`@\x83\x85\x03\x12\x15a\x0E\xD4W_\x80\xFD[a\x0E\xDD\x83a\x0E\xA0V[\x94` \x93\x90\x93\x015\x93PPPV[_\x80_``\x84\x86\x03\x12\x15a\x0E\xFDW_\x80\xFD[a\x0F\x06\x84a\x0E\xA0V[\x92Pa\x0F\x14` \x85\x01a\x0E\xA0V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x0FkWa\x0Fka\x0F$V[`@Q`\x1F\x85\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0F\xB1Wa\x0F\xB1a\x0F$V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x0F\xC9W_\x80\xFD[\x85\x85` \x83\x017_` \x87\x83\x01\x01RPPP\x93\x92PPPV[_\x82`\x1F\x83\x01\x12a\x0F\xF1W_\x80\xFD[a\x0E\x0F\x83\x835` \x85\x01a\x0FQV[_\x80`@\x83\x85\x03\x12\x15a\x10\x11W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x10(W_\x80\xFD[a\x104\x86\x83\x87\x01a\x0F\xE2V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x10IW_\x80\xFD[Pa\x10V\x85\x82\x86\x01a\x0F\xE2V[\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x10pW_\x80\xFD[a\x0E\x0F\x82a\x0E\xA0V[_\x80`@\x83\x85\x03\x12\x15a\x10\x8AW_\x80\xFD[a\x10\x93\x83a\x0E\xA0V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x10\xA7W_\x80\xFD[\x80\x91PP\x92P\x92\x90PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15a\x10\xC5W_\x80\xFD[a\x10\xCE\x85a\x0E\xA0V[\x93Pa\x10\xDC` \x86\x01a\x0E\xA0V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x10\xFEW_\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x11\x0EW_\x80\xFD[a\x11\x1D\x87\x825` \x84\x01a\x0FQV[\x91PP\x92\x95\x91\x94P\x92PV[_\x80`@\x83\x85\x03\x12\x15a\x11:W_\x80\xFD[a\x11C\x83a\x0E\xA0V[\x91Pa\x11Q` \x84\x01a\x0E\xA0V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x11nW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x11\xA5W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[_\x81a\x11\xE6Wa\x11\xE6a\x11\xABV[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x12\x9D\x82\x7F\xEAH\xB75\xAA\xB6Q\xF9\x933&dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb4651461025f578063b88d4fde1461027f578063c87b56dd14610292578063e985e9c5146102b357600080fd5b80636352211e146101fc57806370a082311461021c57806395d89b411461024a57600080fd5b8063095ea7b3116100bb578063095ea7b3146101a157806323b872dd146101b657806342842e0e146101c95780634cd88b76146101dc57600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610e1f565b610309565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c6103ee565b60405161010e9190610ea7565b34801561014557600080fd5b5061017c610154366004610eba565b60009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010e565b6101b46101af366004610ef7565b610480565b005b6101b46101c4366004610f21565b6105cf565b6101b46101d7366004610f21565b6108c4565b3480156101e857600080fd5b506101b46101f7366004611040565b610a18565b34801561020857600080fd5b5061017c610217366004610eba565b610ace565b34801561022857600080fd5b5061023c6102373660046110a4565b610b5f565b60405190815260200161010e565b34801561025657600080fd5b5061012c610c07565b34801561026b57600080fd5b506101b461027a3660046110bf565b610c16565b6101b461028d3660046110fb565b610cad565b34801561029e57600080fd5b5061012c6102ad366004610eba565b50606090565b3480156102bf57600080fd5b506101026102ce366004611177565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061039c57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103e857507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546103fd906111aa565b80601f0160208091040260200160405190810160405280929190818152602001828054610429906111aa565b80156104765780601f1061044b57610100808354040283529160200191610476565b820191906000526020600020905b81548152906001019060200180831161045957829003601f168201915b5050505050905090565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104e3575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff84811691161461065f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff82166106dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610545565b3373ffffffffffffffffffffffffffffffffffffffff84161480610730575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b8061075e575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610545565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054916107f58361122c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080549161082b83611261565b90915550506000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108cf8383836105cf565b813b15806109ad57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190611299565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b505050565b60065460ff1615610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a4544000000000000000000000000006044820152606401610545565b6000610a918382611306565b506001610a9e8282611306565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610545565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610545565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6060600180546103fd906111aa565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610cb88484846105cf565b823b1580610d8257506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610d1b903390899088908890600401611420565b6020604051808303816000875af1158015610d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e9190611299565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610545565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e1c57600080fd5b50565b600060208284031215610e3157600080fd5b8135610e3c81610dee565b9392505050565b6000815180845260005b81811015610e6957602081850181015186830182015201610e4d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610e3c6020830184610e43565b600060208284031215610ecc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5a57600080fd5b60008060408385031215610f0a57600080fd5b610f1383610ed3565b946020939093013593505050565b600080600060608486031215610f3657600080fd5b610f3f84610ed3565b9250610f4d60208501610ed3565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115610fa757610fa7610f5d565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610fed57610fed610f5d565b8160405280935085815286868601111561100657600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261103157600080fd5b610e3c83833560208501610f8c565b6000806040838503121561105357600080fd5b823567ffffffffffffffff8082111561106b57600080fd5b61107786838701611020565b9350602085013591508082111561108d57600080fd5b5061109a85828601611020565b9150509250929050565b6000602082840312156110b657600080fd5b610e3c82610ed3565b600080604083850312156110d257600080fd5b6110db83610ed3565b9150602083013580151581146110f057600080fd5b809150509250929050565b6000806000806080858703121561111157600080fd5b61111a85610ed3565b935061112860208601610ed3565b925060408501359150606085013567ffffffffffffffff81111561114b57600080fd5b8501601f8101871361115c57600080fd5b61116b87823560208401610f8c565b91505092959194509250565b6000806040838503121561118a57600080fd5b61119383610ed3565b91506111a160208401610ed3565b90509250929050565b600181811c908216806111be57607f821691505b6020821081036111f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161123b5761123b6111fd565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611292576112926111fd565b5060010190565b6000602082840312156112ab57600080fd5b8151610e3c81610dee565b601f821115610a13576000816000526020600020601f850160051c810160208610156112df5750805b601f850160051c820191505b818110156112fe578281556001016112eb565b505050505050565b815167ffffffffffffffff81111561132057611320610f5d565b6113348161132e84546111aa565b846112b6565b602080601f83116001811461138757600084156113515750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556112fe565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156113d4578886015182559484019460019091019084016113b5565b508582101561141057878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261145f6080830184610e43565b969550505050505056fea26469706673582212207b5268e63263aff1f3750d4f8e9f032fe153bd56f1fa0107dc1665d715b3b5bf64736f6c63430008180033 + ///0x6080604052600436106100d9575f3560e01c80636352211e1161007c578063a22cb46511610057578063a22cb46514610252578063b88d4fde14610271578063c87b56dd14610284578063e985e9c5146102a4575f80fd5b80636352211e146101f257806370a082311461021157806395d89b411461023e575f80fd5b8063095ea7b3116100b7578063095ea7b31461019857806323b872dd146101ad57806342842e0e146101c05780634cd88b76146101d3575f80fd5b806301ffc9a7146100dd57806306fdde0314610111578063081812fc14610132575b5f80fd5b3480156100e8575f80fd5b506100fc6100f7366004610df4565b6102f8565b60405190151581526020015b60405180910390f35b34801561011c575f80fd5b506101256103dc565b6040516101089190610e77565b34801561013d575f80fd5b5061017361014c366004610e89565b5f9081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610108565b6101ab6101a6366004610ec3565b61046b565b005b6101ab6101bb366004610eeb565b6105b7565b6101ab6101ce366004610eeb565b6108a6565b3480156101de575f80fd5b506101ab6101ed366004611000565b6109f6565b3480156101fd575f80fd5b5061017361020c366004610e89565b610aab565b34801561021c575f80fd5b5061023061022b366004611060565b610b3b565b604051908152602001610108565b348015610249575f80fd5b50610125610be1565b34801561025d575f80fd5b506101ab61026c366004611079565b610bf0565b6101ab61027f3660046110b2565b610c86565b34801561028f575f80fd5b5061012561029e366004610e89565b50606090565b3480156102af575f80fd5b506100fc6102be366004611129565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061038a57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103d657507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60605f80546103ea9061115a565b80601f01602080910402602001604051908101604052809291908181526020018280546104169061115a565b80156104615780601f1061043857610100808354040283529160200191610461565b820191905f5260205f20905b81548152906001019060200180831161044457829003601f168201915b5050505050905090565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104cc575073ffffffffffffffffffffffffffffffffffffffff81165f90815260056020908152604080832033845290915290205460ff165b610537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b5f8281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff848116911614610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d00000000000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff82166106c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e54000000000000000000000000000000604482015260640161052e565b3373ffffffffffffffffffffffffffffffffffffffff84161480610716575073ffffffffffffffffffffffffffffffffffffffff83165f90815260056020908152604080832033845290915290205460ff165b8061074357505f8181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b6107a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161052e565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526003602052604081208054916107d9836111d8565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f90815260036020526040812080549161080e8361120c565b90915550505f818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108b18383836105b7565b813b158061098b57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610943573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109679190611243565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b6109f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161052e565b505050565b60065460ff1615610a63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f414c52454144595f494e495449414c495a454400000000000000000000000000604482015260640161052e565b5f610a6e83826112a9565b506001610a7b82826112a9565b5050600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e54454400000000000000000000000000000000000000000000604482015260640161052e565b919050565b5f73ffffffffffffffffffffffffffffffffffffffff8216610bb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015260640161052e565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b6060600180546103ea9061115a565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610c918484846105b7565b823b1580610d5857506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290610cf49033908990889088906004016113c5565b6020604051808303815f875af1158015610d10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d349190611243565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161052e565b50505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610df1575f80fd5b50565b5f60208284031215610e04575f80fd5b8135610e0f81610dc4565b9392505050565b5f81518084525f5b81811015610e3a57602081850181015186830182015201610e1e565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610e0f6020830184610e16565b5f60208284031215610e99575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b36575f80fd5b5f8060408385031215610ed4575f80fd5b610edd83610ea0565b946020939093013593505050565b5f805f60608486031215610efd575f80fd5b610f0684610ea0565b9250610f1460208501610ea0565b9150604084013590509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f67ffffffffffffffff80841115610f6b57610f6b610f24565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610fb157610fb1610f24565b81604052809350858152868686011115610fc9575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112610ff1575f80fd5b610e0f83833560208501610f51565b5f8060408385031215611011575f80fd5b823567ffffffffffffffff80821115611028575f80fd5b61103486838701610fe2565b93506020850135915080821115611049575f80fd5b5061105685828601610fe2565b9150509250929050565b5f60208284031215611070575f80fd5b610e0f82610ea0565b5f806040838503121561108a575f80fd5b61109383610ea0565b9150602083013580151581146110a7575f80fd5b809150509250929050565b5f805f80608085870312156110c5575f80fd5b6110ce85610ea0565b93506110dc60208601610ea0565b925060408501359150606085013567ffffffffffffffff8111156110fe575f80fd5b8501601f8101871361110e575f80fd5b61111d87823560208401610f51565b91505092959194509250565b5f806040838503121561113a575f80fd5b61114383610ea0565b915061115160208401610ea0565b90509250929050565b600181811c9082168061116e57607f821691505b6020821081036111a5577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f816111e6576111e66111ab565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361123c5761123c6111ab565b5060010190565b5f60208284031215611253575f80fd5b8151610e0f81610dc4565b601f8211156109f157805f5260205f20601f840160051c810160208510156112835750805b601f840160051c820191505b818110156112a2575f815560010161128f565b5050505050565b815167ffffffffffffffff8111156112c3576112c3610f24565b6112d7816112d1845461115a565b8461125e565b602080601f831160018114611329575f84156112f35750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556113bd565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561137557888601518255948401946001909101908401611356565b50858210156113b157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526114036080830184610e16565b969550505050505056fea2646970667358221220efe241dbbf37d465e9aa785f6e42ee11373e9d827fea48b735aab651f993332664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x046\x10a\0\xDDW`\x005`\xE0\x1C\x80ccR!\x1E\x11a\0\x7FW\x80c\xA2,\xB4e\x11a\0YW\x80c\xA2,\xB4e\x14a\x02_W\x80c\xB8\x8DO\xDE\x14a\x02\x7FW\x80c\xC8{V\xDD\x14a\x02\x92W\x80c\xE9\x85\xE9\xC5\x14a\x02\xB3W`\0\x80\xFD[\x80ccR!\x1E\x14a\x01\xFCW\x80cp\xA0\x821\x14a\x02\x1CW\x80c\x95\xD8\x9BA\x14a\x02JW`\0\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xBBW\x80c\t^\xA7\xB3\x14a\x01\xA1W\x80c#\xB8r\xDD\x14a\x01\xB6W\x80cB\x84.\x0E\x14a\x01\xC9W\x80cL\xD8\x8Bv\x14a\x01\xDCW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xE2W\x80c\x06\xFD\xDE\x03\x14a\x01\x17W\x80c\x08\x18\x12\xFC\x14a\x019W[`\0\x80\xFD[4\x80\x15a\0\xEEW`\0\x80\xFD[Pa\x01\x02a\0\xFD6`\x04a\x0E\x1FV[a\x03\tV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01#W`\0\x80\xFD[Pa\x01,a\x03\xEEV[`@Qa\x01\x0E\x91\x90a\x0E\xA7V[4\x80\x15a\x01EW`\0\x80\xFD[Pa\x01|a\x01T6`\x04a\x0E\xBAV[`\0\x90\x81R`\x04` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x0EV[a\x01\xB4a\x01\xAF6`\x04a\x0E\xF7V[a\x04\x80V[\0[a\x01\xB4a\x01\xC46`\x04a\x0F!V[a\x05\xCFV[a\x01\xB4a\x01\xD76`\x04a\x0F!V[a\x08\xC4V[4\x80\x15a\x01\xE8W`\0\x80\xFD[Pa\x01\xB4a\x01\xF76`\x04a\x10@V[a\n\x18V[4\x80\x15a\x02\x08W`\0\x80\xFD[Pa\x01|a\x02\x176`\x04a\x0E\xBAV[a\n\xCEV[4\x80\x15a\x02(W`\0\x80\xFD[Pa\x02=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\x89\x91\x90a\x12\x99V[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\n\x13W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[PPPV[`\x06T`\xFF\x16\x15a\n\x85W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FALREADY_INITIALIZED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[`\0a\n\x91\x83\x82a\x13\x06V[P`\x01a\n\x9E\x82\x82a\x13\x06V[PP`\x06\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UPV[`\0\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x80a\x0BZW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\n`$\x82\x01R\x7FNOT_MINTED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[\x91\x90PV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x0B\xDEW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FZERO_ADDRESS\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[```\x01\x80Ta\x03\xFD\x90a\x11\xAAV[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\x0C\xB8\x84\x84\x84a\x05\xCFV[\x82;\x15\x80a\r\x82WP`@Q\x7F\x15\x0Bz\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x82R\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x15\x0Bz\x02\x90a\r\x1B\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x14 V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\r:W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r^\x91\x90a\x12\x99V[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\r\xE8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05EV[PPPPV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\x0E\x1CW`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\x0E1W`\0\x80\xFD[\x815a\x0E<\x81a\r\xEEV[\x93\x92PPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x0EiW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0EMV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R`\0a\x0E<` \x83\x01\x84a\x0ECV[`\0` \x82\x84\x03\x12\x15a\x0E\xCCW`\0\x80\xFD[P5\x91\x90PV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0BZW`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\x0F\nW`\0\x80\xFD[a\x0F\x13\x83a\x0E\xD3V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0F6W`\0\x80\xFD[a\x0F?\x84a\x0E\xD3V[\x92Pa\x0FM` \x85\x01a\x0E\xD3V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x0F\xA7Wa\x0F\xA7a\x0F]V[`@Q`\x1F\x85\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0F\xEDWa\x0F\xEDa\x0F]V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x10\x06W`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x101W`\0\x80\xFD[a\x0E<\x83\x835` \x85\x01a\x0F\x8CV[`\0\x80`@\x83\x85\x03\x12\x15a\x10SW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x10kW`\0\x80\xFD[a\x10w\x86\x83\x87\x01a\x10 V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x10\x8DW`\0\x80\xFD[Pa\x10\x9A\x85\x82\x86\x01a\x10 V[\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x10\xB6W`\0\x80\xFD[a\x0E<\x82a\x0E\xD3V[`\0\x80`@\x83\x85\x03\x12\x15a\x10\xD2W`\0\x80\xFD[a\x10\xDB\x83a\x0E\xD3V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x10\xF0W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x11\x11W`\0\x80\xFD[a\x11\x1A\x85a\x0E\xD3V[\x93Pa\x11(` \x86\x01a\x0E\xD3V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11KW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x11\\W`\0\x80\xFD[a\x11k\x87\x825` \x84\x01a\x0F\x8CV[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`@\x83\x85\x03\x12\x15a\x11\x8AW`\0\x80\xFD[a\x11\x93\x83a\x0E\xD3V[\x91Pa\x11\xA1` \x84\x01a\x0E\xD3V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x11\xBEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x11\xF7W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[`\0\x81a\x12;Wa\x12;a\x11\xFDV[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x12\x92Wa\x12\x92a\x11\xFDV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\x12\xABW`\0\x80\xFD[\x81Qa\x0E<\x81a\r\xEEV[`\x1F\x82\x11\x15a\n\x13W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x12\xDFWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x12\xFEW\x82\x81U`\x01\x01a\x12\xEBV[PPPPPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13 Wa\x13 a\x0F]V[a\x134\x81a\x13.\x84Ta\x11\xAAV[\x84a\x12\xB6V[` \x80`\x1F\x83\x11`\x01\x81\x14a\x13\x87W`\0\x84\x15a\x13QWP\x85\x83\x01Q[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x12\xFEV[`\0\x85\x81R` \x81 \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x86\x16\x91[\x82\x81\x10\x15a\x13\xD4W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x13\xB5V[P\x85\x82\x10\x15a\x14\x10W\x87\x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16\x83R\x80\x86\x16` \x84\x01RP\x83`@\x83\x01R`\x80``\x83\x01Ra\x14_`\x80\x83\x01\x84a\x0ECV[\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 {Rh\xE62c\xAF\xF1\xF3u\rO\x8E\x9F\x03/\xE1S\xBDV\xF1\xFA\x01\x07\xDC\x16e\xD7\x15\xB3\xB5\xBFdsolcC\0\x08\x18\x003", + b"`\x80`@R`\x046\x10a\0\xD9W_5`\xE0\x1C\x80ccR!\x1E\x11a\0|W\x80c\xA2,\xB4e\x11a\0WW\x80c\xA2,\xB4e\x14a\x02RW\x80c\xB8\x8DO\xDE\x14a\x02qW\x80c\xC8{V\xDD\x14a\x02\x84W\x80c\xE9\x85\xE9\xC5\x14a\x02\xA4W_\x80\xFD[\x80ccR!\x1E\x14a\x01\xF2W\x80cp\xA0\x821\x14a\x02\x11W\x80c\x95\xD8\x9BA\x14a\x02>W_\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xB7W\x80c\t^\xA7\xB3\x14a\x01\x98W\x80c#\xB8r\xDD\x14a\x01\xADW\x80cB\x84.\x0E\x14a\x01\xC0W\x80cL\xD8\x8Bv\x14a\x01\xD3W_\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xDDW\x80c\x06\xFD\xDE\x03\x14a\x01\x11W\x80c\x08\x18\x12\xFC\x14a\x012W[_\x80\xFD[4\x80\x15a\0\xE8W_\x80\xFD[Pa\0\xFCa\0\xF76`\x04a\r\xF4V[a\x02\xF8V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x1CW_\x80\xFD[Pa\x01%a\x03\xDCV[`@Qa\x01\x08\x91\x90a\x0EwV[4\x80\x15a\x01=W_\x80\xFD[Pa\x01sa\x01L6`\x04a\x0E\x89V[_\x90\x81R`\x04` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x08V[a\x01\xABa\x01\xA66`\x04a\x0E\xC3V[a\x04kV[\0[a\x01\xABa\x01\xBB6`\x04a\x0E\xEBV[a\x05\xB7V[a\x01\xABa\x01\xCE6`\x04a\x0E\xEBV[a\x08\xA6V[4\x80\x15a\x01\xDEW_\x80\xFD[Pa\x01\xABa\x01\xED6`\x04a\x10\0V[a\t\xF6V[4\x80\x15a\x01\xFDW_\x80\xFD[Pa\x01sa\x02\x0C6`\x04a\x0E\x89V[a\n\xABV[4\x80\x15a\x02\x1CW_\x80\xFD[Pa\x020a\x02+6`\x04a\x10`V[a\x0B;V[`@Q\x90\x81R` \x01a\x01\x08V[4\x80\x15a\x02IW_\x80\xFD[Pa\x01%a\x0B\xE1V[4\x80\x15a\x02]W_\x80\xFD[Pa\x01\xABa\x02l6`\x04a\x10yV[a\x0B\xF0V[a\x01\xABa\x02\x7F6`\x04a\x10\xB2V[a\x0C\x86V[4\x80\x15a\x02\x8FW_\x80\xFD[Pa\x01%a\x02\x9E6`\x04a\x0E\x89V[P``\x90V[4\x80\x15a\x02\xAFW_\x80\xFD[Pa\0\xFCa\x02\xBE6`\x04a\x11)V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T`\xFF\x16\x90V[_\x7F\x01\xFF\xC9\xA7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x14\x80a\x03\x8AWP\x7F\x80\xACX\xCD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x14[\x80a\x03\xD6WP\x7F[^\x13\x9F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x14[\x92\x91PPV[``_\x80Ta\x03\xEA\x90a\x11ZV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x04\x16\x90a\x11ZV[\x80\x15a\x04aW\x80`\x1F\x10a\x048Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04aV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x04DW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[_\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x81\x14\x80a\x04\xCCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 T`\xFF\x16[a\x057W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FNOT_AUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_\x82\x81R`\x04` R`@\x80\x82 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x81\x16\x91\x82\x17\x90\x92U\x91Q\x85\x93\x91\x85\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\xA4PPPV[_\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x81\x16\x91\x16\x14a\x06FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\n`$\x82\x01R\x7FWRONG_FROM\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x06\xC3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FINVALID_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x14\x80a\x07\x16WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 T`\xFF\x16[\x80a\x07CWP_\x81\x81R`\x04` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14[a\x07\xA9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FNOT_AUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16_\x90\x81R`\x03` R`@\x81 \x80T\x91a\x07\xD9\x83a\x11\xD8V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x90\x81R`\x03` R`@\x81 \x80T\x91a\x08\x0E\x83a\x12\x0CV[\x90\x91UPP_\x81\x81R`\x02` \x90\x81R`@\x80\x83 \x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x88\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x92\x83\x16\x81\x17\x90\x93U`\x04\x90\x94R\x82\x85 \x80T\x90\x91\x16\x90U\x90Q\x84\x93\x91\x92\x87\x16\x91\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\xA4PPPV[a\x08\xB1\x83\x83\x83a\x05\xB7V[\x81;\x15\x80a\t\x8BWP`@Q\x7F\x15\x0Bz\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x82R3`\x04\x83\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x81\x16`$\x84\x01R`D\x83\x01\x84\x90R`\x80`d\x84\x01R_`\x84\x84\x01R\x90\x91\x90\x84\x16\x90c\x15\x0Bz\x02\x90`\xA4\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\tCW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tg\x91\x90a\x12CV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\t\xF1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[PPPV[`\x06T`\xFF\x16\x15a\ncW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FALREADY_INITIALIZED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[_a\nn\x83\x82a\x12\xA9V[P`\x01a\n{\x82\x82a\x12\xA9V[PP`\x06\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16`\x01\x17\x90UPV[_\x81\x81R`\x02` R`@\x90 Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x80a\x0B6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\n`$\x82\x01R\x7FNOT_MINTED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[\x91\x90PV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16a\x0B\xB9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FZERO_ADDRESS\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x03` R`@\x90 T\x90V[```\x01\x80Ta\x03\xEA\x90a\x11ZV[3_\x81\x81R`\x05` \x90\x81R`@\x80\x83 s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\x0C\x91\x84\x84\x84a\x05\xB7V[\x82;\x15\x80a\rXWP`@Q\x7F\x15\x0Bz\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x82R\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90c\x15\x0Bz\x02\x90a\x0C\xF4\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x13\xC5V[` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\r\x10W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r4\x91\x90a\x12CV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14[a\r\xBEW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x10`$\x82\x01R\x7FUNSAFE_RECIPIENT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05.V[PPPPV[\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16\x81\x14a\r\xF1W_\x80\xFD[PV[_` \x82\x84\x03\x12\x15a\x0E\x04W_\x80\xFD[\x815a\x0E\x0F\x81a\r\xC4V[\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x0E:W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0E\x1EV[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R_a\x0E\x0F` \x83\x01\x84a\x0E\x16V[_` \x82\x84\x03\x12\x15a\x0E\x99W_\x80\xFD[P5\x91\x90PV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0B6W_\x80\xFD[_\x80`@\x83\x85\x03\x12\x15a\x0E\xD4W_\x80\xFD[a\x0E\xDD\x83a\x0E\xA0V[\x94` \x93\x90\x93\x015\x93PPPV[_\x80_``\x84\x86\x03\x12\x15a\x0E\xFDW_\x80\xFD[a\x0F\x06\x84a\x0E\xA0V[\x92Pa\x0F\x14` \x85\x01a\x0E\xA0V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\x0FkWa\x0Fka\x0F$V[`@Q`\x1F\x85\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0F\xB1Wa\x0F\xB1a\x0F$V[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x0F\xC9W_\x80\xFD[\x85\x85` \x83\x017_` \x87\x83\x01\x01RPPP\x93\x92PPPV[_\x82`\x1F\x83\x01\x12a\x0F\xF1W_\x80\xFD[a\x0E\x0F\x83\x835` \x85\x01a\x0FQV[_\x80`@\x83\x85\x03\x12\x15a\x10\x11W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x10(W_\x80\xFD[a\x104\x86\x83\x87\x01a\x0F\xE2V[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x10IW_\x80\xFD[Pa\x10V\x85\x82\x86\x01a\x0F\xE2V[\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x10pW_\x80\xFD[a\x0E\x0F\x82a\x0E\xA0V[_\x80`@\x83\x85\x03\x12\x15a\x10\x8AW_\x80\xFD[a\x10\x93\x83a\x0E\xA0V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x10\xA7W_\x80\xFD[\x80\x91PP\x92P\x92\x90PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15a\x10\xC5W_\x80\xFD[a\x10\xCE\x85a\x0E\xA0V[\x93Pa\x10\xDC` \x86\x01a\x0E\xA0V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x10\xFEW_\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x11\x0EW_\x80\xFD[a\x11\x1D\x87\x825` \x84\x01a\x0FQV[\x91PP\x92\x95\x91\x94P\x92PV[_\x80`@\x83\x85\x03\x12\x15a\x11:W_\x80\xFD[a\x11C\x83a\x0E\xA0V[\x91Pa\x11Q` \x84\x01a\x0E\xA0V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x11nW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x11\xA5W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[_\x81a\x11\xE6Wa\x11\xE6a\x11\xABV[P\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\x90V[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x12\x9D\x82\x7F\xEAH\xB75\xAA\xB6Q\xF9\x933&dsolcC\0\x08\x18\x003", ); /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. ```solidity event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -413,9 +424,14 @@ event Approval(address indexed _owner, address indexed _approved, uint256 indexe #[allow(missing_docs)] pub _approved: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub _tokenId: alloy::sol_types::private::U256, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -479,6 +495,21 @@ event Approval(address indexed _owner, address indexed _approved, uint256 indexe } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -535,7 +566,12 @@ event Approval(address indexed _owner, address indexed _approved, uint256 indexe ```solidity event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ApprovalForAll { #[allow(missing_docs)] @@ -545,7 +581,12 @@ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _ap #[allow(missing_docs)] pub _approved: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -608,6 +649,21 @@ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _ap } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -664,7 +720,12 @@ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _ap ```solidity event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Transfer { #[allow(missing_docs)] @@ -672,9 +733,14 @@ event Transfer(address indexed _from, address indexed _to, uint256 indexed _toke #[allow(missing_docs)] pub _to: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub _tokenId: alloy::sol_types::private::U256, + pub _tokenId: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -738,6 +804,21 @@ event Transfer(address indexed _from, address indexed _to, uint256 indexed _toke } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -794,17 +875,24 @@ event Transfer(address indexed _from, address indexed _to, uint256 indexed _toke ```solidity function approve(address spender, uint256 id) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveCall { + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub id: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub id: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -816,7 +904,7 @@ function approve(address spender, uint256 id) external payable; #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -927,18 +1015,25 @@ function approve(address spender, uint256 id) external payable; ```solidity function balanceOf(address owner) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfCall { + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -976,7 +1071,9 @@ function balanceOf(address owner) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1046,25 +1143,34 @@ function balanceOf(address owner) external view returns (uint256); ```solidity function getApproved(uint256 id) external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApprovedCall { - pub id: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub id: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`getApproved(uint256)`](getApprovedCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getApprovedReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1165,17 +1271,24 @@ function getApproved(uint256 id) external view returns (address); ```solidity function initialize(string memory name_, string memory symbol_) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeCall { + #[allow(missing_docs)] pub name_: alloy::sol_types::private::String, + #[allow(missing_docs)] pub symbol_: alloy::sol_types::private::String, } ///Container type for the return parameters of the [`initialize(string,string)`](initializeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct initializeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1298,19 +1411,27 @@ function initialize(string memory name_, string memory symbol_) external; ```solidity function isApprovedForAll(address owner, address operator) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isApprovedForAllCall { + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub operator: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`isApprovedForAll(address,address)`](isApprovedForAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct isApprovedForAllReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1437,16 +1558,22 @@ function isApprovedForAll(address owner, address operator) external view returns ```solidity function name() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameCall {} ///Container type for the return parameters of the [`name()`](nameCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1550,25 +1677,34 @@ function name() external view returns (string memory); ```solidity function ownerOf(uint256 id) external view returns (address owner); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerOfCall { - pub id: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub id: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`ownerOf(uint256)`](ownerOfCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerOfReturn { + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1669,18 +1805,26 @@ function ownerOf(uint256 id) external view returns (address owner); ```solidity function safeTransferFrom(address from, address to, uint256 id) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Call { + #[allow(missing_docs)] pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub id: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub id: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256)`](safeTransferFrom_0Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_0Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1694,7 +1838,7 @@ function safeTransferFrom(address from, address to, uint256 id) external payable type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1814,19 +1958,28 @@ function safeTransferFrom(address from, address to, uint256 id) external payable ```solidity function safeTransferFrom(address from, address to, uint256 id, bytes memory data) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Call { + #[allow(missing_docs)] pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub id: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub id: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub data: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`safeTransferFrom(address,address,uint256,bytes)`](safeTransferFrom_1Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct safeTransferFrom_1Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1841,7 +1994,7 @@ function safeTransferFrom(address from, address to, uint256 id, bytes memory dat type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Bytes, ); #[cfg(test)] @@ -1967,17 +2120,24 @@ function safeTransferFrom(address from, address to, uint256 id, bytes memory dat ```solidity function setApprovalForAll(address operator, bool approved) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setApprovalForAllCall { + #[allow(missing_docs)] pub operator: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub approved: bool, } ///Container type for the return parameters of the [`setApprovalForAll(address,bool)`](setApprovalForAllCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setApprovalForAllReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2101,18 +2261,25 @@ function setApprovalForAll(address operator, bool approved) external; ```solidity function supportsInterface(bytes4 interfaceId) external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceCall { + #[allow(missing_docs)] pub interfaceId: alloy::sol_types::private::FixedBytes<4>, } ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct supportsInterfaceReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2224,16 +2391,22 @@ function supportsInterface(bytes4 interfaceId) external view returns (bool); ```solidity function symbol() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolCall {} ///Container type for the return parameters of the [`symbol()`](symbolCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2337,25 +2510,34 @@ function symbol() external view returns (string memory); ```solidity function tokenURI(uint256 id) external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct tokenURICall { - pub id: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub id: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`tokenURI(uint256)`](tokenURICall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct tokenURIReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -2456,18 +2638,26 @@ function tokenURI(uint256 id) external view returns (string memory); ```solidity function transferFrom(address from, address to, uint256 id) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { + #[allow(missing_docs)] pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub id: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub id: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2481,7 +2671,7 @@ function transferFrom(address from, address to, uint256 id) external payable; type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2595,19 +2785,33 @@ function transferFrom(address from, address to, uint256 id) external payable; }; ///Container for all the [`MockERC721`](self) function calls. pub enum MockERC721Calls { + #[allow(missing_docs)] approve(approveCall), + #[allow(missing_docs)] balanceOf(balanceOfCall), + #[allow(missing_docs)] getApproved(getApprovedCall), + #[allow(missing_docs)] initialize(initializeCall), + #[allow(missing_docs)] isApprovedForAll(isApprovedForAllCall), + #[allow(missing_docs)] name(nameCall), + #[allow(missing_docs)] ownerOf(ownerOfCall), + #[allow(missing_docs)] safeTransferFrom_0(safeTransferFrom_0Call), + #[allow(missing_docs)] safeTransferFrom_1(safeTransferFrom_1Call), + #[allow(missing_docs)] setApprovalForAll(setApprovalForAllCall), + #[allow(missing_docs)] supportsInterface(supportsInterfaceCall), + #[allow(missing_docs)] symbol(symbolCall), + #[allow(missing_docs)] tokenURI(tokenURICall), + #[allow(missing_docs)] transferFrom(transferFromCall), } #[automatically_derived] @@ -2686,7 +2890,7 @@ function transferFrom(address from, address to, uint256 id) external payable; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2887,7 +3091,7 @@ function transferFrom(address from, address to, uint256 id) external payable; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3030,8 +3234,11 @@ function transferFrom(address from, address to, uint256 id) external payable; } ///Container for all the [`MockERC721`](self) events. pub enum MockERC721Events { + #[allow(missing_docs)] Approval(Approval), + #[allow(missing_docs)] ApprovalForAll(ApprovalForAll), + #[allow(missing_docs)] Transfer(Transfer), } #[automatically_derived] @@ -3392,7 +3599,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn approve( &self, spender: alloy::sol_types::private::Address, - id: alloy::sol_types::private::U256, + id: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&approveCall { spender, id }) } @@ -3406,7 +3613,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`getApproved`] function. pub fn getApproved( &self, - id: alloy::sol_types::private::U256, + id: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&getApprovedCall { id }) } @@ -3438,7 +3645,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`ownerOf`] function. pub fn ownerOf( &self, - id: alloy::sol_types::private::U256, + id: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&ownerOfCall { id }) } @@ -3447,7 +3654,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, from: alloy::sol_types::private::Address, to: alloy::sol_types::private::Address, - id: alloy::sol_types::private::U256, + id: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &safeTransferFrom_0Call { @@ -3462,7 +3669,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, from: alloy::sol_types::private::Address, to: alloy::sol_types::private::Address, - id: alloy::sol_types::private::U256, + id: alloy::sol_types::private::primitives::aliases::U256, data: alloy::sol_types::private::Bytes, ) -> alloy_contract::SolCallBuilder { self.call_builder( @@ -3505,7 +3712,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`tokenURI`] function. pub fn tokenURI( &self, - id: alloy::sol_types::private::U256, + id: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&tokenURICall { id }) } @@ -3514,7 +3721,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, from: alloy::sol_types::private::Address, to: alloy::sol_types::private::Address, - id: alloy::sol_types::private::U256, + id: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&transferFromCall { from, to, id }) } diff --git a/crates/bindings-uniswapx/src/mockexclusivitylib.rs b/crates/bindings-uniswapx/src/mockexclusivitylib.rs index a6b22da..22584de 100644 --- a/crates/bindings-uniswapx/src/mockexclusivitylib.rs +++ b/crates/bindings-uniswapx/src/mockexclusivitylib.rs @@ -521,41 +521,55 @@ interface MockExclusivityLib { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockExclusivityLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b50610aae806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063caff4ef614610046578063df2481181461006f578063f8813ee714610082575b600080fd5b610059610054366004610712565b6100a5565b6040516100669190610840565b60405180910390f35b61005961007d36600461096a565b610129565b6100956100903660046109d4565b6101af565b6040519015158152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152610120858585856101c4565b50929392505050565b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528401529282018390528282019290925260808101919091526101a586868686866101d7565b5093949350505050565b60006101bc8484846101eb565b949350505050565b6101d18484848442610237565b50505050565b6101e48585858585610237565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416158061020f57508282115b806101bc575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b6102428484836101eb565b6101e4578161027d576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b81518110156102d95760008282815181106102a2576102a2610a09565b602002602001015190506102cb856127106102bd9190610a38565b6020830151906127106102e2565b602090910152600101610285565b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261031757600080fd5b50910281810615159190040190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561037857610378610326565b60405290565b60405160a0810167ffffffffffffffff8111828210171561037857610378610326565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103e8576103e8610326565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461041257600080fd5b50565b600082601f83011261042657600080fd5b813567ffffffffffffffff81111561044057610440610326565b61047160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016103a1565b81815284602083860101111561048657600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156104b557600080fd5b60405160c0810167ffffffffffffffff82821081831117156104d9576104d9610326565b81604052829350843591506104ed826103f0565b9082526020840135906104ff826103f0565b816020840152604085013560408401526060850135606084015260808501359150610529826103f0565b81608084015260a085013591508082111561054357600080fd5b5061055085828601610415565b60a0830152505092915050565b60006060828403121561056f57600080fd5b610577610355565b90508135610584816103f0565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126105b357600080fd5b8135602067ffffffffffffffff8211156105cf576105cf610326565b6105dd818360051b016103a1565b828152606092830285018201928282019190878511156105fc57600080fd5b8387015b858110156106555781818a0312156106185760008081fd5b610620610355565b813561062b816103f0565b81528186013586820152604080830135610644816103f0565b908201528452928401928101610600565b5090979650505050505050565b600060e0828403121561067457600080fd5b61067c61037e565b9050813567ffffffffffffffff8082111561069657600080fd5b6106a2858386016104a3565b83526106b1856020860161055d565b602084015260808401359150808211156106ca57600080fd5b6106d6858386016105a2565b604084015260a08401359150808211156106ef57600080fd5b506106fc84828501610415565b60608301525060c0820135608082015292915050565b6000806000806080858703121561072857600080fd5b843567ffffffffffffffff81111561073f57600080fd5b61074b87828801610662565b945050602085013561075c816103f0565b93969395505050506040820135916060013590565b6000815180845260005b818110156107975760208185018101518683018201520161077b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60008151808452602080850194506020840160005b83811015610835578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016107ea565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526108bc6101c0840182610771565b905060208401516108fa6040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a086015261093583836107d5565b925060608601519150808584030160c0860152506109538282610771565b915050608084015160e08401528091505092915050565b600080600080600060a0868803121561098257600080fd5b853567ffffffffffffffff81111561099957600080fd5b6109a588828901610662565b95505060208601356109b6816103f0565b94979496505050506040830135926060810135926080909101359150565b6000806000606084860312156109e957600080fd5b83356109f4816103f0565b95602085013595506040909401359392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610a72577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea26469706673582212208c78eca708686c780702f3e87fd63d0989796ceece0253fb8e233bfc004c9cd664736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b50610a778061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063caff4ef614610043578063df2481181461006c578063f8813ee71461007f575b5f80fd5b6100566100513660046106f1565b6100a2565b6040516100639190610816565b60405180910390f35b61005661007a36600461093f565b610125565b61009261008d3660046109a4565b6101aa565b6040519015158152602001610063565b60408051610160810182525f60a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261011c858585856101be565b50929392505050565b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528401529282018390528282019290925260808101919091526101a086868686866101d1565b5093949350505050565b5f6101b68484846101e5565b949350505050565b6101cb8484848442610230565b50505050565b6101de8585858585610230565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416158061020857508282115b806101b6575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b61023b8484836101e5565b6101de5781610276576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b81518110156102d0575f828281518110610299576102996109d6565b602002602001015190506102c2856127106102b49190610a03565b6020830151906127106102d9565b60209091015260010161027d565b50505050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261030c575f80fd5b50910281810615159190040190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561036b5761036b61031b565b60405290565b60405160a0810167ffffffffffffffff8111828210171561036b5761036b61031b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103db576103db61031b565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610404575f80fd5b50565b5f82601f830112610416575f80fd5b813567ffffffffffffffff8111156104305761043061031b565b61046160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610394565b818152846020838601011115610475575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156104a1575f80fd5b60405160c0810167ffffffffffffffff82821081831117156104c5576104c561031b565b81604052829350843591506104d9826103e3565b9082526020840135906104eb826103e3565b816020840152604085013560408401526060850135606084015260808501359150610515826103e3565b81608084015260a085013591508082111561052e575f80fd5b5061053b85828601610407565b60a0830152505092915050565b5f60608284031215610558575f80fd5b610560610348565b9050813561056d816103e3565b80825250602082013560208201526040820135604082015292915050565b5f82601f83011261059a575f80fd5b8135602067ffffffffffffffff8211156105b6576105b661031b565b6105c4818360051b01610394565b828152606092830285018201928282019190878511156105e2575f80fd5b8387015b858110156106395781818a0312156105fc575f80fd5b610604610348565b813561060f816103e3565b81528186013586820152604080830135610628816103e3565b9082015284529284019281016105e6565b5090979650505050505050565b5f60e08284031215610656575f80fd5b61065e610371565b9050813567ffffffffffffffff80821115610677575f80fd5b61068385838601610491565b83526106928560208601610548565b602084015260808401359150808211156106aa575f80fd5b6106b68583860161058b565b604084015260a08401359150808211156106ce575f80fd5b506106db84828501610407565b60608301525060c0820135608082015292915050565b5f805f8060808587031215610704575f80fd5b843567ffffffffffffffff81111561071a575f80fd5b61072687828801610646565b9450506020850135610737816103e3565b93969395505050506040820135916060013590565b5f81518084525f5b8181101561077057602081850181015186830182015201610754565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815180845260208085019450602084015f5b8381101561080b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016107c0565b509495945050505050565b602081525f825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526108916101c084018261074c565b905060208401516108cf6040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a086015261090a83836107ad565b925060608601519150808584030160c086015250610928828261074c565b915050608084015160e08401528091505092915050565b5f805f805f60a08688031215610953575f80fd5b853567ffffffffffffffff811115610969575f80fd5b61097588828901610646565b9550506020860135610986816103e3565b94979496505050506040830135926060810135926080909101359150565b5f805f606084860312156109b6575f80fd5b83356109c1816103e3565b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820180821115610a3b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9291505056fea2646970667358221220e708168275d936b4998f60dd0bbc897c0bec56b42dc50a838fc636f8fefcab2864736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\n\xAE\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\xCA\xFFN\xF6\x14a\0FW\x80c\xDF$\x81\x18\x14a\0oW\x80c\xF8\x81>\xE7\x14a\0\x82W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x07\x12V[a\0\xA5V[`@Qa\0f\x91\x90a\x08@V[`@Q\x80\x91\x03\x90\xF3[a\0Ya\0}6`\x04a\tjV[a\x01)V[a\0\x95a\0\x906`\x04a\t\xD4V[a\x01\xAFV[`@Q\x90\x15\x15\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01 \x85\x85\x85\x85a\x01\xC4V[P\x92\x93\x92PPPV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01\xA5\x86\x86\x86\x86\x86a\x01\xD7V[P\x93\x94\x93PPPPV[`\0a\x01\xBC\x84\x84\x84a\x01\xEBV[\x94\x93PPPPV[a\x01\xD1\x84\x84\x84\x84Ba\x027V[PPPPV[a\x01\xE4\x85\x85\x85\x85\x85a\x027V[PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\x02\x0FWP\x82\x82\x11[\x80a\x01\xBCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[a\x02B\x84\x84\x83a\x01\xEBV[a\x01\xE4W\x81a\x02}W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a\x02\xD9W`\0\x82\x82\x81Q\x81\x10a\x02\xA2Wa\x02\xA2a\n\tV[` \x02` \x01\x01Q\x90Pa\x02\xCB\x85a'\x10a\x02\xBD\x91\x90a\n8V[` \x83\x01Q\x90a'\x10a\x02\xE2V[` \x90\x91\x01R`\x01\x01a\x02\x85V[PPPPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x03\x17W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03xWa\x03xa\x03&V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03xWa\x03xa\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\xE8Wa\x03\xE8a\x03&V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\x12W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x04&W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04@Wa\x04@a\x03&V[a\x04q` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x03\xA1V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x86W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x04\xB5W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x04\xD9Wa\x04\xD9a\x03&V[\x81`@R\x82\x93P\x845\x91Pa\x04\xED\x82a\x03\xF0V[\x90\x82R` \x84\x015\x90a\x04\xFF\x82a\x03\xF0V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x05)\x82a\x03\xF0V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x05CW`\0\x80\xFD[Pa\x05P\x85\x82\x86\x01a\x04\x15V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x05oW`\0\x80\xFD[a\x05wa\x03UV[\x90P\x815a\x05\x84\x81a\x03\xF0V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x05\xB3W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xCFWa\x05\xCFa\x03&V[a\x05\xDD\x81\x83`\x05\x1B\x01a\x03\xA1V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x05\xFCW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x06UW\x81\x81\x8A\x03\x12\x15a\x06\x18W`\0\x80\x81\xFD[a\x06 a\x03UV[\x815a\x06+\x81a\x03\xF0V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x06D\x81a\x03\xF0V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x06\0V[P\x90\x97\x96PPPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\x06tW`\0\x80\xFD[a\x06|a\x03~V[\x90P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06\x96W`\0\x80\xFD[a\x06\xA2\x85\x83\x86\x01a\x04\xA3V[\x83Ra\x06\xB1\x85` \x86\x01a\x05]V[` \x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x06\xCAW`\0\x80\xFD[a\x06\xD6\x85\x83\x86\x01a\x05\xA2V[`@\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x06\xEFW`\0\x80\xFD[Pa\x06\xFC\x84\x82\x85\x01a\x04\x15V[``\x83\x01RP`\xC0\x82\x015`\x80\x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x07(W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07?W`\0\x80\xFD[a\x07K\x87\x82\x88\x01a\x06bV[\x94PP` \x85\x015a\x07\\\x81a\x03\xF0V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x07\x97W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x07{V[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x085W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x07\xEAV[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x08\xBCa\x01\xC0\x84\x01\x82a\x07qV[\x90P` \x84\x01Qa\x08\xFA`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\t5\x83\x83a\x07\xD5V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\tS\x82\x82a\x07qV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\t\x82W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\x99W`\0\x80\xFD[a\t\xA5\x88\x82\x89\x01a\x06bV[\x95PP` \x86\x015a\t\xB6\x81a\x03\xF0V[\x94\x97\x94\x96PPPP`@\x83\x015\x92``\x81\x015\x92`\x80\x90\x91\x015\x91PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t\xE9W`\0\x80\xFD[\x835a\t\xF4\x81a\x03\xF0V[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\nrW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x8Cx\xEC\xA7\x08hlx\x07\x02\xF3\xE8\x7F\xD6=\t\x89yl\xEE\xCE\x02S\xFB\x8E#;\xFC\0L\x9C\xD6dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\nw\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\xCA\xFFN\xF6\x14a\0CW\x80c\xDF$\x81\x18\x14a\0lW\x80c\xF8\x81>\xE7\x14a\0\x7FW[_\x80\xFD[a\0Va\0Q6`\x04a\x06\xF1V[a\0\xA2V[`@Qa\0c\x91\x90a\x08\x16V[`@Q\x80\x91\x03\x90\xF3[a\0Va\0z6`\x04a\t?V[a\x01%V[a\0\x92a\0\x8D6`\x04a\t\xA4V[a\x01\xAAV[`@Q\x90\x15\x15\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01\x1C\x85\x85\x85\x85a\x01\xBEV[P\x92\x93\x92PPPV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01\xA0\x86\x86\x86\x86\x86a\x01\xD1V[P\x93\x94\x93PPPPV[_a\x01\xB6\x84\x84\x84a\x01\xE5V[\x94\x93PPPPV[a\x01\xCB\x84\x84\x84\x84Ba\x020V[PPPPV[a\x01\xDE\x85\x85\x85\x85\x85a\x020V[PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\x02\x08WP\x82\x82\x11[\x80a\x01\xB6WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[a\x02;\x84\x84\x83a\x01\xE5V[a\x01\xDEW\x81a\x02vW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a\x02\xD0W_\x82\x82\x81Q\x81\x10a\x02\x99Wa\x02\x99a\t\xD6V[` \x02` \x01\x01Q\x90Pa\x02\xC2\x85a'\x10a\x02\xB4\x91\x90a\n\x03V[` \x83\x01Q\x90a'\x10a\x02\xD9V[` \x90\x91\x01R`\x01\x01a\x02}V[PPPPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x03\x0CW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03kWa\x03ka\x03\x1BV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03kWa\x03ka\x03\x1BV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\xDBWa\x03\xDBa\x03\x1BV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\x04W_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x04\x16W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x040Wa\x040a\x03\x1BV[a\x04a` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x03\x94V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04uW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x04\xA1W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x04\xC5Wa\x04\xC5a\x03\x1BV[\x81`@R\x82\x93P\x845\x91Pa\x04\xD9\x82a\x03\xE3V[\x90\x82R` \x84\x015\x90a\x04\xEB\x82a\x03\xE3V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x05\x15\x82a\x03\xE3V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x05.W_\x80\xFD[Pa\x05;\x85\x82\x86\x01a\x04\x07V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x05XW_\x80\xFD[a\x05`a\x03HV[\x90P\x815a\x05m\x81a\x03\xE3V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x05\x9AW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xB6Wa\x05\xB6a\x03\x1BV[a\x05\xC4\x81\x83`\x05\x1B\x01a\x03\x94V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x05\xE2W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x069W\x81\x81\x8A\x03\x12\x15a\x05\xFCW_\x80\xFD[a\x06\x04a\x03HV[\x815a\x06\x0F\x81a\x03\xE3V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x06(\x81a\x03\xE3V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x05\xE6V[P\x90\x97\x96PPPPPPPV[_`\xE0\x82\x84\x03\x12\x15a\x06VW_\x80\xFD[a\x06^a\x03qV[\x90P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06wW_\x80\xFD[a\x06\x83\x85\x83\x86\x01a\x04\x91V[\x83Ra\x06\x92\x85` \x86\x01a\x05HV[` \x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x06\xAAW_\x80\xFD[a\x06\xB6\x85\x83\x86\x01a\x05\x8BV[`@\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x06\xCEW_\x80\xFD[Pa\x06\xDB\x84\x82\x85\x01a\x04\x07V[``\x83\x01RP`\xC0\x82\x015`\x80\x82\x01R\x92\x91PPV[_\x80_\x80`\x80\x85\x87\x03\x12\x15a\x07\x04W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x1AW_\x80\xFD[a\x07&\x87\x82\x88\x01a\x06FV[\x94PP` \x85\x015a\x077\x81a\x03\xE3V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x07pW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x07TV[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x08\x0BW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x07\xC0V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x08\x91a\x01\xC0\x84\x01\x82a\x07LV[\x90P` \x84\x01Qa\x08\xCF`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\t\n\x83\x83a\x07\xADV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\t(\x82\x82a\x07LV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_\x80_\x80_`\xA0\x86\x88\x03\x12\x15a\tSW_\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\tiW_\x80\xFD[a\tu\x88\x82\x89\x01a\x06FV[\x95PP` \x86\x015a\t\x86\x81a\x03\xE3V[\x94\x97\x94\x96PPPP`@\x83\x015\x92``\x81\x015\x92`\x80\x90\x91\x015\x91PV[_\x80_``\x84\x86\x03\x12\x15a\t\xB6W_\x80\xFD[\x835a\t\xC1\x81a\x03\xE3V[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\n;W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xE7\x08\x16\x82u\xD96\xB4\x99\x8F`\xDD\x0B\xBC\x89|\x0B\xECV\xB4-\xC5\n\x83\x8F\xC66\xF8\xFE\xFC\xAB(dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063caff4ef614610046578063df2481181461006f578063f8813ee714610082575b600080fd5b610059610054366004610712565b6100a5565b6040516100669190610840565b60405180910390f35b61005961007d36600461096a565b610129565b6100956100903660046109d4565b6101af565b6040519015158152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152610120858585856101c4565b50929392505050565b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528401529282018390528282019290925260808101919091526101a586868686866101d7565b5093949350505050565b60006101bc8484846101eb565b949350505050565b6101d18484848442610237565b50505050565b6101e48585858585610237565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416158061020f57508282115b806101bc575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b6102428484836101eb565b6101e4578161027d576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b81518110156102d95760008282815181106102a2576102a2610a09565b602002602001015190506102cb856127106102bd9190610a38565b6020830151906127106102e2565b602090910152600101610285565b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261031757600080fd5b50910281810615159190040190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561037857610378610326565b60405290565b60405160a0810167ffffffffffffffff8111828210171561037857610378610326565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103e8576103e8610326565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461041257600080fd5b50565b600082601f83011261042657600080fd5b813567ffffffffffffffff81111561044057610440610326565b61047160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016103a1565b81815284602083860101111561048657600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156104b557600080fd5b60405160c0810167ffffffffffffffff82821081831117156104d9576104d9610326565b81604052829350843591506104ed826103f0565b9082526020840135906104ff826103f0565b816020840152604085013560408401526060850135606084015260808501359150610529826103f0565b81608084015260a085013591508082111561054357600080fd5b5061055085828601610415565b60a0830152505092915050565b60006060828403121561056f57600080fd5b610577610355565b90508135610584816103f0565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126105b357600080fd5b8135602067ffffffffffffffff8211156105cf576105cf610326565b6105dd818360051b016103a1565b828152606092830285018201928282019190878511156105fc57600080fd5b8387015b858110156106555781818a0312156106185760008081fd5b610620610355565b813561062b816103f0565b81528186013586820152604080830135610644816103f0565b908201528452928401928101610600565b5090979650505050505050565b600060e0828403121561067457600080fd5b61067c61037e565b9050813567ffffffffffffffff8082111561069657600080fd5b6106a2858386016104a3565b83526106b1856020860161055d565b602084015260808401359150808211156106ca57600080fd5b6106d6858386016105a2565b604084015260a08401359150808211156106ef57600080fd5b506106fc84828501610415565b60608301525060c0820135608082015292915050565b6000806000806080858703121561072857600080fd5b843567ffffffffffffffff81111561073f57600080fd5b61074b87828801610662565b945050602085013561075c816103f0565b93969395505050506040820135916060013590565b6000815180845260005b818110156107975760208185018101518683018201520161077b565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60008151808452602080850194506020840160005b83811015610835578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016107ea565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526108bc6101c0840182610771565b905060208401516108fa6040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a086015261093583836107d5565b925060608601519150808584030160c0860152506109538282610771565b915050608084015160e08401528091505092915050565b600080600080600060a0868803121561098257600080fd5b853567ffffffffffffffff81111561099957600080fd5b6109a588828901610662565b95505060208601356109b6816103f0565b94979496505050506040830135926060810135926080909101359150565b6000806000606084860312156109e957600080fd5b83356109f4816103f0565b95602085013595506040909401359392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610a72577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea26469706673582212208c78eca708686c780702f3e87fd63d0989796ceece0253fb8e233bfc004c9cd664736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063caff4ef614610043578063df2481181461006c578063f8813ee71461007f575b5f80fd5b6100566100513660046106f1565b6100a2565b6040516100639190610816565b60405180910390f35b61005661007a36600461093f565b610125565b61009261008d3660046109a4565b6101aa565b6040519015158152602001610063565b60408051610160810182525f60a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261011c858585856101be565b50929392505050565b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528401529282018390528282019290925260808101919091526101a086868686866101d1565b5093949350505050565b5f6101b68484846101e5565b949350505050565b6101cb8484848442610230565b50505050565b6101de8585858585610230565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416158061020857508282115b806101b6575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b61023b8484836101e5565b6101de5781610276576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b81518110156102d0575f828281518110610299576102996109d6565b602002602001015190506102c2856127106102b49190610a03565b6020830151906127106102d9565b60209091015260010161027d565b50505050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261030c575f80fd5b50910281810615159190040190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561036b5761036b61031b565b60405290565b60405160a0810167ffffffffffffffff8111828210171561036b5761036b61031b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156103db576103db61031b565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610404575f80fd5b50565b5f82601f830112610416575f80fd5b813567ffffffffffffffff8111156104305761043061031b565b61046160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610394565b818152846020838601011115610475575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156104a1575f80fd5b60405160c0810167ffffffffffffffff82821081831117156104c5576104c561031b565b81604052829350843591506104d9826103e3565b9082526020840135906104eb826103e3565b816020840152604085013560408401526060850135606084015260808501359150610515826103e3565b81608084015260a085013591508082111561052e575f80fd5b5061053b85828601610407565b60a0830152505092915050565b5f60608284031215610558575f80fd5b610560610348565b9050813561056d816103e3565b80825250602082013560208201526040820135604082015292915050565b5f82601f83011261059a575f80fd5b8135602067ffffffffffffffff8211156105b6576105b661031b565b6105c4818360051b01610394565b828152606092830285018201928282019190878511156105e2575f80fd5b8387015b858110156106395781818a0312156105fc575f80fd5b610604610348565b813561060f816103e3565b81528186013586820152604080830135610628816103e3565b9082015284529284019281016105e6565b5090979650505050505050565b5f60e08284031215610656575f80fd5b61065e610371565b9050813567ffffffffffffffff80821115610677575f80fd5b61068385838601610491565b83526106928560208601610548565b602084015260808401359150808211156106aa575f80fd5b6106b68583860161058b565b604084015260a08401359150808211156106ce575f80fd5b506106db84828501610407565b60608301525060c0820135608082015292915050565b5f805f8060808587031215610704575f80fd5b843567ffffffffffffffff81111561071a575f80fd5b61072687828801610646565b9450506020850135610737816103e3565b93969395505050506040820135916060013590565b5f81518084525f5b8181101561077057602081850181015186830182015201610754565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815180845260208085019450602084015f5b8381101561080b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016107c0565b509495945050505050565b602081525f825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526108916101c084018261074c565b905060208401516108cf6040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a086015261090a83836107ad565b925060608601519150808584030160c086015250610928828261074c565b915050608084015160e08401528091505092915050565b5f805f805f60a08688031215610953575f80fd5b853567ffffffffffffffff811115610969575f80fd5b61097588828901610646565b9550506020860135610986816103e3565b94979496505050506040830135926060810135926080909101359150565b5f805f606084860312156109b6575f80fd5b83356109c1816103e3565b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820180821115610a3b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9291505056fea2646970667358221220e708168275d936b4998f60dd0bbc897c0bec56b42dc50a838fc636f8fefcab2864736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\xCA\xFFN\xF6\x14a\0FW\x80c\xDF$\x81\x18\x14a\0oW\x80c\xF8\x81>\xE7\x14a\0\x82W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x07\x12V[a\0\xA5V[`@Qa\0f\x91\x90a\x08@V[`@Q\x80\x91\x03\x90\xF3[a\0Ya\0}6`\x04a\tjV[a\x01)V[a\0\x95a\0\x906`\x04a\t\xD4V[a\x01\xAFV[`@Q\x90\x15\x15\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01 \x85\x85\x85\x85a\x01\xC4V[P\x92\x93\x92PPPV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01\xA5\x86\x86\x86\x86\x86a\x01\xD7V[P\x93\x94\x93PPPPV[`\0a\x01\xBC\x84\x84\x84a\x01\xEBV[\x94\x93PPPPV[a\x01\xD1\x84\x84\x84\x84Ba\x027V[PPPPV[a\x01\xE4\x85\x85\x85\x85\x85a\x027V[PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\x02\x0FWP\x82\x82\x11[\x80a\x01\xBCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[a\x02B\x84\x84\x83a\x01\xEBV[a\x01\xE4W\x81a\x02}W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a\x02\xD9W`\0\x82\x82\x81Q\x81\x10a\x02\xA2Wa\x02\xA2a\n\tV[` \x02` \x01\x01Q\x90Pa\x02\xCB\x85a'\x10a\x02\xBD\x91\x90a\n8V[` \x83\x01Q\x90a'\x10a\x02\xE2V[` \x90\x91\x01R`\x01\x01a\x02\x85V[PPPPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x03\x17W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03xWa\x03xa\x03&V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03xWa\x03xa\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\xE8Wa\x03\xE8a\x03&V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\x12W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x04&W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04@Wa\x04@a\x03&V[a\x04q` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x03\xA1V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x86W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x04\xB5W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x04\xD9Wa\x04\xD9a\x03&V[\x81`@R\x82\x93P\x845\x91Pa\x04\xED\x82a\x03\xF0V[\x90\x82R` \x84\x015\x90a\x04\xFF\x82a\x03\xF0V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x05)\x82a\x03\xF0V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x05CW`\0\x80\xFD[Pa\x05P\x85\x82\x86\x01a\x04\x15V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x05oW`\0\x80\xFD[a\x05wa\x03UV[\x90P\x815a\x05\x84\x81a\x03\xF0V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x05\xB3W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xCFWa\x05\xCFa\x03&V[a\x05\xDD\x81\x83`\x05\x1B\x01a\x03\xA1V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x05\xFCW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x06UW\x81\x81\x8A\x03\x12\x15a\x06\x18W`\0\x80\x81\xFD[a\x06 a\x03UV[\x815a\x06+\x81a\x03\xF0V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x06D\x81a\x03\xF0V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x06\0V[P\x90\x97\x96PPPPPPPV[`\0`\xE0\x82\x84\x03\x12\x15a\x06tW`\0\x80\xFD[a\x06|a\x03~V[\x90P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06\x96W`\0\x80\xFD[a\x06\xA2\x85\x83\x86\x01a\x04\xA3V[\x83Ra\x06\xB1\x85` \x86\x01a\x05]V[` \x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x06\xCAW`\0\x80\xFD[a\x06\xD6\x85\x83\x86\x01a\x05\xA2V[`@\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x06\xEFW`\0\x80\xFD[Pa\x06\xFC\x84\x82\x85\x01a\x04\x15V[``\x83\x01RP`\xC0\x82\x015`\x80\x82\x01R\x92\x91PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x07(W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07?W`\0\x80\xFD[a\x07K\x87\x82\x88\x01a\x06bV[\x94PP` \x85\x015a\x07\\\x81a\x03\xF0V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x07\x97W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x07{V[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x085W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x07\xEAV[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x08\xBCa\x01\xC0\x84\x01\x82a\x07qV[\x90P` \x84\x01Qa\x08\xFA`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\t5\x83\x83a\x07\xD5V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\tS\x82\x82a\x07qV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0\x80`\0\x80`\0`\xA0\x86\x88\x03\x12\x15a\t\x82W`\0\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\x99W`\0\x80\xFD[a\t\xA5\x88\x82\x89\x01a\x06bV[\x95PP` \x86\x015a\t\xB6\x81a\x03\xF0V[\x94\x97\x94\x96PPPP`@\x83\x015\x92``\x81\x015\x92`\x80\x90\x91\x015\x91PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t\xE9W`\0\x80\xFD[\x835a\t\xF4\x81a\x03\xF0V[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\nrW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 \x8Cx\xEC\xA7\x08hlx\x07\x02\xF3\xE8\x7F\xD6=\t\x89yl\xEE\xCE\x02S\xFB\x8E#;\xFC\0L\x9C\xD6dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\xCA\xFFN\xF6\x14a\0CW\x80c\xDF$\x81\x18\x14a\0lW\x80c\xF8\x81>\xE7\x14a\0\x7FW[_\x80\xFD[a\0Va\0Q6`\x04a\x06\xF1V[a\0\xA2V[`@Qa\0c\x91\x90a\x08\x16V[`@Q\x80\x91\x03\x90\xF3[a\0Va\0z6`\x04a\t?V[a\x01%V[a\0\x92a\0\x8D6`\x04a\t\xA4V[a\x01\xAAV[`@Q\x90\x15\x15\x81R` \x01a\0cV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01\x1C\x85\x85\x85\x85a\x01\xBEV[P\x92\x93\x92PPPV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x01\xA0\x86\x86\x86\x86\x86a\x01\xD1V[P\x93\x94\x93PPPPV[_a\x01\xB6\x84\x84\x84a\x01\xE5V[\x94\x93PPPPV[a\x01\xCB\x84\x84\x84\x84Ba\x020V[PPPPV[a\x01\xDE\x85\x85\x85\x85\x85a\x020V[PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a\x02\x08WP\x82\x82\x11[\x80a\x01\xB6WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[a\x02;\x84\x84\x83a\x01\xE5V[a\x01\xDEW\x81a\x02vW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a\x02\xD0W_\x82\x82\x81Q\x81\x10a\x02\x99Wa\x02\x99a\t\xD6V[` \x02` \x01\x01Q\x90Pa\x02\xC2\x85a'\x10a\x02\xB4\x91\x90a\n\x03V[` \x83\x01Q\x90a'\x10a\x02\xD9V[` \x90\x91\x01R`\x01\x01a\x02}V[PPPPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x03\x0CW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03kWa\x03ka\x03\x1BV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03kWa\x03ka\x03\x1BV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\xDBWa\x03\xDBa\x03\x1BV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x04\x04W_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x04\x16W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x040Wa\x040a\x03\x1BV[a\x04a` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x03\x94V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04uW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x04\xA1W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x04\xC5Wa\x04\xC5a\x03\x1BV[\x81`@R\x82\x93P\x845\x91Pa\x04\xD9\x82a\x03\xE3V[\x90\x82R` \x84\x015\x90a\x04\xEB\x82a\x03\xE3V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x05\x15\x82a\x03\xE3V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x05.W_\x80\xFD[Pa\x05;\x85\x82\x86\x01a\x04\x07V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x05XW_\x80\xFD[a\x05`a\x03HV[\x90P\x815a\x05m\x81a\x03\xE3V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x05\x9AW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xB6Wa\x05\xB6a\x03\x1BV[a\x05\xC4\x81\x83`\x05\x1B\x01a\x03\x94V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x05\xE2W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x069W\x81\x81\x8A\x03\x12\x15a\x05\xFCW_\x80\xFD[a\x06\x04a\x03HV[\x815a\x06\x0F\x81a\x03\xE3V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x06(\x81a\x03\xE3V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x05\xE6V[P\x90\x97\x96PPPPPPPV[_`\xE0\x82\x84\x03\x12\x15a\x06VW_\x80\xFD[a\x06^a\x03qV[\x90P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06wW_\x80\xFD[a\x06\x83\x85\x83\x86\x01a\x04\x91V[\x83Ra\x06\x92\x85` \x86\x01a\x05HV[` \x84\x01R`\x80\x84\x015\x91P\x80\x82\x11\x15a\x06\xAAW_\x80\xFD[a\x06\xB6\x85\x83\x86\x01a\x05\x8BV[`@\x84\x01R`\xA0\x84\x015\x91P\x80\x82\x11\x15a\x06\xCEW_\x80\xFD[Pa\x06\xDB\x84\x82\x85\x01a\x04\x07V[``\x83\x01RP`\xC0\x82\x015`\x80\x82\x01R\x92\x91PPV[_\x80_\x80`\x80\x85\x87\x03\x12\x15a\x07\x04W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\x1AW_\x80\xFD[a\x07&\x87\x82\x88\x01a\x06FV[\x94PP` \x85\x015a\x077\x81a\x03\xE3V[\x93\x96\x93\x95PPPP`@\x82\x015\x91``\x015\x90V[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x07pW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x07TV[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x08\x0BW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x07\xC0V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x08\x91a\x01\xC0\x84\x01\x82a\x07LV[\x90P` \x84\x01Qa\x08\xCF`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\t\n\x83\x83a\x07\xADV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\t(\x82\x82a\x07LV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_\x80_\x80_`\xA0\x86\x88\x03\x12\x15a\tSW_\x80\xFD[\x855g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\tiW_\x80\xFD[a\tu\x88\x82\x89\x01a\x06FV[\x95PP` \x86\x015a\t\x86\x81a\x03\xE3V[\x94\x97\x94\x96PPPP`@\x83\x015\x92``\x81\x015\x92`\x80\x90\x91\x015\x91PV[_\x80_``\x84\x86\x03\x12\x15a\t\xB6W_\x80\xFD[\x835a\t\xC1\x81a\x03\xE3V[\x95` \x85\x015\x95P`@\x90\x94\x015\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\n;W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xE7\x08\x16\x82u\xD96\xB4\x99\x8F`\xDD\x0B\xBC\x89|\x0B\xECV\xB4-\xC5\n\x83\x8F\xC66\xF8\xFE\xFC\xAB(dsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -567,8 +581,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -785,17 +799,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -811,8 +836,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -1081,14 +1106,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1100,7 +1133,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1314,18 +1347,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1603,10 +1646,15 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity error NoExclusiveOverride(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NoExclusiveOverride {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1662,22 +1710,33 @@ error NoExclusiveOverride(); ```solidity function handleExclusiveOverrideBlock(ResolvedOrder memory order, address exclusive, uint256 exclusivityEnd, uint256 exclusivityOverrideBps, uint256 blockNumberish) external view returns (ResolvedOrder memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct handleExclusiveOverrideBlockCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub exclusive: alloy::sol_types::private::Address, - pub exclusivityEnd: alloy::sol_types::private::U256, - pub exclusivityOverrideBps: alloy::sol_types::private::U256, - pub blockNumberish: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub exclusivityEnd: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub exclusivityOverrideBps: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub blockNumberish: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`handleExclusiveOverrideBlock(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256,uint256)`](handleExclusiveOverrideBlockCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct handleExclusiveOverrideBlockReturn { + #[allow(missing_docs)] pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1693,9 +1752,9 @@ function handleExclusiveOverrideBlock(ResolvedOrder memory order, address exclus type UnderlyingRustTuple<'a> = ( ::RustType, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1833,21 +1892,31 @@ function handleExclusiveOverrideBlock(ResolvedOrder memory order, address exclus ```solidity function handleExclusiveOverrideTimestamp(ResolvedOrder memory order, address exclusive, uint256 exclusivityEnd, uint256 exclusivityOverrideBps) external view returns (ResolvedOrder memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct handleExclusiveOverrideTimestampCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub exclusive: alloy::sol_types::private::Address, - pub exclusivityEnd: alloy::sol_types::private::U256, - pub exclusivityOverrideBps: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub exclusivityEnd: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub exclusivityOverrideBps: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`handleExclusiveOverrideTimestamp(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address,uint256,uint256)`](handleExclusiveOverrideTimestampCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct handleExclusiveOverrideTimestampReturn { + #[allow(missing_docs)] pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1862,8 +1931,8 @@ function handleExclusiveOverrideTimestamp(ResolvedOrder memory order, address ex type UnderlyingRustTuple<'a> = ( ::RustType, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1995,20 +2064,29 @@ function handleExclusiveOverrideTimestamp(ResolvedOrder memory order, address ex ```solidity function hasFillingRights(address exclusive, uint256 exclusivityEnd, uint256 currentPosition) external view returns (bool pass); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct hasFillingRightsCall { + #[allow(missing_docs)] pub exclusive: alloy::sol_types::private::Address, - pub exclusivityEnd: alloy::sol_types::private::U256, - pub currentPosition: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub exclusivityEnd: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub currentPosition: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`hasFillingRights(address,uint256,uint256)`](hasFillingRightsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct hasFillingRightsReturn { + #[allow(missing_docs)] pub pass: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2021,8 +2099,8 @@ function hasFillingRights(address exclusive, uint256 exclusivityEnd, uint256 cur #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2140,8 +2218,11 @@ function hasFillingRights(address exclusive, uint256 exclusivityEnd, uint256 cur }; ///Container for all the [`MockExclusivityLib`](self) function calls. pub enum MockExclusivityLibCalls { + #[allow(missing_docs)] handleExclusiveOverrideBlock(handleExclusiveOverrideBlockCall), + #[allow(missing_docs)] handleExclusiveOverrideTimestamp(handleExclusiveOverrideTimestampCall), + #[allow(missing_docs)] hasFillingRights(hasFillingRightsCall), } #[automatically_derived] @@ -2186,7 +2267,7 @@ function hasFillingRights(address exclusive, uint256 exclusivityEnd, uint256 cur Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2246,7 +2327,7 @@ function hasFillingRights(address exclusive, uint256 exclusivityEnd, uint256 cur ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2294,6 +2375,7 @@ function hasFillingRights(address exclusive, uint256 exclusivityEnd, uint256 cur } ///Container for all the [`MockExclusivityLib`](self) custom errors. pub enum MockExclusivityLibErrors { + #[allow(missing_docs)] NoExclusiveOverride(NoExclusiveOverride), } #[automatically_derived] @@ -2328,7 +2410,7 @@ function hasFillingRights(address exclusive, uint256 exclusivityEnd, uint256 cur Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2360,7 +2442,7 @@ function hasFillingRights(address exclusive, uint256 exclusivityEnd, uint256 cur ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2553,9 +2635,9 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, order: ::RustType, exclusive: alloy::sol_types::private::Address, - exclusivityEnd: alloy::sol_types::private::U256, - exclusivityOverrideBps: alloy::sol_types::private::U256, - blockNumberish: alloy::sol_types::private::U256, + exclusivityEnd: alloy::sol_types::private::primitives::aliases::U256, + exclusivityOverrideBps: alloy::sol_types::private::primitives::aliases::U256, + blockNumberish: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &handleExclusiveOverrideBlockCall { @@ -2572,8 +2654,8 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, order: ::RustType, exclusive: alloy::sol_types::private::Address, - exclusivityEnd: alloy::sol_types::private::U256, - exclusivityOverrideBps: alloy::sol_types::private::U256, + exclusivityEnd: alloy::sol_types::private::primitives::aliases::U256, + exclusivityOverrideBps: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder< T, &P, @@ -2593,8 +2675,8 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn hasFillingRights( &self, exclusive: alloy::sol_types::private::Address, - exclusivityEnd: alloy::sol_types::private::U256, - currentPosition: alloy::sol_types::private::U256, + exclusivityEnd: alloy::sol_types::private::primitives::aliases::U256, + currentPosition: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &hasFillingRightsCall { diff --git a/crates/bindings-uniswapx/src/mockfeecontroller.rs b/crates/bindings-uniswapx/src/mockfeecontroller.rs index 834a06b..308a413 100644 --- a/crates/bindings-uniswapx/src/mockfeecontroller.rs +++ b/crates/bindings-uniswapx/src/mockfeecontroller.rs @@ -292,41 +292,55 @@ interface MockFeeController { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockFeeController { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a060405234801561001057600080fd5b50604051610cc5380380610cc583398101604081905261002f91610081565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b608051610bf36100d260003960008181607c01526103730152610bf36000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639b9ac2cb116100505780639b9ac2cb14610108578063dc7e98df14610141578063f2fde38b1461015657600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d63660046108d9565b610169565b6040516100bf91906109ab565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b610133610116366004610a1e565b600160209081526000928352604080842090915290825290205481565b6040519081526020016100bf565b61015461014f366004610a57565b6103ed565b005b610154610164366004610a98565b6104ac565b606081604001515167ffffffffffffffff8111156101895761018961059d565b6040519080825280602002602001820160405280156101f257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101a75790505b506020830151519091506000805b8460400151518110156103e45760008560400151828151811061022557610225610abc565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff80871660009081526001845260408082209284168252919093529091205490915080156103da576000612710828960400151868151811061028a5761028a610abc565b6020026020010151602001516102a09190610b1a565b6102aa9190610b37565b90506000805b868110156103305760008982815181106102cc576102cc610abc565b602002602001015190508573ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610327576001925083816020018181516103239190610b72565b9052505b506001016102b0565b508015801561033f5750600082115b156103d75760405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018381526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508887815181106103bd576103bd610abc565b602002602001018190525085806103d390610b85565b9650505b50505b5050600101610200565b50825250919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff92831660009081526001602090815260408083209490951682529290925291902055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161046a565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156105ef576105ef61059d565b60405290565b60405160a0810167ffffffffffffffff811182821017156105ef576105ef61059d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561065f5761065f61059d565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461068957600080fd5b50565b600082601f83011261069d57600080fd5b813567ffffffffffffffff8111156106b7576106b761059d565b6106e860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610618565b8181528460208386010111156106fd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561072c57600080fd5b60405160c0810167ffffffffffffffff82821081831117156107505761075061059d565b816040528293508435915061076482610667565b90825260208401359061077682610667565b8160208401526040850135604084015260608501356060840152608085013591506107a082610667565b81608084015260a08501359150808211156107ba57600080fd5b506107c78582860161068c565b60a0830152505092915050565b6000606082840312156107e657600080fd5b6107ee6105cc565b905081356107fb81610667565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261082a57600080fd5b8135602067ffffffffffffffff8211156108465761084661059d565b610854818360051b01610618565b8281526060928302850182019282820191908785111561087357600080fd5b8387015b858110156108cc5781818a03121561088f5760008081fd5b6108976105cc565b81356108a281610667565b815281860135868201526040808301356108bb81610667565b908201528452928401928101610877565b5090979650505050505050565b6000602082840312156108eb57600080fd5b813567ffffffffffffffff8082111561090357600080fd5b9083019060e0828603121561091757600080fd5b61091f6105f5565b82358281111561092e57600080fd5b61093a8782860161071a565b82525061094a86602085016107d4565b602082015260808301358281111561096157600080fd5b61096d87828601610819565b60408301525060a08301358281111561098557600080fd5b6109918782860161068c565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b82811015610a11578151805173ffffffffffffffffffffffffffffffffffffffff90811686528782015188870152908601511685850152606090930192908501906001016109c8565b5091979650505050505050565b60008060408385031215610a3157600080fd5b8235610a3c81610667565b91506020830135610a4c81610667565b809150509250929050565b600080600060608486031215610a6c57600080fd5b8335610a7781610667565b92506020840135610a8781610667565b929592945050506040919091013590565b600060208284031215610aaa57600080fd5b8135610ab581610667565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610b3157610b31610aeb565b92915050565b600082610b6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610b3157610b31610aeb565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610bb657610bb6610aeb565b506001019056fea2646970667358221220aad02864b22e7ba862f7bdb80eec803c0a21e4bfb0d2a59c025ce0d0cf380f3f64736f6c63430008180033 + ///0x60a060405234801561000f575f80fd5b50604051610c82380380610c8283398101604081905261002e9161007f565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100ac565b5f6020828403121561008f575f80fd5b81516001600160a01b03811681146100a5575f80fd5b9392505050565b608051610bb86100ca5f395f8181607801526103640152610bb85ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c80639b9ac2cb1161004d5780639b9ac2cb14610103578063dc7e98df1461013b578063f2fde38b14610150575f80fd5b806346904840146100735780638aa6cf03146100c45780638da5cb5b146100e4575b5f80fd5b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d76100d23660046108b5565b610163565b6040516100bb9190610980565b5f5461009a9073ffffffffffffffffffffffffffffffffffffffff1681565b61012d6101113660046109f2565b600160209081525f928352604080842090915290825290205481565b6040519081526020016100bb565b61014e610149366004610a29565b6103de565b005b61014e61015e366004610a67565b61049b565b606081604001515167ffffffffffffffff8111156101835761018361058a565b6040519080825280602002602001820160405280156101eb57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101a15790505b506020830151519091505f805b8460400151518110156103d5575f8560400151828151811061021c5761021c610a89565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff8087165f9081526001845260408082209284168252919093529091205490915080156103cb575f612710828960400151868151811061027f5761027f610a89565b6020026020010151602001516102959190610ae3565b61029f9190610b00565b90505f805b86811015610322575f8982815181106102bf576102bf610a89565b602002602001015190508573ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1603610319576001925083816020018181516103159190610b38565b9052505b506001016102a4565b508015801561033057505f82115b156103c85760405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018381526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508887815181106103ae576103ae610a89565b602002602001018190525085806103c490610b4b565b9650505b50505b50506001016101f8565b50825250919050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff9283165f9081526001602090815260408083209490951682529290925291902055565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461051b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161045a565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156105da576105da61058a565b60405290565b60405160a0810167ffffffffffffffff811182821017156105da576105da61058a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561064a5761064a61058a565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610673575f80fd5b50565b5f82601f830112610685575f80fd5b813567ffffffffffffffff81111561069f5761069f61058a565b6106d060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610603565b8181528460208386010111156106e4575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215610710575f80fd5b60405160c0810167ffffffffffffffff82821081831117156107345761073461058a565b816040528293508435915061074882610652565b90825260208401359061075a82610652565b81602084015260408501356040840152606085013560608401526080850135915061078482610652565b81608084015260a085013591508082111561079d575f80fd5b506107aa85828601610676565b60a0830152505092915050565b5f606082840312156107c7575f80fd5b6107cf6105b7565b905081356107dc81610652565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610809575f80fd5b8135602067ffffffffffffffff8211156108255761082561058a565b610833818360051b01610603565b82815260609283028501820192828201919087851115610851575f80fd5b8387015b858110156108a85781818a03121561086b575f80fd5b6108736105b7565b813561087e81610652565b8152818601358682015260408083013561089781610652565b908201528452928401928101610855565b5090979650505050505050565b5f602082840312156108c5575f80fd5b813567ffffffffffffffff808211156108dc575f80fd5b9083019060e082860312156108ef575f80fd5b6108f76105e0565b823582811115610905575f80fd5b61091187828601610700565b82525061092186602085016107b7565b6020820152608083013582811115610937575f80fd5b610943878286016107fa565b60408301525060a08301358281111561095a575f80fd5b61096687828601610676565b60608301525060c092909201356080830152509392505050565b602080825282518282018190525f919060409081850190868401855b828110156109e5578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161099c565b5091979650505050505050565b5f8060408385031215610a03575f80fd5b8235610a0e81610652565b91506020830135610a1e81610652565b809150509250929050565b5f805f60608486031215610a3b575f80fd5b8335610a4681610652565b92506020840135610a5681610652565b929592945050506040919091013590565b5f60208284031215610a77575f80fd5b8135610a8281610652565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610afa57610afa610ab6565b92915050565b5f82610b33577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b80820180821115610afa57610afa610ab6565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b7b57610b7b610ab6565b506001019056fea26469706673582212205844d921681ca114385ccabd757538c1e136cd58059ee14c23343c1aad69de6a64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0C\xC58\x03\x80a\x0C\xC5\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x81V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xB1V[`\0` \x82\x84\x03\x12\x15a\0\x93W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xAAW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x0B\xF3a\0\xD2`\09`\0\x81\x81`|\x01Ra\x03s\x01Ra\x0B\xF3`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0PW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x08W\x80c\xDC~\x98\xDF\x14a\x01AW\x80c\xF2\xFD\xE3\x8B\x14a\x01VW`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x08\xD9V[a\x01iV[`@Qa\0\xBF\x91\x90a\t\xABV[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x013a\x01\x166`\x04a\n\x1EV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[a\x01Ta\x01O6`\x04a\nWV[a\x03\xEDV[\0[a\x01Ta\x01d6`\x04a\n\x98V[a\x04\xACV[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x89Wa\x01\x89a\x05\x9DV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xF2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA7W\x90P[P` \x83\x01QQ\x90\x91P`\0\x80[\x84`@\x01QQ\x81\x10\x15a\x03\xE4W`\0\x85`@\x01Q\x82\x81Q\x81\x10a\x02%Wa\x02%a\n\xBCV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16`\0\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x03\xDAW`\0a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x8AWa\x02\x8Aa\n\xBCV[` \x02` \x01\x01Q` \x01Qa\x02\xA0\x91\x90a\x0B\x1AV[a\x02\xAA\x91\x90a\x0B7V[\x90P`\0\x80[\x86\x81\x10\x15a\x030W`\0\x89\x82\x81Q\x81\x10a\x02\xCCWa\x02\xCCa\n\xBCV[` \x02` \x01\x01Q\x90P\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x03'W`\x01\x92P\x83\x81` \x01\x81\x81Qa\x03#\x91\x90a\x0BrV[\x90RP[P`\x01\x01a\x02\xB0V[P\x80\x15\x80\x15a\x03?WP`\0\x82\x11[\x15a\x03\xD7W`@Q\x80``\x01`@R\x80\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x88\x87\x81Q\x81\x10a\x03\xBDWa\x03\xBDa\n\xBCV[` \x02` \x01\x01\x81\x90RP\x85\x80a\x03\xD3\x90a\x0B\x85V[\x96PP[PP[PP`\x01\x01a\x02\0V[P\x82RP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04sW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05-W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04jV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xEFWa\x05\xEFa\x05\x9DV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xEFWa\x05\xEFa\x05\x9DV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x06_Wa\x06_a\x05\x9DV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x89W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06\x9DW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\xB7Wa\x06\xB7a\x05\x9DV[a\x06\xE8` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x06\x18V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xFDW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x07,W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x07PWa\x07Pa\x05\x9DV[\x81`@R\x82\x93P\x845\x91Pa\x07d\x82a\x06gV[\x90\x82R` \x84\x015\x90a\x07v\x82a\x06gV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\xA0\x82a\x06gV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\xBAW`\0\x80\xFD[Pa\x07\xC7\x85\x82\x86\x01a\x06\x8CV[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07\xE6W`\0\x80\xFD[a\x07\xEEa\x05\xCCV[\x90P\x815a\x07\xFB\x81a\x06gV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x08*W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08FWa\x08Fa\x05\x9DV[a\x08T\x81\x83`\x05\x1B\x01a\x06\x18V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08sW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xCCW\x81\x81\x8A\x03\x12\x15a\x08\x8FW`\0\x80\x81\xFD[a\x08\x97a\x05\xCCV[\x815a\x08\xA2\x81a\x06gV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xBB\x81a\x06gV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08wV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08\xEBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\t\x03W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\t\x17W`\0\x80\xFD[a\t\x1Fa\x05\xF5V[\x825\x82\x81\x11\x15a\t.W`\0\x80\xFD[a\t:\x87\x82\x86\x01a\x07\x1AV[\x82RPa\tJ\x86` \x85\x01a\x07\xD4V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\taW`\0\x80\xFD[a\tm\x87\x82\x86\x01a\x08\x19V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\t\x85W`\0\x80\xFD[a\t\x91\x87\x82\x86\x01a\x06\x8CV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\n\x11W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\xC8V[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\n1W`\0\x80\xFD[\x825a\n<\x81a\x06gV[\x91P` \x83\x015a\nL\x81a\x06gV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\nlW`\0\x80\xFD[\x835a\nw\x81a\x06gV[\x92P` \x84\x015a\n\x87\x81a\x06gV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\n\xAAW`\0\x80\xFD[\x815a\n\xB5\x81a\x06gV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0B1Wa\x0B1a\n\xEBV[\x92\x91PPV[`\0\x82a\x0BmW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\x0B1Wa\x0B1a\n\xEBV[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x0B\xB6Wa\x0B\xB6a\n\xEBV[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \xAA\xD0(d\xB2.{\xA8b\xF7\xBD\xB8\x0E\xEC\x80<\n!\xE4\xBF\xB0\xD2\xA5\x9C\x02\\\xE0\xD0\xCF8\x0F?dsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\x0C\x828\x03\x80a\x0C\x82\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\x7FV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xACV[_` \x82\x84\x03\x12\x15a\0\x8FW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xA5W_\x80\xFD[\x93\x92PPPV[`\x80Qa\x0B\xB8a\0\xCA_9_\x81\x81`x\x01Ra\x03d\x01Ra\x0B\xB8_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0MW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x03W\x80c\xDC~\x98\xDF\x14a\x01;W\x80c\xF2\xFD\xE3\x8B\x14a\x01PW_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x08\xB5V[a\x01cV[`@Qa\0\xBB\x91\x90a\t\x80V[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01-a\x01\x116`\x04a\t\xF2V[`\x01` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[a\x01Na\x01I6`\x04a\n)V[a\x03\xDEV[\0[a\x01Na\x01^6`\x04a\ngV[a\x04\x9BV[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x83Wa\x01\x83a\x05\x8AV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xEBW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA1W\x90P[P` \x83\x01QQ\x90\x91P_\x80[\x84`@\x01QQ\x81\x10\x15a\x03\xD5W_\x85`@\x01Q\x82\x81Q\x81\x10a\x02\x1CWa\x02\x1Ca\n\x89V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16_\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x03\xCBW_a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x7FWa\x02\x7Fa\n\x89V[` \x02` \x01\x01Q` \x01Qa\x02\x95\x91\x90a\n\xE3V[a\x02\x9F\x91\x90a\x0B\0V[\x90P_\x80[\x86\x81\x10\x15a\x03\"W_\x89\x82\x81Q\x81\x10a\x02\xBFWa\x02\xBFa\n\x89V[` \x02` \x01\x01Q\x90P\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x03\x19W`\x01\x92P\x83\x81` \x01\x81\x81Qa\x03\x15\x91\x90a\x0B8V[\x90RP[P`\x01\x01a\x02\xA4V[P\x80\x15\x80\x15a\x030WP_\x82\x11[\x15a\x03\xC8W`@Q\x80``\x01`@R\x80\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x88\x87\x81Q\x81\x10a\x03\xAEWa\x03\xAEa\n\x89V[` \x02` \x01\x01\x81\x90RP\x85\x80a\x03\xC4\x90a\x0BKV[\x96PP[PP[PP`\x01\x01a\x01\xF8V[P\x82RP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04cW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x1BW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04ZV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xDAWa\x05\xDAa\x05\x8AV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xDAWa\x05\xDAa\x05\x8AV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x06JWa\x06Ja\x05\x8AV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06sW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x06\x85W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x9FWa\x06\x9Fa\x05\x8AV[a\x06\xD0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x06\x03V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xE4W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x07\x10W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x074Wa\x074a\x05\x8AV[\x81`@R\x82\x93P\x845\x91Pa\x07H\x82a\x06RV[\x90\x82R` \x84\x015\x90a\x07Z\x82a\x06RV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x84\x82a\x06RV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x9DW_\x80\xFD[Pa\x07\xAA\x85\x82\x86\x01a\x06vV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xC7W_\x80\xFD[a\x07\xCFa\x05\xB7V[\x90P\x815a\x07\xDC\x81a\x06RV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x08\tW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08%Wa\x08%a\x05\x8AV[a\x083\x81\x83`\x05\x1B\x01a\x06\x03V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08QW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xA8W\x81\x81\x8A\x03\x12\x15a\x08kW_\x80\xFD[a\x08sa\x05\xB7V[\x815a\x08~\x81a\x06RV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x97\x81a\x06RV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08UV[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x08\xC5W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xDCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08\xEFW_\x80\xFD[a\x08\xF7a\x05\xE0V[\x825\x82\x81\x11\x15a\t\x05W_\x80\xFD[a\t\x11\x87\x82\x86\x01a\x07\0V[\x82RPa\t!\x86` \x85\x01a\x07\xB7V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\t7W_\x80\xFD[a\tC\x87\x82\x86\x01a\x07\xFAV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\tZW_\x80\xFD[a\tf\x87\x82\x86\x01a\x06vV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\t\xE5W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\x9CV[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\n\x03W_\x80\xFD[\x825a\n\x0E\x81a\x06RV[\x91P` \x83\x015a\n\x1E\x81a\x06RV[\x80\x91PP\x92P\x92\x90PV[_\x80_``\x84\x86\x03\x12\x15a\n;W_\x80\xFD[\x835a\nF\x81a\x06RV[\x92P` \x84\x015a\nV\x81a\x06RV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\nwW_\x80\xFD[\x815a\n\x82\x81a\x06RV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n\xFAWa\n\xFAa\n\xB6V[\x92\x91PPV[_\x82a\x0B3W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\n\xFAWa\n\xFAa\n\xB6V[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x0B{Wa\x0B{a\n\xB6V[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 XD\xD9!h\x1C\xA1\x148\\\xCA\xBDuu8\xC1\xE16\xCDX\x05\x9E\xE1L#4<\x1A\xADi\xDEjdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100725760003560e01c80639b9ac2cb116100505780639b9ac2cb14610108578063dc7e98df14610141578063f2fde38b1461015657600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d63660046108d9565b610169565b6040516100bf91906109ab565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b610133610116366004610a1e565b600160209081526000928352604080842090915290825290205481565b6040519081526020016100bf565b61015461014f366004610a57565b6103ed565b005b610154610164366004610a98565b6104ac565b606081604001515167ffffffffffffffff8111156101895761018961059d565b6040519080825280602002602001820160405280156101f257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101a75790505b506020830151519091506000805b8460400151518110156103e45760008560400151828151811061022557610225610abc565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff80871660009081526001845260408082209284168252919093529091205490915080156103da576000612710828960400151868151811061028a5761028a610abc565b6020026020010151602001516102a09190610b1a565b6102aa9190610b37565b90506000805b868110156103305760008982815181106102cc576102cc610abc565b602002602001015190508573ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610327576001925083816020018181516103239190610b72565b9052505b506001016102b0565b508015801561033f5750600082115b156103d75760405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018381526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508887815181106103bd576103bd610abc565b602002602001018190525085806103d390610b85565b9650505b50505b5050600101610200565b50825250919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff92831660009081526001602090815260408083209490951682529290925291902055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461052d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161046a565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156105ef576105ef61059d565b60405290565b60405160a0810167ffffffffffffffff811182821017156105ef576105ef61059d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561065f5761065f61059d565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461068957600080fd5b50565b600082601f83011261069d57600080fd5b813567ffffffffffffffff8111156106b7576106b761059d565b6106e860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610618565b8181528460208386010111156106fd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561072c57600080fd5b60405160c0810167ffffffffffffffff82821081831117156107505761075061059d565b816040528293508435915061076482610667565b90825260208401359061077682610667565b8160208401526040850135604084015260608501356060840152608085013591506107a082610667565b81608084015260a08501359150808211156107ba57600080fd5b506107c78582860161068c565b60a0830152505092915050565b6000606082840312156107e657600080fd5b6107ee6105cc565b905081356107fb81610667565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261082a57600080fd5b8135602067ffffffffffffffff8211156108465761084661059d565b610854818360051b01610618565b8281526060928302850182019282820191908785111561087357600080fd5b8387015b858110156108cc5781818a03121561088f5760008081fd5b6108976105cc565b81356108a281610667565b815281860135868201526040808301356108bb81610667565b908201528452928401928101610877565b5090979650505050505050565b6000602082840312156108eb57600080fd5b813567ffffffffffffffff8082111561090357600080fd5b9083019060e0828603121561091757600080fd5b61091f6105f5565b82358281111561092e57600080fd5b61093a8782860161071a565b82525061094a86602085016107d4565b602082015260808301358281111561096157600080fd5b61096d87828601610819565b60408301525060a08301358281111561098557600080fd5b6109918782860161068c565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b82811015610a11578151805173ffffffffffffffffffffffffffffffffffffffff90811686528782015188870152908601511685850152606090930192908501906001016109c8565b5091979650505050505050565b60008060408385031215610a3157600080fd5b8235610a3c81610667565b91506020830135610a4c81610667565b809150509250929050565b600080600060608486031215610a6c57600080fd5b8335610a7781610667565b92506020840135610a8781610667565b929592945050506040919091013590565b600060208284031215610aaa57600080fd5b8135610ab581610667565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610b3157610b31610aeb565b92915050565b600082610b6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610b3157610b31610aeb565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610bb657610bb6610aeb565b506001019056fea2646970667358221220aad02864b22e7ba862f7bdb80eec803c0a21e4bfb0d2a59c025ce0d0cf380f3f64736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506004361061006f575f3560e01c80639b9ac2cb1161004d5780639b9ac2cb14610103578063dc7e98df1461013b578063f2fde38b14610150575f80fd5b806346904840146100735780638aa6cf03146100c45780638da5cb5b146100e4575b5f80fd5b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d76100d23660046108b5565b610163565b6040516100bb9190610980565b5f5461009a9073ffffffffffffffffffffffffffffffffffffffff1681565b61012d6101113660046109f2565b600160209081525f928352604080842090915290825290205481565b6040519081526020016100bb565b61014e610149366004610a29565b6103de565b005b61014e61015e366004610a67565b61049b565b606081604001515167ffffffffffffffff8111156101835761018361058a565b6040519080825280602002602001820160405280156101eb57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101a15790505b506020830151519091505f805b8460400151518110156103d5575f8560400151828151811061021c5761021c610a89565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff8087165f9081526001845260408082209284168252919093529091205490915080156103cb575f612710828960400151868151811061027f5761027f610a89565b6020026020010151602001516102959190610ae3565b61029f9190610b00565b90505f805b86811015610322575f8982815181106102bf576102bf610a89565b602002602001015190508573ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1603610319576001925083816020018181516103159190610b38565b9052505b506001016102a4565b508015801561033057505f82115b156103c85760405180606001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020018381526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508887815181106103ae576103ae610a89565b602002602001018190525085806103c490610b4b565b9650505b50505b50506001016101f8565b50825250919050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff9283165f9081526001602090815260408083209490951682529290925291902055565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461051b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161045a565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156105da576105da61058a565b60405290565b60405160a0810167ffffffffffffffff811182821017156105da576105da61058a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561064a5761064a61058a565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610673575f80fd5b50565b5f82601f830112610685575f80fd5b813567ffffffffffffffff81111561069f5761069f61058a565b6106d060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610603565b8181528460208386010111156106e4575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215610710575f80fd5b60405160c0810167ffffffffffffffff82821081831117156107345761073461058a565b816040528293508435915061074882610652565b90825260208401359061075a82610652565b81602084015260408501356040840152606085013560608401526080850135915061078482610652565b81608084015260a085013591508082111561079d575f80fd5b506107aa85828601610676565b60a0830152505092915050565b5f606082840312156107c7575f80fd5b6107cf6105b7565b905081356107dc81610652565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610809575f80fd5b8135602067ffffffffffffffff8211156108255761082561058a565b610833818360051b01610603565b82815260609283028501820192828201919087851115610851575f80fd5b8387015b858110156108a85781818a03121561086b575f80fd5b6108736105b7565b813561087e81610652565b8152818601358682015260408083013561089781610652565b908201528452928401928101610855565b5090979650505050505050565b5f602082840312156108c5575f80fd5b813567ffffffffffffffff808211156108dc575f80fd5b9083019060e082860312156108ef575f80fd5b6108f76105e0565b823582811115610905575f80fd5b61091187828601610700565b82525061092186602085016107b7565b6020820152608083013582811115610937575f80fd5b610943878286016107fa565b60408301525060a08301358281111561095a575f80fd5b61096687828601610676565b60608301525060c092909201356080830152509392505050565b602080825282518282018190525f919060409081850190868401855b828110156109e5578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161099c565b5091979650505050505050565b5f8060408385031215610a03575f80fd5b8235610a0e81610652565b91506020830135610a1e81610652565b809150509250929050565b5f805f60608486031215610a3b575f80fd5b8335610a4681610652565b92506020840135610a5681610652565b929592945050506040919091013590565b5f60208284031215610a77575f80fd5b8135610a8281610652565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610afa57610afa610ab6565b92915050565b5f82610b33577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b80820180821115610afa57610afa610ab6565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b7b57610b7b610ab6565b506001019056fea26469706673582212205844d921681ca114385ccabd757538c1e136cd58059ee14c23343c1aad69de6a64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0PW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x08W\x80c\xDC~\x98\xDF\x14a\x01AW\x80c\xF2\xFD\xE3\x8B\x14a\x01VW`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x08\xD9V[a\x01iV[`@Qa\0\xBF\x91\x90a\t\xABV[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x013a\x01\x166`\x04a\n\x1EV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[a\x01Ta\x01O6`\x04a\nWV[a\x03\xEDV[\0[a\x01Ta\x01d6`\x04a\n\x98V[a\x04\xACV[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x89Wa\x01\x89a\x05\x9DV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xF2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA7W\x90P[P` \x83\x01QQ\x90\x91P`\0\x80[\x84`@\x01QQ\x81\x10\x15a\x03\xE4W`\0\x85`@\x01Q\x82\x81Q\x81\x10a\x02%Wa\x02%a\n\xBCV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16`\0\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x03\xDAW`\0a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x8AWa\x02\x8Aa\n\xBCV[` \x02` \x01\x01Q` \x01Qa\x02\xA0\x91\x90a\x0B\x1AV[a\x02\xAA\x91\x90a\x0B7V[\x90P`\0\x80[\x86\x81\x10\x15a\x030W`\0\x89\x82\x81Q\x81\x10a\x02\xCCWa\x02\xCCa\n\xBCV[` \x02` \x01\x01Q\x90P\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x03'W`\x01\x92P\x83\x81` \x01\x81\x81Qa\x03#\x91\x90a\x0BrV[\x90RP[P`\x01\x01a\x02\xB0V[P\x80\x15\x80\x15a\x03?WP`\0\x82\x11[\x15a\x03\xD7W`@Q\x80``\x01`@R\x80\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x88\x87\x81Q\x81\x10a\x03\xBDWa\x03\xBDa\n\xBCV[` \x02` \x01\x01\x81\x90RP\x85\x80a\x03\xD3\x90a\x0B\x85V[\x96PP[PP[PP`\x01\x01a\x02\0V[P\x82RP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04sW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05-W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04jV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xEFWa\x05\xEFa\x05\x9DV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xEFWa\x05\xEFa\x05\x9DV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x06_Wa\x06_a\x05\x9DV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x89W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06\x9DW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\xB7Wa\x06\xB7a\x05\x9DV[a\x06\xE8` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x06\x18V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xFDW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x07,W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x07PWa\x07Pa\x05\x9DV[\x81`@R\x82\x93P\x845\x91Pa\x07d\x82a\x06gV[\x90\x82R` \x84\x015\x90a\x07v\x82a\x06gV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\xA0\x82a\x06gV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\xBAW`\0\x80\xFD[Pa\x07\xC7\x85\x82\x86\x01a\x06\x8CV[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07\xE6W`\0\x80\xFD[a\x07\xEEa\x05\xCCV[\x90P\x815a\x07\xFB\x81a\x06gV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x08*W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08FWa\x08Fa\x05\x9DV[a\x08T\x81\x83`\x05\x1B\x01a\x06\x18V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08sW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xCCW\x81\x81\x8A\x03\x12\x15a\x08\x8FW`\0\x80\x81\xFD[a\x08\x97a\x05\xCCV[\x815a\x08\xA2\x81a\x06gV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xBB\x81a\x06gV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08wV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08\xEBW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\t\x03W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\t\x17W`\0\x80\xFD[a\t\x1Fa\x05\xF5V[\x825\x82\x81\x11\x15a\t.W`\0\x80\xFD[a\t:\x87\x82\x86\x01a\x07\x1AV[\x82RPa\tJ\x86` \x85\x01a\x07\xD4V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\taW`\0\x80\xFD[a\tm\x87\x82\x86\x01a\x08\x19V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\t\x85W`\0\x80\xFD[a\t\x91\x87\x82\x86\x01a\x06\x8CV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\n\x11W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\xC8V[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\n1W`\0\x80\xFD[\x825a\n<\x81a\x06gV[\x91P` \x83\x015a\nL\x81a\x06gV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\nlW`\0\x80\xFD[\x835a\nw\x81a\x06gV[\x92P` \x84\x015a\n\x87\x81a\x06gV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\n\xAAW`\0\x80\xFD[\x815a\n\xB5\x81a\x06gV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x0B1Wa\x0B1a\n\xEBV[\x92\x91PPV[`\0\x82a\x0BmW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\x0B1Wa\x0B1a\n\xEBV[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x0B\xB6Wa\x0B\xB6a\n\xEBV[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \xAA\xD0(d\xB2.{\xA8b\xF7\xBD\xB8\x0E\xEC\x80<\n!\xE4\xBF\xB0\xD2\xA5\x9C\x02\\\xE0\xD0\xCF8\x0F?dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0MW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x03W\x80c\xDC~\x98\xDF\x14a\x01;W\x80c\xF2\xFD\xE3\x8B\x14a\x01PW_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x08\xB5V[a\x01cV[`@Qa\0\xBB\x91\x90a\t\x80V[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01-a\x01\x116`\x04a\t\xF2V[`\x01` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[a\x01Na\x01I6`\x04a\n)V[a\x03\xDEV[\0[a\x01Na\x01^6`\x04a\ngV[a\x04\x9BV[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x83Wa\x01\x83a\x05\x8AV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xEBW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA1W\x90P[P` \x83\x01QQ\x90\x91P_\x80[\x84`@\x01QQ\x81\x10\x15a\x03\xD5W_\x85`@\x01Q\x82\x81Q\x81\x10a\x02\x1CWa\x02\x1Ca\n\x89V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16_\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x03\xCBW_a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x7FWa\x02\x7Fa\n\x89V[` \x02` \x01\x01Q` \x01Qa\x02\x95\x91\x90a\n\xE3V[a\x02\x9F\x91\x90a\x0B\0V[\x90P_\x80[\x86\x81\x10\x15a\x03\"W_\x89\x82\x81Q\x81\x10a\x02\xBFWa\x02\xBFa\n\x89V[` \x02` \x01\x01Q\x90P\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x03\x19W`\x01\x92P\x83\x81` \x01\x81\x81Qa\x03\x15\x91\x90a\x0B8V[\x90RP[P`\x01\x01a\x02\xA4V[P\x80\x15\x80\x15a\x030WP_\x82\x11[\x15a\x03\xC8W`@Q\x80``\x01`@R\x80\x85s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x88\x87\x81Q\x81\x10a\x03\xAEWa\x03\xAEa\n\x89V[` \x02` \x01\x01\x81\x90RP\x85\x80a\x03\xC4\x90a\x0BKV[\x96PP[PP[PP`\x01\x01a\x01\xF8V[P\x82RP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04cW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x1BW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04ZV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xDAWa\x05\xDAa\x05\x8AV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xDAWa\x05\xDAa\x05\x8AV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x06JWa\x06Ja\x05\x8AV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06sW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x06\x85W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x9FWa\x06\x9Fa\x05\x8AV[a\x06\xD0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x06\x03V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xE4W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x07\x10W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x074Wa\x074a\x05\x8AV[\x81`@R\x82\x93P\x845\x91Pa\x07H\x82a\x06RV[\x90\x82R` \x84\x015\x90a\x07Z\x82a\x06RV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x84\x82a\x06RV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x9DW_\x80\xFD[Pa\x07\xAA\x85\x82\x86\x01a\x06vV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xC7W_\x80\xFD[a\x07\xCFa\x05\xB7V[\x90P\x815a\x07\xDC\x81a\x06RV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x08\tW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08%Wa\x08%a\x05\x8AV[a\x083\x81\x83`\x05\x1B\x01a\x06\x03V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08QW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xA8W\x81\x81\x8A\x03\x12\x15a\x08kW_\x80\xFD[a\x08sa\x05\xB7V[\x815a\x08~\x81a\x06RV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x97\x81a\x06RV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08UV[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x08\xC5W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xDCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08\xEFW_\x80\xFD[a\x08\xF7a\x05\xE0V[\x825\x82\x81\x11\x15a\t\x05W_\x80\xFD[a\t\x11\x87\x82\x86\x01a\x07\0V[\x82RPa\t!\x86` \x85\x01a\x07\xB7V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\t7W_\x80\xFD[a\tC\x87\x82\x86\x01a\x07\xFAV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\tZW_\x80\xFD[a\tf\x87\x82\x86\x01a\x06vV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\t\xE5W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\x9CV[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\n\x03W_\x80\xFD[\x825a\n\x0E\x81a\x06RV[\x91P` \x83\x015a\n\x1E\x81a\x06RV[\x80\x91PP\x92P\x92\x90PV[_\x80_``\x84\x86\x03\x12\x15a\n;W_\x80\xFD[\x835a\nF\x81a\x06RV[\x92P` \x84\x015a\nV\x81a\x06RV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\nwW_\x80\xFD[\x815a\n\x82\x81a\x06RV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n\xFAWa\n\xFAa\n\xB6V[\x92\x91PPV[_\x82a\x0B3W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\n\xFAWa\n\xFAa\n\xB6V[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x0B{Wa\x0B{a\n\xB6V[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 XD\xD9!h\x1C\xA1\x148\\\xCA\xBDuu8\xC1\xE16\xCDX\x05\x9E\xE1L#4<\x1A\xADi\xDEjdsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -338,8 +352,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -556,17 +570,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -582,8 +607,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -852,14 +877,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -871,7 +904,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1085,18 +1118,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1374,7 +1417,12 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity event OwnershipTransferred(address indexed user, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -1382,7 +1430,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1444,6 +1497,21 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1492,9 +1560,10 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity constructor(address _feeRecipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _feeRecipient: alloy::sol_types::private::Address, } const _: () = { @@ -1556,16 +1625,22 @@ constructor(address _feeRecipient); ```solidity function feeRecipient() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeRecipientCall {} ///Container type for the return parameters of the [`feeRecipient()`](feeRecipientCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeRecipientReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1669,19 +1744,27 @@ function feeRecipient() external view returns (address); ```solidity function fees(address tokenIn, address tokenOut) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feesCall { + #[allow(missing_docs)] pub tokenIn: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub tokenOut: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`fees(address,address)`](feesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feesReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1728,7 +1811,9 @@ function fees(address tokenIn, address tokenOut) external view returns (uint256) #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1804,20 +1889,27 @@ function fees(address tokenIn, address tokenOut) external view returns (uint256) ```solidity function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory result); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getFeeOutputsCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](getFeeOutputsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getFeeOutputsReturn { + #[allow(missing_docs)] pub result: alloy::sol_types::private::Vec< ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1929,16 +2021,22 @@ function getFeeOutputs(ResolvedOrder memory order) external view returns (Output ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2042,18 +2140,26 @@ function owner() external view returns (address); ```solidity function setFee(address tokenIn, address tokenOut, uint256 fee) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setFeeCall { + #[allow(missing_docs)] pub tokenIn: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub tokenOut: alloy::sol_types::private::Address, - pub fee: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub fee: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`setFee(address,address,uint256)`](setFeeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setFeeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2067,7 +2173,7 @@ function setFee(address tokenIn, address tokenOut, uint256 fee) external; type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2183,16 +2289,22 @@ function setFee(address tokenIn, address tokenOut, uint256 fee) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2302,11 +2414,17 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`MockFeeController`](self) function calls. pub enum MockFeeControllerCalls { + #[allow(missing_docs)] feeRecipient(feeRecipientCall), + #[allow(missing_docs)] fees(feesCall), + #[allow(missing_docs)] getFeeOutputs(getFeeOutputsCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] setFee(setFeeCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -2357,7 +2475,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2454,7 +2572,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2520,6 +2638,7 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`MockFeeController`](self) events. pub enum MockFeeControllerEvents { + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), } #[automatically_derived] @@ -2827,7 +2946,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, tokenIn: alloy::sol_types::private::Address, tokenOut: alloy::sol_types::private::Address, - fee: alloy::sol_types::private::U256, + fee: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &setFeeCall { diff --git a/crates/bindings-uniswapx/src/mockfeecontrollerduplicates.rs b/crates/bindings-uniswapx/src/mockfeecontrollerduplicates.rs index 7fbcf7c..4349873 100644 --- a/crates/bindings-uniswapx/src/mockfeecontrollerduplicates.rs +++ b/crates/bindings-uniswapx/src/mockfeecontrollerduplicates.rs @@ -292,41 +292,55 @@ interface MockFeeControllerDuplicates { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockFeeControllerDuplicates { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a060405234801561001057600080fd5b50604051610c18380380610c1883398101604081905261002f91610081565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b608051610b466100d260003960008181607c01526102db0152610b466000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639b9ac2cb116100505780639b9ac2cb14610108578063dc7e98df14610141578063f2fde38b1461015657600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d636600461083f565b610169565b6040516100bf9190610911565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b610133610116366004610984565b600160209081526000928352604080842090915290825290205481565b6040519081526020016100bf565b61015461014f3660046109bd565b610353565b005b6101546101643660046109fe565b610412565b606081604001515167ffffffffffffffff81111561018957610189610503565b6040519080825280602002602001820160405280156101f257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101a75790505b506020830151519091506000805b84604001515181101561034a5760008560400151828151811061022557610225610a22565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff8087166000908152600184526040808220928416825291909352909120549091508015610340576000612710828960400151868151811061028a5761028a610a22565b6020026020010151602001516102a09190610a80565b6102aa9190610a9d565b905060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681525087868151811061032557610325610a22565b6020026020010181905250848061033b90610ad8565b955050505b5050600101610200565b50825250919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff92831660009081526001602090815260408083209490951682529290925291902055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103d0565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561055557610555610503565b60405290565b60405160a0810167ffffffffffffffff8111828210171561055557610555610503565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105c5576105c5610503565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ef57600080fd5b50565b600082601f83011261060357600080fd5b813567ffffffffffffffff81111561061d5761061d610503565b61064e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161057e565b81815284602083860101111561066357600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561069257600080fd5b60405160c0810167ffffffffffffffff82821081831117156106b6576106b6610503565b81604052829350843591506106ca826105cd565b9082526020840135906106dc826105cd565b816020840152604085013560408401526060850135606084015260808501359150610706826105cd565b81608084015260a085013591508082111561072057600080fd5b5061072d858286016105f2565b60a0830152505092915050565b60006060828403121561074c57600080fd5b610754610532565b90508135610761816105cd565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261079057600080fd5b8135602067ffffffffffffffff8211156107ac576107ac610503565b6107ba818360051b0161057e565b828152606092830285018201928282019190878511156107d957600080fd5b8387015b858110156108325781818a0312156107f55760008081fd5b6107fd610532565b8135610808816105cd565b81528186013586820152604080830135610821816105cd565b9082015284529284019281016107dd565b5090979650505050505050565b60006020828403121561085157600080fd5b813567ffffffffffffffff8082111561086957600080fd5b9083019060e0828603121561087d57600080fd5b61088561055b565b82358281111561089457600080fd5b6108a087828601610680565b8252506108b0866020850161073a565b60208201526080830135828111156108c757600080fd5b6108d38782860161077f565b60408301525060a0830135828111156108eb57600080fd5b6108f7878286016105f2565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b82811015610977578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161092e565b5091979650505050505050565b6000806040838503121561099757600080fd5b82356109a2816105cd565b915060208301356109b2816105cd565b809150509250929050565b6000806000606084860312156109d257600080fd5b83356109dd816105cd565b925060208401356109ed816105cd565b929592945050506040919091013590565b600060208284031215610a1057600080fd5b8135610a1b816105cd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a9757610a97610a51565b92915050565b600082610ad3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b0957610b09610a51565b506001019056fea26469706673582212209439102997dbcc4989286a3f24f7ae99d34d4f44286e62d4dabac7b81ab7c15864736f6c63430008180033 + ///0x60a060405234801561000f575f80fd5b50604051610bd9380380610bd983398101604081905261002e9161007f565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100ac565b5f6020828403121561008f575f80fd5b81516001600160a01b03811681146100a5575f80fd5b9392505050565b608051610b0f6100ca5f395f8181607801526102d00152610b0f5ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c80639b9ac2cb1161004d5780639b9ac2cb14610103578063dc7e98df1461013b578063f2fde38b14610150575f80fd5b806346904840146100735780638aa6cf03146100c45780638da5cb5b146100e4575b5f80fd5b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d76100d236600461081f565b610163565b6040516100bb91906108ea565b5f5461009a9073ffffffffffffffffffffffffffffffffffffffff1681565b61012d61011136600461095c565b600160209081525f928352604080842090915290825290205481565b6040519081526020016100bb565b61014e610149366004610993565b610348565b005b61014e61015e3660046109d1565b610405565b606081604001515167ffffffffffffffff811115610183576101836104f4565b6040519080825280602002602001820160405280156101eb57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101a15790505b506020830151519091505f805b84604001515181101561033f575f8560400151828151811061021c5761021c6109f3565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff8087165f908152600184526040808220928416825291909352909120549091508015610335575f612710828960400151868151811061027f5761027f6109f3565b6020026020010151602001516102959190610a4d565b61029f9190610a6a565b905060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681525087868151811061031a5761031a6109f3565b6020026020010181905250848061033090610aa2565b955050505b50506001016101f8565b50825250919050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146103cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff9283165f9081526001602090815260408083209490951682529290925291902055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103c4565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610544576105446104f4565b60405290565b60405160a0810167ffffffffffffffff81118282101715610544576105446104f4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105b4576105b46104f4565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105dd575f80fd5b50565b5f82601f8301126105ef575f80fd5b813567ffffffffffffffff811115610609576106096104f4565b61063a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161056d565b81815284602083860101111561064e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c0828403121561067a575f80fd5b60405160c0810167ffffffffffffffff828210818311171561069e5761069e6104f4565b81604052829350843591506106b2826105bc565b9082526020840135906106c4826105bc565b8160208401526040850135604084015260608501356060840152608085013591506106ee826105bc565b81608084015260a0850135915080821115610707575f80fd5b50610714858286016105e0565b60a0830152505092915050565b5f60608284031215610731575f80fd5b610739610521565b90508135610746816105bc565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610773575f80fd5b8135602067ffffffffffffffff82111561078f5761078f6104f4565b61079d818360051b0161056d565b828152606092830285018201928282019190878511156107bb575f80fd5b8387015b858110156108125781818a0312156107d5575f80fd5b6107dd610521565b81356107e8816105bc565b81528186013586820152604080830135610801816105bc565b9082015284529284019281016107bf565b5090979650505050505050565b5f6020828403121561082f575f80fd5b813567ffffffffffffffff80821115610846575f80fd5b9083019060e08286031215610859575f80fd5b61086161054a565b82358281111561086f575f80fd5b61087b8782860161066a565b82525061088b8660208501610721565b60208201526080830135828111156108a1575f80fd5b6108ad87828601610764565b60408301525060a0830135828111156108c4575f80fd5b6108d0878286016105e0565b60608301525060c092909201356080830152509392505050565b602080825282518282018190525f919060409081850190868401855b8281101561094f578151805173ffffffffffffffffffffffffffffffffffffffff9081168652878201518887015290860151168585015260609093019290850190600101610906565b5091979650505050505050565b5f806040838503121561096d575f80fd5b8235610978816105bc565b91506020830135610988816105bc565b809150509250929050565b5f805f606084860312156109a5575f80fd5b83356109b0816105bc565b925060208401356109c0816105bc565b929592945050506040919091013590565b5f602082840312156109e1575f80fd5b81356109ec816105bc565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610a6457610a64610a20565b92915050565b5f82610a9d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610ad257610ad2610a20565b506001019056fea26469706673582212209b13fc7e18af6e5c201dc073a347ee754b24fdccf31bd4163943208a07464a0d64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0C\x188\x03\x80a\x0C\x18\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x81V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xB1V[`\0` \x82\x84\x03\x12\x15a\0\x93W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xAAW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x0BFa\0\xD2`\09`\0\x81\x81`|\x01Ra\x02\xDB\x01Ra\x0BF`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0PW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x08W\x80c\xDC~\x98\xDF\x14a\x01AW\x80c\xF2\xFD\xE3\x8B\x14a\x01VW`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x08?V[a\x01iV[`@Qa\0\xBF\x91\x90a\t\x11V[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x013a\x01\x166`\x04a\t\x84V[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[a\x01Ta\x01O6`\x04a\t\xBDV[a\x03SV[\0[a\x01Ta\x01d6`\x04a\t\xFEV[a\x04\x12V[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x89Wa\x01\x89a\x05\x03V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xF2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA7W\x90P[P` \x83\x01QQ\x90\x91P`\0\x80[\x84`@\x01QQ\x81\x10\x15a\x03JW`\0\x85`@\x01Q\x82\x81Q\x81\x10a\x02%Wa\x02%a\n\"V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16`\0\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x03@W`\0a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x8AWa\x02\x8Aa\n\"V[` \x02` \x01\x01Q` \x01Qa\x02\xA0\x91\x90a\n\x80V[a\x02\xAA\x91\x90a\n\x9DV[\x90P`@Q\x80``\x01`@R\x80\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x87\x86\x81Q\x81\x10a\x03%Wa\x03%a\n\"V[` \x02` \x01\x01\x81\x90RP\x84\x80a\x03;\x90a\n\xD8V[\x95PPP[PP`\x01\x01a\x02\0V[P\x82RP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xD9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\x93W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xD0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05UWa\x05Ua\x05\x03V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05UWa\x05Ua\x05\x03V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xC5Wa\x05\xC5a\x05\x03V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\xEFW`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06\x03W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x1DWa\x06\x1Da\x05\x03V[a\x06N` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05~V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06cW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\x92W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xB6Wa\x06\xB6a\x05\x03V[\x81`@R\x82\x93P\x845\x91Pa\x06\xCA\x82a\x05\xCDV[\x90\x82R` \x84\x015\x90a\x06\xDC\x82a\x05\xCDV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x06\x82a\x05\xCDV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07 W`\0\x80\xFD[Pa\x07-\x85\x82\x86\x01a\x05\xF2V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07LW`\0\x80\xFD[a\x07Ta\x052V[\x90P\x815a\x07a\x81a\x05\xCDV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\x90W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\xACWa\x07\xACa\x05\x03V[a\x07\xBA\x81\x83`\x05\x1B\x01a\x05~V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xD9W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x082W\x81\x81\x8A\x03\x12\x15a\x07\xF5W`\0\x80\x81\xFD[a\x07\xFDa\x052V[\x815a\x08\x08\x81a\x05\xCDV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08!\x81a\x05\xCDV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xDDV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08QW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08iW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08}W`\0\x80\xFD[a\x08\x85a\x05[V[\x825\x82\x81\x11\x15a\x08\x94W`\0\x80\xFD[a\x08\xA0\x87\x82\x86\x01a\x06\x80V[\x82RPa\x08\xB0\x86` \x85\x01a\x07:V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x08\xC7W`\0\x80\xFD[a\x08\xD3\x87\x82\x86\x01a\x07\x7FV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\xEBW`\0\x80\xFD[a\x08\xF7\x87\x82\x86\x01a\x05\xF2V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\twW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t.V[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x97W`\0\x80\xFD[\x825a\t\xA2\x81a\x05\xCDV[\x91P` \x83\x015a\t\xB2\x81a\x05\xCDV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t\xD2W`\0\x80\xFD[\x835a\t\xDD\x81a\x05\xCDV[\x92P` \x84\x015a\t\xED\x81a\x05\xCDV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\n\x10W`\0\x80\xFD[\x815a\n\x1B\x81a\x05\xCDV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n\x97Wa\n\x97a\nQV[\x92\x91PPV[`\0\x82a\n\xD3W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x0B\tWa\x0B\ta\nQV[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x949\x10)\x97\xDB\xCCI\x89(j?$\xF7\xAE\x99\xD3MOD(nb\xD4\xDA\xBA\xC7\xB8\x1A\xB7\xC1XdsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\x0B\xD98\x03\x80a\x0B\xD9\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\x7FV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xACV[_` \x82\x84\x03\x12\x15a\0\x8FW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xA5W_\x80\xFD[\x93\x92PPPV[`\x80Qa\x0B\x0Fa\0\xCA_9_\x81\x81`x\x01Ra\x02\xD0\x01Ra\x0B\x0F_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0MW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x03W\x80c\xDC~\x98\xDF\x14a\x01;W\x80c\xF2\xFD\xE3\x8B\x14a\x01PW_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x08\x1FV[a\x01cV[`@Qa\0\xBB\x91\x90a\x08\xEAV[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01-a\x01\x116`\x04a\t\\V[`\x01` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[a\x01Na\x01I6`\x04a\t\x93V[a\x03HV[\0[a\x01Na\x01^6`\x04a\t\xD1V[a\x04\x05V[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x83Wa\x01\x83a\x04\xF4V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xEBW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA1W\x90P[P` \x83\x01QQ\x90\x91P_\x80[\x84`@\x01QQ\x81\x10\x15a\x03?W_\x85`@\x01Q\x82\x81Q\x81\x10a\x02\x1CWa\x02\x1Ca\t\xF3V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16_\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x035W_a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x7FWa\x02\x7Fa\t\xF3V[` \x02` \x01\x01Q` \x01Qa\x02\x95\x91\x90a\nMV[a\x02\x9F\x91\x90a\njV[\x90P`@Q\x80``\x01`@R\x80\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x87\x86\x81Q\x81\x10a\x03\x1AWa\x03\x1Aa\t\xF3V[` \x02` \x01\x01\x81\x90RP\x84\x80a\x030\x90a\n\xA2V[\x95PPP[PP`\x01\x01a\x01\xF8V[P\x82RP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xCDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\x85W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xC4V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05DWa\x05Da\x04\xF4V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05DWa\x05Da\x04\xF4V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xB4Wa\x05\xB4a\x04\xF4V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\xDDW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x05\xEFW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\tWa\x06\ta\x04\xF4V[a\x06:` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05mV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06NW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06zW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\x9EWa\x06\x9Ea\x04\xF4V[\x81`@R\x82\x93P\x845\x91Pa\x06\xB2\x82a\x05\xBCV[\x90\x82R` \x84\x015\x90a\x06\xC4\x82a\x05\xBCV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06\xEE\x82a\x05\xBCV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x07W_\x80\xFD[Pa\x07\x14\x85\x82\x86\x01a\x05\xE0V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x071W_\x80\xFD[a\x079a\x05!V[\x90P\x815a\x07F\x81a\x05\xBCV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07sW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x8FWa\x07\x8Fa\x04\xF4V[a\x07\x9D\x81\x83`\x05\x1B\x01a\x05mV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xBBW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\x12W\x81\x81\x8A\x03\x12\x15a\x07\xD5W_\x80\xFD[a\x07\xDDa\x05!V[\x815a\x07\xE8\x81a\x05\xBCV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x01\x81a\x05\xBCV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xBFV[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x08/W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08FW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08YW_\x80\xFD[a\x08aa\x05JV[\x825\x82\x81\x11\x15a\x08oW_\x80\xFD[a\x08{\x87\x82\x86\x01a\x06jV[\x82RPa\x08\x8B\x86` \x85\x01a\x07!V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x08\xA1W_\x80\xFD[a\x08\xAD\x87\x82\x86\x01a\x07dV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\xC4W_\x80\xFD[a\x08\xD0\x87\x82\x86\x01a\x05\xE0V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\tOW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\x06V[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\tmW_\x80\xFD[\x825a\tx\x81a\x05\xBCV[\x91P` \x83\x015a\t\x88\x81a\x05\xBCV[\x80\x91PP\x92P\x92\x90PV[_\x80_``\x84\x86\x03\x12\x15a\t\xA5W_\x80\xFD[\x835a\t\xB0\x81a\x05\xBCV[\x92P` \x84\x015a\t\xC0\x81a\x05\xBCV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\t\xE1W_\x80\xFD[\x815a\t\xEC\x81a\x05\xBCV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\ndWa\nda\n V[\x92\x91PPV[_\x82a\n\x9DW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\n\xD2Wa\n\xD2a\n V[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x9B\x13\xFC~\x18\xAFn\\ \x1D\xC0s\xA3G\xEEuK$\xFD\xCC\xF3\x1B\xD4\x169C \x8A\x07FJ\rdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100725760003560e01c80639b9ac2cb116100505780639b9ac2cb14610108578063dc7e98df14610141578063f2fde38b1461015657600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d636600461083f565b610169565b6040516100bf9190610911565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b610133610116366004610984565b600160209081526000928352604080842090915290825290205481565b6040519081526020016100bf565b61015461014f3660046109bd565b610353565b005b6101546101643660046109fe565b610412565b606081604001515167ffffffffffffffff81111561018957610189610503565b6040519080825280602002602001820160405280156101f257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101a75790505b506020830151519091506000805b84604001515181101561034a5760008560400151828151811061022557610225610a22565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff8087166000908152600184526040808220928416825291909352909120549091508015610340576000612710828960400151868151811061028a5761028a610a22565b6020026020010151602001516102a09190610a80565b6102aa9190610a9d565b905060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681525087868151811061032557610325610a22565b6020026020010181905250848061033b90610ad8565b955050505b5050600101610200565b50825250919050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff92831660009081526001602090815260408083209490951682529290925291902055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103d0565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561055557610555610503565b60405290565b60405160a0810167ffffffffffffffff8111828210171561055557610555610503565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105c5576105c5610503565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ef57600080fd5b50565b600082601f83011261060357600080fd5b813567ffffffffffffffff81111561061d5761061d610503565b61064e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161057e565b81815284602083860101111561066357600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561069257600080fd5b60405160c0810167ffffffffffffffff82821081831117156106b6576106b6610503565b81604052829350843591506106ca826105cd565b9082526020840135906106dc826105cd565b816020840152604085013560408401526060850135606084015260808501359150610706826105cd565b81608084015260a085013591508082111561072057600080fd5b5061072d858286016105f2565b60a0830152505092915050565b60006060828403121561074c57600080fd5b610754610532565b90508135610761816105cd565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261079057600080fd5b8135602067ffffffffffffffff8211156107ac576107ac610503565b6107ba818360051b0161057e565b828152606092830285018201928282019190878511156107d957600080fd5b8387015b858110156108325781818a0312156107f55760008081fd5b6107fd610532565b8135610808816105cd565b81528186013586820152604080830135610821816105cd565b9082015284529284019281016107dd565b5090979650505050505050565b60006020828403121561085157600080fd5b813567ffffffffffffffff8082111561086957600080fd5b9083019060e0828603121561087d57600080fd5b61088561055b565b82358281111561089457600080fd5b6108a087828601610680565b8252506108b0866020850161073a565b60208201526080830135828111156108c757600080fd5b6108d38782860161077f565b60408301525060a0830135828111156108eb57600080fd5b6108f7878286016105f2565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b82811015610977578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161092e565b5091979650505050505050565b6000806040838503121561099757600080fd5b82356109a2816105cd565b915060208301356109b2816105cd565b809150509250929050565b6000806000606084860312156109d257600080fd5b83356109dd816105cd565b925060208401356109ed816105cd565b929592945050506040919091013590565b600060208284031215610a1057600080fd5b8135610a1b816105cd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610a9757610a97610a51565b92915050565b600082610ad3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b0957610b09610a51565b506001019056fea26469706673582212209439102997dbcc4989286a3f24f7ae99d34d4f44286e62d4dabac7b81ab7c15864736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506004361061006f575f3560e01c80639b9ac2cb1161004d5780639b9ac2cb14610103578063dc7e98df1461013b578063f2fde38b14610150575f80fd5b806346904840146100735780638aa6cf03146100c45780638da5cb5b146100e4575b5f80fd5b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d76100d236600461081f565b610163565b6040516100bb91906108ea565b5f5461009a9073ffffffffffffffffffffffffffffffffffffffff1681565b61012d61011136600461095c565b600160209081525f928352604080842090915290825290205481565b6040519081526020016100bb565b61014e610149366004610993565b610348565b005b61014e61015e3660046109d1565b610405565b606081604001515167ffffffffffffffff811115610183576101836104f4565b6040519080825280602002602001820160405280156101eb57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101a15790505b506020830151519091505f805b84604001515181101561033f575f8560400151828151811061021c5761021c6109f3565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff8087165f908152600184526040808220928416825291909352909120549091508015610335575f612710828960400151868151811061027f5761027f6109f3565b6020026020010151602001516102959190610a4d565b61029f9190610a6a565b905060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681525087868151811061031a5761031a6109f3565b6020026020010181905250848061033090610aa2565b955050505b50506001016101f8565b50825250919050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146103cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff9283165f9081526001602090815260408083209490951682529290925291902055565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103c4565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610544576105446104f4565b60405290565b60405160a0810167ffffffffffffffff81118282101715610544576105446104f4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105b4576105b46104f4565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105dd575f80fd5b50565b5f82601f8301126105ef575f80fd5b813567ffffffffffffffff811115610609576106096104f4565b61063a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161056d565b81815284602083860101111561064e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c0828403121561067a575f80fd5b60405160c0810167ffffffffffffffff828210818311171561069e5761069e6104f4565b81604052829350843591506106b2826105bc565b9082526020840135906106c4826105bc565b8160208401526040850135604084015260608501356060840152608085013591506106ee826105bc565b81608084015260a0850135915080821115610707575f80fd5b50610714858286016105e0565b60a0830152505092915050565b5f60608284031215610731575f80fd5b610739610521565b90508135610746816105bc565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610773575f80fd5b8135602067ffffffffffffffff82111561078f5761078f6104f4565b61079d818360051b0161056d565b828152606092830285018201928282019190878511156107bb575f80fd5b8387015b858110156108125781818a0312156107d5575f80fd5b6107dd610521565b81356107e8816105bc565b81528186013586820152604080830135610801816105bc565b9082015284529284019281016107bf565b5090979650505050505050565b5f6020828403121561082f575f80fd5b813567ffffffffffffffff80821115610846575f80fd5b9083019060e08286031215610859575f80fd5b61086161054a565b82358281111561086f575f80fd5b61087b8782860161066a565b82525061088b8660208501610721565b60208201526080830135828111156108a1575f80fd5b6108ad87828601610764565b60408301525060a0830135828111156108c4575f80fd5b6108d0878286016105e0565b60608301525060c092909201356080830152509392505050565b602080825282518282018190525f919060409081850190868401855b8281101561094f578151805173ffffffffffffffffffffffffffffffffffffffff9081168652878201518887015290860151168585015260609093019290850190600101610906565b5091979650505050505050565b5f806040838503121561096d575f80fd5b8235610978816105bc565b91506020830135610988816105bc565b809150509250929050565b5f805f606084860312156109a5575f80fd5b83356109b0816105bc565b925060208401356109c0816105bc565b929592945050506040919091013590565b5f602082840312156109e1575f80fd5b81356109ec816105bc565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610a6457610a64610a20565b92915050565b5f82610a9d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610ad257610ad2610a20565b506001019056fea26469706673582212209b13fc7e18af6e5c201dc073a347ee754b24fdccf31bd4163943208a07464a0d64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0PW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x08W\x80c\xDC~\x98\xDF\x14a\x01AW\x80c\xF2\xFD\xE3\x8B\x14a\x01VW`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x08?V[a\x01iV[`@Qa\0\xBF\x91\x90a\t\x11V[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x013a\x01\x166`\x04a\t\x84V[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[a\x01Ta\x01O6`\x04a\t\xBDV[a\x03SV[\0[a\x01Ta\x01d6`\x04a\t\xFEV[a\x04\x12V[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x89Wa\x01\x89a\x05\x03V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xF2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA7W\x90P[P` \x83\x01QQ\x90\x91P`\0\x80[\x84`@\x01QQ\x81\x10\x15a\x03JW`\0\x85`@\x01Q\x82\x81Q\x81\x10a\x02%Wa\x02%a\n\"V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16`\0\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x03@W`\0a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x8AWa\x02\x8Aa\n\"V[` \x02` \x01\x01Q` \x01Qa\x02\xA0\x91\x90a\n\x80V[a\x02\xAA\x91\x90a\n\x9DV[\x90P`@Q\x80``\x01`@R\x80\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x87\x86\x81Q\x81\x10a\x03%Wa\x03%a\n\"V[` \x02` \x01\x01\x81\x90RP\x84\x80a\x03;\x90a\n\xD8V[\x95PPP[PP`\x01\x01a\x02\0V[P\x82RP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xD9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\x93W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xD0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05UWa\x05Ua\x05\x03V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05UWa\x05Ua\x05\x03V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xC5Wa\x05\xC5a\x05\x03V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\xEFW`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06\x03W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x1DWa\x06\x1Da\x05\x03V[a\x06N` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05~V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06cW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\x92W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xB6Wa\x06\xB6a\x05\x03V[\x81`@R\x82\x93P\x845\x91Pa\x06\xCA\x82a\x05\xCDV[\x90\x82R` \x84\x015\x90a\x06\xDC\x82a\x05\xCDV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x06\x82a\x05\xCDV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07 W`\0\x80\xFD[Pa\x07-\x85\x82\x86\x01a\x05\xF2V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07LW`\0\x80\xFD[a\x07Ta\x052V[\x90P\x815a\x07a\x81a\x05\xCDV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\x90W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\xACWa\x07\xACa\x05\x03V[a\x07\xBA\x81\x83`\x05\x1B\x01a\x05~V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xD9W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x082W\x81\x81\x8A\x03\x12\x15a\x07\xF5W`\0\x80\x81\xFD[a\x07\xFDa\x052V[\x815a\x08\x08\x81a\x05\xCDV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08!\x81a\x05\xCDV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xDDV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08QW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08iW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08}W`\0\x80\xFD[a\x08\x85a\x05[V[\x825\x82\x81\x11\x15a\x08\x94W`\0\x80\xFD[a\x08\xA0\x87\x82\x86\x01a\x06\x80V[\x82RPa\x08\xB0\x86` \x85\x01a\x07:V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x08\xC7W`\0\x80\xFD[a\x08\xD3\x87\x82\x86\x01a\x07\x7FV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\xEBW`\0\x80\xFD[a\x08\xF7\x87\x82\x86\x01a\x05\xF2V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\twW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t.V[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\t\x97W`\0\x80\xFD[\x825a\t\xA2\x81a\x05\xCDV[\x91P` \x83\x015a\t\xB2\x81a\x05\xCDV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t\xD2W`\0\x80\xFD[\x835a\t\xDD\x81a\x05\xCDV[\x92P` \x84\x015a\t\xED\x81a\x05\xCDV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[`\0` \x82\x84\x03\x12\x15a\n\x10W`\0\x80\xFD[\x815a\n\x1B\x81a\x05\xCDV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n\x97Wa\n\x97a\nQV[\x92\x91PPV[`\0\x82a\n\xD3W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[`\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\x0B\tWa\x0B\ta\nQV[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x949\x10)\x97\xDB\xCCI\x89(j?$\xF7\xAE\x99\xD3MOD(nb\xD4\xDA\xBA\xC7\xB8\x1A\xB7\xC1XdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0MW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x03W\x80c\xDC~\x98\xDF\x14a\x01;W\x80c\xF2\xFD\xE3\x8B\x14a\x01PW_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x08\x1FV[a\x01cV[`@Qa\0\xBB\x91\x90a\x08\xEAV[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01-a\x01\x116`\x04a\t\\V[`\x01` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[a\x01Na\x01I6`\x04a\t\x93V[a\x03HV[\0[a\x01Na\x01^6`\x04a\t\xD1V[a\x04\x05V[``\x81`@\x01QQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x83Wa\x01\x83a\x04\xF4V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xEBW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xA1W\x90P[P` \x83\x01QQ\x90\x91P_\x80[\x84`@\x01QQ\x81\x10\x15a\x03?W_\x85`@\x01Q\x82\x81Q\x81\x10a\x02\x1CWa\x02\x1Ca\t\xF3V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x87\x16_\x90\x81R`\x01\x84R`@\x80\x82 \x92\x84\x16\x82R\x91\x90\x93R\x90\x91 T\x90\x91P\x80\x15a\x035W_a'\x10\x82\x89`@\x01Q\x86\x81Q\x81\x10a\x02\x7FWa\x02\x7Fa\t\xF3V[` \x02` \x01\x01Q` \x01Qa\x02\x95\x91\x90a\nMV[a\x02\x9F\x91\x90a\njV[\x90P`@Q\x80``\x01`@R\x80\x84s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x87\x86\x81Q\x81\x10a\x03\x1AWa\x03\x1Aa\t\xF3V[` \x02` \x01\x01\x81\x90RP\x84\x80a\x030\x90a\n\xA2V[\x95PPP[PP`\x01\x01a\x01\xF8V[P\x82RP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xCDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16_\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\x85W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\xC4V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05DWa\x05Da\x04\xF4V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05DWa\x05Da\x04\xF4V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xB4Wa\x05\xB4a\x04\xF4V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\xDDW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x05\xEFW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\tWa\x06\ta\x04\xF4V[a\x06:` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05mV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06NW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06zW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\x9EWa\x06\x9Ea\x04\xF4V[\x81`@R\x82\x93P\x845\x91Pa\x06\xB2\x82a\x05\xBCV[\x90\x82R` \x84\x015\x90a\x06\xC4\x82a\x05\xBCV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06\xEE\x82a\x05\xBCV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x07W_\x80\xFD[Pa\x07\x14\x85\x82\x86\x01a\x05\xE0V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x071W_\x80\xFD[a\x079a\x05!V[\x90P\x815a\x07F\x81a\x05\xBCV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07sW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x8FWa\x07\x8Fa\x04\xF4V[a\x07\x9D\x81\x83`\x05\x1B\x01a\x05mV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xBBW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\x12W\x81\x81\x8A\x03\x12\x15a\x07\xD5W_\x80\xFD[a\x07\xDDa\x05!V[\x815a\x07\xE8\x81a\x05\xBCV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x01\x81a\x05\xBCV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xBFV[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x08/W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08FW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08YW_\x80\xFD[a\x08aa\x05JV[\x825\x82\x81\x11\x15a\x08oW_\x80\xFD[a\x08{\x87\x82\x86\x01a\x06jV[\x82RPa\x08\x8B\x86` \x85\x01a\x07!V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x08\xA1W_\x80\xFD[a\x08\xAD\x87\x82\x86\x01a\x07dV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\xC4W_\x80\xFD[a\x08\xD0\x87\x82\x86\x01a\x05\xE0V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\tOW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\x06V[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\tmW_\x80\xFD[\x825a\tx\x81a\x05\xBCV[\x91P` \x83\x015a\t\x88\x81a\x05\xBCV[\x80\x91PP\x92P\x92\x90PV[_\x80_``\x84\x86\x03\x12\x15a\t\xA5W_\x80\xFD[\x835a\t\xB0\x81a\x05\xBCV[\x92P` \x84\x015a\t\xC0\x81a\x05\xBCV[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[_` \x82\x84\x03\x12\x15a\t\xE1W_\x80\xFD[\x815a\t\xEC\x81a\x05\xBCV[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\ndWa\nda\n V[\x92\x91PPV[_\x82a\n\x9DW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[_\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x03a\n\xD2Wa\n\xD2a\n V[P`\x01\x01\x90V\xFE\xA2dipfsX\"\x12 \x9B\x13\xFC~\x18\xAFn\\ \x1D\xC0s\xA3G\xEEuK$\xFD\xCC\xF3\x1B\xD4\x169C \x8A\x07FJ\rdsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -338,8 +352,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -556,17 +570,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -582,8 +607,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -852,14 +877,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -871,7 +904,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1085,18 +1118,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1374,7 +1417,12 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity event OwnershipTransferred(address indexed user, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -1382,7 +1430,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1444,6 +1497,21 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1492,9 +1560,10 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity constructor(address _feeRecipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _feeRecipient: alloy::sol_types::private::Address, } const _: () = { @@ -1556,16 +1625,22 @@ constructor(address _feeRecipient); ```solidity function feeRecipient() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeRecipientCall {} ///Container type for the return parameters of the [`feeRecipient()`](feeRecipientCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeRecipientReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1669,19 +1744,27 @@ function feeRecipient() external view returns (address); ```solidity function fees(address tokenIn, address tokenOut) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feesCall { + #[allow(missing_docs)] pub tokenIn: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub tokenOut: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`fees(address,address)`](feesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feesReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1728,7 +1811,9 @@ function fees(address tokenIn, address tokenOut) external view returns (uint256) #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1804,20 +1889,27 @@ function fees(address tokenIn, address tokenOut) external view returns (uint256) ```solidity function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory result); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getFeeOutputsCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](getFeeOutputsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getFeeOutputsReturn { + #[allow(missing_docs)] pub result: alloy::sol_types::private::Vec< ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1929,16 +2021,22 @@ function getFeeOutputs(ResolvedOrder memory order) external view returns (Output ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2042,18 +2140,26 @@ function owner() external view returns (address); ```solidity function setFee(address tokenIn, address tokenOut, uint256 fee) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setFeeCall { + #[allow(missing_docs)] pub tokenIn: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub tokenOut: alloy::sol_types::private::Address, - pub fee: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub fee: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`setFee(address,address,uint256)`](setFeeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setFeeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2067,7 +2173,7 @@ function setFee(address tokenIn, address tokenOut, uint256 fee) external; type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2183,16 +2289,22 @@ function setFee(address tokenIn, address tokenOut, uint256 fee) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2302,11 +2414,17 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`MockFeeControllerDuplicates`](self) function calls. pub enum MockFeeControllerDuplicatesCalls { + #[allow(missing_docs)] feeRecipient(feeRecipientCall), + #[allow(missing_docs)] fees(feesCall), + #[allow(missing_docs)] getFeeOutputs(getFeeOutputsCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] setFee(setFeeCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -2357,7 +2475,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2454,7 +2572,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2520,6 +2638,7 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`MockFeeControllerDuplicates`](self) events. pub enum MockFeeControllerDuplicatesEvents { + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), } #[automatically_derived] @@ -2839,7 +2958,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, tokenIn: alloy::sol_types::private::Address, tokenOut: alloy::sol_types::private::Address, - fee: alloy::sol_types::private::U256, + fee: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &setFeeCall { diff --git a/crates/bindings-uniswapx/src/mockfeecontrollerinputandoutputfees.rs b/crates/bindings-uniswapx/src/mockfeecontrollerinputandoutputfees.rs index 01f7fba..479b807 100644 --- a/crates/bindings-uniswapx/src/mockfeecontrollerinputandoutputfees.rs +++ b/crates/bindings-uniswapx/src/mockfeecontrollerinputandoutputfees.rs @@ -282,41 +282,55 @@ interface MockFeeControllerInputAndOutputFees { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockFeeControllerInputAndOutputFees { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a060405234801561001057600080fd5b50604051610bfd380380610bfd83398101604081905261002f91610081565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b608051610b246100d960003960008181607c0152818161024601526103710152610b246000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063e55156b511610050578063e55156b514610108578063f2fde38b1461011d578063faaebd211461013057600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d63660046108ab565b61015e565b6040516100bf919061097d565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b61011b6101163660046109f0565b6103cf565b005b61011b61012b366004610a1c565b61047e565b61015061013e366004610a1c565b60016020526000908152604090205481565b6040519081526020016100bf565b6040805160028082526060828101909352816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610174575050602083810180515173ffffffffffffffffffffffffffffffffffffffff1660009081526001835260408120549151909201519293509161271090610203908490610a40565b61020d9190610a84565b9050604051806060016040528085602001516000015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508360008151811061029157610291610abf565b6020026020010181905250600084604001516000815181106102b5576102b5610abf565b6020026020010151600001519050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925061271083866040015160008151811061032057610320610abf565b6020026020010151602001516103369190610a40565b6103409190610a84565b915060405180606001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018381526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815250846001815181106103bc576103bc610abf565b6020026020010181905250505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161044c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156105c1576105c161056f565b60405290565b60405160a0810167ffffffffffffffff811182821017156105c1576105c161056f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156106315761063161056f565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461065b57600080fd5b50565b600082601f83011261066f57600080fd5b813567ffffffffffffffff8111156106895761068961056f565b6106ba60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016105ea565b8181528460208386010111156106cf57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156106fe57600080fd5b60405160c0810167ffffffffffffffff82821081831117156107225761072261056f565b816040528293508435915061073682610639565b90825260208401359061074882610639565b81602084015260408501356040840152606085013560608401526080850135915061077282610639565b81608084015260a085013591508082111561078c57600080fd5b506107998582860161065e565b60a0830152505092915050565b6000606082840312156107b857600080fd5b6107c061059e565b905081356107cd81610639565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126107fc57600080fd5b8135602067ffffffffffffffff8211156108185761081861056f565b610826818360051b016105ea565b8281526060928302850182019282820191908785111561084557600080fd5b8387015b8581101561089e5781818a0312156108615760008081fd5b61086961059e565b813561087481610639565b8152818601358682015260408083013561088d81610639565b908201528452928401928101610849565b5090979650505050505050565b6000602082840312156108bd57600080fd5b813567ffffffffffffffff808211156108d557600080fd5b9083019060e082860312156108e957600080fd5b6108f16105c7565b82358281111561090057600080fd5b61090c878286016106ec565b82525061091c86602085016107a6565b602082015260808301358281111561093357600080fd5b61093f878286016107eb565b60408301525060a08301358281111561095757600080fd5b6109638782860161065e565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b828110156109e3578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161099a565b5091979650505050505050565b60008060408385031215610a0357600080fd5b8235610a0e81610639565b946020939093013593505050565b600060208284031215610a2e57600080fd5b8135610a3981610639565b9392505050565b8082028115828204841417610a7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b600082610aba577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212201fbc8968b1cee430340d6c1e45f68b83b0c4682331f9ca5413dfa75e7d2f584464736f6c63430008180033 + ///0x60a060405234801561000f575f80fd5b50604051610bbd380380610bbd83398101604081905261002e9161007f565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100ac565b5f6020828403121561008f575f80fd5b81516001600160a01b03811681146100a5575f80fd5b9392505050565b608051610aec6100d15f395f818160780152818161023d01526103610152610aec5ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c8063e55156b51161004d578063e55156b514610103578063f2fde38b14610118578063faaebd211461012b575f80fd5b806346904840146100735780638aa6cf03146100c45780638da5cb5b146100e4575b5f80fd5b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d76100d2366004610886565b610158565b6040516100bb9190610951565b5f5461009a9073ffffffffffffffffffffffffffffffffffffffff1681565b6101166101113660046109c3565b6103bf565b005b6101166101263660046109ed565b61046c565b61014a6101393660046109ed565b60016020525f908152604090205481565b6040519081526020016100bb565b6040805160028082526060828101909352816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161016e575050602083810180515173ffffffffffffffffffffffffffffffffffffffff165f90815260018352604081205491519092015192935091612710906101fb908490610a0f565b6102059190610a51565b9050604051806060016040528085602001515f015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815250835f8151811061028757610287610a89565b60200260200101819052505f84604001515f815181106102a9576102a9610a89565b60200260200101515f0151905060015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205492506127108386604001515f8151811061031057610310610a89565b6020026020010151602001516103269190610a0f565b6103309190610a51565b915060405180606001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018381526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815250846001815181106103ac576103ac610a89565b6020026020010181905250505050919050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff9091165f90815260016020526040902055565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146104ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161043b565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156105ab576105ab61055b565b60405290565b60405160a0810167ffffffffffffffff811182821017156105ab576105ab61055b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561061b5761061b61055b565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610644575f80fd5b50565b5f82601f830112610656575f80fd5b813567ffffffffffffffff8111156106705761067061055b565b6106a160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016105d4565b8181528460208386010111156106b5575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156106e1575f80fd5b60405160c0810167ffffffffffffffff82821081831117156107055761070561055b565b816040528293508435915061071982610623565b90825260208401359061072b82610623565b81602084015260408501356040840152606085013560608401526080850135915061075582610623565b81608084015260a085013591508082111561076e575f80fd5b5061077b85828601610647565b60a0830152505092915050565b5f60608284031215610798575f80fd5b6107a0610588565b905081356107ad81610623565b80825250602082013560208201526040820135604082015292915050565b5f82601f8301126107da575f80fd5b8135602067ffffffffffffffff8211156107f6576107f661055b565b610804818360051b016105d4565b82815260609283028501820192828201919087851115610822575f80fd5b8387015b858110156108795781818a03121561083c575f80fd5b610844610588565b813561084f81610623565b8152818601358682015260408083013561086881610623565b908201528452928401928101610826565b5090979650505050505050565b5f60208284031215610896575f80fd5b813567ffffffffffffffff808211156108ad575f80fd5b9083019060e082860312156108c0575f80fd5b6108c86105b1565b8235828111156108d6575f80fd5b6108e2878286016106d1565b8252506108f28660208501610788565b6020820152608083013582811115610908575f80fd5b610914878286016107cb565b60408301525060a08301358281111561092b575f80fd5b61093787828601610647565b60608301525060c092909201356080830152509392505050565b602080825282518282018190525f919060409081850190868401855b828110156109b6578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161096d565b5091979650505050505050565b5f80604083850312156109d4575f80fd5b82356109df81610623565b946020939093013593505050565b5f602082840312156109fd575f80fd5b8135610a0881610623565b9392505050565b8082028115828204841417610a4b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b92915050565b5f82610a84577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212204b54970e220af2ae7dfcb08433b0617edc05882ed223f761a3b098b9df83b37164736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0B\xFD8\x03\x80a\x0B\xFD\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x81V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xB1V[`\0` \x82\x84\x03\x12\x15a\0\x93W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xAAW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x0B$a\0\xD9`\09`\0\x81\x81`|\x01R\x81\x81a\x02F\x01Ra\x03q\x01Ra\x0B$`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\xE5QV\xB5\x11a\0PW\x80c\xE5QV\xB5\x14a\x01\x08W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x1DW\x80c\xFA\xAE\xBD!\x14a\x010W`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x08\xABV[a\x01^V[`@Qa\0\xBF\x91\x90a\t}V[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x1Ba\x01\x166`\x04a\t\xF0V[a\x03\xCFV[\0[a\x01\x1Ba\x01+6`\x04a\n\x1CV[a\x04~V[a\x01Pa\x01>6`\x04a\n\x1CV[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[`@\x80Q`\x02\x80\x82R``\x82\x81\x01\x90\x93R\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01tWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x02\x03\x90\x84\x90a\n@V[a\x02\r\x91\x90a\n\x84V[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83`\0\x81Q\x81\x10a\x02\x91Wa\x02\x91a\n\xBFV[` \x02` \x01\x01\x81\x90RP`\0\x84`@\x01Q`\0\x81Q\x81\x10a\x02\xB5Wa\x02\xB5a\n\xBFV[` \x02` \x01\x01Q`\0\x01Q\x90P`\x01`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01`\0 T\x92Pa'\x10\x83\x86`@\x01Q`\0\x81Q\x81\x10a\x03 Wa\x03 a\n\xBFV[` \x02` \x01\x01Q` \x01Qa\x036\x91\x90a\n@V[a\x03@\x91\x90a\n\x84V[\x91P`@Q\x80``\x01`@R\x80\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x84`\x01\x81Q\x81\x10a\x03\xBCWa\x03\xBCa\n\xBFV[` \x02` \x01\x01\x81\x90RPPPP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04UW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R`\x01` R`@\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\xFFW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04LV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xC1Wa\x05\xC1a\x05oV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xC1Wa\x05\xC1a\x05oV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x061Wa\x061a\x05oV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06[W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06oW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x89Wa\x06\x89a\x05oV[a\x06\xBA` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\xEAV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xCFW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\xFEW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x07\"Wa\x07\"a\x05oV[\x81`@R\x82\x93P\x845\x91Pa\x076\x82a\x069V[\x90\x82R` \x84\x015\x90a\x07H\x82a\x069V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07r\x82a\x069V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x8CW`\0\x80\xFD[Pa\x07\x99\x85\x82\x86\x01a\x06^V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07\xB8W`\0\x80\xFD[a\x07\xC0a\x05\x9EV[\x90P\x815a\x07\xCD\x81a\x069V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\xFCW`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08\x18Wa\x08\x18a\x05oV[a\x08&\x81\x83`\x05\x1B\x01a\x05\xEAV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08EW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\x9EW\x81\x81\x8A\x03\x12\x15a\x08aW`\0\x80\x81\xFD[a\x08ia\x05\x9EV[\x815a\x08t\x81a\x069V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x8D\x81a\x069V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08IV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08\xBDW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xD5W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08\xE9W`\0\x80\xFD[a\x08\xF1a\x05\xC7V[\x825\x82\x81\x11\x15a\t\0W`\0\x80\xFD[a\t\x0C\x87\x82\x86\x01a\x06\xECV[\x82RPa\t\x1C\x86` \x85\x01a\x07\xA6V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\t3W`\0\x80\xFD[a\t?\x87\x82\x86\x01a\x07\xEBV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\tWW`\0\x80\xFD[a\tc\x87\x82\x86\x01a\x06^V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\t\xE3W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\x9AV[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\n\x03W`\0\x80\xFD[\x825a\n\x0E\x81a\x069V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\n.W`\0\x80\xFD[\x815a\n9\x81a\x069V[\x93\x92PPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n~W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\0\x82a\n\xBAW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \x1F\xBC\x89h\xB1\xCE\xE404\rl\x1EE\xF6\x8B\x83\xB0\xC4h#1\xF9\xCAT\x13\xDF\xA7^}/XDdsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\x0B\xBD8\x03\x80a\x0B\xBD\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\x7FV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xACV[_` \x82\x84\x03\x12\x15a\0\x8FW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xA5W_\x80\xFD[\x93\x92PPPV[`\x80Qa\n\xECa\0\xD1_9_\x81\x81`x\x01R\x81\x81a\x02=\x01Ra\x03a\x01Ra\n\xEC_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\xE5QV\xB5\x11a\0MW\x80c\xE5QV\xB5\x14a\x01\x03W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x18W\x80c\xFA\xAE\xBD!\x14a\x01+W_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x08\x86V[a\x01XV[`@Qa\0\xBB\x91\x90a\tQV[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x16a\x01\x116`\x04a\t\xC3V[a\x03\xBFV[\0[a\x01\x16a\x01&6`\x04a\t\xEDV[a\x04lV[a\x01Ja\x0196`\x04a\t\xEDV[`\x01` R_\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[`@\x80Q`\x02\x80\x82R``\x82\x81\x01\x90\x93R\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01nWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x01\xFB\x90\x84\x90a\n\x0FV[a\x02\x05\x91\x90a\nQV[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83_\x81Q\x81\x10a\x02\x87Wa\x02\x87a\n\x89V[` \x02` \x01\x01\x81\x90RP_\x84`@\x01Q_\x81Q\x81\x10a\x02\xA9Wa\x02\xA9a\n\x89V[` \x02` \x01\x01Q_\x01Q\x90P`\x01_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x92Pa'\x10\x83\x86`@\x01Q_\x81Q\x81\x10a\x03\x10Wa\x03\x10a\n\x89V[` \x02` \x01\x01Q` \x01Qa\x03&\x91\x90a\n\x0FV[a\x030\x91\x90a\nQV[\x91P`@Q\x80``\x01`@R\x80\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x84`\x01\x81Q\x81\x10a\x03\xACWa\x03\xACa\n\x89V[` \x02` \x01\x01\x81\x90RPPPP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16_\x90\x81R`\x01` R`@\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\xECW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04;V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xABWa\x05\xABa\x05[V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xABWa\x05\xABa\x05[V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x06\x1BWa\x06\x1Ba\x05[V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06DW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x06VW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06pWa\x06pa\x05[V[a\x06\xA1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\xD4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xB5W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06\xE1W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x07\x05Wa\x07\x05a\x05[V[\x81`@R\x82\x93P\x845\x91Pa\x07\x19\x82a\x06#V[\x90\x82R` \x84\x015\x90a\x07+\x82a\x06#V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07U\x82a\x06#V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07nW_\x80\xFD[Pa\x07{\x85\x82\x86\x01a\x06GV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\x98W_\x80\xFD[a\x07\xA0a\x05\x88V[\x90P\x815a\x07\xAD\x81a\x06#V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07\xDAW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\xF6Wa\x07\xF6a\x05[V[a\x08\x04\x81\x83`\x05\x1B\x01a\x05\xD4V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08\"W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08yW\x81\x81\x8A\x03\x12\x15a\x086`\x04a\n\x1CV[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[`@\x80Q`\x02\x80\x82R``\x82\x81\x01\x90\x93R\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01tWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x02\x03\x90\x84\x90a\n@V[a\x02\r\x91\x90a\n\x84V[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83`\0\x81Q\x81\x10a\x02\x91Wa\x02\x91a\n\xBFV[` \x02` \x01\x01\x81\x90RP`\0\x84`@\x01Q`\0\x81Q\x81\x10a\x02\xB5Wa\x02\xB5a\n\xBFV[` \x02` \x01\x01Q`\0\x01Q\x90P`\x01`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01`\0 T\x92Pa'\x10\x83\x86`@\x01Q`\0\x81Q\x81\x10a\x03 Wa\x03 a\n\xBFV[` \x02` \x01\x01Q` \x01Qa\x036\x91\x90a\n@V[a\x03@\x91\x90a\n\x84V[\x91P`@Q\x80``\x01`@R\x80\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x84`\x01\x81Q\x81\x10a\x03\xBCWa\x03\xBCa\n\xBFV[` \x02` \x01\x01\x81\x90RPPPP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04UW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R`\x01` R`@\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\xFFW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04LV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xC1Wa\x05\xC1a\x05oV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xC1Wa\x05\xC1a\x05oV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x061Wa\x061a\x05oV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06[W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06oW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\x89Wa\x06\x89a\x05oV[a\x06\xBA` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\xEAV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xCFW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\xFEW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x07\"Wa\x07\"a\x05oV[\x81`@R\x82\x93P\x845\x91Pa\x076\x82a\x069V[\x90\x82R` \x84\x015\x90a\x07H\x82a\x069V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07r\x82a\x069V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x8CW`\0\x80\xFD[Pa\x07\x99\x85\x82\x86\x01a\x06^V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07\xB8W`\0\x80\xFD[a\x07\xC0a\x05\x9EV[\x90P\x815a\x07\xCD\x81a\x069V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\xFCW`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x08\x18Wa\x08\x18a\x05oV[a\x08&\x81\x83`\x05\x1B\x01a\x05\xEAV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08EW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\x9EW\x81\x81\x8A\x03\x12\x15a\x08aW`\0\x80\x81\xFD[a\x08ia\x05\x9EV[\x815a\x08t\x81a\x069V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x8D\x81a\x069V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08IV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x08\xBDW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xD5W`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x08\xE9W`\0\x80\xFD[a\x08\xF1a\x05\xC7V[\x825\x82\x81\x11\x15a\t\0W`\0\x80\xFD[a\t\x0C\x87\x82\x86\x01a\x06\xECV[\x82RPa\t\x1C\x86` \x85\x01a\x07\xA6V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\t3W`\0\x80\xFD[a\t?\x87\x82\x86\x01a\x07\xEBV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\tWW`\0\x80\xFD[a\tc\x87\x82\x86\x01a\x06^V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\t\xE3W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\t\x9AV[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\n\x03W`\0\x80\xFD[\x825a\n\x0E\x81a\x069V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\n.W`\0\x80\xFD[\x815a\n9\x81a\x069V[\x93\x92PPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\n~W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\0\x82a\n\xBAW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \x1F\xBC\x89h\xB1\xCE\xE404\rl\x1EE\xF6\x8B\x83\xB0\xC4h#1\xF9\xCAT\x13\xDF\xA7^}/XDdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\xE5QV\xB5\x11a\0MW\x80c\xE5QV\xB5\x14a\x01\x03W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x18W\x80c\xFA\xAE\xBD!\x14a\x01+W_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x08\x86V[a\x01XV[`@Qa\0\xBB\x91\x90a\tQV[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x16a\x01\x116`\x04a\t\xC3V[a\x03\xBFV[\0[a\x01\x16a\x01&6`\x04a\t\xEDV[a\x04lV[a\x01Ja\x0196`\x04a\t\xEDV[`\x01` R_\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[`@\x80Q`\x02\x80\x82R``\x82\x81\x01\x90\x93R\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01nWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x01\xFB\x90\x84\x90a\n\x0FV[a\x02\x05\x91\x90a\nQV[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83_\x81Q\x81\x10a\x02\x87Wa\x02\x87a\n\x89V[` \x02` \x01\x01\x81\x90RP_\x84`@\x01Q_\x81Q\x81\x10a\x02\xA9Wa\x02\xA9a\n\x89V[` \x02` \x01\x01Q_\x01Q\x90P`\x01_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x90\x81R` \x01_ T\x92Pa'\x10\x83\x86`@\x01Q_\x81Q\x81\x10a\x03\x10Wa\x03\x10a\n\x89V[` \x02` \x01\x01Q` \x01Qa\x03&\x91\x90a\n\x0FV[a\x030\x91\x90a\nQV[\x91P`@Q\x80``\x01`@R\x80\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x83\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x84`\x01\x81Q\x81\x10a\x03\xACWa\x03\xACa\n\x89V[` \x02` \x01\x01\x81\x90RPPPP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16_\x90\x81R`\x01` R`@\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\xECW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04;V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xABWa\x05\xABa\x05[V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xABWa\x05\xABa\x05[V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x06\x1BWa\x06\x1Ba\x05[V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06DW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x06VW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06pWa\x06pa\x05[V[a\x06\xA1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\xD4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xB5W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06\xE1W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x07\x05Wa\x07\x05a\x05[V[\x81`@R\x82\x93P\x845\x91Pa\x07\x19\x82a\x06#V[\x90\x82R` \x84\x015\x90a\x07+\x82a\x06#V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07U\x82a\x06#V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07nW_\x80\xFD[Pa\x07{\x85\x82\x86\x01a\x06GV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\x98W_\x80\xFD[a\x07\xA0a\x05\x88V[\x90P\x815a\x07\xAD\x81a\x06#V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07\xDAW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\xF6Wa\x07\xF6a\x05[V[a\x08\x04\x81\x83`\x05\x1B\x01a\x05\xD4V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08\"W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08yW\x81\x81\x8A\x03\x12\x15a\x08 = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -546,17 +560,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -572,8 +597,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -842,14 +867,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -861,7 +894,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1075,18 +1108,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1364,7 +1407,12 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity event OwnershipTransferred(address indexed user, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -1372,7 +1420,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1434,6 +1487,21 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1482,9 +1550,10 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity constructor(address _feeRecipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _feeRecipient: alloy::sol_types::private::Address, } const _: () = { @@ -1546,16 +1615,22 @@ constructor(address _feeRecipient); ```solidity function feeRecipient() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeRecipientCall {} ///Container type for the return parameters of the [`feeRecipient()`](feeRecipientCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeRecipientReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1659,18 +1734,25 @@ function feeRecipient() external view returns (address); ```solidity function fees(address tokenIn) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feesCall { + #[allow(missing_docs)] pub tokenIn: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`fees(address)`](feesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feesReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1708,7 +1790,9 @@ function fees(address tokenIn) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1778,20 +1862,27 @@ function fees(address tokenIn) external view returns (uint256); ```solidity function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory result); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getFeeOutputsCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](getFeeOutputsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getFeeOutputsReturn { + #[allow(missing_docs)] pub result: alloy::sol_types::private::Vec< ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1903,16 +1994,22 @@ function getFeeOutputs(ResolvedOrder memory order) external view returns (Output ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2016,17 +2113,24 @@ function owner() external view returns (address); ```solidity function setFee(address tokenIn, uint256 fee) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setFeeCall { + #[allow(missing_docs)] pub tokenIn: alloy::sol_types::private::Address, - pub fee: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub fee: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`setFee(address,uint256)`](setFeeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setFeeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2038,7 +2142,7 @@ function setFee(address tokenIn, uint256 fee) external; #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2149,16 +2253,22 @@ function setFee(address tokenIn, uint256 fee) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2268,11 +2378,17 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`MockFeeControllerInputAndOutputFees`](self) function calls. pub enum MockFeeControllerInputAndOutputFeesCalls { + #[allow(missing_docs)] feeRecipient(feeRecipientCall), + #[allow(missing_docs)] fees(feesCall), + #[allow(missing_docs)] getFeeOutputs(getFeeOutputsCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] setFee(setFeeCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -2323,7 +2439,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2434,7 +2550,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2500,6 +2616,7 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`MockFeeControllerInputAndOutputFees`](self) events. pub enum MockFeeControllerInputAndOutputFeesEvents { + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), } #[automatically_derived] @@ -2832,7 +2949,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn setFee( &self, tokenIn: alloy::sol_types::private::Address, - fee: alloy::sol_types::private::U256, + fee: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&setFeeCall { tokenIn, fee }) } diff --git a/crates/bindings-uniswapx/src/mockfeecontrollerinputfees.rs b/crates/bindings-uniswapx/src/mockfeecontrollerinputfees.rs index 7fa6018..cede8e5 100644 --- a/crates/bindings-uniswapx/src/mockfeecontrollerinputfees.rs +++ b/crates/bindings-uniswapx/src/mockfeecontrollerinputfees.rs @@ -282,41 +282,55 @@ interface MockFeeControllerInputFees { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockFeeControllerInputFees { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a060405234801561001057600080fd5b50604051610acb380380610acb83398101604081905261002f91610081565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b6080516109f96100d260003960008181607c015261024701526109f96000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063e55156b511610050578063e55156b514610108578063f2fde38b1461011d578063faaebd211461013057600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d6366004610780565b61015e565b6040516100bf9190610852565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b61011b6101163660046108c5565b6102a4565b005b61011b61012b3660046108f1565b610353565b61015061013e3660046108f1565b60016020526000908152604090205481565b6040519081526020016100bf565b604080516001808252818301909252606091816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610175575050602083810180515173ffffffffffffffffffffffffffffffffffffffff1660009081526001835260408120549151909201519293509161271090610204908490610915565b61020e9190610959565b9050604051806060016040528085602001516000015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508360008151811061029257610292610994565b60200260200101819052505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461032a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610321565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561049657610496610444565b60405290565b60405160a0810167ffffffffffffffff8111828210171561049657610496610444565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561050657610506610444565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461053057600080fd5b50565b600082601f83011261054457600080fd5b813567ffffffffffffffff81111561055e5761055e610444565b61058f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016104bf565b8181528460208386010111156105a457600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156105d357600080fd5b60405160c0810167ffffffffffffffff82821081831117156105f7576105f7610444565b816040528293508435915061060b8261050e565b90825260208401359061061d8261050e565b8160208401526040850135604084015260608501356060840152608085013591506106478261050e565b81608084015260a085013591508082111561066157600080fd5b5061066e85828601610533565b60a0830152505092915050565b60006060828403121561068d57600080fd5b610695610473565b905081356106a28161050e565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126106d157600080fd5b8135602067ffffffffffffffff8211156106ed576106ed610444565b6106fb818360051b016104bf565b8281526060928302850182019282820191908785111561071a57600080fd5b8387015b858110156107735781818a0312156107365760008081fd5b61073e610473565b81356107498161050e565b815281860135868201526040808301356107628161050e565b90820152845292840192810161071e565b5090979650505050505050565b60006020828403121561079257600080fd5b813567ffffffffffffffff808211156107aa57600080fd5b9083019060e082860312156107be57600080fd5b6107c661049c565b8235828111156107d557600080fd5b6107e1878286016105c1565b8252506107f1866020850161067b565b602082015260808301358281111561080857600080fd5b610814878286016106c0565b60408301525060a08301358281111561082c57600080fd5b61083887828601610533565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b828110156108b8578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161086f565b5091979650505050505050565b600080604083850312156108d857600080fd5b82356108e38161050e565b946020939093013593505050565b60006020828403121561090357600080fd5b813561090e8161050e565b9392505050565b8082028115828204841417610953577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60008261098f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220ed02c07d79104bfab82363b53a8ac441a3e59da00d43fd13a7d57e1e8c2abb2364736f6c63430008180033 + ///0x60a060405234801561000f575f80fd5b50604051610a91380380610a9183398101604081905261002e9161007f565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100ac565b5f6020828403121561008f575f80fd5b81516001600160a01b03811681146100a5575f80fd5b9392505050565b6080516109c76100ca5f395f81816078015261023e01526109c75ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c8063e55156b51161004d578063e55156b514610103578063f2fde38b14610118578063faaebd211461012b575f80fd5b806346904840146100735780638aa6cf03146100c45780638da5cb5b146100e4575b5f80fd5b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d76100d2366004610761565b610158565b6040516100bb919061082c565b5f5461009a9073ffffffffffffffffffffffffffffffffffffffff1681565b61011661011136600461089e565b61029a565b005b6101166101263660046108c8565b610347565b61014a6101393660046108c8565b60016020525f908152604090205481565b6040519081526020016100bb565b604080516001808252818301909252606091816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161016f575050602083810180515173ffffffffffffffffffffffffffffffffffffffff165f90815260018352604081205491519092015192935091612710906101fc9084906108ea565b610206919061092c565b9050604051806060016040528085602001515f015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815250835f8151811061028857610288610964565b60200260200101819052505050919050565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461031f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff9091165f90815260016020526040902055565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146103c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610316565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561048657610486610436565b60405290565b60405160a0810167ffffffffffffffff8111828210171561048657610486610436565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156104f6576104f6610436565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461051f575f80fd5b50565b5f82601f830112610531575f80fd5b813567ffffffffffffffff81111561054b5761054b610436565b61057c60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016104af565b818152846020838601011115610590575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156105bc575f80fd5b60405160c0810167ffffffffffffffff82821081831117156105e0576105e0610436565b81604052829350843591506105f4826104fe565b908252602084013590610606826104fe565b816020840152604085013560408401526060850135606084015260808501359150610630826104fe565b81608084015260a0850135915080821115610649575f80fd5b5061065685828601610522565b60a0830152505092915050565b5f60608284031215610673575f80fd5b61067b610463565b90508135610688816104fe565b80825250602082013560208201526040820135604082015292915050565b5f82601f8301126106b5575f80fd5b8135602067ffffffffffffffff8211156106d1576106d1610436565b6106df818360051b016104af565b828152606092830285018201928282019190878511156106fd575f80fd5b8387015b858110156107545781818a031215610717575f80fd5b61071f610463565b813561072a816104fe565b81528186013586820152604080830135610743816104fe565b908201528452928401928101610701565b5090979650505050505050565b5f60208284031215610771575f80fd5b813567ffffffffffffffff80821115610788575f80fd5b9083019060e0828603121561079b575f80fd5b6107a361048c565b8235828111156107b1575f80fd5b6107bd878286016105ac565b8252506107cd8660208501610663565b60208201526080830135828111156107e3575f80fd5b6107ef878286016106a6565b60408301525060a083013582811115610806575f80fd5b61081287828601610522565b60608301525060c092909201356080830152509392505050565b602080825282518282018190525f919060409081850190868401855b82811015610891578151805173ffffffffffffffffffffffffffffffffffffffff9081168652878201518887015290860151168585015260609093019290850190600101610848565b5091979650505050505050565b5f80604083850312156108af575f80fd5b82356108ba816104fe565b946020939093013593505050565b5f602082840312156108d8575f80fd5b81356108e3816104fe565b9392505050565b8082028115828204841417610926577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b92915050565b5f8261095f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122039518df892958428d777fd985e082f36d9f8cbaddbd02bf32c9b36629b0a0cae64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\n\xCB8\x03\x80a\n\xCB\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x81V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xB1V[`\0` \x82\x84\x03\x12\x15a\0\x93W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xAAW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\t\xF9a\0\xD2`\09`\0\x81\x81`|\x01Ra\x02G\x01Ra\t\xF9`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\xE5QV\xB5\x11a\0PW\x80c\xE5QV\xB5\x14a\x01\x08W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x1DW\x80c\xFA\xAE\xBD!\x14a\x010W`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x07\x80V[a\x01^V[`@Qa\0\xBF\x91\x90a\x08RV[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x1Ba\x01\x166`\x04a\x08\xC5V[a\x02\xA4V[\0[a\x01\x1Ba\x01+6`\x04a\x08\xF1V[a\x03SV[a\x01Pa\x01>6`\x04a\x08\xF1V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R``\x91\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01uWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x02\x04\x90\x84\x90a\t\x15V[a\x02\x0E\x91\x90a\tYV[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83`\0\x81Q\x81\x10a\x02\x92Wa\x02\x92a\t\x94V[` \x02` \x01\x01\x81\x90RPPP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03*W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R`\x01` R`@\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xD4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03!V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x96Wa\x04\x96a\x04DV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x96Wa\x04\x96a\x04DV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x06Wa\x05\x06a\x04DV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x050W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x05DW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05^Wa\x05^a\x04DV[a\x05\x8F` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x04\xBFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xA4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x05\xD3W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x05\xF7Wa\x05\xF7a\x04DV[\x81`@R\x82\x93P\x845\x91Pa\x06\x0B\x82a\x05\x0EV[\x90\x82R` \x84\x015\x90a\x06\x1D\x82a\x05\x0EV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06G\x82a\x05\x0EV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06aW`\0\x80\xFD[Pa\x06n\x85\x82\x86\x01a\x053V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x06\x8DW`\0\x80\xFD[a\x06\x95a\x04sV[\x90P\x815a\x06\xA2\x81a\x05\x0EV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x06\xD1W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\xEDWa\x06\xEDa\x04DV[a\x06\xFB\x81\x83`\x05\x1B\x01a\x04\xBFV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\x1AW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07sW\x81\x81\x8A\x03\x12\x15a\x076W`\0\x80\x81\xFD[a\x07>a\x04sV[\x815a\x07I\x81a\x05\x0EV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07b\x81a\x05\x0EV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\x1EV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x07\x92W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xAAW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x07\xBEW`\0\x80\xFD[a\x07\xC6a\x04\x9CV[\x825\x82\x81\x11\x15a\x07\xD5W`\0\x80\xFD[a\x07\xE1\x87\x82\x86\x01a\x05\xC1V[\x82RPa\x07\xF1\x86` \x85\x01a\x06{V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x08\x08W`\0\x80\xFD[a\x08\x14\x87\x82\x86\x01a\x06\xC0V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08,W`\0\x80\xFD[a\x088\x87\x82\x86\x01a\x053V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\x08\xB8W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\x08oV[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\xD8W`\0\x80\xFD[\x825a\x08\xE3\x81a\x05\x0EV[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\t\x03W`\0\x80\xFD[\x815a\t\x0E\x81a\x05\x0EV[\x93\x92PPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\tSW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\0\x82a\t\x8FW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xED\x02\xC0}y\x10K\xFA\xB8#c\xB5:\x8A\xC4A\xA3\xE5\x9D\xA0\rC\xFD\x13\xA7\xD5~\x1E\x8C*\xBB#dsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\n\x918\x03\x80a\n\x91\x839\x81\x01`@\x81\x90Ra\0.\x91a\0\x7FV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xACV[_` \x82\x84\x03\x12\x15a\0\x8FW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xA5W_\x80\xFD[\x93\x92PPPV[`\x80Qa\t\xC7a\0\xCA_9_\x81\x81`x\x01Ra\x02>\x01Ra\t\xC7_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\xE5QV\xB5\x11a\0MW\x80c\xE5QV\xB5\x14a\x01\x03W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x18W\x80c\xFA\xAE\xBD!\x14a\x01+W_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x07aV[a\x01XV[`@Qa\0\xBB\x91\x90a\x08,V[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x16a\x01\x116`\x04a\x08\x9EV[a\x02\x9AV[\0[a\x01\x16a\x01&6`\x04a\x08\xC8V[a\x03GV[a\x01Ja\x0196`\x04a\x08\xC8V[`\x01` R_\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R``\x91\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01oWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x01\xFC\x90\x84\x90a\x08\xEAV[a\x02\x06\x91\x90a\t,V[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83_\x81Q\x81\x10a\x02\x88Wa\x02\x88a\tdV[` \x02` \x01\x01\x81\x90RPPP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\x1FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16_\x90\x81R`\x01` R`@\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xC7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\x16V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x86Wa\x04\x86a\x046V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x86Wa\x04\x86a\x046V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xF6Wa\x04\xF6a\x046V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\x1FW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x051W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05KWa\x05Ka\x046V[a\x05|` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x04\xAFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\x90W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x05\xBCW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x05\xE0Wa\x05\xE0a\x046V[\x81`@R\x82\x93P\x845\x91Pa\x05\xF4\x82a\x04\xFEV[\x90\x82R` \x84\x015\x90a\x06\x06\x82a\x04\xFEV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x060\x82a\x04\xFEV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06IW_\x80\xFD[Pa\x06V\x85\x82\x86\x01a\x05\"V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x06sW_\x80\xFD[a\x06{a\x04cV[\x90P\x815a\x06\x88\x81a\x04\xFEV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x06\xB5W_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\xD1Wa\x06\xD1a\x046V[a\x06\xDF\x81\x83`\x05\x1B\x01a\x04\xAFV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x06\xFDW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07TW\x81\x81\x8A\x03\x12\x15a\x07\x17W_\x80\xFD[a\x07\x1Fa\x04cV[\x815a\x07*\x81a\x04\xFEV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07C\x81a\x04\xFEV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\x01V[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x07qW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\x88W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x07\x9BW_\x80\xFD[a\x07\xA3a\x04\x8CV[\x825\x82\x81\x11\x15a\x07\xB1W_\x80\xFD[a\x07\xBD\x87\x82\x86\x01a\x05\xACV[\x82RPa\x07\xCD\x86` \x85\x01a\x06cV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x07\xE3W_\x80\xFD[a\x07\xEF\x87\x82\x86\x01a\x06\xA6V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\x06W_\x80\xFD[a\x08\x12\x87\x82\x86\x01a\x05\"V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\x08\x91W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\x08HV[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xAFW_\x80\xFD[\x825a\x08\xBA\x81a\x04\xFEV[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a\x08\xD8W_\x80\xFD[\x815a\x08\xE3\x81a\x04\xFEV[\x93\x92PPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\t&W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x92\x91PPV[_\x82a\t_W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD\xFE\xA2dipfsX\"\x12 9Q\x8D\xF8\x92\x95\x84(\xD7w\xFD\x98^\x08/6\xD9\xF8\xCB\xAD\xDB\xD0+\xF3,\x9B6b\x9B\n\x0C\xAEdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063e55156b511610050578063e55156b514610108578063f2fde38b1461011d578063faaebd211461013057600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d6366004610780565b61015e565b6040516100bf9190610852565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b61011b6101163660046108c5565b6102a4565b005b61011b61012b3660046108f1565b610353565b61015061013e3660046108f1565b60016020526000908152604090205481565b6040519081526020016100bf565b604080516001808252818301909252606091816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610175575050602083810180515173ffffffffffffffffffffffffffffffffffffffff1660009081526001835260408120549151909201519293509161271090610204908490610915565b61020e9190610959565b9050604051806060016040528085602001516000015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152508360008151811061029257610292610994565b60200260200101819052505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461032a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909116600090815260016020526040902055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610321565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561049657610496610444565b60405290565b60405160a0810167ffffffffffffffff8111828210171561049657610496610444565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561050657610506610444565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461053057600080fd5b50565b600082601f83011261054457600080fd5b813567ffffffffffffffff81111561055e5761055e610444565b61058f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016104bf565b8181528460208386010111156105a457600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156105d357600080fd5b60405160c0810167ffffffffffffffff82821081831117156105f7576105f7610444565b816040528293508435915061060b8261050e565b90825260208401359061061d8261050e565b8160208401526040850135604084015260608501356060840152608085013591506106478261050e565b81608084015260a085013591508082111561066157600080fd5b5061066e85828601610533565b60a0830152505092915050565b60006060828403121561068d57600080fd5b610695610473565b905081356106a28161050e565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126106d157600080fd5b8135602067ffffffffffffffff8211156106ed576106ed610444565b6106fb818360051b016104bf565b8281526060928302850182019282820191908785111561071a57600080fd5b8387015b858110156107735781818a0312156107365760008081fd5b61073e610473565b81356107498161050e565b815281860135868201526040808301356107628161050e565b90820152845292840192810161071e565b5090979650505050505050565b60006020828403121561079257600080fd5b813567ffffffffffffffff808211156107aa57600080fd5b9083019060e082860312156107be57600080fd5b6107c661049c565b8235828111156107d557600080fd5b6107e1878286016105c1565b8252506107f1866020850161067b565b602082015260808301358281111561080857600080fd5b610814878286016106c0565b60408301525060a08301358281111561082c57600080fd5b61083887828601610533565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b828110156108b8578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161086f565b5091979650505050505050565b600080604083850312156108d857600080fd5b82356108e38161050e565b946020939093013593505050565b60006020828403121561090357600080fd5b813561090e8161050e565b9392505050565b8082028115828204841417610953577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60008261098f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220ed02c07d79104bfab82363b53a8ac441a3e59da00d43fd13a7d57e1e8c2abb2364736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506004361061006f575f3560e01c8063e55156b51161004d578063e55156b514610103578063f2fde38b14610118578063faaebd211461012b575f80fd5b806346904840146100735780638aa6cf03146100c45780638da5cb5b146100e4575b5f80fd5b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d76100d2366004610761565b610158565b6040516100bb919061082c565b5f5461009a9073ffffffffffffffffffffffffffffffffffffffff1681565b61011661011136600461089e565b61029a565b005b6101166101263660046108c8565b610347565b61014a6101393660046108c8565b60016020525f908152604090205481565b6040519081526020016100bb565b604080516001808252818301909252606091816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161016f575050602083810180515173ffffffffffffffffffffffffffffffffffffffff165f90815260018352604081205491519092015192935091612710906101fc9084906108ea565b610206919061092c565b9050604051806060016040528085602001515f015173ffffffffffffffffffffffffffffffffffffffff1681526020018281526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815250835f8151811061028857610288610964565b60200260200101819052505050919050565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461031f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff9091165f90815260016020526040902055565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146103c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610316565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561048657610486610436565b60405290565b60405160a0810167ffffffffffffffff8111828210171561048657610486610436565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156104f6576104f6610436565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461051f575f80fd5b50565b5f82601f830112610531575f80fd5b813567ffffffffffffffff81111561054b5761054b610436565b61057c60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016104af565b818152846020838601011115610590575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156105bc575f80fd5b60405160c0810167ffffffffffffffff82821081831117156105e0576105e0610436565b81604052829350843591506105f4826104fe565b908252602084013590610606826104fe565b816020840152604085013560408401526060850135606084015260808501359150610630826104fe565b81608084015260a0850135915080821115610649575f80fd5b5061065685828601610522565b60a0830152505092915050565b5f60608284031215610673575f80fd5b61067b610463565b90508135610688816104fe565b80825250602082013560208201526040820135604082015292915050565b5f82601f8301126106b5575f80fd5b8135602067ffffffffffffffff8211156106d1576106d1610436565b6106df818360051b016104af565b828152606092830285018201928282019190878511156106fd575f80fd5b8387015b858110156107545781818a031215610717575f80fd5b61071f610463565b813561072a816104fe565b81528186013586820152604080830135610743816104fe565b908201528452928401928101610701565b5090979650505050505050565b5f60208284031215610771575f80fd5b813567ffffffffffffffff80821115610788575f80fd5b9083019060e0828603121561079b575f80fd5b6107a361048c565b8235828111156107b1575f80fd5b6107bd878286016105ac565b8252506107cd8660208501610663565b60208201526080830135828111156107e3575f80fd5b6107ef878286016106a6565b60408301525060a083013582811115610806575f80fd5b61081287828601610522565b60608301525060c092909201356080830152509392505050565b602080825282518282018190525f919060409081850190868401855b82811015610891578151805173ffffffffffffffffffffffffffffffffffffffff9081168652878201518887015290860151168585015260609093019290850190600101610848565b5091979650505050505050565b5f80604083850312156108af575f80fd5b82356108ba816104fe565b946020939093013593505050565b5f602082840312156108d8575f80fd5b81356108e3816104fe565b9392505050565b8082028115828204841417610926577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b92915050565b5f8261095f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122039518df892958428d777fd985e082f36d9f8cbaddbd02bf32c9b36629b0a0cae64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\xE5QV\xB5\x11a\0PW\x80c\xE5QV\xB5\x14a\x01\x08W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x1DW\x80c\xFA\xAE\xBD!\x14a\x010W`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x07\x80V[a\x01^V[`@Qa\0\xBF\x91\x90a\x08RV[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x1Ba\x01\x166`\x04a\x08\xC5V[a\x02\xA4V[\0[a\x01\x1Ba\x01+6`\x04a\x08\xF1V[a\x03SV[a\x01Pa\x01>6`\x04a\x08\xF1V[`\x01` R`\0\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R``\x91\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01uWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\0\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x02\x04\x90\x84\x90a\t\x15V[a\x02\x0E\x91\x90a\tYV[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83`\0\x81Q\x81\x10a\x02\x92Wa\x02\x92a\t\x94V[` \x02` \x01\x01\x81\x90RPPP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03*W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\0\x90\x81R`\x01` R`@\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xD4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03!V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x96Wa\x04\x96a\x04DV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x96Wa\x04\x96a\x04DV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x06Wa\x05\x06a\x04DV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x050W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x05DW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05^Wa\x05^a\x04DV[a\x05\x8F` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x04\xBFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xA4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x05\xD3W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x05\xF7Wa\x05\xF7a\x04DV[\x81`@R\x82\x93P\x845\x91Pa\x06\x0B\x82a\x05\x0EV[\x90\x82R` \x84\x015\x90a\x06\x1D\x82a\x05\x0EV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06G\x82a\x05\x0EV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06aW`\0\x80\xFD[Pa\x06n\x85\x82\x86\x01a\x053V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x06\x8DW`\0\x80\xFD[a\x06\x95a\x04sV[\x90P\x815a\x06\xA2\x81a\x05\x0EV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x06\xD1W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\xEDWa\x06\xEDa\x04DV[a\x06\xFB\x81\x83`\x05\x1B\x01a\x04\xBFV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\x1AW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07sW\x81\x81\x8A\x03\x12\x15a\x076W`\0\x80\x81\xFD[a\x07>a\x04sV[\x815a\x07I\x81a\x05\x0EV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07b\x81a\x05\x0EV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\x1EV[P\x90\x97\x96PPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x07\x92W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xAAW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x07\xBEW`\0\x80\xFD[a\x07\xC6a\x04\x9CV[\x825\x82\x81\x11\x15a\x07\xD5W`\0\x80\xFD[a\x07\xE1\x87\x82\x86\x01a\x05\xC1V[\x82RPa\x07\xF1\x86` \x85\x01a\x06{V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x08\x08W`\0\x80\xFD[a\x08\x14\x87\x82\x86\x01a\x06\xC0V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08,W`\0\x80\xFD[a\x088\x87\x82\x86\x01a\x053V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\x08\xB8W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\x08oV[P\x91\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\xD8W`\0\x80\xFD[\x825a\x08\xE3\x81a\x05\x0EV[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\t\x03W`\0\x80\xFD[\x815a\t\x0E\x81a\x05\x0EV[\x93\x92PPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\tSW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x92\x91PPV[`\0\x82a\t\x8FW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xED\x02\xC0}y\x10K\xFA\xB8#c\xB5:\x8A\xC4A\xA3\xE5\x9D\xA0\rC\xFD\x13\xA7\xD5~\x1E\x8C*\xBB#dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0oW_5`\xE0\x1C\x80c\xE5QV\xB5\x11a\0MW\x80c\xE5QV\xB5\x14a\x01\x03W\x80c\xF2\xFD\xE3\x8B\x14a\x01\x18W\x80c\xFA\xAE\xBD!\x14a\x01+W_\x80\xFD[\x80cF\x90H@\x14a\0sW\x80c\x8A\xA6\xCF\x03\x14a\0\xC4W\x80c\x8D\xA5\xCB[\x14a\0\xE4W[_\x80\xFD[a\0\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD7a\0\xD26`\x04a\x07aV[a\x01XV[`@Qa\0\xBB\x91\x90a\x08,V[_Ta\0\x9A\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x01\x16a\x01\x116`\x04a\x08\x9EV[a\x02\x9AV[\0[a\x01\x16a\x01&6`\x04a\x08\xC8V[a\x03GV[a\x01Ja\x0196`\x04a\x08\xC8V[`\x01` R_\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBBV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R``\x91\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01oWPP` \x83\x81\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x90\x81R`\x01\x83R`@\x81 T\x91Q\x90\x92\x01Q\x92\x93P\x91a'\x10\x90a\x01\xFC\x90\x84\x90a\x08\xEAV[a\x02\x06\x91\x90a\t,V[\x90P`@Q\x80``\x01`@R\x80\x85` \x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x83_\x81Q\x81\x10a\x02\x88Wa\x02\x88a\tdV[` \x02` \x01\x01\x81\x90RPPP\x91\x90PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\x1FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16_\x90\x81R`\x01` R`@\x90 UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xC7W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\x16V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x86Wa\x04\x86a\x046V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x86Wa\x04\x86a\x046V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xF6Wa\x04\xF6a\x046V[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\x1FW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x051W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05KWa\x05Ka\x046V[a\x05|` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x04\xAFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\x90W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x05\xBCW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x05\xE0Wa\x05\xE0a\x046V[\x81`@R\x82\x93P\x845\x91Pa\x05\xF4\x82a\x04\xFEV[\x90\x82R` \x84\x015\x90a\x06\x06\x82a\x04\xFEV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x060\x82a\x04\xFEV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06IW_\x80\xFD[Pa\x06V\x85\x82\x86\x01a\x05\"V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x06sW_\x80\xFD[a\x06{a\x04cV[\x90P\x815a\x06\x88\x81a\x04\xFEV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x06\xB5W_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\xD1Wa\x06\xD1a\x046V[a\x06\xDF\x81\x83`\x05\x1B\x01a\x04\xAFV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x06\xFDW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07TW\x81\x81\x8A\x03\x12\x15a\x07\x17W_\x80\xFD[a\x07\x1Fa\x04cV[\x815a\x07*\x81a\x04\xFEV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07C\x81a\x04\xFEV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\x01V[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x07qW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\x88W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x07\x9BW_\x80\xFD[a\x07\xA3a\x04\x8CV[\x825\x82\x81\x11\x15a\x07\xB1W_\x80\xFD[a\x07\xBD\x87\x82\x86\x01a\x05\xACV[\x82RPa\x07\xCD\x86` \x85\x01a\x06cV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x07\xE3W_\x80\xFD[a\x07\xEF\x87\x82\x86\x01a\x06\xA6V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x08\x06W_\x80\xFD[a\x08\x12\x87\x82\x86\x01a\x05\"V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90\x86\x84\x01\x85[\x82\x81\x10\x15a\x08\x91W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x86R\x87\x82\x01Q\x88\x87\x01R\x90\x86\x01Q\x16\x85\x85\x01R``\x90\x93\x01\x92\x90\x85\x01\x90`\x01\x01a\x08HV[P\x91\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xAFW_\x80\xFD[\x825a\x08\xBA\x81a\x04\xFEV[\x94` \x93\x90\x93\x015\x93PPPV[_` \x82\x84\x03\x12\x15a\x08\xD8W_\x80\xFD[\x815a\x08\xE3\x81a\x04\xFEV[\x93\x92PPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\t&W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x92\x91PPV[_\x82a\t_W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD\xFE\xA2dipfsX\"\x12 9Q\x8D\xF8\x92\x95\x84(\xD7w\xFD\x98^\x08/6\xD9\xF8\xCB\xAD\xDB\xD0+\xF3,\x9B6b\x9B\n\x0C\xAEdsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -328,8 +342,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -546,17 +560,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -572,8 +597,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -842,14 +867,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -861,7 +894,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1075,18 +1108,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1364,7 +1407,12 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity event OwnershipTransferred(address indexed user, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -1372,7 +1420,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1434,6 +1487,21 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1482,9 +1550,10 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity constructor(address _feeRecipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _feeRecipient: alloy::sol_types::private::Address, } const _: () = { @@ -1546,16 +1615,22 @@ constructor(address _feeRecipient); ```solidity function feeRecipient() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeRecipientCall {} ///Container type for the return parameters of the [`feeRecipient()`](feeRecipientCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeRecipientReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1659,18 +1734,25 @@ function feeRecipient() external view returns (address); ```solidity function fees(address tokenIn) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feesCall { + #[allow(missing_docs)] pub tokenIn: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`fees(address)`](feesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feesReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1708,7 +1790,9 @@ function fees(address tokenIn) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1778,20 +1862,27 @@ function fees(address tokenIn) external view returns (uint256); ```solidity function getFeeOutputs(ResolvedOrder memory order) external view returns (OutputToken[] memory result); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getFeeOutputsCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](getFeeOutputsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getFeeOutputsReturn { + #[allow(missing_docs)] pub result: alloy::sol_types::private::Vec< ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1903,16 +1994,22 @@ function getFeeOutputs(ResolvedOrder memory order) external view returns (Output ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2016,17 +2113,24 @@ function owner() external view returns (address); ```solidity function setFee(address tokenIn, uint256 fee) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setFeeCall { + #[allow(missing_docs)] pub tokenIn: alloy::sol_types::private::Address, - pub fee: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub fee: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`setFee(address,uint256)`](setFeeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setFeeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2038,7 +2142,7 @@ function setFee(address tokenIn, uint256 fee) external; #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2149,16 +2253,22 @@ function setFee(address tokenIn, uint256 fee) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2268,11 +2378,17 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`MockFeeControllerInputFees`](self) function calls. pub enum MockFeeControllerInputFeesCalls { + #[allow(missing_docs)] feeRecipient(feeRecipientCall), + #[allow(missing_docs)] fees(feesCall), + #[allow(missing_docs)] getFeeOutputs(getFeeOutputsCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] setFee(setFeeCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -2323,7 +2439,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2420,7 +2536,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2486,6 +2602,7 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`MockFeeControllerInputFees`](self) events. pub enum MockFeeControllerInputFeesEvents { + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), } #[automatically_derived] @@ -2803,7 +2920,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn setFee( &self, tokenIn: alloy::sol_types::private::Address, - fee: alloy::sol_types::private::U256, + fee: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&setFeeCall { tokenIn, fee }) } diff --git a/crates/bindings-uniswapx/src/mockfeecontrollerzerofee.rs b/crates/bindings-uniswapx/src/mockfeecontrollerzerofee.rs index 8e6af2d..16f4cf1 100644 --- a/crates/bindings-uniswapx/src/mockfeecontrollerzerofee.rs +++ b/crates/bindings-uniswapx/src/mockfeecontrollerzerofee.rs @@ -292,41 +292,55 @@ interface MockFeeControllerZeroFee { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockFeeControllerZeroFee { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a060405234801561001057600080fd5b50604051610a9c380380610a9c83398101604081905261002f91610081565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b6080516109d16100cb6000396000607c01526109d16000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639b9ac2cb116100505780639b9ac2cb14610108578063dc7e98df14610141578063f2fde38b1461015657600080fd5b806346904840146100775780638aa6cf03146100c85780638da5cb5b146100e8575b600080fd5b61009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d6366004610789565b610169565b6040516100bf919061085b565b60005461009e9073ffffffffffffffffffffffffffffffffffffffff1681565b6101336101163660046108ce565b600160209081526000928352604080842090915290825290205481565b6040519081526020016100bf565b61015461014f366004610907565b61029d565b005b610154610164366004610948565b61035c565b604080516001808252818301909252606091816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101805790505090506000816000815181106101e2576101e261096c565b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000816000815181106102355761023561096c565b60200260200101516040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000816000815181106102885761028861096c565b60200260200101516020018181525050919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff92831660009081526001602090815260408083209490951682529290925291902055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161031a565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561049f5761049f61044d565b60405290565b60405160a0810167ffffffffffffffff8111828210171561049f5761049f61044d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561050f5761050f61044d565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461053957600080fd5b50565b600082601f83011261054d57600080fd5b813567ffffffffffffffff8111156105675761056761044d565b61059860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016104c8565b8181528460208386010111156105ad57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156105dc57600080fd5b60405160c0810167ffffffffffffffff82821081831117156106005761060061044d565b816040528293508435915061061482610517565b90825260208401359061062682610517565b81602084015260408501356040840152606085013560608401526080850135915061065082610517565b81608084015260a085013591508082111561066a57600080fd5b506106778582860161053c565b60a0830152505092915050565b60006060828403121561069657600080fd5b61069e61047c565b905081356106ab81610517565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126106da57600080fd5b8135602067ffffffffffffffff8211156106f6576106f661044d565b610704818360051b016104c8565b8281526060928302850182019282820191908785111561072357600080fd5b8387015b8581101561077c5781818a03121561073f5760008081fd5b61074761047c565b813561075281610517565b8152818601358682015260408083013561076b81610517565b908201528452928401928101610727565b5090979650505050505050565b60006020828403121561079b57600080fd5b813567ffffffffffffffff808211156107b357600080fd5b9083019060e082860312156107c757600080fd5b6107cf6104a5565b8235828111156107de57600080fd5b6107ea878286016105ca565b8252506107fa8660208501610684565b602082015260808301358281111561081157600080fd5b61081d878286016106c9565b60408301525060a08301358281111561083557600080fd5b6108418782860161053c565b60608301525060c092909201356080830152509392505050565b602080825282518282018190526000919060409081850190868401855b828110156108c1578151805173ffffffffffffffffffffffffffffffffffffffff9081168652878201518887015290860151168585015260609093019290850190600101610878565b5091979650505050505050565b600080604083850312156108e157600080fd5b82356108ec81610517565b915060208301356108fc81610517565b809150509250929050565b60008060006060848603121561091c57600080fd5b833561092781610517565b9250602084013561093781610517565b929592945050506040919091013590565b60006020828403121561095a57600080fd5b813561096581610517565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212208b68af630d6c8d18e3436e61650a2c6a8ed1b12463971085c2990c31ac0e720a64736f6c63430008180033 + ///0x60a060405234801561000f575f80fd5b50604051610a60380380610a6083398101604081905261002e9161007f565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03166080526100ac565b5f6020828403121561008f575f80fd5b81516001600160a01b03811681146100a5575f80fd5b9392505050565b60805161099d6100c35f395f6078015261099d5ff3fe608060405234801561000f575f80fd5b506004361061006f575f3560e01c80639b9ac2cb1161004d5780639b9ac2cb14610103578063dc7e98df1461013b578063f2fde38b14610150575f80fd5b806346904840146100735780638aa6cf03146100c45780638da5cb5b146100e4575b5f80fd5b61009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d76100d2366004610766565b610163565b6040516100bb9190610831565b5f5461009a9073ffffffffffffffffffffffffffffffffffffffff1681565b61012d6101113660046108a3565b600160209081525f928352604080842090915290825290205481565b6040519081526020016100bb565b61014e6101493660046108da565b61028f565b005b61014e61015e366004610918565b61034c565b604080516001808252818301909252606091816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161017a5790505090505f815f815181106101d9576101d961093a565b60200260200101515f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f815f815181106102295761022961093a565b60200260200101516040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f815f8151811061027a5761027a61093a565b60200260200101516020018181525050919050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff9283165f9081526001602090815260408083209490951682529290925291902055565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146103cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161030b565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561048b5761048b61043b565b60405290565b60405160a0810167ffffffffffffffff8111828210171561048b5761048b61043b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156104fb576104fb61043b565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610524575f80fd5b50565b5f82601f830112610536575f80fd5b813567ffffffffffffffff8111156105505761055061043b565b61058160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016104b4565b818152846020838601011115610595575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156105c1575f80fd5b60405160c0810167ffffffffffffffff82821081831117156105e5576105e561043b565b81604052829350843591506105f982610503565b90825260208401359061060b82610503565b81602084015260408501356040840152606085013560608401526080850135915061063582610503565b81608084015260a085013591508082111561064e575f80fd5b5061065b85828601610527565b60a0830152505092915050565b5f60608284031215610678575f80fd5b610680610468565b9050813561068d81610503565b80825250602082013560208201526040820135604082015292915050565b5f82601f8301126106ba575f80fd5b8135602067ffffffffffffffff8211156106d6576106d661043b565b6106e4818360051b016104b4565b82815260609283028501820192828201919087851115610702575f80fd5b8387015b858110156107595781818a03121561071c575f80fd5b610724610468565b813561072f81610503565b8152818601358682015260408083013561074881610503565b908201528452928401928101610706565b5090979650505050505050565b5f60208284031215610776575f80fd5b813567ffffffffffffffff8082111561078d575f80fd5b9083019060e082860312156107a0575f80fd5b6107a8610491565b8235828111156107b6575f80fd5b6107c2878286016105b1565b8252506107d28660208501610668565b60208201526080830135828111156107e8575f80fd5b6107f4878286016106ab565b60408301525060a08301358281111561080b575f80fd5b61081787828601610527565b60608301525060c092909201356080830152509392505050565b602080825282518282018190525f919060409081850190868401855b82811015610896578151805173ffffffffffffffffffffffffffffffffffffffff908116865287820151888701529086015116858501526060909301929085019060010161084d565b5091979650505050505050565b5f80604083850312156108b4575f80fd5b82356108bf81610503565b915060208301356108cf81610503565b809150509250929050565b5f805f606084860312156108ec575f80fd5b83356108f781610503565b9250602084013561090781610503565b929592945050506040919091013590565b5f60208284031215610928575f80fd5b813561093381610503565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122008e1f49aba61bb506d9c20e3616db5477d6ef5da5fbe116db87f6c4802bf0b0164736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\n\x9C8\x03\x80a\n\x9C\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x81V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x163\x90\x81\x17\x82U`@Q\x90\x91\x82\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0\xB1V[`\0` \x82\x84\x03\x12\x15a\0\x93W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xAAW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\t\xD1a\0\xCB`\09`\0`|\x01Ra\t\xD1`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0rW`\x005`\xE0\x1C\x80c\x9B\x9A\xC2\xCB\x11a\0PW\x80c\x9B\x9A\xC2\xCB\x14a\x01\x08W\x80c\xDC~\x98\xDF\x14a\x01AW\x80c\xF2\xFD\xE3\x8B\x14a\x01VW`\0\x80\xFD[\x80cF\x90H@\x14a\0wW\x80c\x8A\xA6\xCF\x03\x14a\0\xC8W\x80c\x8D\xA5\xCB[\x14a\0\xE8W[`\0\x80\xFD[a\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\x07\x89V[a\x01iV[`@Qa\0\xBF\x91\x90a\x08[V[`\0Ta\0\x9E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\x013a\x01\x166`\x04a\x08\xCEV[`\x01` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[a\x01Ta\x01O6`\x04a\t\x07V[a\x02\x9DV[\0[a\x01Ta\x01d6`\x04a\tHV[a\x03\\V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R``\x91\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\x80W\x90PP\x90P`\0\x81`\0\x81Q\x81\x10a\x01\xE2Wa\x01\xE2a\tlV[` \x02` \x01\x01Q`\0\x01\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RPP`\0\x81`\0\x81Q\x81\x10a\x025Wa\x025a\tlV[` \x02` \x01\x01Q`@\x01\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RPP`\0\x81`\0\x81Q\x81\x10a\x02\x88Wa\x02\x88a\tlV[` \x02` \x01\x01Q` \x01\x81\x81RPP\x91\x90PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03#W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x83\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x94\x90\x95\x16\x82R\x92\x90\x92R\x91\x90 UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03\xDDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03\x1AV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x9FWa\x04\x9Fa\x04MV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x9FWa\x04\x9Fa\x04MV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x0FWa\x05\x0Fa\x04MV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x059W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x05MW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05gWa\x05ga\x04MV[a\x05\x98` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x04\xC8V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xADW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x05\xDCW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\0Wa\x06\0a\x04MV[\x81`@R\x82\x93P\x845\x91Pa\x06\x14\x82a\x05\x17V[\x90\x82R` \x84\x015\x90a\x06&\x82a\x05\x17V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06P\x82a\x05\x17V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06jW`\0\x80\xFD[Pa\x06w\x85\x82\x86\x01a\x05 = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -556,17 +570,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -582,8 +607,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -852,14 +877,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -871,7 +904,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1085,18 +1118,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1374,7 +1417,12 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity event OwnershipTransferred(address indexed user, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -1382,7 +1430,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1444,6 +1497,21 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1492,9 +1560,10 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity constructor(address _feeRecipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _feeRecipient: alloy::sol_types::private::Address, } const _: () = { @@ -1556,16 +1625,22 @@ constructor(address _feeRecipient); ```solidity function feeRecipient() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeRecipientCall {} ///Container type for the return parameters of the [`feeRecipient()`](feeRecipientCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeRecipientReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1669,19 +1744,27 @@ function feeRecipient() external view returns (address); ```solidity function fees(address tokenIn, address tokenOut) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feesCall { + #[allow(missing_docs)] pub tokenIn: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub tokenOut: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`fees(address,address)`](feesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feesReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1728,7 +1811,9 @@ function fees(address tokenIn, address tokenOut) external view returns (uint256) #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1804,20 +1889,27 @@ function fees(address tokenIn, address tokenOut) external view returns (uint256) ```solidity function getFeeOutputs(ResolvedOrder memory) external pure returns (OutputToken[] memory result); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getFeeOutputsCall { + #[allow(missing_docs)] pub _0: ::RustType, } ///Container type for the return parameters of the [`getFeeOutputs(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](getFeeOutputsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getFeeOutputsReturn { + #[allow(missing_docs)] pub result: alloy::sol_types::private::Vec< ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1929,16 +2021,22 @@ function getFeeOutputs(ResolvedOrder memory) external pure returns (OutputToken[ ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2042,18 +2140,26 @@ function owner() external view returns (address); ```solidity function setFee(address tokenIn, address tokenOut, uint256 fee) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setFeeCall { + #[allow(missing_docs)] pub tokenIn: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub tokenOut: alloy::sol_types::private::Address, - pub fee: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub fee: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`setFee(address,address,uint256)`](setFeeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setFeeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2067,7 +2173,7 @@ function setFee(address tokenIn, address tokenOut, uint256 fee) external; type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2183,16 +2289,22 @@ function setFee(address tokenIn, address tokenOut, uint256 fee) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2302,11 +2414,17 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`MockFeeControllerZeroFee`](self) function calls. pub enum MockFeeControllerZeroFeeCalls { + #[allow(missing_docs)] feeRecipient(feeRecipientCall), + #[allow(missing_docs)] fees(feesCall), + #[allow(missing_docs)] getFeeOutputs(getFeeOutputsCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] setFee(setFeeCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -2357,7 +2475,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2454,7 +2572,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2520,6 +2638,7 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`MockFeeControllerZeroFee`](self) events. pub enum MockFeeControllerZeroFeeEvents { + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), } #[automatically_derived] @@ -2837,7 +2956,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, tokenIn: alloy::sol_types::private::Address, tokenOut: alloy::sol_types::private::Address, - fee: alloy::sol_types::private::U256, + fee: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &setFeeCall { diff --git a/crates/bindings-uniswapx/src/mockfillcontract.rs b/crates/bindings-uniswapx/src/mockfillcontract.rs index e49331b..6053da2 100644 --- a/crates/bindings-uniswapx/src/mockfillcontract.rs +++ b/crates/bindings-uniswapx/src/mockfillcontract.rs @@ -225,41 +225,55 @@ interface MockFillContract { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockFillContract { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a060405234801561001057600080fd5b50604051610ce1380380610ce183398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610c4261009f6000396000818160be015281816101680152818161028401526102f10152610c426000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630d7a16c3146100465780633f62192e1461005b578063585da6281461006e575b600080fd5b610059610054366004610440565b610081565b005b6100596100693660046104b5565b61012b565b61005961007c366004610842565b6101d2565b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c7906100f59085908590600401610ace565b600060405180830381600087803b15801561010f57600080fd5b505af1158015610123573d6000803e3d6000fd5b505050505050565b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d3358849061019d908490600401610b91565b600060405180830381600087803b1580156101b757600080fd5b505af11580156101cb573d6000803e3d6000fd5b5050505050565b60005b82518110156103a15760005b8382815181106101f3576101f3610bbb565b6020026020010151604001515181101561039857600084838151811061021b5761021b610bbb565b602002602001015160400151828151811061023857610238610bbb565b6020026020010151905061027a816000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161590565b156102b2576102ad7f000000000000000000000000000000000000000000000000000000000000000082602001516103a6565b61038f565b80516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303816000875af1158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190610bea565b505b506001016101e1565b506001016101d5565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610400576040519150601f19603f3d011682016040523d82523d6000602084013e610405565b606091505b50509050806103a1576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806020838503121561045357600080fd5b823567ffffffffffffffff8082111561046b57600080fd5b818501915085601f83011261047f57600080fd5b81358181111561048e57600080fd5b8660208260051b85010111156104a357600080fd5b60209290920196919550909350505050565b6000602082840312156104c757600080fd5b813567ffffffffffffffff8111156104de57600080fd5b8201604081850312156104f057600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610549576105496104f7565b60405290565b60405160a0810167ffffffffffffffff81118282101715610549576105496104f7565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105b9576105b96104f7565b604052919050565b600067ffffffffffffffff8211156105db576105db6104f7565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461060757600080fd5b50565b600082601f83011261061b57600080fd5b813567ffffffffffffffff811115610635576106356104f7565b61066660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610572565b81815284602083860101111561067b57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156106aa57600080fd5b60405160c0810167ffffffffffffffff82821081831117156106ce576106ce6104f7565b81604052829350843591506106e2826105e5565b9082526020840135906106f4826105e5565b81602084015260408501356040840152606085013560608401526080850135915061071e826105e5565b81608084015260a085013591508082111561073857600080fd5b506107458582860161060a565b60a0830152505092915050565b60006060828403121561076457600080fd5b61076c610526565b90508135610779816105e5565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126107a857600080fd5b813560206107bd6107b8836105c1565b610572565b828152606092830285018201928282019190878511156107dc57600080fd5b8387015b858110156108355781818a0312156107f85760008081fd5b610800610526565b813561080b816105e5565b81528186013586820152604080830135610824816105e5565b9082015284529284019281016107e0565b5090979650505050505050565b6000806040838503121561085557600080fd5b823567ffffffffffffffff8082111561086d57600080fd5b818501915085601f83011261088157600080fd5b813560206108916107b8836105c1565b82815260059290921b840181019181810190898411156108b057600080fd5b8286015b848110156109a1578035868111156108cc5760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109025760008081fd5b61090a61054f565b868301358981111561091c5760008081fd5b61092a8f8983870101610698565b82525061093a8e60408501610752565b8782015260a0830135898111156109515760008081fd5b61095f8f8983870101610797565b60408301525060c0830135898111156109785760008081fd5b6109868f898387010161060a565b606083015250910135608082015283529183019183016108b4565b50965050860135925050808211156109b857600080fd5b506109c58582860161060a565b9150509250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610a0457600080fd5b830160208101925035905067ffffffffffffffff811115610a2457600080fd5b803603821315610a3357600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610a8f82836109cf565b60408552610aa1604086018284610a3a565b915050610ab160208401846109cf565b8583036020870152610ac4838284610a3a565b9695505050505050565b6040808252810182905260006060600584901b830181019083018583805b87811015610b6e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18a3603018112610b4c578283fd5b610b58868b8301610a83565b9550506020938401939290920191600101610aec565b505050508281036020840152610b88816000815260200190565b95945050505050565b604081526000610ba46040830184610a83565b828103602093840152600081529190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610bfc57600080fd5b815180151581146104f057600080fdfea2646970667358221220fbaf082c290a109a4d866d328b6538d7df3260bda97beab3144755ca5e5c094064736f6c63430008180033 + ///0x60a060405234801561000f575f80fd5b50604051610c84380380610c8483398101604081905261002e9161003f565b6001600160a01b031660805261006c565b5f6020828403121561004f575f80fd5b81516001600160a01b0381168114610065575f80fd5b9392505050565b608051610bec6100985f395f818160bb015281816101600152818161027301526102e00152610bec5ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630d7a16c3146100435780633f62192e14610058578063585da6281461006b575b5f80fd5b610056610051366004610428565b61007e565b005b610056610066366004610497565b610123565b61005661007936600461080e565b6101c5565b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c7906100f29085908590600401610a83565b5f604051808303815f87803b158015610109575f80fd5b505af115801561011b573d5f803e3d5ffd5b505050505050565b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d33588490610195908490600401610b42565b5f604051808303815f87803b1580156101ac575f80fd5b505af11580156101be573d5f803e3d5ffd5b5050505050565b5f5b825181101561038d575f5b8382815181106101e4576101e4610b6a565b60200260200101516040015151811015610384575f84838151811061020b5761020b610b6a565b602002602001015160400151828151811061022857610228610b6a565b60200260200101519050610269815f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161590565b156102a15761029c7f00000000000000000000000000000000000000000000000000000000000000008260200151610392565b61037b565b80516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303815f875af1158015610355573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103799190610b97565b505b506001016101d2565b506001016101c7565b505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f81146103e8576040519150601f19603f3d011682016040523d82523d5f602084013e6103ed565b606091505b505090508061038d576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8060208385031215610439575f80fd5b823567ffffffffffffffff80821115610450575f80fd5b818501915085601f830112610463575f80fd5b813581811115610471575f80fd5b8660208260051b8501011115610485575f80fd5b60209290920196919550909350505050565b5f602082840312156104a7575f80fd5b813567ffffffffffffffff8111156104bd575f80fd5b8201604081850312156104ce575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610525576105256104d5565b60405290565b60405160a0810167ffffffffffffffff81118282101715610525576105256104d5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610595576105956104d5565b604052919050565b5f67ffffffffffffffff8211156105b6576105b66104d5565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff811681146105e1575f80fd5b50565b5f82601f8301126105f3575f80fd5b813567ffffffffffffffff81111561060d5761060d6104d5565b61063e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161054e565b818152846020838601011115610652575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c0828403121561067e575f80fd5b60405160c0810167ffffffffffffffff82821081831117156106a2576106a26104d5565b81604052829350843591506106b6826105c0565b9082526020840135906106c8826105c0565b8160208401526040850135604084015260608501356060840152608085013591506106f2826105c0565b81608084015260a085013591508082111561070b575f80fd5b50610718858286016105e4565b60a0830152505092915050565b5f60608284031215610735575f80fd5b61073d610502565b9050813561074a816105c0565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610777575f80fd5b8135602061078c6107878361059d565b61054e565b828152606092830285018201928282019190878511156107aa575f80fd5b8387015b858110156108015781818a0312156107c4575f80fd5b6107cc610502565b81356107d7816105c0565b815281860135868201526040808301356107f0816105c0565b9082015284529284019281016107ae565b5090979650505050505050565b5f806040838503121561081f575f80fd5b823567ffffffffffffffff80821115610836575f80fd5b818501915085601f830112610849575f80fd5b813560206108596107878361059d565b82815260059290921b84018101918181019089841115610877575f80fd5b8286015b8481101561095e57803586811115610891575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156108c5575f80fd5b6108cd61052b565b86830135898111156108dd575f80fd5b6108eb8f898387010161066e565b8252506108fb8e60408501610725565b8782015260a083013589811115610910575f80fd5b61091e8f8983870101610768565b60408301525060c083013589811115610935575f80fd5b6109438f89838701016105e4565b6060830152509101356080820152835291830191830161087b565b5096505086013592505080821115610974575f80fd5b50610981858286016105e4565b9150509250929050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126109be575f80fd5b830160208101925035905067ffffffffffffffff8111156109dd575f80fd5b8036038213156109eb575f80fd5b9250929050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f610a44828361098b565b60408552610a566040860182846109f2565b915050610a66602084018461098b565b8583036020870152610a798382846109f2565b9695505050505050565b604080825281018290525f6060600584901b8301810190830185835b86811015610b21577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1893603018112610aff575f80fd5b610b0b858a8301610a39565b9450506020928301929190910190600101610a9f565b5050508281036020840152610b39815f815260200190565b95945050505050565b604081525f610b546040830184610a39565b8281036020938401525f81529190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ba7575f80fd5b815180151581146104ce575f80fdfea26469706673582212207ce33119852f2db65720495a3d5f8329619dca426729078d90e18e18fcca891b64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x0C\xE18\x03\x80a\x0C\xE1\x839\x81\x01`@\x81\x90Ra\0/\x91a\0@V[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0pV[`\0` \x82\x84\x03\x12\x15a\0RW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0iW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x0CBa\0\x9F`\09`\0\x81\x81`\xBE\x01R\x81\x81a\x01h\x01R\x81\x81a\x02\x84\x01Ra\x02\xF1\x01Ra\x0CB`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\rz\x16\xC3\x14a\0FW\x80c?b\x19.\x14a\0[W\x80cX]\xA6(\x14a\0nW[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04@V[a\0\x81V[\0[a\0Ya\0i6`\x04a\x04\xB5V[a\x01+V[a\0Ya\0|6`\x04a\x08BV[a\x01\xD2V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\0\xF5\x90\x85\x90\x85\x90`\x04\x01a\n\xCEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\x0FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01#W=`\0\x80>=`\0\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\x9D\x90\x84\x90`\x04\x01a\x0B\x91V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xB7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xCBW=`\0\x80>=`\0\xFD[PPPPPV[`\0[\x82Q\x81\x10\x15a\x03\xA1W`\0[\x83\x82\x81Q\x81\x10a\x01\xF3Wa\x01\xF3a\x0B\xBBV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\x98W`\0\x84\x83\x81Q\x81\x10a\x02\x1BWa\x02\x1Ba\x0B\xBBV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x028Wa\x028a\x0B\xBBV[` \x02` \x01\x01Q\x90Pa\x02z\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x02\xB2Wa\x02\xAD\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82` \x01Qa\x03\xA6V[a\x03\x8FV[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03iW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x8D\x91\x90a\x0B\xEAV[P[P`\x01\x01a\x01\xE1V[P`\x01\x01a\x01\xD5V[PPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x04\0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\x05V[``\x91P[PP\x90P\x80a\x03\xA1W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x04SW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04kW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\x7FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\x8EW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\xA3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x04\xC7W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xDEW`\0\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x04\xF0W`\0\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05IWa\x05Ia\x04\xF7V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05IWa\x05Ia\x04\xF7V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xB9Wa\x05\xB9a\x04\xF7V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xDBWa\x05\xDBa\x04\xF7V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x07W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06\x1BW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x065Wa\x065a\x04\xF7V[a\x06f` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05rV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06{W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\xAAW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xCEWa\x06\xCEa\x04\xF7V[\x81`@R\x82\x93P\x845\x91Pa\x06\xE2\x82a\x05\xE5V[\x90\x82R` \x84\x015\x90a\x06\xF4\x82a\x05\xE5V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x1E\x82a\x05\xE5V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x078W`\0\x80\xFD[Pa\x07E\x85\x82\x86\x01a\x06\nV[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07dW`\0\x80\xFD[a\x07la\x05&V[\x90P\x815a\x07y\x81a\x05\xE5V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\xA8W`\0\x80\xFD[\x815` a\x07\xBDa\x07\xB8\x83a\x05\xC1V[a\x05rV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xDCW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x085W\x81\x81\x8A\x03\x12\x15a\x07\xF8W`\0\x80\x81\xFD[a\x08\0a\x05&V[\x815a\x08\x0B\x81a\x05\xE5V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08$\x81a\x05\xE5V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xE0V[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08UW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08mW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\x81W`\0\x80\xFD[\x815` a\x08\x91a\x07\xB8\x83a\x05\xC1V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08\xB0W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\xA1W\x805\x86\x81\x11\x15a\x08\xCCW`\0\x80\x81\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t\x02W`\0\x80\x81\xFD[a\t\na\x05OV[\x86\x83\x015\x89\x81\x11\x15a\t\x1CW`\0\x80\x81\xFD[a\t*\x8F\x89\x83\x87\x01\x01a\x06\x98V[\x82RPa\t:\x8E`@\x85\x01a\x07RV[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\tQW`\0\x80\x81\xFD[a\t_\x8F\x89\x83\x87\x01\x01a\x07\x97V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\txW`\0\x80\x81\xFD[a\t\x86\x8F\x89\x83\x87\x01\x01a\x06\nV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08\xB4V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t\xB8W`\0\x80\xFD[Pa\t\xC5\x85\x82\x86\x01a\x06\nV[\x91PP\x92P\x92\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\n\x04W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n$W`\0\x80\xFD[\x806\x03\x82\x13\x15a\n3W`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0a\n\x8F\x82\x83a\t\xCFV[`@\x85Ra\n\xA1`@\x86\x01\x82\x84a\n:V[\x91PPa\n\xB1` \x84\x01\x84a\t\xCFV[\x85\x83\x03` \x87\x01Ra\n\xC4\x83\x82\x84a\n:V[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R`\0```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83\x80[\x87\x81\x10\x15a\x0BnW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8A6\x03\x01\x81\x12a\x0BLW\x82\x83\xFD[a\x0BX\x86\x8B\x83\x01a\n\x83V[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\n\xECV[PPPP\x82\x81\x03` \x84\x01Ra\x0B\x88\x81`\0\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R`\0a\x0B\xA4`@\x83\x01\x84a\n\x83V[\x82\x81\x03` \x93\x84\x01R`\0\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x0B\xFCW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x04\xF0W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xFB\xAF\x08,)\n\x10\x9AM\x86m2\x8Be8\xD7\xDF2`\xBD\xA9{\xEA\xB3\x14GU\xCA^\\\t@dsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\x0C\x848\x03\x80a\x0C\x84\x839\x81\x01`@\x81\x90Ra\0.\x91a\0?V[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0lV[_` \x82\x84\x03\x12\x15a\0OW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0eW_\x80\xFD[\x93\x92PPPV[`\x80Qa\x0B\xECa\0\x98_9_\x81\x81`\xBB\x01R\x81\x81a\x01`\x01R\x81\x81a\x02s\x01Ra\x02\xE0\x01Ra\x0B\xEC_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\rz\x16\xC3\x14a\0CW\x80c?b\x19.\x14a\0XW\x80cX]\xA6(\x14a\0kW[_\x80\xFD[a\0Va\0Q6`\x04a\x04(V[a\0~V[\0[a\0Va\0f6`\x04a\x04\x97V[a\x01#V[a\0Va\0y6`\x04a\x08\x0EV[a\x01\xC5V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\0\xF2\x90\x85\x90\x85\x90`\x04\x01a\n\x83V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\tW_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x1BW=_\x80>=_\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\x95\x90\x84\x90`\x04\x01a\x0BBV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xACW_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xBEW=_\x80>=_\xFD[PPPPPV[_[\x82Q\x81\x10\x15a\x03\x8DW_[\x83\x82\x81Q\x81\x10a\x01\xE4Wa\x01\xE4a\x0BjV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\x84W_\x84\x83\x81Q\x81\x10a\x02\x0BWa\x02\x0Ba\x0BjV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x02(Wa\x02(a\x0BjV[` \x02` \x01\x01Q\x90Pa\x02i\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x02\xA1Wa\x02\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82` \x01Qa\x03\x92V[a\x03{V[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x03UW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03y\x91\x90a\x0B\x97V[P[P`\x01\x01a\x01\xD2V[P`\x01\x01a\x01\xC7V[PPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x03\xE8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x03\xEDV[``\x91P[PP\x90P\x80a\x03\x8DW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80` \x83\x85\x03\x12\x15a\x049W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04PW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04cW_\x80\xFD[\x815\x81\x81\x11\x15a\x04qW_\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\x85W_\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[_` \x82\x84\x03\x12\x15a\x04\xA7W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xBDW_\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x04\xCEW_\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05%Wa\x05%a\x04\xD5V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05%Wa\x05%a\x04\xD5V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x95Wa\x05\x95a\x04\xD5V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xB6Wa\x05\xB6a\x04\xD5V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\xE1W_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x05\xF3W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\rWa\x06\ra\x04\xD5V[a\x06>` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05NV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06RW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06~W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xA2Wa\x06\xA2a\x04\xD5V[\x81`@R\x82\x93P\x845\x91Pa\x06\xB6\x82a\x05\xC0V[\x90\x82R` \x84\x015\x90a\x06\xC8\x82a\x05\xC0V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06\xF2\x82a\x05\xC0V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x0BW_\x80\xFD[Pa\x07\x18\x85\x82\x86\x01a\x05\xE4V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x075W_\x80\xFD[a\x07=a\x05\x02V[\x90P\x815a\x07J\x81a\x05\xC0V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07wW_\x80\xFD[\x815` a\x07\x8Ca\x07\x87\x83a\x05\x9DV[a\x05NV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xAAW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\x01W\x81\x81\x8A\x03\x12\x15a\x07\xC4W_\x80\xFD[a\x07\xCCa\x05\x02V[\x815a\x07\xD7\x81a\x05\xC0V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07\xF0\x81a\x05\xC0V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xAEV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\x1FW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x086W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08IW_\x80\xFD[\x815` a\x08Ya\x07\x87\x83a\x05\x9DV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08wW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t^W\x805\x86\x81\x11\x15a\x08\x91W_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08\xC5W_\x80\xFD[a\x08\xCDa\x05+V[\x86\x83\x015\x89\x81\x11\x15a\x08\xDDW_\x80\xFD[a\x08\xEB\x8F\x89\x83\x87\x01\x01a\x06nV[\x82RPa\x08\xFB\x8E`@\x85\x01a\x07%V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\x10W_\x80\xFD[a\t\x1E\x8F\x89\x83\x87\x01\x01a\x07hV[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t5W_\x80\xFD[a\tC\x8F\x89\x83\x87\x01\x01a\x05\xE4V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08{V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\ttW_\x80\xFD[Pa\t\x81\x85\x82\x86\x01a\x05\xE4V[\x91PP\x92P\x92\x90PV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\t\xBEW_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\xDDW_\x80\xFD[\x806\x03\x82\x13\x15a\t\xEBW_\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\nD\x82\x83a\t\x8BV[`@\x85Ra\nV`@\x86\x01\x82\x84a\t\xF2V[\x91PPa\nf` \x84\x01\x84a\t\x8BV[\x85\x83\x03` \x87\x01Ra\ny\x83\x82\x84a\t\xF2V[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R_```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83[\x86\x81\x10\x15a\x0B!W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x896\x03\x01\x81\x12a\n\xFFW_\x80\xFD[a\x0B\x0B\x85\x8A\x83\x01a\n9V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\n\x9FV[PPP\x82\x81\x03` \x84\x01Ra\x0B9\x81_\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R_a\x0BT`@\x83\x01\x84a\n9V[\x82\x81\x03` \x93\x84\x01R_\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x0B\xA7W_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x04\xCEW_\x80\xFD\xFE\xA2dipfsX\"\x12 |\xE31\x19\x85/-\xB6W IZ=_\x83)a\x9D\xCABg)\x07\x8D\x90\xE1\x8E\x18\xFC\xCA\x89\x1BdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630d7a16c3146100465780633f62192e1461005b578063585da6281461006e575b600080fd5b610059610054366004610440565b610081565b005b6100596100693660046104b5565b61012b565b61005961007c366004610842565b6101d2565b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c7906100f59085908590600401610ace565b600060405180830381600087803b15801561010f57600080fd5b505af1158015610123573d6000803e3d6000fd5b505050505050565b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d3358849061019d908490600401610b91565b600060405180830381600087803b1580156101b757600080fd5b505af11580156101cb573d6000803e3d6000fd5b5050505050565b60005b82518110156103a15760005b8382815181106101f3576101f3610bbb565b6020026020010151604001515181101561039857600084838151811061021b5761021b610bbb565b602002602001015160400151828151811061023857610238610bbb565b6020026020010151905061027a816000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161590565b156102b2576102ad7f000000000000000000000000000000000000000000000000000000000000000082602001516103a6565b61038f565b80516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303816000875af1158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d9190610bea565b505b506001016101e1565b506001016101d5565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610400576040519150601f19603f3d011682016040523d82523d6000602084013e610405565b606091505b50509050806103a1576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806020838503121561045357600080fd5b823567ffffffffffffffff8082111561046b57600080fd5b818501915085601f83011261047f57600080fd5b81358181111561048e57600080fd5b8660208260051b85010111156104a357600080fd5b60209290920196919550909350505050565b6000602082840312156104c757600080fd5b813567ffffffffffffffff8111156104de57600080fd5b8201604081850312156104f057600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610549576105496104f7565b60405290565b60405160a0810167ffffffffffffffff81118282101715610549576105496104f7565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105b9576105b96104f7565b604052919050565b600067ffffffffffffffff8211156105db576105db6104f7565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461060757600080fd5b50565b600082601f83011261061b57600080fd5b813567ffffffffffffffff811115610635576106356104f7565b61066660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610572565b81815284602083860101111561067b57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156106aa57600080fd5b60405160c0810167ffffffffffffffff82821081831117156106ce576106ce6104f7565b81604052829350843591506106e2826105e5565b9082526020840135906106f4826105e5565b81602084015260408501356040840152606085013560608401526080850135915061071e826105e5565b81608084015260a085013591508082111561073857600080fd5b506107458582860161060a565b60a0830152505092915050565b60006060828403121561076457600080fd5b61076c610526565b90508135610779816105e5565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126107a857600080fd5b813560206107bd6107b8836105c1565b610572565b828152606092830285018201928282019190878511156107dc57600080fd5b8387015b858110156108355781818a0312156107f85760008081fd5b610800610526565b813561080b816105e5565b81528186013586820152604080830135610824816105e5565b9082015284529284019281016107e0565b5090979650505050505050565b6000806040838503121561085557600080fd5b823567ffffffffffffffff8082111561086d57600080fd5b818501915085601f83011261088157600080fd5b813560206108916107b8836105c1565b82815260059290921b840181019181810190898411156108b057600080fd5b8286015b848110156109a1578035868111156108cc5760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109025760008081fd5b61090a61054f565b868301358981111561091c5760008081fd5b61092a8f8983870101610698565b82525061093a8e60408501610752565b8782015260a0830135898111156109515760008081fd5b61095f8f8983870101610797565b60408301525060c0830135898111156109785760008081fd5b6109868f898387010161060a565b606083015250910135608082015283529183019183016108b4565b50965050860135925050808211156109b857600080fd5b506109c58582860161060a565b9150509250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610a0457600080fd5b830160208101925035905067ffffffffffffffff811115610a2457600080fd5b803603821315610a3357600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610a8f82836109cf565b60408552610aa1604086018284610a3a565b915050610ab160208401846109cf565b8583036020870152610ac4838284610a3a565b9695505050505050565b6040808252810182905260006060600584901b830181019083018583805b87811015610b6e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18a3603018112610b4c578283fd5b610b58868b8301610a83565b9550506020938401939290920191600101610aec565b505050508281036020840152610b88816000815260200190565b95945050505050565b604081526000610ba46040830184610a83565b828103602093840152600081529190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610bfc57600080fd5b815180151581146104f057600080fdfea2646970667358221220fbaf082c290a109a4d866d328b6538d7df3260bda97beab3144755ca5e5c094064736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c80630d7a16c3146100435780633f62192e14610058578063585da6281461006b575b5f80fd5b610056610051366004610428565b61007e565b005b610056610066366004610497565b610123565b61005661007936600461080e565b6101c5565b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c7906100f29085908590600401610a83565b5f604051808303815f87803b158015610109575f80fd5b505af115801561011b573d5f803e3d5ffd5b505050505050565b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d33588490610195908490600401610b42565b5f604051808303815f87803b1580156101ac575f80fd5b505af11580156101be573d5f803e3d5ffd5b5050505050565b5f5b825181101561038d575f5b8382815181106101e4576101e4610b6a565b60200260200101516040015151811015610384575f84838151811061020b5761020b610b6a565b602002602001015160400151828151811061022857610228610b6a565b60200260200101519050610269815f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161590565b156102a15761029c7f00000000000000000000000000000000000000000000000000000000000000008260200151610392565b61037b565b80516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303815f875af1158015610355573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103799190610b97565b505b506001016101d2565b506001016101c7565b505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f81146103e8576040519150601f19603f3d011682016040523d82523d5f602084013e6103ed565b606091505b505090508061038d576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8060208385031215610439575f80fd5b823567ffffffffffffffff80821115610450575f80fd5b818501915085601f830112610463575f80fd5b813581811115610471575f80fd5b8660208260051b8501011115610485575f80fd5b60209290920196919550909350505050565b5f602082840312156104a7575f80fd5b813567ffffffffffffffff8111156104bd575f80fd5b8201604081850312156104ce575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610525576105256104d5565b60405290565b60405160a0810167ffffffffffffffff81118282101715610525576105256104d5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610595576105956104d5565b604052919050565b5f67ffffffffffffffff8211156105b6576105b66104d5565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff811681146105e1575f80fd5b50565b5f82601f8301126105f3575f80fd5b813567ffffffffffffffff81111561060d5761060d6104d5565b61063e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161054e565b818152846020838601011115610652575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c0828403121561067e575f80fd5b60405160c0810167ffffffffffffffff82821081831117156106a2576106a26104d5565b81604052829350843591506106b6826105c0565b9082526020840135906106c8826105c0565b8160208401526040850135604084015260608501356060840152608085013591506106f2826105c0565b81608084015260a085013591508082111561070b575f80fd5b50610718858286016105e4565b60a0830152505092915050565b5f60608284031215610735575f80fd5b61073d610502565b9050813561074a816105c0565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610777575f80fd5b8135602061078c6107878361059d565b61054e565b828152606092830285018201928282019190878511156107aa575f80fd5b8387015b858110156108015781818a0312156107c4575f80fd5b6107cc610502565b81356107d7816105c0565b815281860135868201526040808301356107f0816105c0565b9082015284529284019281016107ae565b5090979650505050505050565b5f806040838503121561081f575f80fd5b823567ffffffffffffffff80821115610836575f80fd5b818501915085601f830112610849575f80fd5b813560206108596107878361059d565b82815260059290921b84018101918181019089841115610877575f80fd5b8286015b8481101561095e57803586811115610891575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156108c5575f80fd5b6108cd61052b565b86830135898111156108dd575f80fd5b6108eb8f898387010161066e565b8252506108fb8e60408501610725565b8782015260a083013589811115610910575f80fd5b61091e8f8983870101610768565b60408301525060c083013589811115610935575f80fd5b6109438f89838701016105e4565b6060830152509101356080820152835291830191830161087b565b5096505086013592505080821115610974575f80fd5b50610981858286016105e4565b9150509250929050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126109be575f80fd5b830160208101925035905067ffffffffffffffff8111156109dd575f80fd5b8036038213156109eb575f80fd5b9250929050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f610a44828361098b565b60408552610a566040860182846109f2565b915050610a66602084018461098b565b8583036020870152610a798382846109f2565b9695505050505050565b604080825281018290525f6060600584901b8301810190830185835b86811015610b21577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1893603018112610aff575f80fd5b610b0b858a8301610a39565b9450506020928301929190910190600101610a9f565b5050508281036020840152610b39815f815260200190565b95945050505050565b604081525f610b546040830184610a39565b8281036020938401525f81529190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ba7575f80fd5b815180151581146104ce575f80fdfea26469706673582212207ce33119852f2db65720495a3d5f8329619dca426729078d90e18e18fcca891b64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80c\rz\x16\xC3\x14a\0FW\x80c?b\x19.\x14a\0[W\x80cX]\xA6(\x14a\0nW[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04@V[a\0\x81V[\0[a\0Ya\0i6`\x04a\x04\xB5V[a\x01+V[a\0Ya\0|6`\x04a\x08BV[a\x01\xD2V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\0\xF5\x90\x85\x90\x85\x90`\x04\x01a\n\xCEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\x0FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01#W=`\0\x80>=`\0\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\x9D\x90\x84\x90`\x04\x01a\x0B\x91V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xB7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xCBW=`\0\x80>=`\0\xFD[PPPPPV[`\0[\x82Q\x81\x10\x15a\x03\xA1W`\0[\x83\x82\x81Q\x81\x10a\x01\xF3Wa\x01\xF3a\x0B\xBBV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\x98W`\0\x84\x83\x81Q\x81\x10a\x02\x1BWa\x02\x1Ba\x0B\xBBV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x028Wa\x028a\x0B\xBBV[` \x02` \x01\x01Q\x90Pa\x02z\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x02\xB2Wa\x02\xAD\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82` \x01Qa\x03\xA6V[a\x03\x8FV[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03iW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x8D\x91\x90a\x0B\xEAV[P[P`\x01\x01a\x01\xE1V[P`\x01\x01a\x01\xD5V[PPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x04\0W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\x05V[``\x91P[PP\x90P\x80a\x03\xA1W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x04SW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04kW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\x7FW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\x8EW`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\xA3W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x04\xC7W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xDEW`\0\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x04\xF0W`\0\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05IWa\x05Ia\x04\xF7V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05IWa\x05Ia\x04\xF7V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xB9Wa\x05\xB9a\x04\xF7V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xDBWa\x05\xDBa\x04\xF7V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x07W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06\x1BW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x065Wa\x065a\x04\xF7V[a\x06f` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05rV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06{W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\xAAW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xCEWa\x06\xCEa\x04\xF7V[\x81`@R\x82\x93P\x845\x91Pa\x06\xE2\x82a\x05\xE5V[\x90\x82R` \x84\x015\x90a\x06\xF4\x82a\x05\xE5V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x1E\x82a\x05\xE5V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x078W`\0\x80\xFD[Pa\x07E\x85\x82\x86\x01a\x06\nV[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07dW`\0\x80\xFD[a\x07la\x05&V[\x90P\x815a\x07y\x81a\x05\xE5V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\xA8W`\0\x80\xFD[\x815` a\x07\xBDa\x07\xB8\x83a\x05\xC1V[a\x05rV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xDCW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x085W\x81\x81\x8A\x03\x12\x15a\x07\xF8W`\0\x80\x81\xFD[a\x08\0a\x05&V[\x815a\x08\x0B\x81a\x05\xE5V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08$\x81a\x05\xE5V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xE0V[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08UW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08mW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\x81W`\0\x80\xFD[\x815` a\x08\x91a\x07\xB8\x83a\x05\xC1V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08\xB0W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\xA1W\x805\x86\x81\x11\x15a\x08\xCCW`\0\x80\x81\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t\x02W`\0\x80\x81\xFD[a\t\na\x05OV[\x86\x83\x015\x89\x81\x11\x15a\t\x1CW`\0\x80\x81\xFD[a\t*\x8F\x89\x83\x87\x01\x01a\x06\x98V[\x82RPa\t:\x8E`@\x85\x01a\x07RV[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\tQW`\0\x80\x81\xFD[a\t_\x8F\x89\x83\x87\x01\x01a\x07\x97V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\txW`\0\x80\x81\xFD[a\t\x86\x8F\x89\x83\x87\x01\x01a\x06\nV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08\xB4V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t\xB8W`\0\x80\xFD[Pa\t\xC5\x85\x82\x86\x01a\x06\nV[\x91PP\x92P\x92\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\n\x04W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n$W`\0\x80\xFD[\x806\x03\x82\x13\x15a\n3W`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0a\n\x8F\x82\x83a\t\xCFV[`@\x85Ra\n\xA1`@\x86\x01\x82\x84a\n:V[\x91PPa\n\xB1` \x84\x01\x84a\t\xCFV[\x85\x83\x03` \x87\x01Ra\n\xC4\x83\x82\x84a\n:V[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R`\0```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83\x80[\x87\x81\x10\x15a\x0BnW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8A6\x03\x01\x81\x12a\x0BLW\x82\x83\xFD[a\x0BX\x86\x8B\x83\x01a\n\x83V[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\n\xECV[PPPP\x82\x81\x03` \x84\x01Ra\x0B\x88\x81`\0\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R`\0a\x0B\xA4`@\x83\x01\x84a\n\x83V[\x82\x81\x03` \x93\x84\x01R`\0\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x0B\xFCW`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x04\xF0W`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xFB\xAF\x08,)\n\x10\x9AM\x86m2\x8Be8\xD7\xDF2`\xBD\xA9{\xEA\xB3\x14GU\xCA^\\\t@dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80c\rz\x16\xC3\x14a\0CW\x80c?b\x19.\x14a\0XW\x80cX]\xA6(\x14a\0kW[_\x80\xFD[a\0Va\0Q6`\x04a\x04(V[a\0~V[\0[a\0Va\0f6`\x04a\x04\x97V[a\x01#V[a\0Va\0y6`\x04a\x08\x0EV[a\x01\xC5V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\0\xF2\x90\x85\x90\x85\x90`\x04\x01a\n\x83V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\tW_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x1BW=_\x80>=_\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\x95\x90\x84\x90`\x04\x01a\x0BBV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xACW_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xBEW=_\x80>=_\xFD[PPPPPV[_[\x82Q\x81\x10\x15a\x03\x8DW_[\x83\x82\x81Q\x81\x10a\x01\xE4Wa\x01\xE4a\x0BjV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\x84W_\x84\x83\x81Q\x81\x10a\x02\x0BWa\x02\x0Ba\x0BjV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x02(Wa\x02(a\x0BjV[` \x02` \x01\x01Q\x90Pa\x02i\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x02\xA1Wa\x02\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82` \x01Qa\x03\x92V[a\x03{V[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x03UW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03y\x91\x90a\x0B\x97V[P[P`\x01\x01a\x01\xD2V[P`\x01\x01a\x01\xC7V[PPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x03\xE8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x03\xEDV[``\x91P[PP\x90P\x80a\x03\x8DW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80` \x83\x85\x03\x12\x15a\x049W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04PW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04cW_\x80\xFD[\x815\x81\x81\x11\x15a\x04qW_\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\x85W_\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[_` \x82\x84\x03\x12\x15a\x04\xA7W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xBDW_\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x04\xCEW_\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05%Wa\x05%a\x04\xD5V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05%Wa\x05%a\x04\xD5V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x95Wa\x05\x95a\x04\xD5V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xB6Wa\x05\xB6a\x04\xD5V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\xE1W_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x05\xF3W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06\rWa\x06\ra\x04\xD5V[a\x06>` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05NV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06RW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06~W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xA2Wa\x06\xA2a\x04\xD5V[\x81`@R\x82\x93P\x845\x91Pa\x06\xB6\x82a\x05\xC0V[\x90\x82R` \x84\x015\x90a\x06\xC8\x82a\x05\xC0V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06\xF2\x82a\x05\xC0V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07\x0BW_\x80\xFD[Pa\x07\x18\x85\x82\x86\x01a\x05\xE4V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x075W_\x80\xFD[a\x07=a\x05\x02V[\x90P\x815a\x07J\x81a\x05\xC0V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07wW_\x80\xFD[\x815` a\x07\x8Ca\x07\x87\x83a\x05\x9DV[a\x05NV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xAAW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\x01W\x81\x81\x8A\x03\x12\x15a\x07\xC4W_\x80\xFD[a\x07\xCCa\x05\x02V[\x815a\x07\xD7\x81a\x05\xC0V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07\xF0\x81a\x05\xC0V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xAEV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\x1FW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x086W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08IW_\x80\xFD[\x815` a\x08Ya\x07\x87\x83a\x05\x9DV[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08wW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t^W\x805\x86\x81\x11\x15a\x08\x91W_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08\xC5W_\x80\xFD[a\x08\xCDa\x05+V[\x86\x83\x015\x89\x81\x11\x15a\x08\xDDW_\x80\xFD[a\x08\xEB\x8F\x89\x83\x87\x01\x01a\x06nV[\x82RPa\x08\xFB\x8E`@\x85\x01a\x07%V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\x10W_\x80\xFD[a\t\x1E\x8F\x89\x83\x87\x01\x01a\x07hV[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t5W_\x80\xFD[a\tC\x8F\x89\x83\x87\x01\x01a\x05\xE4V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08{V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\ttW_\x80\xFD[Pa\t\x81\x85\x82\x86\x01a\x05\xE4V[\x91PP\x92P\x92\x90PV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\t\xBEW_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\xDDW_\x80\xFD[\x806\x03\x82\x13\x15a\t\xEBW_\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\nD\x82\x83a\t\x8BV[`@\x85Ra\nV`@\x86\x01\x82\x84a\t\xF2V[\x91PPa\nf` \x84\x01\x84a\t\x8BV[\x85\x83\x03` \x87\x01Ra\ny\x83\x82\x84a\t\xF2V[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R_```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83[\x86\x81\x10\x15a\x0B!W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x896\x03\x01\x81\x12a\n\xFFW_\x80\xFD[a\x0B\x0B\x85\x8A\x83\x01a\n9V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\n\x9FV[PPP\x82\x81\x03` \x84\x01Ra\x0B9\x81_\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R_a\x0BT`@\x83\x01\x84a\n9V[\x82\x81\x03` \x93\x84\x01R_\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x0B\xA7W_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x04\xCEW_\x80\xFD\xFE\xA2dipfsX\"\x12 |\xE31\x19\x85/-\xB6W IZ=_\x83)a\x9D\xCABg)\x07\x8D\x90\xE1\x8E\x18\xFC\xCA\x89\x1BdsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -271,8 +285,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -489,17 +503,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -515,8 +540,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -785,14 +810,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -804,7 +837,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1018,18 +1051,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1306,13 +1349,20 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; /**```solidity struct SignedOrder { bytes order; bytes sig; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignedOrder { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1518,10 +1568,15 @@ struct SignedOrder { bytes order; bytes sig; } ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1577,9 +1632,10 @@ error NativeTransferFailed(); ```solidity constructor(address _reactor); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _reactor: alloy::sol_types::private::Address, } const _: () = { @@ -1641,16 +1697,22 @@ constructor(address _reactor); ```solidity function execute(SignedOrder memory order) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1756,18 +1818,24 @@ function execute(SignedOrder memory order) external; ```solidity function executeBatch(SignedOrder[] memory orders) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1881,19 +1949,26 @@ function executeBatch(SignedOrder[] memory orders) external; ```solidity function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackCall { + #[allow(missing_docs)] pub resolvedOrders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub _1: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2018,8 +2093,11 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex }; ///Container for all the [`MockFillContract`](self) function calls. pub enum MockFillContractCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] reactorCallback(reactorCallbackCall), } #[automatically_derived] @@ -2062,7 +2140,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2120,7 +2198,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2163,6 +2241,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex } ///Container for all the [`MockFillContract`](self) custom errors. pub enum MockFillContractErrors { + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), } #[automatically_derived] @@ -2197,7 +2276,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2229,7 +2308,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/mockfillcontractdoubleexecution.rs b/crates/bindings-uniswapx/src/mockfillcontractdoubleexecution.rs index 6a57f76..2ed2ef5 100644 --- a/crates/bindings-uniswapx/src/mockfillcontractdoubleexecution.rs +++ b/crates/bindings-uniswapx/src/mockfillcontractdoubleexecution.rs @@ -221,41 +221,55 @@ interface MockFillContractDoubleExecution { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockFillContractDoubleExecution { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60c060405234801561001057600080fd5b50604051610d9f380380610d9f83398101604081905261002f91610062565b6001600160a01b039182166080521660a052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a051610cdf6100c060003960006102e0015260008181606501526102b80152610cdf6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806350df2d401461003b578063585da62814610050575b600080fd5b61004e610049366004610405565b610063565b005b61004e61005e3660046107bd565b610113565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d33588483836040516020016100b19190610a3f565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016100dd929190610ac7565b600060405180830381600087803b1580156100f757600080fd5b505af115801561010b573d6000803e3d6000fd5b505050505050565b60005b82518110156102a05760005b83828151811061013457610134610af5565b6020026020010151604001515181101561029757600084838151811061015c5761015c610af5565b602002602001015160400151828151811061017957610179610af5565b602002602001015190506101bb816000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161590565b156101d3576101ce33826020015161034e565b61028e565b80516040517f095ea7b30000000000000000000000000000000000000000000000000000000081523360048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015273ffffffffffffffffffffffffffffffffffffffff9091169063095ea7b3906044016020604051808303816000875af1158015610268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190610b24565b505b50600101610122565b50600101610116565b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361034a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d3358848280602001905181019061032e9190610b93565b6040518263ffffffff1660e01b81526004016100dd9190610c3a565b5050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146103a8576040519150601f19603f3d011682016040523d82523d6000602084013e6103ad565b606091505b50509050806103e8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000604082840312156103ff57600080fd5b50919050565b6000806040838503121561041857600080fd5b823567ffffffffffffffff8082111561043057600080fd5b61043c868387016103ed565b9350602085013591508082111561045257600080fd5b5061045f858286016103ed565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156104bb576104bb610469565b60405290565b60405160a0810167ffffffffffffffff811182821017156104bb576104bb610469565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561052b5761052b610469565b604052919050565b600067ffffffffffffffff82111561054d5761054d610469565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461057957600080fd5b50565b600067ffffffffffffffff82111561059657610596610469565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126105d357600080fd5b81356105e66105e18261057c565b6104e4565b8181528460208386010111156105fb57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561062a57600080fd5b60405160c0810167ffffffffffffffff828210818311171561064e5761064e610469565b816040528293508435915061066282610557565b90825260208401359061067482610557565b81602084015260408501356040840152606085013560608401526080850135915061069e82610557565b81608084015260a08501359150808211156106b857600080fd5b506106c5858286016105c2565b60a0830152505092915050565b6000606082840312156106e457600080fd5b6106ec610498565b905081356106f981610557565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261072857600080fd5b813560206107386105e183610533565b8281526060928302850182019282820191908785111561075757600080fd5b8387015b858110156107b05781818a0312156107735760008081fd5b61077b610498565b813561078681610557565b8152818601358682015260408083013561079f81610557565b90820152845292840192810161075b565b5090979650505050505050565b600080604083850312156107d057600080fd5b823567ffffffffffffffff808211156107e857600080fd5b818501915085601f8301126107fc57600080fd5b8135602061080c6105e183610533565b82815260059290921b8401810191818101908984111561082b57600080fd5b8286015b8481101561091c578035868111156108475760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181131561087d5760008081fd5b6108856104c1565b86830135898111156108975760008081fd5b6108a58f8983870101610618565b8252506108b58e604085016106d2565b8782015260a0830135898111156108cc5760008081fd5b6108da8f8983870101610717565b60408301525060c0830135898111156108f35760008081fd5b6109018f89838701016105c2565b6060830152509101356080820152835291830191830161082f565b509650508601359250508082111561093357600080fd5b5061045f858286016105c2565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261097557600080fd5b830160208101925035905067ffffffffffffffff81111561099557600080fd5b8036038213156109a457600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610a008283610940565b60408552610a126040860182846109ab565b915050610a226020840184610940565b8583036020870152610a358382846109ab565b9695505050505050565b602081526000610a5260208301846109f4565b9392505050565b60005b83811015610a74578181015183820152602001610a5c565b50506000910152565b60008151808452610a95816020860160208601610a59565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081526000610ada60408301856109f4565b8281036020840152610aec8185610a7d565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610b3657600080fd5b81518015158114610a5257600080fd5b600082601f830112610b5757600080fd5b8151610b656105e18261057c565b818152846020838601011115610b7a57600080fd5b610b8b826020830160208701610a59565b949350505050565b600060208284031215610ba557600080fd5b815167ffffffffffffffff80821115610bbd57600080fd5b9083019060408286031215610bd157600080fd5b604051604081018181108382111715610bec57610bec610469565b604052825182811115610bfe57600080fd5b610c0a87828601610b46565b825250602083015182811115610c1f57600080fd5b610c2b87828601610b46565b60208301525095945050505050565b6040815260008251604080840152610c556080840182610a7d565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610c908282610a7d565b848103602095860152600081529390930194935050505056fea2646970667358221220a57453011885b98bfab9586cdb142692e7d9548a539b09e888da05539aab49a564736f6c63430008180033 + ///0x60c060405234801561000f575f80fd5b50604051610d3f380380610d3f83398101604081905261002e91610060565b6001600160a01b039182166080521660a052610091565b80516001600160a01b038116811461005b575f80fd5b919050565b5f8060408385031215610071575f80fd5b61007a83610045565b915061008860208401610045565b90509250929050565b60805160a051610c876100b85f395f6102d101525f8181606201526102a90152610c875ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c806350df2d4014610038578063585da6281461004d575b5f80fd5b61004b6100463660046103f0565b610060565b005b61004b61005b366004610791565b61010b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d33588483836040516020016100ae91906109fc565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016100da929190610a80565b5f604051808303815f87803b1580156100f1575f80fd5b505af1158015610103573d5f803e3d5ffd5b505050505050565b5f5b8251811015610291575f5b83828151811061012a5761012a610aad565b60200260200101516040015151811015610288575f84838151811061015157610151610aad565b602002602001015160400151828151811061016e5761016e610aad565b602002602001015190506101af815f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161590565b156101c7576101c233826020015161033f565b61027f565b80516040517f095ea7b30000000000000000000000000000000000000000000000000000000081523360048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015273ffffffffffffffffffffffffffffffffffffffff9091169063095ea7b3906044016020604051808303815f875af1158015610259573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027d9190610ada565b505b50600101610118565b5060010161010d565b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361033b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d3358848280602001905181019061031f9190610b43565b6040518263ffffffff1660e01b81526004016100da9190610be4565b5050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610395576040519150601f19603f3d011682016040523d82523d5f602084013e61039a565b606091505b50509050806103d5576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f604082840312156103ea575f80fd5b50919050565b5f8060408385031215610401575f80fd5b823567ffffffffffffffff80821115610418575f80fd5b610424868387016103da565b93506020850135915080821115610439575f80fd5b50610446858286016103da565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156104a0576104a0610450565b60405290565b60405160a0810167ffffffffffffffff811182821017156104a0576104a0610450565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561051057610510610450565b604052919050565b5f67ffffffffffffffff82111561053157610531610450565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461055c575f80fd5b50565b5f67ffffffffffffffff82111561057857610578610450565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126105b3575f80fd5b81356105c66105c18261055f565b6104c9565b8181528460208386010111156105da575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215610606575f80fd5b60405160c0810167ffffffffffffffff828210818311171561062a5761062a610450565b816040528293508435915061063e8261053b565b9082526020840135906106508261053b565b81602084015260408501356040840152606085013560608401526080850135915061067a8261053b565b81608084015260a0850135915080821115610693575f80fd5b506106a0858286016105a4565b60a0830152505092915050565b5f606082840312156106bd575f80fd5b6106c561047d565b905081356106d28161053b565b80825250602082013560208201526040820135604082015292915050565b5f82601f8301126106ff575f80fd5b8135602061070f6105c183610518565b8281526060928302850182019282820191908785111561072d575f80fd5b8387015b858110156107845781818a031215610747575f80fd5b61074f61047d565b813561075a8161053b565b815281860135868201526040808301356107738161053b565b908201528452928401928101610731565b5090979650505050505050565b5f80604083850312156107a2575f80fd5b823567ffffffffffffffff808211156107b9575f80fd5b818501915085601f8301126107cc575f80fd5b813560206107dc6105c183610518565b82815260059290921b840181019181810190898411156107fa575f80fd5b8286015b848110156108e157803586811115610814575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001811315610848575f80fd5b6108506104a6565b8683013589811115610860575f80fd5b61086e8f89838701016105f6565b82525061087e8e604085016106ad565b8782015260a083013589811115610893575f80fd5b6108a18f89838701016106f0565b60408301525060c0830135898111156108b8575f80fd5b6108c68f89838701016105a4565b606083015250910135608082015283529183019183016107fe565b50965050860135925050808211156108f7575f80fd5b50610446858286016105a4565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610937575f80fd5b830160208101925035905067ffffffffffffffff811115610956575f80fd5b803603821315610964575f80fd5b9250929050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f6109bd8283610904565b604085526109cf60408601828461096b565b9150506109df6020840184610904565b85830360208701526109f283828461096b565b9695505050505050565b602081525f610a0e60208301846109b2565b9392505050565b5f5b83811015610a2f578181015183820152602001610a17565b50505f910152565b5f8151808452610a4e816020860160208601610a15565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081525f610a9260408301856109b2565b8281036020840152610aa48185610a37565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610aea575f80fd5b81518015158114610a0e575f80fd5b5f82601f830112610b08575f80fd5b8151610b166105c18261055f565b818152846020838601011115610b2a575f80fd5b610b3b826020830160208701610a15565b949350505050565b5f60208284031215610b53575f80fd5b815167ffffffffffffffff80821115610b6a575f80fd5b9083019060408286031215610b7d575f80fd5b604051604081018181108382111715610b9857610b98610450565b604052825182811115610ba9575f80fd5b610bb587828601610af9565b825250602083015182811115610bc9575f80fd5b610bd587828601610af9565b60208301525095945050505050565b604081525f8251604080840152610bfe6080840182610a37565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610c398282610a37565b8481036020958601525f81529390930194935050505056fea2646970667358221220c48e109b7c4dbc314a02e05bbb5637ad19a99823a1f4ef17462d37c79243952764736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xC0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\r\x9F8\x03\x80a\r\x9F\x839\x81\x01`@\x81\x90Ra\0/\x91a\0bV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x80R\x16`\xA0Ra\0\x95V[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0]W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\0uW`\0\x80\xFD[a\0~\x83a\0FV[\x91Pa\0\x8C` \x84\x01a\0FV[\x90P\x92P\x92\x90PV[`\x80Q`\xA0Qa\x0C\xDFa\0\xC0`\09`\0a\x02\xE0\x01R`\0\x81\x81`e\x01Ra\x02\xB8\x01Ra\x0C\xDF`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cP\xDF-@\x14a\0;W\x80cX]\xA6(\x14a\0PW[`\0\x80\xFD[a\0Na\0I6`\x04a\x04\x05V[a\0cV[\0[a\0Na\0^6`\x04a\x07\xBDV[a\x01\x13V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x83\x83`@Q` \x01a\0\xB1\x91\x90a\n?V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDD\x92\x91\x90a\n\xC7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\0\xF7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x0BW=`\0\x80>=`\0\xFD[PPPPPPV[`\0[\x82Q\x81\x10\x15a\x02\xA0W`\0[\x83\x82\x81Q\x81\x10a\x014Wa\x014a\n\xF5V[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x02\x97W`\0\x84\x83\x81Q\x81\x10a\x01\\Wa\x01\\a\n\xF5V[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x01yWa\x01ya\n\xF5V[` \x02` \x01\x01Q\x90Pa\x01\xBB\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x01\xD3Wa\x01\xCE3\x82` \x01Qa\x03NV[a\x02\x8EV[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02hW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x8C\x91\x90a\x0B$V[P[P`\x01\x01a\x01\"V[P`\x01\x01a\x01\x16V[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x163\x03a\x03JW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x82\x80` \x01\x90Q\x81\x01\x90a\x03.\x91\x90a\x0B\x93V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDD\x91\x90a\x0C:V[PPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x03\xA8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03\xADV[``\x91P[PP\x90P\x80a\x03\xE8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0`@\x82\x84\x03\x12\x15a\x03\xFFW`\0\x80\xFD[P\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\x18W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x040W`\0\x80\xFD[a\x04<\x86\x83\x87\x01a\x03\xEDV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04RW`\0\x80\xFD[Pa\x04_\x85\x82\x86\x01a\x03\xEDV[\x91PP\x92P\x92\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xBBWa\x04\xBBa\x04iV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xBBWa\x04\xBBa\x04iV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05+Wa\x05+a\x04iV[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05MWa\x05Ma\x04iV[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05yW`\0\x80\xFD[PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\x96Wa\x05\x96a\x04iV[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x05\xD3W`\0\x80\xFD[\x815a\x05\xE6a\x05\xE1\x82a\x05|V[a\x04\xE4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xFBW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06*W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06NWa\x06Na\x04iV[\x81`@R\x82\x93P\x845\x91Pa\x06b\x82a\x05WV[\x90\x82R` \x84\x015\x90a\x06t\x82a\x05WV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06\x9E\x82a\x05WV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06\xB8W`\0\x80\xFD[Pa\x06\xC5\x85\x82\x86\x01a\x05\xC2V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x06\xE4W`\0\x80\xFD[a\x06\xECa\x04\x98V[\x90P\x815a\x06\xF9\x81a\x05WV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07(W`\0\x80\xFD[\x815` a\x078a\x05\xE1\x83a\x053V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07WW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07\xB0W\x81\x81\x8A\x03\x12\x15a\x07sW`\0\x80\x81\xFD[a\x07{a\x04\x98V[\x815a\x07\x86\x81a\x05WV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07\x9F\x81a\x05WV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07[V[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xD0W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x07\xFCW`\0\x80\xFD[\x815` a\x08\x0Ca\x05\xE1\x83a\x053V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08+W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\x1CW\x805\x86\x81\x11\x15a\x08GW`\0\x80\x81\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08}W`\0\x80\x81\xFD[a\x08\x85a\x04\xC1V[\x86\x83\x015\x89\x81\x11\x15a\x08\x97W`\0\x80\x81\xFD[a\x08\xA5\x8F\x89\x83\x87\x01\x01a\x06\x18V[\x82RPa\x08\xB5\x8E`@\x85\x01a\x06\xD2V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\x08\xCCW`\0\x80\x81\xFD[a\x08\xDA\x8F\x89\x83\x87\x01\x01a\x07\x17V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\x08\xF3W`\0\x80\x81\xFD[a\t\x01\x8F\x89\x83\x87\x01\x01a\x05\xC2V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08/V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t3W`\0\x80\xFD[Pa\x04_\x85\x82\x86\x01a\x05\xC2V[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\tuW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\x95W`\0\x80\xFD[\x806\x03\x82\x13\x15a\t\xA4W`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0a\n\0\x82\x83a\t@V[`@\x85Ra\n\x12`@\x86\x01\x82\x84a\t\xABV[\x91PPa\n\"` \x84\x01\x84a\t@V[\x85\x83\x03` \x87\x01Ra\n5\x83\x82\x84a\t\xABV[\x96\x95PPPPPPV[` \x81R`\0a\nR` \x83\x01\x84a\t\xF4V[\x93\x92PPPV[`\0[\x83\x81\x10\x15a\ntW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\\V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\n\x95\x81` \x86\x01` \x86\x01a\nYV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`@\x81R`\0a\n\xDA`@\x83\x01\x85a\t\xF4V[\x82\x81\x03` \x84\x01Ra\n\xEC\x81\x85a\n}V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x0B6W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\nRW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x0BWW`\0\x80\xFD[\x81Qa\x0Bea\x05\xE1\x82a\x05|V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0BzW`\0\x80\xFD[a\x0B\x8B\x82` \x83\x01` \x87\x01a\nYV[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x0B\xA5W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0B\xBDW`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0B\xD1W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x0B\xECWa\x0B\xECa\x04iV[`@R\x82Q\x82\x81\x11\x15a\x0B\xFEW`\0\x80\xFD[a\x0C\n\x87\x82\x86\x01a\x0BFV[\x82RP` \x83\x01Q\x82\x81\x11\x15a\x0C\x1FW`\0\x80\xFD[a\x0C+\x87\x82\x86\x01a\x0BFV[` \x83\x01RP\x95\x94PPPPPV[`@\x81R`\0\x82Q`@\x80\x84\x01Ra\x0CU`\x80\x84\x01\x82a\n}V[\x90P` \x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\x0C\x90\x82\x82a\n}V[\x84\x81\x03` \x95\x86\x01R`\0\x81R\x93\x90\x93\x01\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \xA5tS\x01\x18\x85\xB9\x8B\xFA\xB9Xl\xDB\x14&\x92\xE7\xD9T\x8AS\x9B\t\xE8\x88\xDA\x05S\x9A\xABI\xA5dsolcC\0\x08\x18\x003", + b"`\xC0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\r?8\x03\x80a\r?\x839\x81\x01`@\x81\x90Ra\0.\x91a\0`V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x80R\x16`\xA0Ra\0\x91V[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0[W_\x80\xFD[\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\0qW_\x80\xFD[a\0z\x83a\0EV[\x91Pa\0\x88` \x84\x01a\0EV[\x90P\x92P\x92\x90PV[`\x80Q`\xA0Qa\x0C\x87a\0\xB8_9_a\x02\xD1\x01R_\x81\x81`b\x01Ra\x02\xA9\x01Ra\x0C\x87_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\x004W_5`\xE0\x1C\x80cP\xDF-@\x14a\08W\x80cX]\xA6(\x14a\0MW[_\x80\xFD[a\0Ka\0F6`\x04a\x03\xF0V[a\0`V[\0[a\0Ka\0[6`\x04a\x07\x91V[a\x01\x0BV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x83\x83`@Q` \x01a\0\xAE\x91\x90a\t\xFCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDA\x92\x91\x90a\n\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\0\xF1W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x03W=_\x80>=_\xFD[PPPPPPV[_[\x82Q\x81\x10\x15a\x02\x91W_[\x83\x82\x81Q\x81\x10a\x01*Wa\x01*a\n\xADV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x02\x88W_\x84\x83\x81Q\x81\x10a\x01QWa\x01Qa\n\xADV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x01nWa\x01na\n\xADV[` \x02` \x01\x01Q\x90Pa\x01\xAF\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x01\xC7Wa\x01\xC23\x82` \x01Qa\x03?V[a\x02\x7FV[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x02YW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02}\x91\x90a\n\xDAV[P[P`\x01\x01a\x01\x18V[P`\x01\x01a\x01\rV[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x163\x03a\x03;W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x82\x80` \x01\x90Q\x81\x01\x90a\x03\x1F\x91\x90a\x0BCV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDA\x91\x90a\x0B\xE4V[PPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x03\x95W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x03\x9AV[``\x91P[PP\x90P\x80a\x03\xD5W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_`@\x82\x84\x03\x12\x15a\x03\xEAW_\x80\xFD[P\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x04\x01W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\x18W_\x80\xFD[a\x04$\x86\x83\x87\x01a\x03\xDAV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x049W_\x80\xFD[Pa\x04F\x85\x82\x86\x01a\x03\xDAV[\x91PP\x92P\x92\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xA0Wa\x04\xA0a\x04PV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xA0Wa\x04\xA0a\x04PV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x10Wa\x05\x10a\x04PV[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x051Wa\x051a\x04PV[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\\W_\x80\xFD[PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05xWa\x05xa\x04PV[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x05\xB3W_\x80\xFD[\x815a\x05\xC6a\x05\xC1\x82a\x05_V[a\x04\xC9V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xDAW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06\x06W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06*Wa\x06*a\x04PV[\x81`@R\x82\x93P\x845\x91Pa\x06>\x82a\x05;V[\x90\x82R` \x84\x015\x90a\x06P\x82a\x05;V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06z\x82a\x05;V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06\x93W_\x80\xFD[Pa\x06\xA0\x85\x82\x86\x01a\x05\xA4V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x06\xBDW_\x80\xFD[a\x06\xC5a\x04}V[\x90P\x815a\x06\xD2\x81a\x05;V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x06\xFFW_\x80\xFD[\x815` a\x07\x0Fa\x05\xC1\x83a\x05\x18V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07-W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07\x84W\x81\x81\x8A\x03\x12\x15a\x07GW_\x80\xFD[a\x07Oa\x04}V[\x815a\x07Z\x81a\x05;V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07s\x81a\x05;V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x071V[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x07\xA2W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xB9W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x07\xCCW_\x80\xFD[\x815` a\x07\xDCa\x05\xC1\x83a\x05\x18V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x07\xFAW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x08\xE1W\x805\x86\x81\x11\x15a\x08\x14W_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08HW_\x80\xFD[a\x08Pa\x04\xA6V[\x86\x83\x015\x89\x81\x11\x15a\x08`W_\x80\xFD[a\x08n\x8F\x89\x83\x87\x01\x01a\x05\xF6V[\x82RPa\x08~\x8E`@\x85\x01a\x06\xADV[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\x08\x93W_\x80\xFD[a\x08\xA1\x8F\x89\x83\x87\x01\x01a\x06\xF0V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\x08\xB8W_\x80\xFD[a\x08\xC6\x8F\x89\x83\x87\x01\x01a\x05\xA4V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x07\xFEV[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x08\xF7W_\x80\xFD[Pa\x04F\x85\x82\x86\x01a\x05\xA4V[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\t7W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\tVW_\x80\xFD[\x806\x03\x82\x13\x15a\tdW_\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\t\xBD\x82\x83a\t\x04V[`@\x85Ra\t\xCF`@\x86\x01\x82\x84a\tkV[\x91PPa\t\xDF` \x84\x01\x84a\t\x04V[\x85\x83\x03` \x87\x01Ra\t\xF2\x83\x82\x84a\tkV[\x96\x95PPPPPPV[` \x81R_a\n\x0E` \x83\x01\x84a\t\xB2V[\x93\x92PPPV[_[\x83\x81\x10\x15a\n/W\x81\x81\x01Q\x83\x82\x01R` \x01a\n\x17V[PP_\x91\x01RV[_\x81Q\x80\x84Ra\nN\x81` \x86\x01` \x86\x01a\n\x15V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`@\x81R_a\n\x92`@\x83\x01\x85a\t\xB2V[\x82\x81\x03` \x84\x01Ra\n\xA4\x81\x85a\n7V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\n\xEAW_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\n\x0EW_\x80\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x08W_\x80\xFD[\x81Qa\x0B\x16a\x05\xC1\x82a\x05_V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B*W_\x80\xFD[a\x0B;\x82` \x83\x01` \x87\x01a\n\x15V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a\x0BSW_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0BjW_\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0B}W_\x80\xFD[`@Q`@\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x0B\x98Wa\x0B\x98a\x04PV[`@R\x82Q\x82\x81\x11\x15a\x0B\xA9W_\x80\xFD[a\x0B\xB5\x87\x82\x86\x01a\n\xF9V[\x82RP` \x83\x01Q\x82\x81\x11\x15a\x0B\xC9W_\x80\xFD[a\x0B\xD5\x87\x82\x86\x01a\n\xF9V[` \x83\x01RP\x95\x94PPPPPV[`@\x81R_\x82Q`@\x80\x84\x01Ra\x0B\xFE`\x80\x84\x01\x82a\n7V[\x90P` \x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\x0C9\x82\x82a\n7V[\x84\x81\x03` \x95\x86\x01R_\x81R\x93\x90\x93\x01\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \xC4\x8E\x10\x9B|M\xBC1J\x02\xE0[\xBBV7\xAD\x19\xA9\x98#\xA1\xF4\xEF\x17F-7\xC7\x92C\x95'dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100365760003560e01c806350df2d401461003b578063585da62814610050575b600080fd5b61004e610049366004610405565b610063565b005b61004e61005e3660046107bd565b610113565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d33588483836040516020016100b19190610a3f565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016100dd929190610ac7565b600060405180830381600087803b1580156100f757600080fd5b505af115801561010b573d6000803e3d6000fd5b505050505050565b60005b82518110156102a05760005b83828151811061013457610134610af5565b6020026020010151604001515181101561029757600084838151811061015c5761015c610af5565b602002602001015160400151828151811061017957610179610af5565b602002602001015190506101bb816000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161590565b156101d3576101ce33826020015161034e565b61028e565b80516040517f095ea7b30000000000000000000000000000000000000000000000000000000081523360048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015273ffffffffffffffffffffffffffffffffffffffff9091169063095ea7b3906044016020604051808303816000875af1158015610268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190610b24565b505b50600101610122565b50600101610116565b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361034a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d3358848280602001905181019061032e9190610b93565b6040518263ffffffff1660e01b81526004016100dd9190610c3a565b5050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146103a8576040519150601f19603f3d011682016040523d82523d6000602084013e6103ad565b606091505b50509050806103e8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000604082840312156103ff57600080fd5b50919050565b6000806040838503121561041857600080fd5b823567ffffffffffffffff8082111561043057600080fd5b61043c868387016103ed565b9350602085013591508082111561045257600080fd5b5061045f858286016103ed565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156104bb576104bb610469565b60405290565b60405160a0810167ffffffffffffffff811182821017156104bb576104bb610469565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561052b5761052b610469565b604052919050565b600067ffffffffffffffff82111561054d5761054d610469565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461057957600080fd5b50565b600067ffffffffffffffff82111561059657610596610469565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126105d357600080fd5b81356105e66105e18261057c565b6104e4565b8181528460208386010111156105fb57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561062a57600080fd5b60405160c0810167ffffffffffffffff828210818311171561064e5761064e610469565b816040528293508435915061066282610557565b90825260208401359061067482610557565b81602084015260408501356040840152606085013560608401526080850135915061069e82610557565b81608084015260a08501359150808211156106b857600080fd5b506106c5858286016105c2565b60a0830152505092915050565b6000606082840312156106e457600080fd5b6106ec610498565b905081356106f981610557565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261072857600080fd5b813560206107386105e183610533565b8281526060928302850182019282820191908785111561075757600080fd5b8387015b858110156107b05781818a0312156107735760008081fd5b61077b610498565b813561078681610557565b8152818601358682015260408083013561079f81610557565b90820152845292840192810161075b565b5090979650505050505050565b600080604083850312156107d057600080fd5b823567ffffffffffffffff808211156107e857600080fd5b818501915085601f8301126107fc57600080fd5b8135602061080c6105e183610533565b82815260059290921b8401810191818101908984111561082b57600080fd5b8286015b8481101561091c578035868111156108475760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181131561087d5760008081fd5b6108856104c1565b86830135898111156108975760008081fd5b6108a58f8983870101610618565b8252506108b58e604085016106d2565b8782015260a0830135898111156108cc5760008081fd5b6108da8f8983870101610717565b60408301525060c0830135898111156108f35760008081fd5b6109018f89838701016105c2565b6060830152509101356080820152835291830191830161082f565b509650508601359250508082111561093357600080fd5b5061045f858286016105c2565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261097557600080fd5b830160208101925035905067ffffffffffffffff81111561099557600080fd5b8036038213156109a457600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610a008283610940565b60408552610a126040860182846109ab565b915050610a226020840184610940565b8583036020870152610a358382846109ab565b9695505050505050565b602081526000610a5260208301846109f4565b9392505050565b60005b83811015610a74578181015183820152602001610a5c565b50506000910152565b60008151808452610a95816020860160208601610a59565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081526000610ada60408301856109f4565b8281036020840152610aec8185610a7d565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610b3657600080fd5b81518015158114610a5257600080fd5b600082601f830112610b5757600080fd5b8151610b656105e18261057c565b818152846020838601011115610b7a57600080fd5b610b8b826020830160208701610a59565b949350505050565b600060208284031215610ba557600080fd5b815167ffffffffffffffff80821115610bbd57600080fd5b9083019060408286031215610bd157600080fd5b604051604081018181108382111715610bec57610bec610469565b604052825182811115610bfe57600080fd5b610c0a87828601610b46565b825250602083015182811115610c1f57600080fd5b610c2b87828601610b46565b60208301525095945050505050565b6040815260008251604080840152610c556080840182610a7d565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610c908282610a7d565b848103602095860152600081529390930194935050505056fea2646970667358221220a57453011885b98bfab9586cdb142692e7d9548a539b09e888da05539aab49a564736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b5060043610610034575f3560e01c806350df2d4014610038578063585da6281461004d575b5f80fd5b61004b6100463660046103f0565b610060565b005b61004b61005b366004610791565b61010b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d33588483836040516020016100ae91906109fc565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016100da929190610a80565b5f604051808303815f87803b1580156100f1575f80fd5b505af1158015610103573d5f803e3d5ffd5b505050505050565b5f5b8251811015610291575f5b83828151811061012a5761012a610aad565b60200260200101516040015151811015610288575f84838151811061015157610151610aad565b602002602001015160400151828151811061016e5761016e610aad565b602002602001015190506101af815f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161590565b156101c7576101c233826020015161033f565b61027f565b80516040517f095ea7b30000000000000000000000000000000000000000000000000000000081523360048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602482015273ffffffffffffffffffffffffffffffffffffffff9091169063095ea7b3906044016020604051808303815f875af1158015610259573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061027d9190610ada565b505b50600101610118565b5060010161010d565b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361033b577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d3358848280602001905181019061031f9190610b43565b6040518263ffffffff1660e01b81526004016100da9190610be4565b5050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610395576040519150601f19603f3d011682016040523d82523d5f602084013e61039a565b606091505b50509050806103d5576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f604082840312156103ea575f80fd5b50919050565b5f8060408385031215610401575f80fd5b823567ffffffffffffffff80821115610418575f80fd5b610424868387016103da565b93506020850135915080821115610439575f80fd5b50610446858286016103da565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156104a0576104a0610450565b60405290565b60405160a0810167ffffffffffffffff811182821017156104a0576104a0610450565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561051057610510610450565b604052919050565b5f67ffffffffffffffff82111561053157610531610450565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461055c575f80fd5b50565b5f67ffffffffffffffff82111561057857610578610450565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126105b3575f80fd5b81356105c66105c18261055f565b6104c9565b8181528460208386010111156105da575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215610606575f80fd5b60405160c0810167ffffffffffffffff828210818311171561062a5761062a610450565b816040528293508435915061063e8261053b565b9082526020840135906106508261053b565b81602084015260408501356040840152606085013560608401526080850135915061067a8261053b565b81608084015260a0850135915080821115610693575f80fd5b506106a0858286016105a4565b60a0830152505092915050565b5f606082840312156106bd575f80fd5b6106c561047d565b905081356106d28161053b565b80825250602082013560208201526040820135604082015292915050565b5f82601f8301126106ff575f80fd5b8135602061070f6105c183610518565b8281526060928302850182019282820191908785111561072d575f80fd5b8387015b858110156107845781818a031215610747575f80fd5b61074f61047d565b813561075a8161053b565b815281860135868201526040808301356107738161053b565b908201528452928401928101610731565b5090979650505050505050565b5f80604083850312156107a2575f80fd5b823567ffffffffffffffff808211156107b9575f80fd5b818501915085601f8301126107cc575f80fd5b813560206107dc6105c183610518565b82815260059290921b840181019181810190898411156107fa575f80fd5b8286015b848110156108e157803586811115610814575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001811315610848575f80fd5b6108506104a6565b8683013589811115610860575f80fd5b61086e8f89838701016105f6565b82525061087e8e604085016106ad565b8782015260a083013589811115610893575f80fd5b6108a18f89838701016106f0565b60408301525060c0830135898111156108b8575f80fd5b6108c68f89838701016105a4565b606083015250910135608082015283529183019183016107fe565b50965050860135925050808211156108f7575f80fd5b50610446858286016105a4565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610937575f80fd5b830160208101925035905067ffffffffffffffff811115610956575f80fd5b803603821315610964575f80fd5b9250929050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f6109bd8283610904565b604085526109cf60408601828461096b565b9150506109df6020840184610904565b85830360208701526109f283828461096b565b9695505050505050565b602081525f610a0e60208301846109b2565b9392505050565b5f5b83811015610a2f578181015183820152602001610a17565b50505f910152565b5f8151808452610a4e816020860160208601610a15565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081525f610a9260408301856109b2565b8281036020840152610aa48185610a37565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610aea575f80fd5b81518015158114610a0e575f80fd5b5f82601f830112610b08575f80fd5b8151610b166105c18261055f565b818152846020838601011115610b2a575f80fd5b610b3b826020830160208701610a15565b949350505050565b5f60208284031215610b53575f80fd5b815167ffffffffffffffff80821115610b6a575f80fd5b9083019060408286031215610b7d575f80fd5b604051604081018181108382111715610b9857610b98610450565b604052825182811115610ba9575f80fd5b610bb587828601610af9565b825250602083015182811115610bc9575f80fd5b610bd587828601610af9565b60208301525095945050505050565b604081525f8251604080840152610bfe6080840182610a37565b905060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610c398282610a37565b8481036020958601525f81529390930194935050505056fea2646970667358221220c48e109b7c4dbc314a02e05bbb5637ad19a99823a1f4ef17462d37c79243952764736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x006W`\x005`\xE0\x1C\x80cP\xDF-@\x14a\0;W\x80cX]\xA6(\x14a\0PW[`\0\x80\xFD[a\0Na\0I6`\x04a\x04\x05V[a\0cV[\0[a\0Na\0^6`\x04a\x07\xBDV[a\x01\x13V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x83\x83`@Q` \x01a\0\xB1\x91\x90a\n?V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDD\x92\x91\x90a\n\xC7V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\0\xF7W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x0BW=`\0\x80>=`\0\xFD[PPPPPPV[`\0[\x82Q\x81\x10\x15a\x02\xA0W`\0[\x83\x82\x81Q\x81\x10a\x014Wa\x014a\n\xF5V[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x02\x97W`\0\x84\x83\x81Q\x81\x10a\x01\\Wa\x01\\a\n\xF5V[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x01yWa\x01ya\n\xF5V[` \x02` \x01\x01Q\x90Pa\x01\xBB\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x01\xD3Wa\x01\xCE3\x82` \x01Qa\x03NV[a\x02\x8EV[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x02hW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x8C\x91\x90a\x0B$V[P[P`\x01\x01a\x01\"V[P`\x01\x01a\x01\x16V[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x163\x03a\x03JW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x82\x80` \x01\x90Q\x81\x01\x90a\x03.\x91\x90a\x0B\x93V[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDD\x91\x90a\x0C:V[PPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x03\xA8W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x03\xADV[``\x91P[PP\x90P\x80a\x03\xE8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0`@\x82\x84\x03\x12\x15a\x03\xFFW`\0\x80\xFD[P\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\x18W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x040W`\0\x80\xFD[a\x04<\x86\x83\x87\x01a\x03\xEDV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04RW`\0\x80\xFD[Pa\x04_\x85\x82\x86\x01a\x03\xEDV[\x91PP\x92P\x92\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xBBWa\x04\xBBa\x04iV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xBBWa\x04\xBBa\x04iV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05+Wa\x05+a\x04iV[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05MWa\x05Ma\x04iV[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05yW`\0\x80\xFD[PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\x96Wa\x05\x96a\x04iV[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x05\xD3W`\0\x80\xFD[\x815a\x05\xE6a\x05\xE1\x82a\x05|V[a\x04\xE4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xFBW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06*W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06NWa\x06Na\x04iV[\x81`@R\x82\x93P\x845\x91Pa\x06b\x82a\x05WV[\x90\x82R` \x84\x015\x90a\x06t\x82a\x05WV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06\x9E\x82a\x05WV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06\xB8W`\0\x80\xFD[Pa\x06\xC5\x85\x82\x86\x01a\x05\xC2V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x06\xE4W`\0\x80\xFD[a\x06\xECa\x04\x98V[\x90P\x815a\x06\xF9\x81a\x05WV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07(W`\0\x80\xFD[\x815` a\x078a\x05\xE1\x83a\x053V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07WW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07\xB0W\x81\x81\x8A\x03\x12\x15a\x07sW`\0\x80\x81\xFD[a\x07{a\x04\x98V[\x815a\x07\x86\x81a\x05WV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07\x9F\x81a\x05WV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07[V[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x07\xD0W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xE8W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x07\xFCW`\0\x80\xFD[\x815` a\x08\x0Ca\x05\xE1\x83a\x053V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08+W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\x1CW\x805\x86\x81\x11\x15a\x08GW`\0\x80\x81\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08}W`\0\x80\x81\xFD[a\x08\x85a\x04\xC1V[\x86\x83\x015\x89\x81\x11\x15a\x08\x97W`\0\x80\x81\xFD[a\x08\xA5\x8F\x89\x83\x87\x01\x01a\x06\x18V[\x82RPa\x08\xB5\x8E`@\x85\x01a\x06\xD2V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\x08\xCCW`\0\x80\x81\xFD[a\x08\xDA\x8F\x89\x83\x87\x01\x01a\x07\x17V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\x08\xF3W`\0\x80\x81\xFD[a\t\x01\x8F\x89\x83\x87\x01\x01a\x05\xC2V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08/V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t3W`\0\x80\xFD[Pa\x04_\x85\x82\x86\x01a\x05\xC2V[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\tuW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\x95W`\0\x80\xFD[\x806\x03\x82\x13\x15a\t\xA4W`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0a\n\0\x82\x83a\t@V[`@\x85Ra\n\x12`@\x86\x01\x82\x84a\t\xABV[\x91PPa\n\"` \x84\x01\x84a\t@V[\x85\x83\x03` \x87\x01Ra\n5\x83\x82\x84a\t\xABV[\x96\x95PPPPPPV[` \x81R`\0a\nR` \x83\x01\x84a\t\xF4V[\x93\x92PPPV[`\0[\x83\x81\x10\x15a\ntW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\\V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\n\x95\x81` \x86\x01` \x86\x01a\nYV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`@\x81R`\0a\n\xDA`@\x83\x01\x85a\t\xF4V[\x82\x81\x03` \x84\x01Ra\n\xEC\x81\x85a\n}V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x0B6W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\nRW`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a\x0BWW`\0\x80\xFD[\x81Qa\x0Bea\x05\xE1\x82a\x05|V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0BzW`\0\x80\xFD[a\x0B\x8B\x82` \x83\x01` \x87\x01a\nYV[\x94\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x0B\xA5W`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0B\xBDW`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0B\xD1W`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x0B\xECWa\x0B\xECa\x04iV[`@R\x82Q\x82\x81\x11\x15a\x0B\xFEW`\0\x80\xFD[a\x0C\n\x87\x82\x86\x01a\x0BFV[\x82RP` \x83\x01Q\x82\x81\x11\x15a\x0C\x1FW`\0\x80\xFD[a\x0C+\x87\x82\x86\x01a\x0BFV[` \x83\x01RP\x95\x94PPPPPV[`@\x81R`\0\x82Q`@\x80\x84\x01Ra\x0CU`\x80\x84\x01\x82a\n}V[\x90P` \x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\x0C\x90\x82\x82a\n}V[\x84\x81\x03` \x95\x86\x01R`\0\x81R\x93\x90\x93\x01\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \xA5tS\x01\x18\x85\xB9\x8B\xFA\xB9Xl\xDB\x14&\x92\xE7\xD9T\x8AS\x9B\t\xE8\x88\xDA\x05S\x9A\xABI\xA5dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\x004W_5`\xE0\x1C\x80cP\xDF-@\x14a\08W\x80cX]\xA6(\x14a\0MW[_\x80\xFD[a\0Ka\0F6`\x04a\x03\xF0V[a\0`V[\0[a\0Ka\0[6`\x04a\x07\x91V[a\x01\x0BV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x83\x83`@Q` \x01a\0\xAE\x91\x90a\t\xFCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDA\x92\x91\x90a\n\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\0\xF1W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\x03W=_\x80>=_\xFD[PPPPPPV[_[\x82Q\x81\x10\x15a\x02\x91W_[\x83\x82\x81Q\x81\x10a\x01*Wa\x01*a\n\xADV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x02\x88W_\x84\x83\x81Q\x81\x10a\x01QWa\x01Qa\n\xADV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x01nWa\x01na\n\xADV[` \x02` \x01\x01Q\x90Pa\x01\xAF\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x90V[\x15a\x01\xC7Wa\x01\xC23\x82` \x01Qa\x03?V[a\x02\x7FV[\x80Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3`\x04\x82\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x02YW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02}\x91\x90a\n\xDAV[P[P`\x01\x01a\x01\x18V[P`\x01\x01a\x01\rV[Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x163\x03a\x03;W\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\r3X\x84\x82\x80` \x01\x90Q\x81\x01\x90a\x03\x1F\x91\x90a\x0BCV[`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\0\xDA\x91\x90a\x0B\xE4V[PPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x03\x95W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x03\x9AV[``\x91P[PP\x90P\x80a\x03\xD5W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_`@\x82\x84\x03\x12\x15a\x03\xEAW_\x80\xFD[P\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x04\x01W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\x18W_\x80\xFD[a\x04$\x86\x83\x87\x01a\x03\xDAV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x049W_\x80\xFD[Pa\x04F\x85\x82\x86\x01a\x03\xDAV[\x91PP\x92P\x92\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xA0Wa\x04\xA0a\x04PV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\xA0Wa\x04\xA0a\x04PV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\x10Wa\x05\x10a\x04PV[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x051Wa\x051a\x04PV[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x05\\W_\x80\xFD[PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05xWa\x05xa\x04PV[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x05\xB3W_\x80\xFD[\x815a\x05\xC6a\x05\xC1\x82a\x05_V[a\x04\xC9V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x05\xDAW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06\x06W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06*Wa\x06*a\x04PV[\x81`@R\x82\x93P\x845\x91Pa\x06>\x82a\x05;V[\x90\x82R` \x84\x015\x90a\x06P\x82a\x05;V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x06z\x82a\x05;V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x06\x93W_\x80\xFD[Pa\x06\xA0\x85\x82\x86\x01a\x05\xA4V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x06\xBDW_\x80\xFD[a\x06\xC5a\x04}V[\x90P\x815a\x06\xD2\x81a\x05;V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x06\xFFW_\x80\xFD[\x815` a\x07\x0Fa\x05\xC1\x83a\x05\x18V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07-W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x07\x84W\x81\x81\x8A\x03\x12\x15a\x07GW_\x80\xFD[a\x07Oa\x04}V[\x815a\x07Z\x81a\x05;V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x07s\x81a\x05;V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x071V[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x07\xA2W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x07\xB9W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x07\xCCW_\x80\xFD[\x815` a\x07\xDCa\x05\xC1\x83a\x05\x18V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x07\xFAW_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\x08\xE1W\x805\x86\x81\x11\x15a\x08\x14W_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08HW_\x80\xFD[a\x08Pa\x04\xA6V[\x86\x83\x015\x89\x81\x11\x15a\x08`W_\x80\xFD[a\x08n\x8F\x89\x83\x87\x01\x01a\x05\xF6V[\x82RPa\x08~\x8E`@\x85\x01a\x06\xADV[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\x08\x93W_\x80\xFD[a\x08\xA1\x8F\x89\x83\x87\x01\x01a\x06\xF0V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\x08\xB8W_\x80\xFD[a\x08\xC6\x8F\x89\x83\x87\x01\x01a\x05\xA4V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x07\xFEV[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x08\xF7W_\x80\xFD[Pa\x04F\x85\x82\x86\x01a\x05\xA4V[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\t7W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\tVW_\x80\xFD[\x806\x03\x82\x13\x15a\tdW_\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\t\xBD\x82\x83a\t\x04V[`@\x85Ra\t\xCF`@\x86\x01\x82\x84a\tkV[\x91PPa\t\xDF` \x84\x01\x84a\t\x04V[\x85\x83\x03` \x87\x01Ra\t\xF2\x83\x82\x84a\tkV[\x96\x95PPPPPPV[` \x81R_a\n\x0E` \x83\x01\x84a\t\xB2V[\x93\x92PPPV[_[\x83\x81\x10\x15a\n/W\x81\x81\x01Q\x83\x82\x01R` \x01a\n\x17V[PP_\x91\x01RV[_\x81Q\x80\x84Ra\nN\x81` \x86\x01` \x86\x01a\n\x15V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`@\x81R_a\n\x92`@\x83\x01\x85a\t\xB2V[\x82\x81\x03` \x84\x01Ra\n\xA4\x81\x85a\n7V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\n\xEAW_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\n\x0EW_\x80\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x08W_\x80\xFD[\x81Qa\x0B\x16a\x05\xC1\x82a\x05_V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B*W_\x80\xFD[a\x0B;\x82` \x83\x01` \x87\x01a\n\x15V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a\x0BSW_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0BjW_\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a\x0B}W_\x80\xFD[`@Q`@\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a\x0B\x98Wa\x0B\x98a\x04PV[`@R\x82Q\x82\x81\x11\x15a\x0B\xA9W_\x80\xFD[a\x0B\xB5\x87\x82\x86\x01a\n\xF9V[\x82RP` \x83\x01Q\x82\x81\x11\x15a\x0B\xC9W_\x80\xFD[a\x0B\xD5\x87\x82\x86\x01a\n\xF9V[` \x83\x01RP\x95\x94PPPPPV[`@\x81R_\x82Q`@\x80\x84\x01Ra\x0B\xFE`\x80\x84\x01\x82a\n7V[\x90P` \x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\x0C9\x82\x82a\n7V[\x84\x81\x03` \x95\x86\x01R_\x81R\x93\x90\x93\x01\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \xC4\x8E\x10\x9B|M\xBC1J\x02\xE0[\xBBV7\xAD\x19\xA9\x98#\xA1\xF4\xEF\x17F-7\xC7\x92C\x95'dsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -267,8 +281,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -485,17 +499,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -511,8 +536,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -781,14 +806,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -800,7 +833,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1014,18 +1047,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1302,13 +1345,20 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; /**```solidity struct SignedOrder { bytes order; bytes sig; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignedOrder { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1514,10 +1564,15 @@ struct SignedOrder { bytes order; bytes sig; } ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1573,10 +1628,12 @@ error NativeTransferFailed(); ```solidity constructor(address _reactor1, address _reactor2); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _reactor1: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _reactor2: alloy::sol_types::private::Address, } const _: () = { @@ -1653,17 +1710,24 @@ constructor(address _reactor1, address _reactor2); ```solidity function execute(SignedOrder memory order, SignedOrder memory other) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub other: ::RustType, } ///Container type for the return parameters of the [`execute((bytes,bytes),(bytes,bytes))`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1776,19 +1840,26 @@ function execute(SignedOrder memory order, SignedOrder memory other) external; ```solidity function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory otherSignedOrder) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackCall { + #[allow(missing_docs)] pub resolvedOrders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub otherSignedOrder: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1913,7 +1984,9 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory oth }; ///Container for all the [`MockFillContractDoubleExecution`](self) function calls. pub enum MockFillContractDoubleExecutionCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] reactorCallback(reactorCallbackCall), } #[automatically_derived] @@ -1952,7 +2025,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory oth Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1997,7 +2070,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory oth ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2029,6 +2102,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory oth } ///Container for all the [`MockFillContractDoubleExecution`](self) custom errors. pub enum MockFillContractDoubleExecutionErrors { + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), } #[automatically_derived] @@ -2063,7 +2137,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory oth Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2097,7 +2171,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory oth ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/mockfillcontractwithoutputoverride.rs b/crates/bindings-uniswapx/src/mockfillcontractwithoutputoverride.rs index 44a4eef..878c9b4 100644 --- a/crates/bindings-uniswapx/src/mockfillcontractwithoutputoverride.rs +++ b/crates/bindings-uniswapx/src/mockfillcontractwithoutputoverride.rs @@ -239,41 +239,55 @@ interface MockFillContractWithOutputOverride { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockFillContractWithOutputOverride { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a060405234801561001057600080fd5b50604051610d10380380610d1083398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610c7161009f6000396000818160dc015281816101860152818161029d01526103060152610c716000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d7a16c31461005157806324f9c434146100665780633f62192e14610079578063585da6281461008c575b600080fd5b61006461005f366004610456565b61009f565b005b6100646100743660046104cb565b600055565b6100646100873660046104e4565b610149565b61006461009a366004610871565b6101f0565b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c7906101139085908590600401610afd565b600060405180830381600087803b15801561012d57600080fd5b505af1158015610141573d6000803e3d6000fd5b505050505050565b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906101bb908490600401610bc0565b600060405180830381600087803b1580156101d557600080fd5b505af11580156101e9573d6000803e3d6000fd5b5050505050565b60005b82518110156103b75760005b83828151811061021157610211610bea565b602002602001015160400151518110156103ae57600084838151811061023957610239610bea565b602002602001015160400151828151811061025657610256610bea565b602002602001015190506000805460001461027357600054610279565b81602001515b825190915073ffffffffffffffffffffffffffffffffffffffff166102c7576102c27f0000000000000000000000000000000000000000000000000000000000000000826103bc565b6103a4565b81516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303816000875af115801561037e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a29190610c19565b505b50506001016101ff565b506001016101f3565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610416576040519150601f19603f3d011682016040523d82523d6000602084013e61041b565b606091505b50509050806103b7576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806020838503121561046957600080fd5b823567ffffffffffffffff8082111561048157600080fd5b818501915085601f83011261049557600080fd5b8135818111156104a457600080fd5b8660208260051b85010111156104b957600080fd5b60209290920196919550909350505050565b6000602082840312156104dd57600080fd5b5035919050565b6000602082840312156104f657600080fd5b813567ffffffffffffffff81111561050d57600080fd5b82016040818503121561051f57600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561057857610578610526565b60405290565b60405160a0810167ffffffffffffffff8111828210171561057857610578610526565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105e8576105e8610526565b604052919050565b600067ffffffffffffffff82111561060a5761060a610526565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461063657600080fd5b50565b600082601f83011261064a57600080fd5b813567ffffffffffffffff81111561066457610664610526565b61069560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016105a1565b8181528460208386010111156106aa57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156106d957600080fd5b60405160c0810167ffffffffffffffff82821081831117156106fd576106fd610526565b816040528293508435915061071182610614565b90825260208401359061072382610614565b81602084015260408501356040840152606085013560608401526080850135915061074d82610614565b81608084015260a085013591508082111561076757600080fd5b5061077485828601610639565b60a0830152505092915050565b60006060828403121561079357600080fd5b61079b610555565b905081356107a881610614565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126107d757600080fd5b813560206107ec6107e7836105f0565b6105a1565b8281526060928302850182019282820191908785111561080b57600080fd5b8387015b858110156108645781818a0312156108275760008081fd5b61082f610555565b813561083a81610614565b8152818601358682015260408083013561085381610614565b90820152845292840192810161080f565b5090979650505050505050565b6000806040838503121561088457600080fd5b823567ffffffffffffffff8082111561089c57600080fd5b818501915085601f8301126108b057600080fd5b813560206108c06107e7836105f0565b82815260059290921b840181019181810190898411156108df57600080fd5b8286015b848110156109d0578035868111156108fb5760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109315760008081fd5b61093961057e565b868301358981111561094b5760008081fd5b6109598f89838701016106c7565b8252506109698e60408501610781565b8782015260a0830135898111156109805760008081fd5b61098e8f89838701016107c6565b60408301525060c0830135898111156109a75760008081fd5b6109b58f8983870101610639565b606083015250910135608082015283529183019183016108e3565b50965050860135925050808211156109e757600080fd5b506109f485828601610639565b9150509250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610a3357600080fd5b830160208101925035905067ffffffffffffffff811115610a5357600080fd5b803603821315610a6257600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610abe82836109fe565b60408552610ad0604086018284610a69565b915050610ae060208401846109fe565b8583036020870152610af3838284610a69565b9695505050505050565b6040808252810182905260006060600584901b830181019083018583805b87811015610b9d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18a3603018112610b7b578283fd5b610b87868b8301610ab2565b9550506020938401939290920191600101610b1b565b505050508281036020840152610bb7816000815260200190565b95945050505050565b604081526000610bd36040830184610ab2565b828103602093840152600081529190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610c2b57600080fd5b8151801515811461051f57600080fdfea2646970667358221220d634c67f66a81eac0cb04c75a178d5688b79b18e6a81ca4f401eda3867416a8564736f6c63430008180033 + ///0x60a060405234801561000f575f80fd5b50604051610cae380380610cae83398101604081905261002e9161003f565b6001600160a01b031660805261006c565b5f6020828403121561004f575f80fd5b81516001600160a01b0381168114610065575f80fd5b9392505050565b608051610c166100985f395f818160d80152818161017d0152818161028901526102f20152610c165ff3fe608060405234801561000f575f80fd5b506004361061004a575f3560e01c80630d7a16c31461004e57806324f9c434146100635780633f62192e14610075578063585da62814610088575b5f80fd5b61006161005c36600461043b565b61009b565b005b6100616100713660046104aa565b5f55565b6100616100833660046104c1565b610140565b610061610096366004610838565b6101e2565b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c79061010f9085908590600401610aad565b5f604051808303815f87803b158015610126575f80fd5b505af1158015610138573d5f803e3d5ffd5b505050505050565b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906101b2908490600401610b6c565b5f604051808303815f87803b1580156101c9575f80fd5b505af11580156101db573d5f803e3d5ffd5b5050505050565b5f5b82518110156103a0575f5b83828151811061020157610201610b94565b60200260200101516040015151811015610397575f84838151811061022857610228610b94565b602002602001015160400151828151811061024557610245610b94565b602002602001015190505f80545f1461025f575f54610265565b81602001515b825190915073ffffffffffffffffffffffffffffffffffffffff166102b3576102ae7f0000000000000000000000000000000000000000000000000000000000000000826103a5565b61038d565b81516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303815f875af1158015610367573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038b9190610bc1565b505b50506001016101ef565b506001016101e4565b505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f81146103fb576040519150601f19603f3d011682016040523d82523d5f602084013e610400565b606091505b50509050806103a0576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f806020838503121561044c575f80fd5b823567ffffffffffffffff80821115610463575f80fd5b818501915085601f830112610476575f80fd5b813581811115610484575f80fd5b8660208260051b8501011115610498575f80fd5b60209290920196919550909350505050565b5f602082840312156104ba575f80fd5b5035919050565b5f602082840312156104d1575f80fd5b813567ffffffffffffffff8111156104e7575f80fd5b8201604081850312156104f8575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561054f5761054f6104ff565b60405290565b60405160a0810167ffffffffffffffff8111828210171561054f5761054f6104ff565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105bf576105bf6104ff565b604052919050565b5f67ffffffffffffffff8211156105e0576105e06104ff565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461060b575f80fd5b50565b5f82601f83011261061d575f80fd5b813567ffffffffffffffff811115610637576106376104ff565b61066860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610578565b81815284602083860101111561067c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156106a8575f80fd5b60405160c0810167ffffffffffffffff82821081831117156106cc576106cc6104ff565b81604052829350843591506106e0826105ea565b9082526020840135906106f2826105ea565b81602084015260408501356040840152606085013560608401526080850135915061071c826105ea565b81608084015260a0850135915080821115610735575f80fd5b506107428582860161060e565b60a0830152505092915050565b5f6060828403121561075f575f80fd5b61076761052c565b90508135610774816105ea565b80825250602082013560208201526040820135604082015292915050565b5f82601f8301126107a1575f80fd5b813560206107b66107b1836105c7565b610578565b828152606092830285018201928282019190878511156107d4575f80fd5b8387015b8581101561082b5781818a0312156107ee575f80fd5b6107f661052c565b8135610801816105ea565b8152818601358682015260408083013561081a816105ea565b9082015284529284019281016107d8565b5090979650505050505050565b5f8060408385031215610849575f80fd5b823567ffffffffffffffff80821115610860575f80fd5b818501915085601f830112610873575f80fd5b813560206108836107b1836105c7565b82815260059290921b840181019181810190898411156108a1575f80fd5b8286015b84811015610988578035868111156108bb575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156108ef575f80fd5b6108f7610555565b8683013589811115610907575f80fd5b6109158f8983870101610698565b8252506109258e6040850161074f565b8782015260a08301358981111561093a575f80fd5b6109488f8983870101610792565b60408301525060c08301358981111561095f575f80fd5b61096d8f898387010161060e565b606083015250910135608082015283529183019183016108a5565b509650508601359250508082111561099e575f80fd5b506109ab8582860161060e565b9150509250929050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126109e8575f80fd5b830160208101925035905067ffffffffffffffff811115610a07575f80fd5b803603821315610a15575f80fd5b9250929050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f610a6e82836109b5565b60408552610a80604086018284610a1c565b915050610a9060208401846109b5565b8583036020870152610aa3838284610a1c565b9695505050505050565b604080825281018290525f6060600584901b8301810190830185835b86811015610b4b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1893603018112610b29575f80fd5b610b35858a8301610a63565b9450506020928301929190910190600101610ac9565b5050508281036020840152610b63815f815260200190565b95945050505050565b604081525f610b7e6040830184610a63565b8281036020938401525f81529190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610bd1575f80fd5b815180151581146104f8575f80fdfea2646970667358221220458460e772f4e8d74f9842a51363302e241f60abf02c150fbf387d7283a3a72c64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\r\x108\x03\x80a\r\x10\x839\x81\x01`@\x81\x90Ra\0/\x91a\0@V[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0pV[`\0` \x82\x84\x03\x12\x15a\0RW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0iW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x0Cqa\0\x9F`\09`\0\x81\x81`\xDC\x01R\x81\x81a\x01\x86\x01R\x81\x81a\x02\x9D\x01Ra\x03\x06\x01Ra\x0Cq`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c\rz\x16\xC3\x14a\0QW\x80c$\xF9\xC44\x14a\0fW\x80c?b\x19.\x14a\0yW\x80cX]\xA6(\x14a\0\x8CW[`\0\x80\xFD[a\0da\0_6`\x04a\x04VV[a\0\x9FV[\0[a\0da\0t6`\x04a\x04\xCBV[`\0UV[a\0da\0\x876`\x04a\x04\xE4V[a\x01IV[a\0da\0\x9A6`\x04a\x08qV[a\x01\xF0V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x01\x13\x90\x85\x90\x85\x90`\x04\x01a\n\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01-W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01AW=`\0\x80>=`\0\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\xBB\x90\x84\x90`\x04\x01a\x0B\xC0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xE9W=`\0\x80>=`\0\xFD[PPPPPV[`\0[\x82Q\x81\x10\x15a\x03\xB7W`\0[\x83\x82\x81Q\x81\x10a\x02\x11Wa\x02\x11a\x0B\xEAV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\xAEW`\0\x84\x83\x81Q\x81\x10a\x029Wa\x029a\x0B\xEAV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x02VWa\x02Va\x0B\xEAV[` \x02` \x01\x01Q\x90P`\0\x80T`\0\x14a\x02sW`\0Ta\x02yV[\x81` \x01Q[\x82Q\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x02\xC7Wa\x02\xC2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82a\x03\xBCV[a\x03\xA4V[\x81Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xA2\x91\x90a\x0C\x19V[P[PP`\x01\x01a\x01\xFFV[P`\x01\x01a\x01\xF3V[PPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x04\x16W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\x1BV[``\x91P[PP\x90P\x80a\x03\xB7W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x04iW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\x81W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\x95W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\xA4W`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\xB9W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x04\xDDW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x04\xF6W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\rW`\0\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x05\x1FW`\0\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05xWa\x05xa\x05&V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05xWa\x05xa\x05&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xE8Wa\x05\xE8a\x05&V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\nWa\x06\na\x05&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x066W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06JW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06dWa\x06da\x05&V[a\x06\x95` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\xA1V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xAAW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\xD9W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xFDWa\x06\xFDa\x05&V[\x81`@R\x82\x93P\x845\x91Pa\x07\x11\x82a\x06\x14V[\x90\x82R` \x84\x015\x90a\x07#\x82a\x06\x14V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07M\x82a\x06\x14V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07gW`\0\x80\xFD[Pa\x07t\x85\x82\x86\x01a\x069V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07\x93W`\0\x80\xFD[a\x07\x9Ba\x05UV[\x90P\x815a\x07\xA8\x81a\x06\x14V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\xD7W`\0\x80\xFD[\x815` a\x07\xECa\x07\xE7\x83a\x05\xF0V[a\x05\xA1V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08\x0BW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08dW\x81\x81\x8A\x03\x12\x15a\x08'W`\0\x80\x81\xFD[a\x08/a\x05UV[\x815a\x08:\x81a\x06\x14V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08S\x81a\x06\x14V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08\x0FV[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\x84W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\x9CW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xB0W`\0\x80\xFD[\x815` a\x08\xC0a\x07\xE7\x83a\x05\xF0V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08\xDFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\xD0W\x805\x86\x81\x11\x15a\x08\xFBW`\0\x80\x81\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t1W`\0\x80\x81\xFD[a\t9a\x05~V[\x86\x83\x015\x89\x81\x11\x15a\tKW`\0\x80\x81\xFD[a\tY\x8F\x89\x83\x87\x01\x01a\x06\xC7V[\x82RPa\ti\x8E`@\x85\x01a\x07\x81V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\x80W`\0\x80\x81\xFD[a\t\x8E\x8F\x89\x83\x87\x01\x01a\x07\xC6V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xA7W`\0\x80\x81\xFD[a\t\xB5\x8F\x89\x83\x87\x01\x01a\x069V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08\xE3V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t\xE7W`\0\x80\xFD[Pa\t\xF4\x85\x82\x86\x01a\x069V[\x91PP\x92P\x92\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\n3W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nSW`\0\x80\xFD[\x806\x03\x82\x13\x15a\nbW`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0a\n\xBE\x82\x83a\t\xFEV[`@\x85Ra\n\xD0`@\x86\x01\x82\x84a\niV[\x91PPa\n\xE0` \x84\x01\x84a\t\xFEV[\x85\x83\x03` \x87\x01Ra\n\xF3\x83\x82\x84a\niV[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R`\0```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83\x80[\x87\x81\x10\x15a\x0B\x9DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8A6\x03\x01\x81\x12a\x0B{W\x82\x83\xFD[a\x0B\x87\x86\x8B\x83\x01a\n\xB2V[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x0B\x1BV[PPPP\x82\x81\x03` \x84\x01Ra\x0B\xB7\x81`\0\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R`\0a\x0B\xD3`@\x83\x01\x84a\n\xB2V[\x82\x81\x03` \x93\x84\x01R`\0\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x0C+W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x05\x1FW`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD64\xC6\x7Ff\xA8\x1E\xAC\x0C\xB0Lu\xA1x\xD5h\x8By\xB1\x8Ej\x81\xCAO@\x1E\xDA8gAj\x85dsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15a\0\x0FW_\x80\xFD[P`@Qa\x0C\xAE8\x03\x80a\x0C\xAE\x839\x81\x01`@\x81\x90Ra\0.\x91a\0?V[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0lV[_` \x82\x84\x03\x12\x15a\0OW_\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0eW_\x80\xFD[\x93\x92PPPV[`\x80Qa\x0C\x16a\0\x98_9_\x81\x81`\xD8\x01R\x81\x81a\x01}\x01R\x81\x81a\x02\x89\x01Ra\x02\xF2\x01Ra\x0C\x16_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0JW_5`\xE0\x1C\x80c\rz\x16\xC3\x14a\0NW\x80c$\xF9\xC44\x14a\0cW\x80c?b\x19.\x14a\0uW\x80cX]\xA6(\x14a\0\x88W[_\x80\xFD[a\0aa\0\\6`\x04a\x04;V[a\0\x9BV[\0[a\0aa\0q6`\x04a\x04\xAAV[_UV[a\0aa\0\x836`\x04a\x04\xC1V[a\x01@V[a\0aa\0\x966`\x04a\x088V[a\x01\xE2V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x01\x0F\x90\x85\x90\x85\x90`\x04\x01a\n\xADV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01&W_\x80\xFD[PZ\xF1\x15\x80\x15a\x018W=_\x80>=_\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\xB2\x90\x84\x90`\x04\x01a\x0BlV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC9W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xDBW=_\x80>=_\xFD[PPPPPV[_[\x82Q\x81\x10\x15a\x03\xA0W_[\x83\x82\x81Q\x81\x10a\x02\x01Wa\x02\x01a\x0B\x94V[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\x97W_\x84\x83\x81Q\x81\x10a\x02(Wa\x02(a\x0B\x94V[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x02EWa\x02Ea\x0B\x94V[` \x02` \x01\x01Q\x90P_\x80T_\x14a\x02_W_Ta\x02eV[\x81` \x01Q[\x82Q\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x02\xB3Wa\x02\xAE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82a\x03\xA5V[a\x03\x8DV[\x81Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x03gW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x8B\x91\x90a\x0B\xC1V[P[PP`\x01\x01a\x01\xEFV[P`\x01\x01a\x01\xE4V[PPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x03\xFBW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x04\0V[``\x91P[PP\x90P\x80a\x03\xA0W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80` \x83\x85\x03\x12\x15a\x04LW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04cW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04vW_\x80\xFD[\x815\x81\x81\x11\x15a\x04\x84W_\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\x98W_\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[_` \x82\x84\x03\x12\x15a\x04\xBAW_\x80\xFD[P5\x91\x90PV[_` \x82\x84\x03\x12\x15a\x04\xD1W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE7W_\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x04\xF8W_\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05OWa\x05Oa\x04\xFFV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05OWa\x05Oa\x04\xFFV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xBFWa\x05\xBFa\x04\xFFV[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xE0Wa\x05\xE0a\x04\xFFV[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x0BW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x06\x1DW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x067Wa\x067a\x04\xFFV[a\x06h` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05xV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06|W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06\xA8W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xCCWa\x06\xCCa\x04\xFFV[\x81`@R\x82\x93P\x845\x91Pa\x06\xE0\x82a\x05\xEAV[\x90\x82R` \x84\x015\x90a\x06\xF2\x82a\x05\xEAV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x1C\x82a\x05\xEAV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x075W_\x80\xFD[Pa\x07B\x85\x82\x86\x01a\x06\x0EV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07_W_\x80\xFD[a\x07ga\x05,V[\x90P\x815a\x07t\x81a\x05\xEAV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07\xA1W_\x80\xFD[\x815` a\x07\xB6a\x07\xB1\x83a\x05\xC7V[a\x05xV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xD4W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08+W\x81\x81\x8A\x03\x12\x15a\x07\xEEW_\x80\xFD[a\x07\xF6a\x05,V[\x815a\x08\x01\x81a\x05\xEAV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x1A\x81a\x05\xEAV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xD8V[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08IW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08`W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08sW_\x80\xFD[\x815` a\x08\x83a\x07\xB1\x83a\x05\xC7V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08\xA1W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\x88W\x805\x86\x81\x11\x15a\x08\xBBW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08\xEFW_\x80\xFD[a\x08\xF7a\x05UV[\x86\x83\x015\x89\x81\x11\x15a\t\x07W_\x80\xFD[a\t\x15\x8F\x89\x83\x87\x01\x01a\x06\x98V[\x82RPa\t%\x8E`@\x85\x01a\x07OV[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t:W_\x80\xFD[a\tH\x8F\x89\x83\x87\x01\x01a\x07\x92V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t_W_\x80\xFD[a\tm\x8F\x89\x83\x87\x01\x01a\x06\x0EV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08\xA5V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t\x9EW_\x80\xFD[Pa\t\xAB\x85\x82\x86\x01a\x06\x0EV[\x91PP\x92P\x92\x90PV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\t\xE8W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\x07W_\x80\xFD[\x806\x03\x82\x13\x15a\n\x15W_\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\nn\x82\x83a\t\xB5V[`@\x85Ra\n\x80`@\x86\x01\x82\x84a\n\x1CV[\x91PPa\n\x90` \x84\x01\x84a\t\xB5V[\x85\x83\x03` \x87\x01Ra\n\xA3\x83\x82\x84a\n\x1CV[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R_```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83[\x86\x81\x10\x15a\x0BKW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x896\x03\x01\x81\x12a\x0B)W_\x80\xFD[a\x0B5\x85\x8A\x83\x01a\ncV[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\n\xC9V[PPP\x82\x81\x03` \x84\x01Ra\x0Bc\x81_\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R_a\x0B~`@\x83\x01\x84a\ncV[\x82\x81\x03` \x93\x84\x01R_\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x0B\xD1W_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x04\xF8W_\x80\xFD\xFE\xA2dipfsX\"\x12 E\x84`\xE7r\xF4\xE8\xD7O\x98B\xA5\x13c0.$\x1F`\xAB\xF0,\x15\x0F\xBF8}r\x83\xA3\xA7,dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d7a16c31461005157806324f9c434146100665780633f62192e14610079578063585da6281461008c575b600080fd5b61006461005f366004610456565b61009f565b005b6100646100743660046104cb565b600055565b6100646100873660046104e4565b610149565b61006461009a366004610871565b6101f0565b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c7906101139085908590600401610afd565b600060405180830381600087803b15801561012d57600080fd5b505af1158015610141573d6000803e3d6000fd5b505050505050565b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906101bb908490600401610bc0565b600060405180830381600087803b1580156101d557600080fd5b505af11580156101e9573d6000803e3d6000fd5b5050505050565b60005b82518110156103b75760005b83828151811061021157610211610bea565b602002602001015160400151518110156103ae57600084838151811061023957610239610bea565b602002602001015160400151828151811061025657610256610bea565b602002602001015190506000805460001461027357600054610279565b81602001515b825190915073ffffffffffffffffffffffffffffffffffffffff166102c7576102c27f0000000000000000000000000000000000000000000000000000000000000000826103bc565b6103a4565b81516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303816000875af115801561037e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a29190610c19565b505b50506001016101ff565b506001016101f3565b505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610416576040519150601f19603f3d011682016040523d82523d6000602084013e61041b565b606091505b50509050806103b7576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806020838503121561046957600080fd5b823567ffffffffffffffff8082111561048157600080fd5b818501915085601f83011261049557600080fd5b8135818111156104a457600080fd5b8660208260051b85010111156104b957600080fd5b60209290920196919550909350505050565b6000602082840312156104dd57600080fd5b5035919050565b6000602082840312156104f657600080fd5b813567ffffffffffffffff81111561050d57600080fd5b82016040818503121561051f57600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561057857610578610526565b60405290565b60405160a0810167ffffffffffffffff8111828210171561057857610578610526565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105e8576105e8610526565b604052919050565b600067ffffffffffffffff82111561060a5761060a610526565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461063657600080fd5b50565b600082601f83011261064a57600080fd5b813567ffffffffffffffff81111561066457610664610526565b61069560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016105a1565b8181528460208386010111156106aa57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156106d957600080fd5b60405160c0810167ffffffffffffffff82821081831117156106fd576106fd610526565b816040528293508435915061071182610614565b90825260208401359061072382610614565b81602084015260408501356040840152606085013560608401526080850135915061074d82610614565b81608084015260a085013591508082111561076757600080fd5b5061077485828601610639565b60a0830152505092915050565b60006060828403121561079357600080fd5b61079b610555565b905081356107a881610614565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126107d757600080fd5b813560206107ec6107e7836105f0565b6105a1565b8281526060928302850182019282820191908785111561080b57600080fd5b8387015b858110156108645781818a0312156108275760008081fd5b61082f610555565b813561083a81610614565b8152818601358682015260408083013561085381610614565b90820152845292840192810161080f565b5090979650505050505050565b6000806040838503121561088457600080fd5b823567ffffffffffffffff8082111561089c57600080fd5b818501915085601f8301126108b057600080fd5b813560206108c06107e7836105f0565b82815260059290921b840181019181810190898411156108df57600080fd5b8286015b848110156109d0578035868111156108fb5760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109315760008081fd5b61093961057e565b868301358981111561094b5760008081fd5b6109598f89838701016106c7565b8252506109698e60408501610781565b8782015260a0830135898111156109805760008081fd5b61098e8f89838701016107c6565b60408301525060c0830135898111156109a75760008081fd5b6109b58f8983870101610639565b606083015250910135608082015283529183019183016108e3565b50965050860135925050808211156109e757600080fd5b506109f485828601610639565b9150509250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610a3357600080fd5b830160208101925035905067ffffffffffffffff811115610a5357600080fd5b803603821315610a6257600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000610abe82836109fe565b60408552610ad0604086018284610a69565b915050610ae060208401846109fe565b8583036020870152610af3838284610a69565b9695505050505050565b6040808252810182905260006060600584901b830181019083018583805b87811015610b9d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18a3603018112610b7b578283fd5b610b87868b8301610ab2565b9550506020938401939290920191600101610b1b565b505050508281036020840152610bb7816000815260200190565b95945050505050565b604081526000610bd36040830184610ab2565b828103602093840152600081529190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610c2b57600080fd5b8151801515811461051f57600080fdfea2646970667358221220d634c67f66a81eac0cb04c75a178d5688b79b18e6a81ca4f401eda3867416a8564736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506004361061004a575f3560e01c80630d7a16c31461004e57806324f9c434146100635780633f62192e14610075578063585da62814610088575b5f80fd5b61006161005c36600461043b565b61009b565b005b6100616100713660046104aa565b5f55565b6100616100833660046104c1565b610140565b610061610096366004610838565b6101e2565b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c79061010f9085908590600401610aad565b5f604051808303815f87803b158015610126575f80fd5b505af1158015610138573d5f803e3d5ffd5b505050505050565b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906101b2908490600401610b6c565b5f604051808303815f87803b1580156101c9575f80fd5b505af11580156101db573d5f803e3d5ffd5b5050505050565b5f5b82518110156103a0575f5b83828151811061020157610201610b94565b60200260200101516040015151811015610397575f84838151811061022857610228610b94565b602002602001015160400151828151811061024557610245610b94565b602002602001015190505f80545f1461025f575f54610265565b81602001515b825190915073ffffffffffffffffffffffffffffffffffffffff166102b3576102ae7f0000000000000000000000000000000000000000000000000000000000000000826103a5565b61038d565b81516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303815f875af1158015610367573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038b9190610bc1565b505b50506001016101ef565b506001016101e4565b505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f81146103fb576040519150601f19603f3d011682016040523d82523d5f602084013e610400565b606091505b50509050806103a0576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f806020838503121561044c575f80fd5b823567ffffffffffffffff80821115610463575f80fd5b818501915085601f830112610476575f80fd5b813581811115610484575f80fd5b8660208260051b8501011115610498575f80fd5b60209290920196919550909350505050565b5f602082840312156104ba575f80fd5b5035919050565b5f602082840312156104d1575f80fd5b813567ffffffffffffffff8111156104e7575f80fd5b8201604081850312156104f8575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561054f5761054f6104ff565b60405290565b60405160a0810167ffffffffffffffff8111828210171561054f5761054f6104ff565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156105bf576105bf6104ff565b604052919050565b5f67ffffffffffffffff8211156105e0576105e06104ff565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461060b575f80fd5b50565b5f82601f83011261061d575f80fd5b813567ffffffffffffffff811115610637576106376104ff565b61066860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610578565b81815284602083860101111561067c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156106a8575f80fd5b60405160c0810167ffffffffffffffff82821081831117156106cc576106cc6104ff565b81604052829350843591506106e0826105ea565b9082526020840135906106f2826105ea565b81602084015260408501356040840152606085013560608401526080850135915061071c826105ea565b81608084015260a0850135915080821115610735575f80fd5b506107428582860161060e565b60a0830152505092915050565b5f6060828403121561075f575f80fd5b61076761052c565b90508135610774816105ea565b80825250602082013560208201526040820135604082015292915050565b5f82601f8301126107a1575f80fd5b813560206107b66107b1836105c7565b610578565b828152606092830285018201928282019190878511156107d4575f80fd5b8387015b8581101561082b5781818a0312156107ee575f80fd5b6107f661052c565b8135610801816105ea565b8152818601358682015260408083013561081a816105ea565b9082015284529284019281016107d8565b5090979650505050505050565b5f8060408385031215610849575f80fd5b823567ffffffffffffffff80821115610860575f80fd5b818501915085601f830112610873575f80fd5b813560206108836107b1836105c7565b82815260059290921b840181019181810190898411156108a1575f80fd5b8286015b84811015610988578035868111156108bb575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156108ef575f80fd5b6108f7610555565b8683013589811115610907575f80fd5b6109158f8983870101610698565b8252506109258e6040850161074f565b8782015260a08301358981111561093a575f80fd5b6109488f8983870101610792565b60408301525060c08301358981111561095f575f80fd5b61096d8f898387010161060e565b606083015250910135608082015283529183019183016108a5565b509650508601359250508082111561099e575f80fd5b506109ab8582860161060e565b9150509250929050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126109e8575f80fd5b830160208101925035905067ffffffffffffffff811115610a07575f80fd5b803603821315610a15575f80fd5b9250929050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f610a6e82836109b5565b60408552610a80604086018284610a1c565b915050610a9060208401846109b5565b8583036020870152610aa3838284610a1c565b9695505050505050565b604080825281018290525f6060600584901b8301810190830185835b86811015610b4b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1893603018112610b29575f80fd5b610b35858a8301610a63565b9450506020928301929190910190600101610ac9565b5050508281036020840152610b63815f815260200190565b95945050505050565b604081525f610b7e6040830184610a63565b8281036020938401525f81529190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610bd1575f80fd5b815180151581146104f8575f80fdfea2646970667358221220458460e772f4e8d74f9842a51363302e241f60abf02c150fbf387d7283a3a72c64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0LW`\x005`\xE0\x1C\x80c\rz\x16\xC3\x14a\0QW\x80c$\xF9\xC44\x14a\0fW\x80c?b\x19.\x14a\0yW\x80cX]\xA6(\x14a\0\x8CW[`\0\x80\xFD[a\0da\0_6`\x04a\x04VV[a\0\x9FV[\0[a\0da\0t6`\x04a\x04\xCBV[`\0UV[a\0da\0\x876`\x04a\x04\xE4V[a\x01IV[a\0da\0\x9A6`\x04a\x08qV[a\x01\xF0V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x01\x13\x90\x85\x90\x85\x90`\x04\x01a\n\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01-W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01AW=`\0\x80>=`\0\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\xBB\x90\x84\x90`\x04\x01a\x0B\xC0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xE9W=`\0\x80>=`\0\xFD[PPPPPV[`\0[\x82Q\x81\x10\x15a\x03\xB7W`\0[\x83\x82\x81Q\x81\x10a\x02\x11Wa\x02\x11a\x0B\xEAV[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\xAEW`\0\x84\x83\x81Q\x81\x10a\x029Wa\x029a\x0B\xEAV[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x02VWa\x02Va\x0B\xEAV[` \x02` \x01\x01Q\x90P`\0\x80T`\0\x14a\x02sW`\0Ta\x02yV[\x81` \x01Q[\x82Q\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x02\xC7Wa\x02\xC2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82a\x03\xBCV[a\x03\xA4V[\x81Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x03~W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\xA2\x91\x90a\x0C\x19V[P[PP`\x01\x01a\x01\xFFV[P`\x01\x01a\x01\xF3V[PPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x04\x16W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x04\x1BV[``\x91P[PP\x90P\x80a\x03\xB7W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80` \x83\x85\x03\x12\x15a\x04iW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\x81W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04\x95W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\xA4W`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\xB9W`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\x04\xDDW`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x04\xF6W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x05\rW`\0\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x05\x1FW`\0\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05xWa\x05xa\x05&V[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05xWa\x05xa\x05&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xE8Wa\x05\xE8a\x05&V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x06\nWa\x06\na\x05&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x066W`\0\x80\xFD[PV[`\0\x82`\x1F\x83\x01\x12a\x06JW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x06dWa\x06da\x05&V[a\x06\x95` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05\xA1V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06\xAAW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x06\xD9W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xFDWa\x06\xFDa\x05&V[\x81`@R\x82\x93P\x845\x91Pa\x07\x11\x82a\x06\x14V[\x90\x82R` \x84\x015\x90a\x07#\x82a\x06\x14V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07M\x82a\x06\x14V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x07gW`\0\x80\xFD[Pa\x07t\x85\x82\x86\x01a\x069V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x07\x93W`\0\x80\xFD[a\x07\x9Ba\x05UV[\x90P\x815a\x07\xA8\x81a\x06\x14V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x07\xD7W`\0\x80\xFD[\x815` a\x07\xECa\x07\xE7\x83a\x05\xF0V[a\x05\xA1V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08\x0BW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08dW\x81\x81\x8A\x03\x12\x15a\x08'W`\0\x80\x81\xFD[a\x08/a\x05UV[\x815a\x08:\x81a\x06\x14V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08S\x81a\x06\x14V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08\x0FV[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x08\x84W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\x9CW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xB0W`\0\x80\xFD[\x815` a\x08\xC0a\x07\xE7\x83a\x05\xF0V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08\xDFW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\xD0W\x805\x86\x81\x11\x15a\x08\xFBW`\0\x80\x81\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t1W`\0\x80\x81\xFD[a\t9a\x05~V[\x86\x83\x015\x89\x81\x11\x15a\tKW`\0\x80\x81\xFD[a\tY\x8F\x89\x83\x87\x01\x01a\x06\xC7V[\x82RPa\ti\x8E`@\x85\x01a\x07\x81V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\x80W`\0\x80\x81\xFD[a\t\x8E\x8F\x89\x83\x87\x01\x01a\x07\xC6V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xA7W`\0\x80\x81\xFD[a\t\xB5\x8F\x89\x83\x87\x01\x01a\x069V[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08\xE3V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t\xE7W`\0\x80\xFD[Pa\t\xF4\x85\x82\x86\x01a\x069V[\x91PP\x92P\x92\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\n3W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nSW`\0\x80\xFD[\x806\x03\x82\x13\x15a\nbW`\0\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0a\n\xBE\x82\x83a\t\xFEV[`@\x85Ra\n\xD0`@\x86\x01\x82\x84a\niV[\x91PPa\n\xE0` \x84\x01\x84a\t\xFEV[\x85\x83\x03` \x87\x01Ra\n\xF3\x83\x82\x84a\niV[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R`\0```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83\x80[\x87\x81\x10\x15a\x0B\x9DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8A6\x03\x01\x81\x12a\x0B{W\x82\x83\xFD[a\x0B\x87\x86\x8B\x83\x01a\n\xB2V[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x0B\x1BV[PPPP\x82\x81\x03` \x84\x01Ra\x0B\xB7\x81`\0\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R`\0a\x0B\xD3`@\x83\x01\x84a\n\xB2V[\x82\x81\x03` \x93\x84\x01R`\0\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x0C+W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x05\x1FW`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD64\xC6\x7Ff\xA8\x1E\xAC\x0C\xB0Lu\xA1x\xD5h\x8By\xB1\x8Ej\x81\xCAO@\x1E\xDA8gAj\x85dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0JW_5`\xE0\x1C\x80c\rz\x16\xC3\x14a\0NW\x80c$\xF9\xC44\x14a\0cW\x80c?b\x19.\x14a\0uW\x80cX]\xA6(\x14a\0\x88W[_\x80\xFD[a\0aa\0\\6`\x04a\x04;V[a\0\x9BV[\0[a\0aa\0q6`\x04a\x04\xAAV[_UV[a\0aa\0\x836`\x04a\x04\xC1V[a\x01@V[a\0aa\0\x966`\x04a\x088V[a\x01\xE2V[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x01\x0F\x90\x85\x90\x85\x90`\x04\x01a\n\xADV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01&W_\x80\xFD[PZ\xF1\x15\x80\x15a\x018W=_\x80>=_\xFD[PPPPPPV[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\x01\xB2\x90\x84\x90`\x04\x01a\x0BlV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x01\xC9W_\x80\xFD[PZ\xF1\x15\x80\x15a\x01\xDBW=_\x80>=_\xFD[PPPPPV[_[\x82Q\x81\x10\x15a\x03\xA0W_[\x83\x82\x81Q\x81\x10a\x02\x01Wa\x02\x01a\x0B\x94V[` \x02` \x01\x01Q`@\x01QQ\x81\x10\x15a\x03\x97W_\x84\x83\x81Q\x81\x10a\x02(Wa\x02(a\x0B\x94V[` \x02` \x01\x01Q`@\x01Q\x82\x81Q\x81\x10a\x02EWa\x02Ea\x0B\x94V[` \x02` \x01\x01Q\x90P_\x80T_\x14a\x02_W_Ta\x02eV[\x81` \x01Q[\x82Q\x90\x91Ps\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x02\xB3Wa\x02\xAE\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82a\x03\xA5V[a\x03\x8DV[\x81Q`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x16`\x04\x83\x01R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`$\x83\x01R\x90\x91\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x03gW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03\x8B\x91\x90a\x0B\xC1V[P[PP`\x01\x01a\x01\xEFV[P`\x01\x01a\x01\xE4V[PPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x03\xFBW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x04\0V[``\x91P[PP\x90P\x80a\x03\xA0W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80` \x83\x85\x03\x12\x15a\x04LW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04cW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x04vW_\x80\xFD[\x815\x81\x81\x11\x15a\x04\x84W_\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\x98W_\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[_` \x82\x84\x03\x12\x15a\x04\xBAW_\x80\xFD[P5\x91\x90PV[_` \x82\x84\x03\x12\x15a\x04\xD1W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE7W_\x80\xFD[\x82\x01`@\x81\x85\x03\x12\x15a\x04\xF8W_\x80\xFD[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05OWa\x05Oa\x04\xFFV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05OWa\x05Oa\x04\xFFV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x05\xBFWa\x05\xBFa\x04\xFFV[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x05\xE0Wa\x05\xE0a\x04\xFFV[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x06\x0BW_\x80\xFD[PV[_\x82`\x1F\x83\x01\x12a\x06\x1DW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x067Wa\x067a\x04\xFFV[a\x06h` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x05xV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x06|W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x06\xA8W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x06\xCCWa\x06\xCCa\x04\xFFV[\x81`@R\x82\x93P\x845\x91Pa\x06\xE0\x82a\x05\xEAV[\x90\x82R` \x84\x015\x90a\x06\xF2\x82a\x05\xEAV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x07\x1C\x82a\x05\xEAV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x075W_\x80\xFD[Pa\x07B\x85\x82\x86\x01a\x06\x0EV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07_W_\x80\xFD[a\x07ga\x05,V[\x90P\x815a\x07t\x81a\x05\xEAV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x07\xA1W_\x80\xFD[\x815` a\x07\xB6a\x07\xB1\x83a\x05\xC7V[a\x05xV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x07\xD4W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08+W\x81\x81\x8A\x03\x12\x15a\x07\xEEW_\x80\xFD[a\x07\xF6a\x05,V[\x815a\x08\x01\x81a\x05\xEAV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\x1A\x81a\x05\xEAV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x07\xD8V[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08IW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08`W_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08sW_\x80\xFD[\x815` a\x08\x83a\x07\xB1\x83a\x05\xC7V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\x08\xA1W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\t\x88W\x805\x86\x81\x11\x15a\x08\xBBW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\x08\xEFW_\x80\xFD[a\x08\xF7a\x05UV[\x86\x83\x015\x89\x81\x11\x15a\t\x07W_\x80\xFD[a\t\x15\x8F\x89\x83\x87\x01\x01a\x06\x98V[\x82RPa\t%\x8E`@\x85\x01a\x07OV[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t:W_\x80\xFD[a\tH\x8F\x89\x83\x87\x01\x01a\x07\x92V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t_W_\x80\xFD[a\tm\x8F\x89\x83\x87\x01\x01a\x06\x0EV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\x08\xA5V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\t\x9EW_\x80\xFD[Pa\t\xAB\x85\x82\x86\x01a\x06\x0EV[\x91PP\x92P\x92\x90PV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\t\xE8W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\x07W_\x80\xFD[\x806\x03\x82\x13\x15a\n\x15W_\x80\xFD[\x92P\x92\x90PV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_a\nn\x82\x83a\t\xB5V[`@\x85Ra\n\x80`@\x86\x01\x82\x84a\n\x1CV[\x91PPa\n\x90` \x84\x01\x84a\t\xB5V[\x85\x83\x03` \x87\x01Ra\n\xA3\x83\x82\x84a\n\x1CV[\x96\x95PPPPPPV[`@\x80\x82R\x81\x01\x82\x90R_```\x05\x84\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x85\x83[\x86\x81\x10\x15a\x0BKW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x896\x03\x01\x81\x12a\x0B)W_\x80\xFD[a\x0B5\x85\x8A\x83\x01a\ncV[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\n\xC9V[PPP\x82\x81\x03` \x84\x01Ra\x0Bc\x81_\x81R` \x01\x90V[\x95\x94PPPPPV[`@\x81R_a\x0B~`@\x83\x01\x84a\ncV[\x82\x81\x03` \x93\x84\x01R_\x81R\x91\x90\x91\x01\x92\x91PPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x0B\xD1W_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x04\xF8W_\x80\xFD\xFE\xA2dipfsX\"\x12 E\x84`\xE7r\xF4\xE8\xD7O\x98B\xA5\x13c0.$\x1F`\xAB\xF0,\x15\x0F\xBF8}r\x83\xA3\xA7,dsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -285,8 +299,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -503,17 +517,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -529,8 +554,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -799,14 +824,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -818,7 +851,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1032,18 +1065,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1320,13 +1363,20 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; /**```solidity struct SignedOrder { bytes order; bytes sig; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignedOrder { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1532,10 +1582,15 @@ struct SignedOrder { bytes order; bytes sig; } ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1591,9 +1646,10 @@ error NativeTransferFailed(); ```solidity constructor(address _reactor); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _reactor: alloy::sol_types::private::Address, } const _: () = { @@ -1655,16 +1711,22 @@ constructor(address _reactor); ```solidity function execute(SignedOrder memory order) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1770,18 +1832,24 @@ function execute(SignedOrder memory order) external; ```solidity function executeBatch(SignedOrder[] memory orders) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1895,19 +1963,26 @@ function executeBatch(SignedOrder[] memory orders) external; ```solidity function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackCall { + #[allow(missing_docs)] pub resolvedOrders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub _1: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2034,23 +2109,31 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex ```solidity function setOutputAmount(uint256 amount) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setOutputAmountCall { - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`setOutputAmount(uint256)`](setOutputAmountCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setOutputAmountReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -2151,9 +2234,13 @@ function setOutputAmount(uint256 amount) external; }; ///Container for all the [`MockFillContractWithOutputOverride`](self) function calls. pub enum MockFillContractWithOutputOverrideCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] reactorCallback(reactorCallbackCall), + #[allow(missing_docs)] setOutputAmount(setOutputAmountCall), } #[automatically_derived] @@ -2200,7 +2287,7 @@ function setOutputAmount(uint256 amount) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2283,7 +2370,7 @@ function setOutputAmount(uint256 amount) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2337,6 +2424,7 @@ function setOutputAmount(uint256 amount) external; } ///Container for all the [`MockFillContractWithOutputOverride`](self) custom errors. pub enum MockFillContractWithOutputOverrideErrors { + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), } #[automatically_derived] @@ -2371,7 +2459,7 @@ function setOutputAmount(uint256 amount) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2407,7 +2495,7 @@ function setOutputAmount(uint256 amount) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2665,7 +2753,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`setOutputAmount`] function. pub fn setOutputAmount( &self, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&setOutputAmountCall { amount }) } diff --git a/crates/bindings-uniswapx/src/mockprotocolfees.rs b/crates/bindings-uniswapx/src/mockprotocolfees.rs index 47765ef..bf429ac 100644 --- a/crates/bindings-uniswapx/src/mockprotocolfees.rs +++ b/crates/bindings-uniswapx/src/mockprotocolfees.rs @@ -406,41 +406,55 @@ interface MockProtocolFees { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockProtocolFees { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b5060405161113238038061113283398101604081905261002f91610081565b600080546001600160a01b0319166001600160a01b038316908117825560405183928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050506100b1565b60006020828403121561009357600080fd5b81516001600160a01b03811681146100aa57600080fd5b9392505050565b611072806100c06000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636f12f442116100505780636f12f442146100cb5780638da5cb5b146100eb578063f2fde38b1461010b57600080fd5b80632d7713891461006c5780636999b37714610081575b600080fd5b61007f61007a3660046108e8565b61011e565b005b6001546100a19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100de6100d9366004610c32565b61022a565b6040516100c29190610dd3565b6000546100a19073ffffffffffffffffffffffffffffffffffffffff1681565b61007f6101193660046108e8565b6102a6565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528401529282018390528282019290925260808101919091526102a282610397565b5090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640161019b565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60015473ffffffffffffffffffffffffffffffffffffffff166103b75750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061040e908590600401610dd3565b600060405180830381865afa15801561042b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104719190810190610efd565b60408301515181519192509060006104898284610fcd565b67ffffffffffffffff8111156104a1576104a161090c565b60405190808252806020026020018201604052801561050a57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104bf5790505b50905060005b8381101561055b578560400151818151811061052e5761052e61100d565b60200260200101518282815181106105485761054861100d565b6020908102919091010152600101610510565b5060008060005b8481101561087657600087828151811061057e5761057e61100d565b6020026020010151905060005b8281101561063c578881815181106105a5576105a561100d565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036106345781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240161019b565b60010161058b565b506000805b888110156106fd5760008b6040015182815181106106615761066161100d565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036106f45785156106de576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516106ed9084610fcd565b9250600196505b50600101610641565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361077657841561075d576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b0151015161076f9082610fcd565b9050600193505b806000036107cb5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240161019b565b6107d9816005612710610887565b8260200151111561084c578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152602481019290925291909116604482015260640161019b565b8186848a01815181106108615761086161100d565b60209081029190910101525050600101610562565b505050604090940193909352505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026108bc57600080fd5b5091020490565b73ffffffffffffffffffffffffffffffffffffffff811681146108e557600080fd5b50565b6000602082840312156108fa57600080fd5b8135610905816108c3565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561095e5761095e61090c565b60405290565b60405160a0810167ffffffffffffffff8111828210171561095e5761095e61090c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109ce576109ce61090c565b604052919050565b600082601f8301126109e757600080fd5b813567ffffffffffffffff811115610a0157610a0161090c565b610a3260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610987565b818152846020838601011115610a4757600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215610a7657600080fd5b60405160c0810167ffffffffffffffff8282108183111715610a9a57610a9a61090c565b8160405282935084359150610aae826108c3565b908252602084013590610ac0826108c3565b816020840152604085013560408401526060850135606084015260808501359150610aea826108c3565b81608084015260a0850135915080821115610b0457600080fd5b50610b11858286016109d6565b60a0830152505092915050565b600060608284031215610b3057600080fd5b610b3861093b565b90508135610b45816108c3565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115610b7d57610b7d61090c565b5060051b60200190565b600082601f830112610b9857600080fd5b81356020610bad610ba883610b63565b610987565b82815260609283028501820192828201919087851115610bcc57600080fd5b8387015b85811015610c255781818a031215610be85760008081fd5b610bf061093b565b8135610bfb816108c3565b81528186013586820152604080830135610c14816108c3565b908201528452928401928101610bd0565b5090979650505050505050565b600060208284031215610c4457600080fd5b813567ffffffffffffffff80821115610c5c57600080fd5b9083019060e08286031215610c7057600080fd5b610c78610964565b823582811115610c8757600080fd5b610c9387828601610a64565b825250610ca38660208501610b1e565b6020820152608083013582811115610cba57600080fd5b610cc687828601610b87565b60408301525060a083013582811115610cde57600080fd5b610cea878286016109d6565b60608301525060c092909201356080830152509392505050565b6000815180845260005b81811015610d2a57602081850181015186830182015201610d0e565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60008151808452602080850194506020840160005b83811015610dc8578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101610d7d565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a0840152610e4f6101c0840182610d04565b90506020840151610e8d6040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a0860152610ec88383610d68565b925060608601519150808584030160c086015250610ee68282610d04565b915050608084015160e08401528091505092915050565b60006020808385031215610f1057600080fd5b825167ffffffffffffffff811115610f2757600080fd5b8301601f81018513610f3857600080fd5b8051610f46610ba882610b63565b81815260609182028301840191848201919088841115610f6557600080fd5b938501935b83851015610fc15780858a031215610f825760008081fd5b610f8a61093b565b8551610f95816108c3565b81528587015187820152604080870151610fae816108c3565b9082015283529384019391850191610f6a565b50979650505050505050565b80820180821115611007577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212206277c22e948972c5337bf38228cf6bcf250e665ee61f23bace86a7a11c7ea98f64736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506040516110e13803806110e183398101604081905261002e9161007f565b5f80546001600160a01b0319166001600160a01b038316908117825560405183928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050506100ac565b5f6020828403121561008f575f80fd5b81516001600160a01b03811681146100a5575f80fd5b9392505050565b611028806100b95f395ff3fe608060405234801561000f575f80fd5b5060043610610064575f3560e01c80636f12f4421161004d5780636f12f442146100c75780638da5cb5b146100e7578063f2fde38b14610106575f80fd5b80632d771389146100685780636999b3771461007d575b5f80fd5b61007b6100763660046108c9565b610119565b005b60015461009d9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100da6100d5366004610c00565b610224565b6040516100be9190610d95565b5f5461009d9073ffffffffffffffffffffffffffffffffffffffff1681565b61007b6101143660046108c9565b61029f565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461019e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b60408051610160810182525f60a0820181815260c0830182905260e08301829052610100830182905261012083018290526060610140840181905290835283518082018552828152602080820184905281860184905284015292820183905282820192909252608081019190915261029b8261038e565b5090565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461031f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610195565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60015473ffffffffffffffffffffffffffffffffffffffff166103ae5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390610404908590600401610d95565b5f60405180830381865afa15801561041e573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104639190810190610ebe565b6040830151518151919250905f61047a8284610f87565b67ffffffffffffffff811115610492576104926108eb565b6040519080825280602002602001820160405280156104fa57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104b05790505b5090505f5b8381101561054a578560400151818151811061051d5761051d610fc5565b602002602001015182828151811061053757610537610fc5565b60209081029190910101526001016104ff565b505f805f5b8481101561085a575f87828151811061056a5761056a610fc5565b602002602001015190505f5b828110156106255788818151811061059057610590610fc5565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff160361061d5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610195565b600101610576565b505f805b888110156106e2575f8b60400151828151811061064857610648610fc5565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff16036106d95785156106c3576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516106d29084610f87565b9250600196505b50600101610629565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361075b578415610742576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516107549082610f87565b9050600193505b805f036107af5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610195565b6107bd81600561271061086b565b82602001511115610830578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610195565b8186848a018151811061084557610845610fc5565b6020908102919091010152505060010161054f565b505050604090940193909352505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261089e575f80fd5b5091020490565b73ffffffffffffffffffffffffffffffffffffffff811681146108c6575f80fd5b50565b5f602082840312156108d9575f80fd5b81356108e4816108a5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561093b5761093b6108eb565b60405290565b60405160a0810167ffffffffffffffff8111828210171561093b5761093b6108eb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109ab576109ab6108eb565b604052919050565b5f82601f8301126109c2575f80fd5b813567ffffffffffffffff8111156109dc576109dc6108eb565b610a0d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610964565b818152846020838601011115610a21575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215610a4d575f80fd5b60405160c0810167ffffffffffffffff8282108183111715610a7157610a716108eb565b8160405282935084359150610a85826108a5565b908252602084013590610a97826108a5565b816020840152604085013560408401526060850135606084015260808501359150610ac1826108a5565b81608084015260a0850135915080821115610ada575f80fd5b50610ae7858286016109b3565b60a0830152505092915050565b5f60608284031215610b04575f80fd5b610b0c610918565b90508135610b19816108a5565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115610b5057610b506108eb565b5060051b60200190565b5f82601f830112610b69575f80fd5b81356020610b7e610b7983610b37565b610964565b82815260609283028501820192828201919087851115610b9c575f80fd5b8387015b85811015610bf35781818a031215610bb6575f80fd5b610bbe610918565b8135610bc9816108a5565b81528186013586820152604080830135610be2816108a5565b908201528452928401928101610ba0565b5090979650505050505050565b5f60208284031215610c10575f80fd5b813567ffffffffffffffff80821115610c27575f80fd5b9083019060e08286031215610c3a575f80fd5b610c42610941565b823582811115610c50575f80fd5b610c5c87828601610a3d565b825250610c6c8660208501610af4565b6020820152608083013582811115610c82575f80fd5b610c8e87828601610b5a565b60408301525060a083013582811115610ca5575f80fd5b610cb1878286016109b3565b60608301525060c092909201356080830152509392505050565b5f81518084525f5b81811015610cef57602081850181015186830182015201610cd3565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815180845260208085019450602084015f5b83811015610d8a578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101610d3f565b509495945050505050565b602081525f825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a0840152610e106101c0840182610ccb565b90506020840151610e4e6040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a0860152610e898383610d2c565b925060608601519150808584030160c086015250610ea78282610ccb565b915050608084015160e08401528091505092915050565b5f6020808385031215610ecf575f80fd5b825167ffffffffffffffff811115610ee5575f80fd5b8301601f81018513610ef5575f80fd5b8051610f03610b7982610b37565b81815260609182028301840191848201919088841115610f21575f80fd5b938501935b83851015610f7b5780858a031215610f3c575f80fd5b610f44610918565b8551610f4f816108a5565b81528587015187820152604080870151610f68816108a5565b9082015283529384019391850191610f26565b50979650505050505050565b80820180821115610fbf577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220539a30dd28571270ed024078f08fb8546ee89e64f6e5d23beec672a20022c31064736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x1128\x03\x80a\x112\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\x81V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x83\x92\x83\x92\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PPPa\0\xB1V[`\0` \x82\x84\x03\x12\x15a\0\x93W`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xAAW`\0\x80\xFD[\x93\x92PPPV[a\x10r\x80a\0\xC0`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0gW`\x005`\xE0\x1C\x80co\x12\xF4B\x11a\0PW\x80co\x12\xF4B\x14a\0\xCBW\x80c\x8D\xA5\xCB[\x14a\0\xEBW\x80c\xF2\xFD\xE3\x8B\x14a\x01\x0BW`\0\x80\xFD[\x80c-w\x13\x89\x14a\0lW\x80ci\x99\xB3w\x14a\0\x81W[`\0\x80\xFD[a\0\x7Fa\0z6`\x04a\x08\xE8V[a\x01\x1EV[\0[`\x01Ta\0\xA1\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDEa\0\xD96`\x04a\x0C2V[a\x02*V[`@Qa\0\xC2\x91\x90a\r\xD3V[`\0Ta\0\xA1\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[a\0\x7Fa\x01\x196`\x04a\x08\xE8V[a\x02\xA6V[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x01\xA4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91Ra\x02\xA2\x82a\x03\x97V[P\x90V[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x03'W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x01\x9BV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x03\xB7WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x04\x0E\x90\x85\x90`\x04\x01a\r\xD3V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x04+W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04q\x91\x90\x81\x01\x90a\x0E\xFDV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x04\x89\x82\x84a\x0F\xCDV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xA1Wa\x04\xA1a\t\x0CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\nW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xBFW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x05[W\x85`@\x01Q\x81\x81Q\x81\x10a\x05.Wa\x05.a\x10\rV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x05HWa\x05Ha\x10\rV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x10V[P`\0\x80`\0[\x84\x81\x10\x15a\x08vW`\0\x87\x82\x81Q\x81\x10a\x05~Wa\x05~a\x10\rV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x06=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04c\x91\x90\x81\x01\x90a\x0E\xBEV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x04z\x82\x84a\x0F\x87V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\x92Wa\x04\x92a\x08\xEBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\xFAW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xB0W\x90P[P\x90P_[\x83\x81\x10\x15a\x05JW\x85`@\x01Q\x81\x81Q\x81\x10a\x05\x1DWa\x05\x1Da\x0F\xC5V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x057Wa\x057a\x0F\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04\xFFV[P_\x80_[\x84\x81\x10\x15a\x08ZW_\x87\x82\x81Q\x81\x10a\x05jWa\x05ja\x0F\xC5V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x06%W\x88\x81\x81Q\x81\x10a\x05\x90Wa\x05\x90a\x0F\xC5V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x06\x1DW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x01\x95V[`\x01\x01a\x05vV[P_\x80[\x88\x81\x10\x15a\x06\xE2W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x06HWa\x06Ha\x0F\xC5V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x06\xD9W\x85\x15a\x06\xC3W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x06\xD2\x90\x84a\x0F\x87V[\x92P`\x01\x96P[P`\x01\x01a\x06)V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x07[W\x84\x15a\x07BW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x07T\x90\x82a\x0F\x87V[\x90P`\x01\x93P[\x80_\x03a\x07\xAFW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x01\x95V[a\x07\xBD\x81`\x05a'\x10a\x08kV[\x82` \x01Q\x11\x15a\x080W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x01\x95V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x08EWa\x08Ea\x0F\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x05OV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x08\x9EW_\x80\xFD[P\x91\x02\x04\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xC6W_\x80\xFD[PV[_` \x82\x84\x03\x12\x15a\x08\xD9W_\x80\xFD[\x815a\x08\xE4\x81a\x08\xA5V[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t;Wa\t;a\x08\xEBV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t;Wa\t;a\x08\xEBV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t\xABWa\t\xABa\x08\xEBV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\t\xC2W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\xDCWa\t\xDCa\x08\xEBV[a\n\r` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\tdV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\n!W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\nMW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\nqWa\nqa\x08\xEBV[\x81`@R\x82\x93P\x845\x91Pa\n\x85\x82a\x08\xA5V[\x90\x82R` \x84\x015\x90a\n\x97\x82a\x08\xA5V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\n\xC1\x82a\x08\xA5V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\n\xDAW_\x80\xFD[Pa\n\xE7\x85\x82\x86\x01a\t\xB3V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x0B\x04W_\x80\xFD[a\x0B\x0Ca\t\x18V[\x90P\x815a\x0B\x19\x81a\x08\xA5V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0BPWa\x0BPa\x08\xEBV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x0BiW_\x80\xFD[\x815` a\x0B~a\x0By\x83a\x0B7V[a\tdV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0B\x9CW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x0B\xF3W\x81\x81\x8A\x03\x12\x15a\x0B\xB6W_\x80\xFD[a\x0B\xBEa\t\x18V[\x815a\x0B\xC9\x81a\x08\xA5V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x0B\xE2\x81a\x08\xA5V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0B\xA0V[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x0C\x10W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C'W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C:W_\x80\xFD[a\x0CBa\tAV[\x825\x82\x81\x11\x15a\x0CPW_\x80\xFD[a\x0C\\\x87\x82\x86\x01a\n=V[\x82RPa\x0Cl\x86` \x85\x01a\n\xF4V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x0C\x82W_\x80\xFD[a\x0C\x8E\x87\x82\x86\x01a\x0BZV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x0C\xA5W_\x80\xFD[a\x0C\xB1\x87\x82\x86\x01a\t\xB3V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x0C\xEFW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0C\xD3V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\r\x8AW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\r?V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x0E\x10a\x01\xC0\x84\x01\x82a\x0C\xCBV[\x90P` \x84\x01Qa\x0EN`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x0E\x89\x83\x83a\r,V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x0E\xA7\x82\x82a\x0C\xCBV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_` \x80\x83\x85\x03\x12\x15a\x0E\xCFW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xE5W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x0E\xF5W_\x80\xFD[\x80Qa\x0F\x03a\x0By\x82a\x0B7V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a\x0F!W_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a\x0F{W\x80\x85\x8A\x03\x12\x15a\x0F=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04q\x91\x90\x81\x01\x90a\x0E\xFDV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x04\x89\x82\x84a\x0F\xCDV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xA1Wa\x04\xA1a\t\x0CV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\nW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xBFW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x05[W\x85`@\x01Q\x81\x81Q\x81\x10a\x05.Wa\x05.a\x10\rV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x05HWa\x05Ha\x10\rV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x10V[P`\0\x80`\0[\x84\x81\x10\x15a\x08vW`\0\x87\x82\x81Q\x81\x10a\x05~Wa\x05~a\x10\rV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x06=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04c\x91\x90\x81\x01\x90a\x0E\xBEV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x04z\x82\x84a\x0F\x87V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\x92Wa\x04\x92a\x08\xEBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04\xFAW\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xB0W\x90P[P\x90P_[\x83\x81\x10\x15a\x05JW\x85`@\x01Q\x81\x81Q\x81\x10a\x05\x1DWa\x05\x1Da\x0F\xC5V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x057Wa\x057a\x0F\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04\xFFV[P_\x80_[\x84\x81\x10\x15a\x08ZW_\x87\x82\x81Q\x81\x10a\x05jWa\x05ja\x0F\xC5V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x06%W\x88\x81\x81Q\x81\x10a\x05\x90Wa\x05\x90a\x0F\xC5V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x06\x1DW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x01\x95V[`\x01\x01a\x05vV[P_\x80[\x88\x81\x10\x15a\x06\xE2W_\x8B`@\x01Q\x82\x81Q\x81\x10a\x06HWa\x06Ha\x0F\xC5V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x06\xD9W\x85\x15a\x06\xC3W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x06\xD2\x90\x84a\x0F\x87V[\x92P`\x01\x96P[P`\x01\x01a\x06)V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x07[W\x84\x15a\x07BW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x07T\x90\x82a\x0F\x87V[\x90P`\x01\x93P[\x80_\x03a\x07\xAFW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x01\x95V[a\x07\xBD\x81`\x05a'\x10a\x08kV[\x82` \x01Q\x11\x15a\x080W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x01\x95V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x08EWa\x08Ea\x0F\xC5V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x05OV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a\x08\x9EW_\x80\xFD[P\x91\x02\x04\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xC6W_\x80\xFD[PV[_` \x82\x84\x03\x12\x15a\x08\xD9W_\x80\xFD[\x815a\x08\xE4\x81a\x08\xA5V[\x93\x92PPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t;Wa\t;a\x08\xEBV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t;Wa\t;a\x08\xEBV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\t\xABWa\t\xABa\x08\xEBV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\t\xC2W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\xDCWa\t\xDCa\x08\xEBV[a\n\r` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\tdV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\n!W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\nMW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\nqWa\nqa\x08\xEBV[\x81`@R\x82\x93P\x845\x91Pa\n\x85\x82a\x08\xA5V[\x90\x82R` \x84\x015\x90a\n\x97\x82a\x08\xA5V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\n\xC1\x82a\x08\xA5V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\n\xDAW_\x80\xFD[Pa\n\xE7\x85\x82\x86\x01a\t\xB3V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x0B\x04W_\x80\xFD[a\x0B\x0Ca\t\x18V[\x90P\x815a\x0B\x19\x81a\x08\xA5V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0BPWa\x0BPa\x08\xEBV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x0BiW_\x80\xFD[\x815` a\x0B~a\x0By\x83a\x0B7V[a\tdV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0B\x9CW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x0B\xF3W\x81\x81\x8A\x03\x12\x15a\x0B\xB6W_\x80\xFD[a\x0B\xBEa\t\x18V[\x815a\x0B\xC9\x81a\x08\xA5V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x0B\xE2\x81a\x08\xA5V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0B\xA0V[P\x90\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x0C\x10W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C'W_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C:W_\x80\xFD[a\x0CBa\tAV[\x825\x82\x81\x11\x15a\x0CPW_\x80\xFD[a\x0C\\\x87\x82\x86\x01a\n=V[\x82RPa\x0Cl\x86` \x85\x01a\n\xF4V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x0C\x82W_\x80\xFD[a\x0C\x8E\x87\x82\x86\x01a\x0BZV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x0C\xA5W_\x80\xFD[a\x0C\xB1\x87\x82\x86\x01a\t\xB3V[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x93\x92PPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x0C\xEFW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0C\xD3V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\r\x8AW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\r?V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x0E\x10a\x01\xC0\x84\x01\x82a\x0C\xCBV[\x90P` \x84\x01Qa\x0EN`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x0E\x89\x83\x83a\r,V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x0E\xA7\x82\x82a\x0C\xCBV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_` \x80\x83\x85\x03\x12\x15a\x0E\xCFW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\xE5W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x0E\xF5W_\x80\xFD[\x80Qa\x0F\x03a\x0By\x82a\x0B7V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a\x0F!W_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a\x0F{W\x80\x85\x8A\x03\x12\x15a\x0F = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -670,17 +684,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -696,8 +721,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -966,14 +991,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -985,7 +1018,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1199,18 +1232,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1488,12 +1531,18 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity error DuplicateFeeOutput(address duplicateToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DuplicateFeeOutput { + #[allow(missing_docs)] pub duplicateToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1553,14 +1602,22 @@ error DuplicateFeeOutput(address duplicateToken); ```solidity error FeeTooLarge(address token, uint256 amount, address recipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct FeeTooLarge { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1572,7 +1629,7 @@ error FeeTooLarge(address token, uint256 amount, address recipient); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1638,10 +1695,15 @@ error FeeTooLarge(address token, uint256 amount, address recipient); ```solidity error InputAndOutputFees(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputFees {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1697,12 +1759,18 @@ error InputAndOutputFees(); ```solidity error InvalidFeeToken(address feeToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidFeeToken { + #[allow(missing_docs)] pub feeToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1762,7 +1830,12 @@ error InvalidFeeToken(address feeToken); ```solidity event OwnershipTransferred(address indexed user, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -1770,7 +1843,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1832,6 +1910,21 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1880,7 +1973,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ProtocolFeeControllerSet { #[allow(missing_docs)] @@ -1888,7 +1986,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle #[allow(missing_docs)] pub newFeeController: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1949,6 +2052,21 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -2000,9 +2118,10 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle ```solidity constructor(address _protocolFeeOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _protocolFeeOwner: alloy::sol_types::private::Address, } const _: () = { @@ -2064,16 +2183,22 @@ constructor(address _protocolFeeOwner); ```solidity function feeController() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerCall {} ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2177,16 +2302,22 @@ function feeController() external view returns (address); ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2290,16 +2421,22 @@ function owner() external view returns (address); ```solidity function setProtocolFeeController(address _newFeeController) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerCall { + #[allow(missing_docs)] pub _newFeeController: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2411,18 +2548,25 @@ function setProtocolFeeController(address _newFeeController) external; ```solidity function takeFees(ResolvedOrder memory order) external view returns (ResolvedOrder memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct takeFeesCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`takeFees(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](takeFeesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct takeFeesReturn { + #[allow(missing_docs)] pub _0: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2530,16 +2674,22 @@ function takeFees(ResolvedOrder memory order) external view returns (ResolvedOrd ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2649,10 +2799,15 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`MockProtocolFees`](self) function calls. pub enum MockProtocolFeesCalls { + #[allow(missing_docs)] feeController(feeControllerCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] setProtocolFeeController(setProtocolFeeControllerCall), + #[allow(missing_docs)] takeFees(takeFeesCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -2701,7 +2856,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2785,7 +2940,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -2848,9 +3003,13 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`MockProtocolFees`](self) custom errors. pub enum MockProtocolFeesErrors { + #[allow(missing_docs)] DuplicateFeeOutput(DuplicateFeeOutput), + #[allow(missing_docs)] FeeTooLarge(FeeTooLarge), + #[allow(missing_docs)] InputAndOutputFees(InputAndOutputFees), + #[allow(missing_docs)] InvalidFeeToken(InvalidFeeToken), } #[automatically_derived] @@ -2899,7 +3058,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2970,7 +3129,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3027,7 +3186,9 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`MockProtocolFees`](self) events. pub enum MockProtocolFeesEvents { + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), + #[allow(missing_docs)] ProtocolFeeControllerSet(ProtocolFeeControllerSet), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/mockresolvedorderlib.rs b/crates/bindings-uniswapx/src/mockresolvedorderlib.rs index f0ce57b..2e44c0a 100644 --- a/crates/bindings-uniswapx/src/mockresolvedorderlib.rs +++ b/crates/bindings-uniswapx/src/mockresolvedorderlib.rs @@ -156,41 +156,55 @@ interface MockResolvedOrderLib { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockResolvedOrderLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b506107b7806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806358c9edbf14610030575b600080fd5b61004361003e3660046104a0565b610045565b005b61004f8282610053565b5050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146100a4576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff161561004f578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906101209084908690600401610652565b60006040518083038186803b15801561013857600080fd5b505afa15801561014c573d6000803e3d6000fd5b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156101a6576101a6610154565b60405290565b60405160a0810167ffffffffffffffff811182821017156101a6576101a6610154565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561021657610216610154565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024057600080fd5b50565b803561024e8161021e565b919050565b600082601f83011261026457600080fd5b813567ffffffffffffffff81111561027e5761027e610154565b6102af60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016101cf565b8181528460208386010111156102c457600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156102f357600080fd5b60405160c0810167ffffffffffffffff828210818311171561031757610317610154565b816040528293508435915061032b8261021e565b90825260208401359061033d8261021e565b8160208401526040850135604084015260608501356060840152608085013591506103678261021e565b81608084015260a085013591508082111561038157600080fd5b5061038e85828601610253565b60a0830152505092915050565b6000606082840312156103ad57600080fd5b6103b5610183565b905081356103c28161021e565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126103f157600080fd5b8135602067ffffffffffffffff82111561040d5761040d610154565b61041b818360051b016101cf565b8281526060928302850182019282820191908785111561043a57600080fd5b8387015b858110156104935781818a0312156104565760008081fd5b61045e610183565b81356104698161021e565b815281860135868201526040808301356104828161021e565b90820152845292840192810161043e565b5090979650505050505050565b600080604083850312156104b357600080fd5b823567ffffffffffffffff808211156104cb57600080fd5b9084019060e082870312156104df57600080fd5b6104e76101ac565b8235828111156104f657600080fd5b610502888286016102e1565b825250610512876020850161039b565b602082015260808301358281111561052957600080fd5b610535888286016103e0565b60408301525060a08301358281111561054d57600080fd5b61055988828601610253565b60608301525060c09290920135608083015250915061057a60208401610243565b90509250929050565b6000815180845260005b818110156105a95760208185018101518683018201520161058d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60008151808452602080850194506020840160005b83811015610647578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105fc565b509495945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152835160e06040850152818151166101208501528160208201511661014085015260408101516101608501526060810151610180850152816080820151166101a085015260a081015191505060c06101c08401526106d66101e0840182610583565b602085810151805173ffffffffffffffffffffffffffffffffffffffff166060870152908101516080860152604081015160a08601529091505060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808584030160c086015261074a83836105e7565b925060608601519150808584030160e0860152506107688282610583565b915050608084015161010084015280915050939250505056fea264697066735822122036bb01e84460349eb6c259a43b66b62927ee5a5a5c850137de4dd9dd66ca425264736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506107928061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c806358c9edbf1461002d575b5f80fd5b61004061003b366004610488565b610042565b005b61004c8282610050565b5050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146100a1576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff161561004c578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b9061011d908490869060040161062e565b5f6040518083038186803b158015610133575f80fd5b505afa158015610145573d5f803e3d5ffd5b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561019d5761019d61014d565b60405290565b60405160a0810167ffffffffffffffff8111828210171561019d5761019d61014d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561020d5761020d61014d565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610236575f80fd5b50565b803561024481610215565b919050565b5f82601f830112610258575f80fd5b813567ffffffffffffffff8111156102725761027261014d565b6102a360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016101c6565b8181528460208386010111156102b7575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156102e3575f80fd5b60405160c0810167ffffffffffffffff82821081831117156103075761030761014d565b816040528293508435915061031b82610215565b90825260208401359061032d82610215565b81602084015260408501356040840152606085013560608401526080850135915061035782610215565b81608084015260a0850135915080821115610370575f80fd5b5061037d85828601610249565b60a0830152505092915050565b5f6060828403121561039a575f80fd5b6103a261017a565b905081356103af81610215565b80825250602082013560208201526040820135604082015292915050565b5f82601f8301126103dc575f80fd5b8135602067ffffffffffffffff8211156103f8576103f861014d565b610406818360051b016101c6565b82815260609283028501820192828201919087851115610424575f80fd5b8387015b8581101561047b5781818a03121561043e575f80fd5b61044661017a565b813561045181610215565b8152818601358682015260408083013561046a81610215565b908201528452928401928101610428565b5090979650505050505050565b5f8060408385031215610499575f80fd5b823567ffffffffffffffff808211156104b0575f80fd5b9084019060e082870312156104c3575f80fd5b6104cb6101a3565b8235828111156104d9575f80fd5b6104e5888286016102d3565b8252506104f5876020850161038a565b602082015260808301358281111561050b575f80fd5b610517888286016103cd565b60408301525060a08301358281111561052e575f80fd5b61053a88828601610249565b60608301525060c09290920135608083015250915061055b60208401610239565b90509250929050565b5f81518084525f5b818110156105885760208185018101518683018201520161056c565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815180845260208085019450602084015f5b83811015610623578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105d8565b509495945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff808516835260406020840152835160e06040850152818151166101208501528160208201511661014085015260408101516101608501526060810151610180850152816080820151166101a085015260a081015191505060c06101c08401526106b16101e0840182610564565b602085810151805173ffffffffffffffffffffffffffffffffffffffff166060870152908101516080860152604081015160a08601529091505060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808584030160c086015261072583836105c5565b925060608601519150808584030160e0860152506107438282610564565b915050608084015161010084015280915050939250505056fea2646970667358221220ab72729f0710eba4b6f07cf464d284f05d43b9b62dd43649a5574a2c89bf740e64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x07\xB7\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cX\xC9\xED\xBF\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x04\xA0V[a\0EV[\0[a\0O\x82\x82a\0SV[PPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\0\xA4W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\0OW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x01 \x90\x84\x90\x86\x90`\x04\x01a\x06RV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x018W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x01LW=`\0\x80>=`\0\xFD[PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\xA6Wa\x01\xA6a\x01TV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\xA6Wa\x01\xA6a\x01TV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\x16Wa\x02\x16a\x01TV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02@W`\0\x80\xFD[PV[\x805a\x02N\x81a\x02\x1EV[\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x02dW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02~Wa\x02~a\x01TV[a\x02\xAF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x01\xCFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x02\xC4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x02\xF3W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x03\x17Wa\x03\x17a\x01TV[\x81`@R\x82\x93P\x845\x91Pa\x03+\x82a\x02\x1EV[\x90\x82R` \x84\x015\x90a\x03=\x82a\x02\x1EV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x03g\x82a\x02\x1EV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x03\x81W`\0\x80\xFD[Pa\x03\x8E\x85\x82\x86\x01a\x02SV[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x03\xADW`\0\x80\xFD[a\x03\xB5a\x01\x83V[\x90P\x815a\x03\xC2\x81a\x02\x1EV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x03\xF1W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04\rWa\x04\ra\x01TV[a\x04\x1B\x81\x83`\x05\x1B\x01a\x01\xCFV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x04:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x04\x93W\x81\x81\x8A\x03\x12\x15a\x04VW`\0\x80\x81\xFD[a\x04^a\x01\x83V[\x815a\x04i\x81a\x02\x1EV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x04\x82\x81a\x02\x1EV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x04>V[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xB3W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xCBW`\0\x80\xFD[\x90\x84\x01\x90`\xE0\x82\x87\x03\x12\x15a\x04\xDFW`\0\x80\xFD[a\x04\xE7a\x01\xACV[\x825\x82\x81\x11\x15a\x04\xF6W`\0\x80\xFD[a\x05\x02\x88\x82\x86\x01a\x02\xE1V[\x82RPa\x05\x12\x87` \x85\x01a\x03\x9BV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x05)W`\0\x80\xFD[a\x055\x88\x82\x86\x01a\x03\xE0V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x05MW`\0\x80\xFD[a\x05Y\x88\x82\x86\x01a\x02SV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x91Pa\x05z` \x84\x01a\x02CV[\x90P\x92P\x92\x90PV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x05\xA9W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05\x8DV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x06GW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xFCV[P\x94\x95\x94PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x83R`@` \x84\x01R\x83Q`\xE0`@\x85\x01R\x81\x81Q\x16a\x01 \x85\x01R\x81` \x82\x01Q\x16a\x01@\x85\x01R`@\x81\x01Qa\x01`\x85\x01R``\x81\x01Qa\x01\x80\x85\x01R\x81`\x80\x82\x01Q\x16a\x01\xA0\x85\x01R`\xA0\x81\x01Q\x91PP`\xC0a\x01\xC0\x84\x01Ra\x06\xD6a\x01\xE0\x84\x01\x82a\x05\x83V[` \x85\x81\x01Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x87\x01R\x90\x81\x01Q`\x80\x86\x01R`@\x81\x01Q`\xA0\x86\x01R\x90\x91PP`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x80\x85\x84\x03\x01`\xC0\x86\x01Ra\x07J\x83\x83a\x05\xE7V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xE0\x86\x01RPa\x07h\x82\x82a\x05\x83V[\x91PP`\x80\x84\x01Qa\x01\0\x84\x01R\x80\x91PP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 6\xBB\x01\xE8D`4\x9E\xB6\xC2Y\xA4;f\xB6)'\xEEZZ\\\x85\x017\xDEM\xD9\xDDf\xCABRdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x07\x92\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cX\xC9\xED\xBF\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x04\x88V[a\0BV[\0[a\0L\x82\x82a\0PV[PPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\0\xA1W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\0LW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x01\x1D\x90\x84\x90\x86\x90`\x04\x01a\x06.V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x013W_\x80\xFD[PZ\xFA\x15\x80\x15a\x01EW=_\x80>=_\xFD[PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9DWa\x01\x9Da\x01MV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9DWa\x01\x9Da\x01MV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\rWa\x02\ra\x01MV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x026W_\x80\xFD[PV[\x805a\x02D\x81a\x02\x15V[\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x02XW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02rWa\x02ra\x01MV[a\x02\xA3` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x01\xC6V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x02\xB7W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x02\xE3W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x03\x07Wa\x03\x07a\x01MV[\x81`@R\x82\x93P\x845\x91Pa\x03\x1B\x82a\x02\x15V[\x90\x82R` \x84\x015\x90a\x03-\x82a\x02\x15V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x03W\x82a\x02\x15V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x03pW_\x80\xFD[Pa\x03}\x85\x82\x86\x01a\x02IV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x03\x9AW_\x80\xFD[a\x03\xA2a\x01zV[\x90P\x815a\x03\xAF\x81a\x02\x15V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x03\xDCW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x03\xF8Wa\x03\xF8a\x01MV[a\x04\x06\x81\x83`\x05\x1B\x01a\x01\xC6V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x04$W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x04{W\x81\x81\x8A\x03\x12\x15a\x04>W_\x80\xFD[a\x04Fa\x01zV[\x815a\x04Q\x81a\x02\x15V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x04j\x81a\x02\x15V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x04(V[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\x99W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xB0W_\x80\xFD[\x90\x84\x01\x90`\xE0\x82\x87\x03\x12\x15a\x04\xC3W_\x80\xFD[a\x04\xCBa\x01\xA3V[\x825\x82\x81\x11\x15a\x04\xD9W_\x80\xFD[a\x04\xE5\x88\x82\x86\x01a\x02\xD3V[\x82RPa\x04\xF5\x87` \x85\x01a\x03\x8AV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x05\x0BW_\x80\xFD[a\x05\x17\x88\x82\x86\x01a\x03\xCDV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x05.W_\x80\xFD[a\x05:\x88\x82\x86\x01a\x02IV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x91Pa\x05[` \x84\x01a\x029V[\x90P\x92P\x92\x90PV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x05\x88W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05lV[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x06#W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xD8V[P\x94\x95\x94PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x83R`@` \x84\x01R\x83Q`\xE0`@\x85\x01R\x81\x81Q\x16a\x01 \x85\x01R\x81` \x82\x01Q\x16a\x01@\x85\x01R`@\x81\x01Qa\x01`\x85\x01R``\x81\x01Qa\x01\x80\x85\x01R\x81`\x80\x82\x01Q\x16a\x01\xA0\x85\x01R`\xA0\x81\x01Q\x91PP`\xC0a\x01\xC0\x84\x01Ra\x06\xB1a\x01\xE0\x84\x01\x82a\x05dV[` \x85\x81\x01Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x87\x01R\x90\x81\x01Q`\x80\x86\x01R`@\x81\x01Q`\xA0\x86\x01R\x90\x91PP`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x80\x85\x84\x03\x01`\xC0\x86\x01Ra\x07%\x83\x83a\x05\xC5V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xE0\x86\x01RPa\x07C\x82\x82a\x05dV[\x91PP`\x80\x84\x01Qa\x01\0\x84\x01R\x80\x91PP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xABrr\x9F\x07\x10\xEB\xA4\xB6\xF0|\xF4d\xD2\x84\xF0]C\xB9\xB6-\xD46I\xA5WJ,\x89\xBFt\x0EdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806358c9edbf14610030575b600080fd5b61004361003e3660046104a0565b610045565b005b61004f8282610053565b5050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146100a4576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff161561004f578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906101209084908690600401610652565b60006040518083038186803b15801561013857600080fd5b505afa15801561014c573d6000803e3d6000fd5b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156101a6576101a6610154565b60405290565b60405160a0810167ffffffffffffffff811182821017156101a6576101a6610154565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561021657610216610154565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024057600080fd5b50565b803561024e8161021e565b919050565b600082601f83011261026457600080fd5b813567ffffffffffffffff81111561027e5761027e610154565b6102af60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016101cf565b8181528460208386010111156102c457600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156102f357600080fd5b60405160c0810167ffffffffffffffff828210818311171561031757610317610154565b816040528293508435915061032b8261021e565b90825260208401359061033d8261021e565b8160208401526040850135604084015260608501356060840152608085013591506103678261021e565b81608084015260a085013591508082111561038157600080fd5b5061038e85828601610253565b60a0830152505092915050565b6000606082840312156103ad57600080fd5b6103b5610183565b905081356103c28161021e565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126103f157600080fd5b8135602067ffffffffffffffff82111561040d5761040d610154565b61041b818360051b016101cf565b8281526060928302850182019282820191908785111561043a57600080fd5b8387015b858110156104935781818a0312156104565760008081fd5b61045e610183565b81356104698161021e565b815281860135868201526040808301356104828161021e565b90820152845292840192810161043e565b5090979650505050505050565b600080604083850312156104b357600080fd5b823567ffffffffffffffff808211156104cb57600080fd5b9084019060e082870312156104df57600080fd5b6104e76101ac565b8235828111156104f657600080fd5b610502888286016102e1565b825250610512876020850161039b565b602082015260808301358281111561052957600080fd5b610535888286016103e0565b60408301525060a08301358281111561054d57600080fd5b61055988828601610253565b60608301525060c09290920135608083015250915061057a60208401610243565b90509250929050565b6000815180845260005b818110156105a95760208185018101518683018201520161058d565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60008151808452602080850194506020840160005b83811015610647578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105fc565b509495945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152835160e06040850152818151166101208501528160208201511661014085015260408101516101608501526060810151610180850152816080820151166101a085015260a081015191505060c06101c08401526106d66101e0840182610583565b602085810151805173ffffffffffffffffffffffffffffffffffffffff166060870152908101516080860152604081015160a08601529091505060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808584030160c086015261074a83836105e7565b925060608601519150808584030160e0860152506107688282610583565b915050608084015161010084015280915050939250505056fea264697066735822122036bb01e84460349eb6c259a43b66b62927ee5a5a5c850137de4dd9dd66ca425264736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b5060043610610029575f3560e01c806358c9edbf1461002d575b5f80fd5b61004061003b366004610488565b610042565b005b61004c8282610050565b5050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146100a1576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff161561004c578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b9061011d908490869060040161062e565b5f6040518083038186803b158015610133575f80fd5b505afa158015610145573d5f803e3d5ffd5b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561019d5761019d61014d565b60405290565b60405160a0810167ffffffffffffffff8111828210171561019d5761019d61014d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561020d5761020d61014d565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610236575f80fd5b50565b803561024481610215565b919050565b5f82601f830112610258575f80fd5b813567ffffffffffffffff8111156102725761027261014d565b6102a360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016101c6565b8181528460208386010111156102b7575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156102e3575f80fd5b60405160c0810167ffffffffffffffff82821081831117156103075761030761014d565b816040528293508435915061031b82610215565b90825260208401359061032d82610215565b81602084015260408501356040840152606085013560608401526080850135915061035782610215565b81608084015260a0850135915080821115610370575f80fd5b5061037d85828601610249565b60a0830152505092915050565b5f6060828403121561039a575f80fd5b6103a261017a565b905081356103af81610215565b80825250602082013560208201526040820135604082015292915050565b5f82601f8301126103dc575f80fd5b8135602067ffffffffffffffff8211156103f8576103f861014d565b610406818360051b016101c6565b82815260609283028501820192828201919087851115610424575f80fd5b8387015b8581101561047b5781818a03121561043e575f80fd5b61044661017a565b813561045181610215565b8152818601358682015260408083013561046a81610215565b908201528452928401928101610428565b5090979650505050505050565b5f8060408385031215610499575f80fd5b823567ffffffffffffffff808211156104b0575f80fd5b9084019060e082870312156104c3575f80fd5b6104cb6101a3565b8235828111156104d9575f80fd5b6104e5888286016102d3565b8252506104f5876020850161038a565b602082015260808301358281111561050b575f80fd5b610517888286016103cd565b60408301525060a08301358281111561052e575f80fd5b61053a88828601610249565b60608301525060c09290920135608083015250915061055b60208401610239565b90509250929050565b5f81518084525f5b818110156105885760208185018101518683018201520161056c565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815180845260208085019450602084015f5b83811015610623578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105d8565b509495945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff808516835260406020840152835160e06040850152818151166101208501528160208201511661014085015260408101516101608501526060810151610180850152816080820151166101a085015260a081015191505060c06101c08401526106b16101e0840182610564565b602085810151805173ffffffffffffffffffffffffffffffffffffffff166060870152908101516080860152604081015160a08601529091505060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808584030160c086015261072583836105c5565b925060608601519150808584030160e0860152506107438282610564565b915050608084015161010084015280915050939250505056fea2646970667358221220ab72729f0710eba4b6f07cf464d284f05d43b9b62dd43649a5574a2c89bf740e64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80cX\xC9\xED\xBF\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x04\xA0V[a\0EV[\0[a\0O\x82\x82a\0SV[PPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\0\xA4W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\0OW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x01 \x90\x84\x90\x86\x90`\x04\x01a\x06RV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x018W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x01LW=`\0\x80>=`\0\xFD[PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\xA6Wa\x01\xA6a\x01TV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\xA6Wa\x01\xA6a\x01TV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\x16Wa\x02\x16a\x01TV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x02@W`\0\x80\xFD[PV[\x805a\x02N\x81a\x02\x1EV[\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x02dW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02~Wa\x02~a\x01TV[a\x02\xAF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x01\xCFV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x02\xC4W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x02\xF3W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x03\x17Wa\x03\x17a\x01TV[\x81`@R\x82\x93P\x845\x91Pa\x03+\x82a\x02\x1EV[\x90\x82R` \x84\x015\x90a\x03=\x82a\x02\x1EV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x03g\x82a\x02\x1EV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x03\x81W`\0\x80\xFD[Pa\x03\x8E\x85\x82\x86\x01a\x02SV[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x03\xADW`\0\x80\xFD[a\x03\xB5a\x01\x83V[\x90P\x815a\x03\xC2\x81a\x02\x1EV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x03\xF1W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04\rWa\x04\ra\x01TV[a\x04\x1B\x81\x83`\x05\x1B\x01a\x01\xCFV[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x04:W`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x04\x93W\x81\x81\x8A\x03\x12\x15a\x04VW`\0\x80\x81\xFD[a\x04^a\x01\x83V[\x815a\x04i\x81a\x02\x1EV[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x04\x82\x81a\x02\x1EV[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x04>V[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xB3W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xCBW`\0\x80\xFD[\x90\x84\x01\x90`\xE0\x82\x87\x03\x12\x15a\x04\xDFW`\0\x80\xFD[a\x04\xE7a\x01\xACV[\x825\x82\x81\x11\x15a\x04\xF6W`\0\x80\xFD[a\x05\x02\x88\x82\x86\x01a\x02\xE1V[\x82RPa\x05\x12\x87` \x85\x01a\x03\x9BV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x05)W`\0\x80\xFD[a\x055\x88\x82\x86\x01a\x03\xE0V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x05MW`\0\x80\xFD[a\x05Y\x88\x82\x86\x01a\x02SV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x91Pa\x05z` \x84\x01a\x02CV[\x90P\x92P\x92\x90PV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x05\xA9W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05\x8DV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x06GW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xFCV[P\x94\x95\x94PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x83R`@` \x84\x01R\x83Q`\xE0`@\x85\x01R\x81\x81Q\x16a\x01 \x85\x01R\x81` \x82\x01Q\x16a\x01@\x85\x01R`@\x81\x01Qa\x01`\x85\x01R``\x81\x01Qa\x01\x80\x85\x01R\x81`\x80\x82\x01Q\x16a\x01\xA0\x85\x01R`\xA0\x81\x01Q\x91PP`\xC0a\x01\xC0\x84\x01Ra\x06\xD6a\x01\xE0\x84\x01\x82a\x05\x83V[` \x85\x81\x01Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x87\x01R\x90\x81\x01Q`\x80\x86\x01R`@\x81\x01Q`\xA0\x86\x01R\x90\x91PP`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x80\x85\x84\x03\x01`\xC0\x86\x01Ra\x07J\x83\x83a\x05\xE7V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xE0\x86\x01RPa\x07h\x82\x82a\x05\x83V[\x91PP`\x80\x84\x01Qa\x01\0\x84\x01R\x80\x91PP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 6\xBB\x01\xE8D`4\x9E\xB6\xC2Y\xA4;f\xB6)'\xEEZZ\\\x85\x017\xDEM\xD9\xDDf\xCABRdsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cX\xC9\xED\xBF\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x04\x88V[a\0BV[\0[a\0L\x82\x82a\0PV[PPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\0\xA1W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\0LW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x01\x1D\x90\x84\x90\x86\x90`\x04\x01a\x06.V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x013W_\x80\xFD[PZ\xFA\x15\x80\x15a\x01EW=_\x80>=_\xFD[PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9DWa\x01\x9Da\x01MV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9DWa\x01\x9Da\x01MV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\rWa\x02\ra\x01MV[`@R\x91\x90PV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x026W_\x80\xFD[PV[\x805a\x02D\x81a\x02\x15V[\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x02XW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02rWa\x02ra\x01MV[a\x02\xA3` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x01\xC6V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x02\xB7W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a\x02\xE3W_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x03\x07Wa\x03\x07a\x01MV[\x81`@R\x82\x93P\x845\x91Pa\x03\x1B\x82a\x02\x15V[\x90\x82R` \x84\x015\x90a\x03-\x82a\x02\x15V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x03W\x82a\x02\x15V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x03pW_\x80\xFD[Pa\x03}\x85\x82\x86\x01a\x02IV[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x03\x9AW_\x80\xFD[a\x03\xA2a\x01zV[\x90P\x815a\x03\xAF\x81a\x02\x15V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x03\xDCW_\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x03\xF8Wa\x03\xF8a\x01MV[a\x04\x06\x81\x83`\x05\x1B\x01a\x01\xC6V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x04$W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x04{W\x81\x81\x8A\x03\x12\x15a\x04>W_\x80\xFD[a\x04Fa\x01zV[\x815a\x04Q\x81a\x02\x15V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x04j\x81a\x02\x15V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x04(V[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\x99W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xB0W_\x80\xFD[\x90\x84\x01\x90`\xE0\x82\x87\x03\x12\x15a\x04\xC3W_\x80\xFD[a\x04\xCBa\x01\xA3V[\x825\x82\x81\x11\x15a\x04\xD9W_\x80\xFD[a\x04\xE5\x88\x82\x86\x01a\x02\xD3V[\x82RPa\x04\xF5\x87` \x85\x01a\x03\x8AV[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x05\x0BW_\x80\xFD[a\x05\x17\x88\x82\x86\x01a\x03\xCDV[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x05.W_\x80\xFD[a\x05:\x88\x82\x86\x01a\x02IV[``\x83\x01RP`\xC0\x92\x90\x92\x015`\x80\x83\x01RP\x91Pa\x05[` \x84\x01a\x029V[\x90P\x92P\x92\x90PV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x05\x88W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x05lV[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x06#W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xD8V[P\x94\x95\x94PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x83R`@` \x84\x01R\x83Q`\xE0`@\x85\x01R\x81\x81Q\x16a\x01 \x85\x01R\x81` \x82\x01Q\x16a\x01@\x85\x01R`@\x81\x01Qa\x01`\x85\x01R``\x81\x01Qa\x01\x80\x85\x01R\x81`\x80\x82\x01Q\x16a\x01\xA0\x85\x01R`\xA0\x81\x01Q\x91PP`\xC0a\x01\xC0\x84\x01Ra\x06\xB1a\x01\xE0\x84\x01\x82a\x05dV[` \x85\x81\x01Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x87\x01R\x90\x81\x01Q`\x80\x86\x01R`@\x81\x01Q`\xA0\x86\x01R\x90\x91PP`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x80\x85\x84\x03\x01`\xC0\x86\x01Ra\x07%\x83\x83a\x05\xC5V[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xE0\x86\x01RPa\x07C\x82\x82a\x05dV[\x91PP`\x80\x84\x01Qa\x01\0\x84\x01R\x80\x91PP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xABrr\x9F\x07\x10\xEB\xA4\xB6\xF0|\xF4d\xD2\x84\xF0]C\xB9\xB6-\xD46I\xA5WJ,\x89\xBFt\x0EdsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -202,8 +216,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -420,17 +434,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -446,8 +471,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -716,14 +741,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -735,7 +768,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -949,18 +982,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1238,10 +1281,15 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity error InvalidReactor(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidReactor {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1297,17 +1345,24 @@ error InvalidReactor(); ```solidity function validate(ResolvedOrder memory resolvedOrder, address filler) external view; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct validateCall { + #[allow(missing_docs)] pub resolvedOrder: ::RustType, + #[allow(missing_docs)] pub filler: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`validate(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32),address)`](validateCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct validateReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1425,6 +1480,7 @@ function validate(ResolvedOrder memory resolvedOrder, address filler) external v }; ///Container for all the [`MockResolvedOrderLib`](self) function calls. pub enum MockResolvedOrderLibCalls { + #[allow(missing_docs)] validate(validateCall), } #[automatically_derived] @@ -1457,7 +1513,7 @@ function validate(ResolvedOrder memory resolvedOrder, address filler) external v Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1489,7 +1545,7 @@ function validate(ResolvedOrder memory resolvedOrder, address filler) external v ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -1513,6 +1569,7 @@ function validate(ResolvedOrder memory resolvedOrder, address filler) external v } ///Container for all the [`MockResolvedOrderLib`](self) custom errors. pub enum MockResolvedOrderLibErrors { + #[allow(missing_docs)] InvalidReactor(InvalidReactor), } #[automatically_derived] @@ -1547,7 +1604,7 @@ function validate(ResolvedOrder memory resolvedOrder, address filler) external v Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1579,7 +1636,7 @@ function validate(ResolvedOrder memory resolvedOrder, address filler) external v ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/mockswapper.rs b/crates/bindings-uniswapx/src/mockswapper.rs index fbc3364..a5e8363 100644 --- a/crates/bindings-uniswapx/src/mockswapper.rs +++ b/crates/bindings-uniswapx/src/mockswapper.rs @@ -35,46 +35,60 @@ interface MockSwapper { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockSwapper { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b506101a8806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e1f21c6714610030575b600080fd5b61004361003e36600461010d565b610045565b005b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b3906044016020604051808303816000875af11580156100ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100de9190610149565b50505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461010857600080fd5b919050565b60008060006060848603121561012257600080fd5b61012b846100e4565b9250610139602085016100e4565b9150604084013590509250925092565b60006020828403121561015b57600080fd5b8151801515811461016b57600080fd5b939250505056fea264697066735822122047980d601297fff2b607d4e7b450dca85a4f313cef786b9bf453061ff8d8d7f164736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b5061019b8061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063e1f21c671461002d575b5f80fd5b61004061003b366004610106565b610042565b005b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b3906044016020604051808303815f875af11580156100b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100d8919061013f565b50505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610101575f80fd5b919050565b5f805f60608486031215610118575f80fd5b610121846100de565b925061012f602085016100de565b9150604084013590509250925092565b5f6020828403121561014f575f80fd5b8151801515811461015e575f80fd5b939250505056fea2646970667358221220fd2d4e1a61da309721fdc206b011e942fc45ae61ce6fb722156ea5403ae5d26f64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x01\xA8\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80c\xE1\xF2\x1Cg\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01\rV[a\0EV[\0[`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`$\x82\x01\x83\x90R\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\0\xBAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xDE\x91\x90a\x01IV[PPPPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\x08W`\0\x80\xFD[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x01\"W`\0\x80\xFD[a\x01+\x84a\0\xE4V[\x92Pa\x019` \x85\x01a\0\xE4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x01[W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x01kW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 G\x98\r`\x12\x97\xFF\xF2\xB6\x07\xD4\xE7\xB4P\xDC\xA8ZO1<\xEFxk\x9B\xF4S\x06\x1F\xF8\xD8\xD7\xF1dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x01\x9B\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80c\xE1\xF2\x1Cg\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x01\x06V[a\0BV[\0[`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`$\x82\x01\x83\x90R\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\0\xB4W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xD8\x91\x90a\x01?V[PPPPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\x01W_\x80\xFD[\x91\x90PV[_\x80_``\x84\x86\x03\x12\x15a\x01\x18W_\x80\xFD[a\x01!\x84a\0\xDEV[\x92Pa\x01/` \x85\x01a\0\xDEV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x01OW_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x01^W_\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xFD-N\x1Aa\xDA0\x97!\xFD\xC2\x06\xB0\x11\xE9B\xFCE\xAEa\xCEo\xB7\"\x15n\xA5@:\xE5\xD2odsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e1f21c6714610030575b600080fd5b61004361003e36600461010d565b610045565b005b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b3906044016020604051808303816000875af11580156100ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100de9190610149565b50505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461010857600080fd5b919050565b60008060006060848603121561012257600080fd5b61012b846100e4565b9250610139602085016100e4565b9150604084013590509250925092565b60006020828403121561015b57600080fd5b8151801515811461016b57600080fd5b939250505056fea264697066735822122047980d601297fff2b607d4e7b450dca85a4f313cef786b9bf453061ff8d8d7f164736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063e1f21c671461002d575b5f80fd5b61004061003b366004610106565b610042565b005b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063095ea7b3906044016020604051808303815f875af11580156100b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100d8919061013f565b50505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610101575f80fd5b919050565b5f805f60608486031215610118575f80fd5b610121846100de565b925061012f602085016100de565b9150604084013590509250925092565b5f6020828403121561014f575f80fd5b8151801515811461015e575f80fd5b939250505056fea2646970667358221220fd2d4e1a61da309721fdc206b011e942fc45ae61ce6fb722156ea5403ae5d26f64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0+W`\x005`\xE0\x1C\x80c\xE1\xF2\x1Cg\x14a\x000W[`\0\x80\xFD[a\0Ca\0>6`\x04a\x01\rV[a\0EV[\0[`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`$\x82\x01\x83\x90R\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\0\xBAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xDE\x91\x90a\x01IV[PPPPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\x08W`\0\x80\xFD[\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x01\"W`\0\x80\xFD[a\x01+\x84a\0\xE4V[\x92Pa\x019` \x85\x01a\0\xE4V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x01[W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x01kW`\0\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 G\x98\r`\x12\x97\xFF\xF2\xB6\x07\xD4\xE7\xB4P\xDC\xA8ZO1<\xEFxk\x9B\xF4S\x06\x1F\xF8\xD8\xD7\xF1dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80c\xE1\xF2\x1Cg\x14a\0-W[_\x80\xFD[a\0@a\0;6`\x04a\x01\x06V[a\0BV[\0[`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`$\x82\x01\x83\x90R\x84\x16\x90c\t^\xA7\xB3\x90`D\x01` `@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\0\xB4W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xD8\x91\x90a\x01?V[PPPPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01\x01W_\x80\xFD[\x91\x90PV[_\x80_``\x84\x86\x03\x12\x15a\x01\x18W_\x80\xFD[a\x01!\x84a\0\xDEV[\x92Pa\x01/` \x85\x01a\0\xDEV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x01OW_\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x01^W_\x80\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xFD-N\x1Aa\xDA0\x97!\xFD\xC2\x06\xB0\x11\xE9B\xFCE\xAEa\xCEo\xB7\"\x15n\xA5@:\xE5\xD2odsolcC\0\x08\x18\x003", ); /**Function with signature `approve(address,address,uint256)` and selector `0xe1f21c67`. ```solidity function approve(address token, address to, uint256 amount) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveCall { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`approve(address,address,uint256)`](approveCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -88,7 +102,7 @@ function approve(address token, address to, uint256 amount) external; type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -202,6 +216,7 @@ function approve(address token, address to, uint256 amount) external; }; ///Container for all the [`MockSwapper`](self) function calls. pub enum MockSwapperCalls { + #[allow(missing_docs)] approve(approveCall), } #[automatically_derived] @@ -234,7 +249,7 @@ function approve(address token, address to, uint256 amount) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -266,7 +281,7 @@ function approve(address token, address to, uint256 amount) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -454,7 +469,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, token: alloy::sol_types::private::Address, to: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&approveCall { token, to, amount }) } diff --git a/crates/bindings-uniswapx/src/mockswaprouter.rs b/crates/bindings-uniswapx/src/mockswaprouter.rs index 11b06d5..2a66878 100644 --- a/crates/bindings-uniswapx/src/mockswaprouter.rs +++ b/crates/bindings-uniswapx/src/mockswaprouter.rs @@ -154,42 +154,57 @@ interface MockSwapRouter { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockSwapRouter { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a060405261271060005534801561001657600080fd5b50604051610fc2380380610fc283398101604081905261003591610046565b6001600160a01b0316608052610076565b60006020828403121561005857600080fd5b81516001600160a01b038116811461006f57600080fd5b9392505050565b608051610f326100906000396000607c0152610f326000f3fe6080604052600436106100655760003560e01c80637772e904116100435780637772e9041461010c578063b858183f14610122578063f4cde4691461014257600080fd5b80634aa4a4fc1461006a5780635ae401dc146100c8578063698518e5146100e8575b600080fd5b34801561007657600080fd5b5061009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d6366004610a9d565b610164565b6040516100bf9190610b8a565b3480156100f457600080fd5b506100fe60005481565b6040519081526020016100bf565b34801561011857600080fd5b506100fe61271081565b34801561012e57600080fd5b506100fe61013d366004610c0c565b6102d5565b34801561014e57600080fd5b5061016261015d366004610c4e565b600055565b005b60608167ffffffffffffffff81111561017f5761017f610c67565b6040519080825280602002602001820160405280156101b257816020015b606081526020019060019003908161019d5790505b50905060005b828110156102cd57600080308686858181106101d6576101d6610c96565b90506020028101906101e89190610cc5565b6040516101f6929190610d31565b600060405180830381855af49150503d8060008114610231576040519150601f19603f3d011682016040523d82523d6000602084013e610236565b606091505b5091509150816102a55760448151101561024f57600080fd5b600481019050808060200190518101906102699190610d41565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029c9190610e0c565b60405180910390fd5b808484815181106102b8576102b8610c96565b602090810291909101015250506001016101b8565b509392505050565b6000806102e28380610cc5565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945061032492508491506104449050565b505090505b61033282610480565b1561034757610340826104ba565b9150610329565b600061035283610444565b50915050612710600054866040013561036b9190610e4e565b6103759190610e65565b935084606001358410156103e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604482015260640161029c565b61040b73ffffffffffffffffffffffffffffffffffffffff8316333060408901356104f1565b61043c61041e6040870160208801610ea0565b73ffffffffffffffffffffffffffffffffffffffff831690866105e3565b505050919050565b6000808061045284826106b8565b925061045f8460146107bc565b905061047761047060036014610ed6565b85906106b8565b91509193909250565b600061048e60036014610ed6565b601461049b600382610ed6565b6104a59190610ed6565b6104af9190610ed6565b825110159050919050565b60606104eb6104cb60036014610ed6565b6104d760036014610ed6565b84516104e39190610ee9565b8491906108b0565b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806105dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c4544000000000000000000000000604482015260640161029c565b5050505050565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806106b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161029c565b50505050565b6000816106c6816014610ed6565b101561072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015260640161029c565b610739826014610ed6565b835110156107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015260640161029c565b5001602001516c01000000000000000000000000900490565b6000816107ca816003610ed6565b1015610832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015260640161029c565b61083d826003610ed6565b835110156108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015260640161029c565b50016003015190565b6060816108be81601f610ed6565b1015610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161029c565b826109318382610ed6565b1015610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161029c565b6109a38284610ed6565b84511015610a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161029c565b606082158015610a2c5760405191506000825260208201604052610a94565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610a65578051835260209283019201610a4d565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b600080600060408486031215610ab257600080fd5b83359250602084013567ffffffffffffffff80821115610ad157600080fd5b818601915086601f830112610ae557600080fd5b813581811115610af457600080fd5b8760208260051b8501011115610b0957600080fd5b6020830194508093505050509250925092565b60005b83811015610b37578181015183820152602001610b1f565b50506000910152565b60008151808452610b58816020860160208601610b1c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015610bff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610bed858351610b40565b94509285019290850190600101610bb3565b5092979650505050505050565b600060208284031215610c1e57600080fd5b813567ffffffffffffffff811115610c3557600080fd5b820160808185031215610c4757600080fd5b9392505050565b600060208284031215610c6057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610cfa57600080fd5b83018035915067ffffffffffffffff821115610d1557600080fd5b602001915036819003821315610d2a57600080fd5b9250929050565b8183823760009101908152919050565b600060208284031215610d5357600080fd5b815167ffffffffffffffff80821115610d6b57600080fd5b818401915084601f830112610d7f57600080fd5b815181811115610d9157610d91610c67565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610dd757610dd7610c67565b81604052828152876020848701011115610df057600080fd5b610e01836020830160208801610b1c565b979650505050505050565b602081526000610c476020830184610b40565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176104eb576104eb610e1f565b600082610e9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215610eb257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610c4757600080fd5b808201808211156104eb576104eb610e1f565b818103818111156104eb576104eb610e1f56fea2646970667358221220ea945e37fed8df0c53dee136e598aae9e60345429e8a0afd3b31608cb3875a0164736f6c63430008180033 + ///0x60a06040526127105f55348015610014575f80fd5b50604051610f70380380610f7083398101604081905261003391610044565b6001600160a01b0316608052610071565b5f60208284031215610054575f80fd5b81516001600160a01b038116811461006a575f80fd5b9392505050565b608051610ee86100885f395f60780152610ee85ff3fe608060405260043610610063575f3560e01c80637772e904116100415780637772e90414610106578063b858183f1461011b578063f4cde4691461013a575f80fd5b80634aa4a4fc146100675780635ae401dc146100c4578063698518e5146100e4575b5f80fd5b348015610072575f80fd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d76100d2366004610a7c565b61015a565b6040516100bb9190610b5f565b3480156100ef575f80fd5b506100f85f5481565b6040519081526020016100bb565b348015610111575f80fd5b506100f861271081565b348015610126575f80fd5b506100f8610135366004610bdf565b6102c5565b348015610145575f80fd5b50610158610154366004610c1d565b5f55565b005b60608167ffffffffffffffff81111561017557610175610c34565b6040519080825280602002602001820160405280156101a857816020015b60608152602001906001900390816101935790505b5090505f5b828110156102bd575f80308686858181106101ca576101ca610c61565b90506020028101906101dc9190610c8e565b6040516101ea929190610cf6565b5f60405180830381855af49150503d805f8114610222576040519150601f19603f3d011682016040523d82523d5f602084013e610227565b606091505b5091509150816102955760448151101561023f575f80fd5b600481019050808060200190518101906102599190610d05565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028c9190610dcb565b60405180910390fd5b808484815181106102a8576102a8610c61565b602090810291909101015250506001016101ad565b509392505050565b5f806102d18380610c8e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525093945061031292508491506104309050565b505090505b6103208261046b565b156103355761032e826104a4565b9150610317565b5f61033f83610430565b509150506127105f5486604001356103579190610e0a565b6103619190610e21565b935084606001358410156103d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604482015260640161028c565b6103f773ffffffffffffffffffffffffffffffffffffffff8316333060408901356104db565b61042861040a6040870160208801610e59565b73ffffffffffffffffffffffffffffffffffffffff831690866105c9565b505050919050565b5f808061043d848261069a565b925061044a84601461079d565b905061046261045b60036014610e8c565b859061069a565b91509193909250565b5f61047860036014610e8c565b6014610485600382610e8c565b61048f9190610e8c565b6104999190610e8c565b825110159050919050565b60606104d56104b560036014610e8c565b6104c160036014610e8c565b84516104cd9190610e9f565b849190610890565b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806105c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c4544000000000000000000000000604482015260640161028c565b5050505050565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161028c565b50505050565b5f816106a7816014610e8c565b101561070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015260640161028c565b61071a826014610e8c565b83511015610784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015260640161028c565b5001602001516c01000000000000000000000000900490565b5f816107aa816003610e8c565b1015610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015260640161028c565b61081d826003610e8c565b83511015610887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015260640161028c565b50016003015190565b60608161089e81601f610e8c565b1015610906576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161028c565b826109118382610e8c565b1015610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161028c565b6109838284610e8c565b845110156109ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161028c565b606082158015610a0b5760405191505f825260208201604052610a73565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610a44578051835260209283019201610a2c565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b5f805f60408486031215610a8e575f80fd5b83359250602084013567ffffffffffffffff80821115610aac575f80fd5b818601915086601f830112610abf575f80fd5b813581811115610acd575f80fd5b8760208260051b8501011115610ae1575f80fd5b6020830194508093505050509250925092565b5f5b83811015610b0e578181015183820152602001610af6565b50505f910152565b5f8151808452610b2d816020860160208601610af4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015610bd2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610bc0858351610b16565b94509285019290850190600101610b86565b5092979650505050505050565b5f60208284031215610bef575f80fd5b813567ffffffffffffffff811115610c05575f80fd5b820160808185031215610c16575f80fd5b9392505050565b5f60208284031215610c2d575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610cc1575f80fd5b83018035915067ffffffffffffffff821115610cdb575f80fd5b602001915036819003821315610cef575f80fd5b9250929050565b818382375f9101908152919050565b5f60208284031215610d15575f80fd5b815167ffffffffffffffff80821115610d2c575f80fd5b818401915084601f830112610d3f575f80fd5b815181811115610d5157610d51610c34565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610d9757610d97610c34565b81604052828152876020848701011115610daf575f80fd5b610dc0836020830160208801610af4565b979650505050505050565b602081525f610c166020830184610b16565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176104d5576104d5610ddd565b5f82610e54577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215610e69575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610c16575f80fd5b808201808211156104d5576104d5610ddd565b818103818111156104d5576104d5610ddd56fea2646970667358221220797b54c9cbd3e03945fb799ac1aaaae6d742b4cac0f6a510cd481aade3df079f64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@Ra'\x10`\0U4\x80\x15a\0\x16W`\0\x80\xFD[P`@Qa\x0F\xC28\x03\x80a\x0F\xC2\x839\x81\x01`@\x81\x90Ra\x005\x91a\0FV[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0vV[`\0` \x82\x84\x03\x12\x15a\0XW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0oW`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x0F2a\0\x90`\09`\0`|\x01Ra\x0F2`\0\xF3\xFE`\x80`@R`\x046\x10a\0eW`\x005`\xE0\x1C\x80cwr\xE9\x04\x11a\0CW\x80cwr\xE9\x04\x14a\x01\x0CW\x80c\xB8X\x18?\x14a\x01\"W\x80c\xF4\xCD\xE4i\x14a\x01BW`\0\x80\xFD[\x80cJ\xA4\xA4\xFC\x14a\0jW\x80cZ\xE4\x01\xDC\x14a\0\xC8W\x80ci\x85\x18\xE5\x14a\0\xE8W[`\0\x80\xFD[4\x80\x15a\0vW`\0\x80\xFD[Pa\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\n\x9DV[a\x01dV[`@Qa\0\xBF\x91\x90a\x0B\x8AV[4\x80\x15a\0\xF4W`\0\x80\xFD[Pa\0\xFE`\0T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[4\x80\x15a\x01\x18W`\0\x80\xFD[Pa\0\xFEa'\x10\x81V[4\x80\x15a\x01.W`\0\x80\xFD[Pa\0\xFEa\x01=6`\x04a\x0C\x0CV[a\x02\xD5V[4\x80\x15a\x01NW`\0\x80\xFD[Pa\x01ba\x01]6`\x04a\x0CNV[`\0UV[\0[``\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x7FWa\x01\x7Fa\x0CgV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xB2W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x01\x9DW\x90P[P\x90P`\0[\x82\x81\x10\x15a\x02\xCDW`\0\x800\x86\x86\x85\x81\x81\x10a\x01\xD6Wa\x01\xD6a\x0C\x96V[\x90P` \x02\x81\x01\x90a\x01\xE8\x91\x90a\x0C\xC5V[`@Qa\x01\xF6\x92\x91\x90a\r1V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x021W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x026V[``\x91P[P\x91P\x91P\x81a\x02\xA5W`D\x81Q\x10\x15a\x02OW`\0\x80\xFD[`\x04\x81\x01\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x02i\x91\x90a\rAV[`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01a\x02\x9C\x91\x90a\x0E\x0CV[`@Q\x80\x91\x03\x90\xFD[\x80\x84\x84\x81Q\x81\x10a\x02\xB8Wa\x02\xB8a\x0C\x96V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x01\xB8V[P\x93\x92PPPV[`\0\x80a\x02\xE2\x83\x80a\x0C\xC5V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x82\x90RP\x93\x94Pa\x03$\x92P\x84\x91Pa\x04D\x90PV[PP\x90P[a\x032\x82a\x04\x80V[\x15a\x03GWa\x03@\x82a\x04\xBAV[\x91Pa\x03)V[`\0a\x03R\x83a\x04DV[P\x91PPa'\x10`\0T\x86`@\x015a\x03k\x91\x90a\x0ENV[a\x03u\x91\x90a\x0EeV[\x93P\x84``\x015\x84\x10\x15a\x03\xE5W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FToo little received\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x9CV[a\x04\x0Bs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x1630`@\x89\x015a\x04\xF1V[a\x04a\x02'V[``\x91P[P\x91P\x91P\x81a\x02\x95W`D\x81Q\x10\x15a\x02?W_\x80\xFD[`\x04\x81\x01\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x02Y\x91\x90a\r\x05V[`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01a\x02\x8C\x91\x90a\r\xCBV[`@Q\x80\x91\x03\x90\xFD[\x80\x84\x84\x81Q\x81\x10a\x02\xA8Wa\x02\xA8a\x0CaV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x01\xADV[P\x93\x92PPPV[_\x80a\x02\xD1\x83\x80a\x0C\x8EV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x82\x90RP\x93\x94Pa\x03\x12\x92P\x84\x91Pa\x040\x90PV[PP\x90P[a\x03 \x82a\x04kV[\x15a\x035Wa\x03.\x82a\x04\xA4V[\x91Pa\x03\x17V[_a\x03?\x83a\x040V[P\x91PPa'\x10_T\x86`@\x015a\x03W\x91\x90a\x0E\nV[a\x03a\x91\x90a\x0E!V[\x93P\x84``\x015\x84\x10\x15a\x03\xD1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FToo little received\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\x03\xF7s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x1630`@\x89\x015a\x04\xDBV[a\x04(a\x04\n`@\x87\x01` \x88\x01a\x0EYV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x86a\x05\xC9V[PPP\x91\x90PV[_\x80\x80a\x04=\x84\x82a\x06\x9AV[\x92Pa\x04J\x84`\x14a\x07\x9DV[\x90Pa\x04ba\x04[`\x03`\x14a\x0E\x8CV[\x85\x90a\x06\x9AV[\x91P\x91\x93\x90\x92PV[_a\x04x`\x03`\x14a\x0E\x8CV[`\x14a\x04\x85`\x03\x82a\x0E\x8CV[a\x04\x8F\x91\x90a\x0E\x8CV[a\x04\x99\x91\x90a\x0E\x8CV[\x82Q\x10\x15\x90P\x91\x90PV[``a\x04\xD5a\x04\xB5`\x03`\x14a\x0E\x8CV[a\x04\xC1`\x03`\x14a\x0E\x8CV[\x84Qa\x04\xCD\x91\x90a\x0E\x9FV[\x84\x91\x90a\x08\x90V[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x05\xC2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[PPPPPV[_`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x06\x94W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[PPPPV[_\x81a\x06\xA7\x81`\x14a\x0E\x8CV[\x10\x15a\x07\x0FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x12`$\x82\x01R\x7FtoAddress_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\x07\x1A\x82`\x14a\x0E\x8CV[\x83Q\x10\x15a\x07\x84W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FtoAddress_outOfBounds\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[P\x01` \x01Ql\x01\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04\x90V[_\x81a\x07\xAA\x81`\x03a\x0E\x8CV[\x10\x15a\x08\x12W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FtoUint24_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\x08\x1D\x82`\x03a\x0E\x8CV[\x83Q\x10\x15a\x08\x87W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FtoUint24_outOfBounds\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[P\x01`\x03\x01Q\x90V[``\x81a\x08\x9E\x81`\x1Fa\x0E\x8CV[\x10\x15a\t\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7Fslice_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[\x82a\t\x11\x83\x82a\x0E\x8CV[\x10\x15a\tyW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7Fslice_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\t\x83\x82\x84a\x0E\x8CV[\x84Q\x10\x15a\t\xEDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7Fslice_outOfBounds\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[``\x82\x15\x80\x15a\n\x0BW`@Q\x91P_\x82R` \x82\x01`@Ra\nsV[`@Q\x91P`\x1F\x84\x16\x80\x15` \x02\x81\x84\x01\x01\x85\x81\x01\x87\x83\x15` \x02\x84\x8B\x01\x01\x01[\x81\x83\x10\x15a\nDW\x80Q\x83R` \x92\x83\x01\x92\x01a\n,V[PP\x85\x84R`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16`@RP[P\x94\x93PPPPV[_\x80_`@\x84\x86\x03\x12\x15a\n\x8EW_\x80\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\n\xACW_\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\n\xBFW_\x80\xFD[\x815\x81\x81\x11\x15a\n\xCDW_\x80\xFD[\x87` \x82`\x05\x1B\x85\x01\x01\x11\x15a\n\xE1W_\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[_[\x83\x81\x10\x15a\x0B\x0EW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xF6V[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x0B-\x81` \x86\x01` \x86\x01a\n\xF4V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15a\x0B\xD2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x88\x86\x03\x01\x84Ra\x0B\xC0\x85\x83Qa\x0B\x16V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0B\x86V[P\x92\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x0B\xEFW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\x05W_\x80\xFD[\x82\x01`\x80\x81\x85\x03\x12\x15a\x0C\x16W_\x80\xFD[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x0C-W_\x80\xFD[P5\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x0C\xC1W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0C\xDBW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x0C\xEFW_\x80\xFD[\x92P\x92\x90PV[\x81\x83\x827_\x91\x01\x90\x81R\x91\x90PV[_` \x82\x84\x03\x12\x15a\r\x15W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\r,W_\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\r?W_\x80\xFD[\x81Q\x81\x81\x11\x15a\rQWa\rQa\x0C4V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\r\x97Wa\r\x97a\x0C4V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\r\xAFW_\x80\xFD[a\r\xC0\x83` \x83\x01` \x88\x01a\n\xF4V[\x97\x96PPPPPPPV[` \x81R_a\x0C\x16` \x83\x01\x84a\x0B\x16V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\xD5Wa\x04\xD5a\r\xDDV[_\x82a\x0ETW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[_` \x82\x84\x03\x12\x15a\x0EiW_\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x16W_\x80\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\xD5Wa\x04\xD5a\r\xDDV[\x81\x81\x03\x81\x81\x11\x15a\x04\xD5Wa\x04\xD5a\r\xDDV\xFE\xA2dipfsX\"\x12 y{T\xC9\xCB\xD3\xE09E\xFBy\x9A\xC1\xAA\xAA\xE6\xD7B\xB4\xCA\xC0\xF6\xA5\x10\xCDH\x1A\xAD\xE3\xDF\x07\x9FdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080604052600436106100655760003560e01c80637772e904116100435780637772e9041461010c578063b858183f14610122578063f4cde4691461014257600080fd5b80634aa4a4fc1461006a5780635ae401dc146100c8578063698518e5146100e8575b600080fd5b34801561007657600080fd5b5061009e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100db6100d6366004610a9d565b610164565b6040516100bf9190610b8a565b3480156100f457600080fd5b506100fe60005481565b6040519081526020016100bf565b34801561011857600080fd5b506100fe61271081565b34801561012e57600080fd5b506100fe61013d366004610c0c565b6102d5565b34801561014e57600080fd5b5061016261015d366004610c4e565b600055565b005b60608167ffffffffffffffff81111561017f5761017f610c67565b6040519080825280602002602001820160405280156101b257816020015b606081526020019060019003908161019d5790505b50905060005b828110156102cd57600080308686858181106101d6576101d6610c96565b90506020028101906101e89190610cc5565b6040516101f6929190610d31565b600060405180830381855af49150503d8060008114610231576040519150601f19603f3d011682016040523d82523d6000602084013e610236565b606091505b5091509150816102a55760448151101561024f57600080fd5b600481019050808060200190518101906102699190610d41565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029c9190610e0c565b60405180910390fd5b808484815181106102b8576102b8610c96565b602090810291909101015250506001016101b8565b509392505050565b6000806102e28380610cc5565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093945061032492508491506104449050565b505090505b61033282610480565b1561034757610340826104ba565b9150610329565b600061035283610444565b50915050612710600054866040013561036b9190610e4e565b6103759190610e65565b935084606001358410156103e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604482015260640161029c565b61040b73ffffffffffffffffffffffffffffffffffffffff8316333060408901356104f1565b61043c61041e6040870160208801610ea0565b73ffffffffffffffffffffffffffffffffffffffff831690866105e3565b505050919050565b6000808061045284826106b8565b925061045f8460146107bc565b905061047761047060036014610ed6565b85906106b8565b91509193909250565b600061048e60036014610ed6565b601461049b600382610ed6565b6104a59190610ed6565b6104af9190610ed6565b825110159050919050565b60606104eb6104cb60036014610ed6565b6104d760036014610ed6565b84516104e39190610ee9565b8491906108b0565b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806105dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c4544000000000000000000000000604482015260640161029c565b5050505050565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806106b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161029c565b50505050565b6000816106c6816014610ed6565b101561072e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015260640161029c565b610739826014610ed6565b835110156107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015260640161029c565b5001602001516c01000000000000000000000000900490565b6000816107ca816003610ed6565b1015610832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015260640161029c565b61083d826003610ed6565b835110156108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015260640161029c565b50016003015190565b6060816108be81601f610ed6565b1015610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161029c565b826109318382610ed6565b1015610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161029c565b6109a38284610ed6565b84511015610a0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161029c565b606082158015610a2c5760405191506000825260208201604052610a94565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610a65578051835260209283019201610a4d565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b600080600060408486031215610ab257600080fd5b83359250602084013567ffffffffffffffff80821115610ad157600080fd5b818601915086601f830112610ae557600080fd5b813581811115610af457600080fd5b8760208260051b8501011115610b0957600080fd5b6020830194508093505050509250925092565b60005b83811015610b37578181015183820152602001610b1f565b50506000910152565b60008151808452610b58816020860160208601610b1c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015610bff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610bed858351610b40565b94509285019290850190600101610bb3565b5092979650505050505050565b600060208284031215610c1e57600080fd5b813567ffffffffffffffff811115610c3557600080fd5b820160808185031215610c4757600080fd5b9392505050565b600060208284031215610c6057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610cfa57600080fd5b83018035915067ffffffffffffffff821115610d1557600080fd5b602001915036819003821315610d2a57600080fd5b9250929050565b8183823760009101908152919050565b600060208284031215610d5357600080fd5b815167ffffffffffffffff80821115610d6b57600080fd5b818401915084601f830112610d7f57600080fd5b815181811115610d9157610d91610c67565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610dd757610dd7610c67565b81604052828152876020848701011115610df057600080fd5b610e01836020830160208801610b1c565b979650505050505050565b602081526000610c476020830184610b40565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176104eb576104eb610e1f565b600082610e9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215610eb257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610c4757600080fd5b808201808211156104eb576104eb610e1f565b818103818111156104eb576104eb610e1f56fea2646970667358221220ea945e37fed8df0c53dee136e598aae9e60345429e8a0afd3b31608cb3875a0164736f6c63430008180033 + ///0x608060405260043610610063575f3560e01c80637772e904116100415780637772e90414610106578063b858183f1461011b578063f4cde4691461013a575f80fd5b80634aa4a4fc146100675780635ae401dc146100c4578063698518e5146100e4575b5f80fd5b348015610072575f80fd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100d76100d2366004610a7c565b61015a565b6040516100bb9190610b5f565b3480156100ef575f80fd5b506100f85f5481565b6040519081526020016100bb565b348015610111575f80fd5b506100f861271081565b348015610126575f80fd5b506100f8610135366004610bdf565b6102c5565b348015610145575f80fd5b50610158610154366004610c1d565b5f55565b005b60608167ffffffffffffffff81111561017557610175610c34565b6040519080825280602002602001820160405280156101a857816020015b60608152602001906001900390816101935790505b5090505f5b828110156102bd575f80308686858181106101ca576101ca610c61565b90506020028101906101dc9190610c8e565b6040516101ea929190610cf6565b5f60405180830381855af49150503d805f8114610222576040519150601f19603f3d011682016040523d82523d5f602084013e610227565b606091505b5091509150816102955760448151101561023f575f80fd5b600481019050808060200190518101906102599190610d05565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028c9190610dcb565b60405180910390fd5b808484815181106102a8576102a8610c61565b602090810291909101015250506001016101ad565b509392505050565b5f806102d18380610c8e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525093945061031292508491506104309050565b505090505b6103208261046b565b156103355761032e826104a4565b9150610317565b5f61033f83610430565b509150506127105f5486604001356103579190610e0a565b6103619190610e21565b935084606001358410156103d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604482015260640161028c565b6103f773ffffffffffffffffffffffffffffffffffffffff8316333060408901356104db565b61042861040a6040870160208801610e59565b73ffffffffffffffffffffffffffffffffffffffff831690866105c9565b505050919050565b5f808061043d848261069a565b925061044a84601461079d565b905061046261045b60036014610e8c565b859061069a565b91509193909250565b5f61047860036014610e8c565b6014610485600382610e8c565b61048f9190610e8c565b6104999190610e8c565b825110159050919050565b60606104d56104b560036014610e8c565b6104c160036014610e8c565b84516104cd9190610e9f565b849190610890565b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806105c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c4544000000000000000000000000604482015260640161028c565b5050505050565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161028c565b50505050565b5f816106a7816014610e8c565b101561070f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015260640161028c565b61071a826014610e8c565b83511015610784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015260640161028c565b5001602001516c01000000000000000000000000900490565b5f816107aa816003610e8c565b1015610812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015260640161028c565b61081d826003610e8c565b83511015610887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015260640161028c565b50016003015190565b60608161089e81601f610e8c565b1015610906576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161028c565b826109118382610e8c565b1015610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161028c565b6109838284610e8c565b845110156109ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161028c565b606082158015610a0b5760405191505f825260208201604052610a73565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610a44578051835260209283019201610a2c565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b5f805f60408486031215610a8e575f80fd5b83359250602084013567ffffffffffffffff80821115610aac575f80fd5b818601915086601f830112610abf575f80fd5b813581811115610acd575f80fd5b8760208260051b8501011115610ae1575f80fd5b6020830194508093505050509250925092565b5f5b83811015610b0e578181015183820152602001610af6565b50505f910152565b5f8151808452610b2d816020860160208601610af4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015610bd2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610bc0858351610b16565b94509285019290850190600101610b86565b5092979650505050505050565b5f60208284031215610bef575f80fd5b813567ffffffffffffffff811115610c05575f80fd5b820160808185031215610c16575f80fd5b9392505050565b5f60208284031215610c2d575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610cc1575f80fd5b83018035915067ffffffffffffffff821115610cdb575f80fd5b602001915036819003821315610cef575f80fd5b9250929050565b818382375f9101908152919050565b5f60208284031215610d15575f80fd5b815167ffffffffffffffff80821115610d2c575f80fd5b818401915084601f830112610d3f575f80fd5b815181811115610d5157610d51610c34565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610d9757610d97610c34565b81604052828152876020848701011115610daf575f80fd5b610dc0836020830160208801610af4565b979650505050505050565b602081525f610c166020830184610b16565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176104d5576104d5610ddd565b5f82610e54577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215610e69575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610c16575f80fd5b808201808211156104d5576104d5610ddd565b818103818111156104d5576104d5610ddd56fea2646970667358221220797b54c9cbd3e03945fb799ac1aaaae6d742b4cac0f6a510cd481aade3df079f64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x046\x10a\0eW`\x005`\xE0\x1C\x80cwr\xE9\x04\x11a\0CW\x80cwr\xE9\x04\x14a\x01\x0CW\x80c\xB8X\x18?\x14a\x01\"W\x80c\xF4\xCD\xE4i\x14a\x01BW`\0\x80\xFD[\x80cJ\xA4\xA4\xFC\x14a\0jW\x80cZ\xE4\x01\xDC\x14a\0\xC8W\x80ci\x85\x18\xE5\x14a\0\xE8W[`\0\x80\xFD[4\x80\x15a\0vW`\0\x80\xFD[Pa\0\x9E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xDBa\0\xD66`\x04a\n\x9DV[a\x01dV[`@Qa\0\xBF\x91\x90a\x0B\x8AV[4\x80\x15a\0\xF4W`\0\x80\xFD[Pa\0\xFE`\0T\x81V[`@Q\x90\x81R` \x01a\0\xBFV[4\x80\x15a\x01\x18W`\0\x80\xFD[Pa\0\xFEa'\x10\x81V[4\x80\x15a\x01.W`\0\x80\xFD[Pa\0\xFEa\x01=6`\x04a\x0C\x0CV[a\x02\xD5V[4\x80\x15a\x01NW`\0\x80\xFD[Pa\x01ba\x01]6`\x04a\x0CNV[`\0UV[\0[``\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x01\x7FWa\x01\x7Fa\x0CgV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x01\xB2W\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a\x01\x9DW\x90P[P\x90P`\0[\x82\x81\x10\x15a\x02\xCDW`\0\x800\x86\x86\x85\x81\x81\x10a\x01\xD6Wa\x01\xD6a\x0C\x96V[\x90P` \x02\x81\x01\x90a\x01\xE8\x91\x90a\x0C\xC5V[`@Qa\x01\xF6\x92\x91\x90a\r1V[`\0`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80`\0\x81\x14a\x021W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x026V[``\x91P[P\x91P\x91P\x81a\x02\xA5W`D\x81Q\x10\x15a\x02OW`\0\x80\xFD[`\x04\x81\x01\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x02i\x91\x90a\rAV[`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01a\x02\x9C\x91\x90a\x0E\x0CV[`@Q\x80\x91\x03\x90\xFD[\x80\x84\x84\x81Q\x81\x10a\x02\xB8Wa\x02\xB8a\x0C\x96V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x01\xB8V[P\x93\x92PPPV[`\0\x80a\x02\xE2\x83\x80a\x0C\xC5V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x82\x90RP\x93\x94Pa\x03$\x92P\x84\x91Pa\x04D\x90PV[PP\x90P[a\x032\x82a\x04\x80V[\x15a\x03GWa\x03@\x82a\x04\xBAV[\x91Pa\x03)V[`\0a\x03R\x83a\x04DV[P\x91PPa'\x10`\0T\x86`@\x015a\x03k\x91\x90a\x0ENV[a\x03u\x91\x90a\x0EeV[\x93P\x84``\x015\x84\x10\x15a\x03\xE5W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FToo little received\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x9CV[a\x04\x0Bs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x1630`@\x89\x015a\x04\xF1V[a\x04a\x02'V[``\x91P[P\x91P\x91P\x81a\x02\x95W`D\x81Q\x10\x15a\x02?W_\x80\xFD[`\x04\x81\x01\x90P\x80\x80` \x01\x90Q\x81\x01\x90a\x02Y\x91\x90a\r\x05V[`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01a\x02\x8C\x91\x90a\r\xCBV[`@Q\x80\x91\x03\x90\xFD[\x80\x84\x84\x81Q\x81\x10a\x02\xA8Wa\x02\xA8a\x0CaV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x01\xADV[P\x93\x92PPPV[_\x80a\x02\xD1\x83\x80a\x0C\x8EV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x82\x90RP\x93\x94Pa\x03\x12\x92P\x84\x91Pa\x040\x90PV[PP\x90P[a\x03 \x82a\x04kV[\x15a\x035Wa\x03.\x82a\x04\xA4V[\x91Pa\x03\x17V[_a\x03?\x83a\x040V[P\x91PPa'\x10_T\x86`@\x015a\x03W\x91\x90a\x0E\nV[a\x03a\x91\x90a\x0E!V[\x93P\x84``\x015\x84\x10\x15a\x03\xD1W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FToo little received\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\x03\xF7s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x1630`@\x89\x015a\x04\xDBV[a\x04(a\x04\n`@\x87\x01` \x88\x01a\x0EYV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x86a\x05\xC9V[PPP\x91\x90PV[_\x80\x80a\x04=\x84\x82a\x06\x9AV[\x92Pa\x04J\x84`\x14a\x07\x9DV[\x90Pa\x04ba\x04[`\x03`\x14a\x0E\x8CV[\x85\x90a\x06\x9AV[\x91P\x91\x93\x90\x92PV[_a\x04x`\x03`\x14a\x0E\x8CV[`\x14a\x04\x85`\x03\x82a\x0E\x8CV[a\x04\x8F\x91\x90a\x0E\x8CV[a\x04\x99\x91\x90a\x0E\x8CV[\x82Q\x10\x15\x90P\x91\x90PV[``a\x04\xD5a\x04\xB5`\x03`\x14a\x0E\x8CV[a\x04\xC1`\x03`\x14a\x0E\x8CV[\x84Qa\x04\xCD\x91\x90a\x0E\x9FV[\x84\x91\x90a\x08\x90V[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x05\xC2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[PPPPPV[_`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x06\x94W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[PPPPV[_\x81a\x06\xA7\x81`\x14a\x0E\x8CV[\x10\x15a\x07\x0FW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x12`$\x82\x01R\x7FtoAddress_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\x07\x1A\x82`\x14a\x0E\x8CV[\x83Q\x10\x15a\x07\x84W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x15`$\x82\x01R\x7FtoAddress_outOfBounds\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[P\x01` \x01Ql\x01\0\0\0\0\0\0\0\0\0\0\0\0\x90\x04\x90V[_\x81a\x07\xAA\x81`\x03a\x0E\x8CV[\x10\x15a\x08\x12W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7FtoUint24_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\x08\x1D\x82`\x03a\x0E\x8CV[\x83Q\x10\x15a\x08\x87W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FtoUint24_outOfBounds\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[P\x01`\x03\x01Q\x90V[``\x81a\x08\x9E\x81`\x1Fa\x0E\x8CV[\x10\x15a\t\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7Fslice_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[\x82a\t\x11\x83\x82a\x0E\x8CV[\x10\x15a\tyW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7Fslice_overflow\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[a\t\x83\x82\x84a\x0E\x8CV[\x84Q\x10\x15a\t\xEDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x11`$\x82\x01R\x7Fslice_outOfBounds\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02\x8CV[``\x82\x15\x80\x15a\n\x0BW`@Q\x91P_\x82R` \x82\x01`@Ra\nsV[`@Q\x91P`\x1F\x84\x16\x80\x15` \x02\x81\x84\x01\x01\x85\x81\x01\x87\x83\x15` \x02\x84\x8B\x01\x01\x01[\x81\x83\x10\x15a\nDW\x80Q\x83R` \x92\x83\x01\x92\x01a\n,V[PP\x85\x84R`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16`@RP[P\x94\x93PPPPV[_\x80_`@\x84\x86\x03\x12\x15a\n\x8EW_\x80\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\n\xACW_\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\n\xBFW_\x80\xFD[\x815\x81\x81\x11\x15a\n\xCDW_\x80\xFD[\x87` \x82`\x05\x1B\x85\x01\x01\x11\x15a\n\xE1W_\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V[_[\x83\x81\x10\x15a\x0B\x0EW\x81\x81\x01Q\x83\x82\x01R` \x01a\n\xF6V[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x0B-\x81` \x86\x01` \x86\x01a\n\xF4V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15a\x0B\xD2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x88\x86\x03\x01\x84Ra\x0B\xC0\x85\x83Qa\x0B\x16V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0B\x86V[P\x92\x97\x96PPPPPPPV[_` \x82\x84\x03\x12\x15a\x0B\xEFW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\x05W_\x80\xFD[\x82\x01`\x80\x81\x85\x03\x12\x15a\x0C\x16W_\x80\xFD[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a\x0C-W_\x80\xFD[P5\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x0C\xC1W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x0C\xDBW_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x0C\xEFW_\x80\xFD[\x92P\x92\x90PV[\x81\x83\x827_\x91\x01\x90\x81R\x91\x90PV[_` \x82\x84\x03\x12\x15a\r\x15W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\r,W_\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\r?W_\x80\xFD[\x81Q\x81\x81\x11\x15a\rQWa\rQa\x0C4V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\r\x97Wa\r\x97a\x0C4V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\r\xAFW_\x80\xFD[a\r\xC0\x83` \x83\x01` \x88\x01a\n\xF4V[\x97\x96PPPPPPPV[` \x81R_a\x0C\x16` \x83\x01\x84a\x0B\x16V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\xD5Wa\x04\xD5a\r\xDDV[_\x82a\x0ETW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x12`\x04R`$_\xFD[P\x04\x90V[_` \x82\x84\x03\x12\x15a\x0EiW_\x80\xFD[\x815s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x16W_\x80\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\xD5Wa\x04\xD5a\r\xDDV[\x81\x81\x03\x81\x81\x11\x15a\x04\xD5Wa\x04\xD5a\r\xDDV\xFE\xA2dipfsX\"\x12 y{T\xC9\xCB\xD3\xE09E\xFBy\x9A\xC1\xAA\xAA\xE6\xD7B\xB4\xCA\xC0\xF6\xA5\x10\xCDH\x1A\xAD\xE3\xDF\x07\x9FdsolcC\0\x08\x18\x003", ); /**```solidity struct ExactInputParams { bytes path; address recipient; uint256 amountIn; uint256 amountOutMinimum; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ExactInputParams { + #[allow(missing_docs)] pub path: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, - pub amountIn: alloy::sol_types::private::U256, - pub amountOutMinimum: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amountIn: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub amountOutMinimum: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -203,8 +218,8 @@ struct ExactInputParams { bytes path; address recipient; uint256 amountIn; uint2 type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Bytes, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -439,9 +454,10 @@ struct ExactInputParams { bytes path; address recipient; uint256 amountIn; uint2 ```solidity constructor(address wethAddress); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub wethAddress: alloy::sol_types::private::Address, } const _: () = { @@ -503,16 +519,22 @@ constructor(address wethAddress); ```solidity function SWAP_RATE_GRANULARITY() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SWAP_RATE_GRANULARITYCall {} ///Container type for the return parameters of the [`SWAP_RATE_GRANULARITY()`](SWAP_RATE_GRANULARITYCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SWAP_RATE_GRANULARITYReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -552,7 +574,9 @@ function SWAP_RATE_GRANULARITY() external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -620,16 +644,22 @@ function SWAP_RATE_GRANULARITY() external view returns (uint256); ```solidity function WETH9() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct WETH9Call {} ///Container type for the return parameters of the [`WETH9()`](WETH9Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct WETH9Return { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -733,18 +763,25 @@ function WETH9() external view returns (address); ```solidity function exactInput(ExactInputParams memory params) external returns (uint256 amountOut); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct exactInputCall { + #[allow(missing_docs)] pub params: ::RustType, } ///Container type for the return parameters of the [`exactInput((bytes,address,uint256,uint256))`](exactInputCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct exactInputReturn { - pub amountOut: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amountOut: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -784,7 +821,9 @@ function exactInput(ExactInputParams memory params) external returns (uint256 am #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -850,19 +889,27 @@ function exactInput(ExactInputParams memory params) external returns (uint256 am ```solidity function multicall(uint256, bytes[] memory data) external payable returns (bytes[] memory results); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct multicallCall { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub data: alloy::sol_types::private::Vec, } ///Container type for the return parameters of the [`multicall(uint256,bytes[])`](multicallCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct multicallReturn { + #[allow(missing_docs)] pub results: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -873,7 +920,7 @@ function multicall(uint256, bytes[] memory data) external payable returns (bytes ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Vec, ); #[cfg(test)] @@ -988,23 +1035,31 @@ function multicall(uint256, bytes[] memory data) external payable returns (bytes ```solidity function setSwapRate(uint256 newRate) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setSwapRateCall { - pub newRate: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub newRate: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`setSwapRate(uint256)`](setSwapRateCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setSwapRateReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1105,16 +1160,22 @@ function setSwapRate(uint256 newRate) external; ```solidity function swapRate() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct swapRateCall {} ///Container type for the return parameters of the [`swapRate()`](swapRateCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct swapRateReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1152,7 +1213,9 @@ function swapRate() external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1216,11 +1279,17 @@ function swapRate() external view returns (uint256); }; ///Container for all the [`MockSwapRouter`](self) function calls. pub enum MockSwapRouterCalls { + #[allow(missing_docs)] SWAP_RATE_GRANULARITY(SWAP_RATE_GRANULARITYCall), + #[allow(missing_docs)] WETH9(WETH9Call), + #[allow(missing_docs)] exactInput(exactInputCall), + #[allow(missing_docs)] multicall(multicallCall), + #[allow(missing_docs)] setSwapRate(setSwapRateCall), + #[allow(missing_docs)] swapRate(swapRateCall), } #[automatically_derived] @@ -1273,7 +1342,7 @@ function swapRate() external view returns (uint256); Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1370,7 +1439,7 @@ function swapRate() external view returns (uint256); ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -1637,7 +1706,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`multicall`] function. pub fn multicall( &self, - _0: alloy::sol_types::private::U256, + _0: alloy::sol_types::private::primitives::aliases::U256, data: alloy::sol_types::private::Vec, ) -> alloy_contract::SolCallBuilder { self.call_builder(&multicallCall { _0, data }) @@ -1645,7 +1714,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`setSwapRate`] function. pub fn setSwapRate( &self, - newRate: alloy::sol_types::private::U256, + newRate: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&setSwapRateCall { newRate }) } diff --git a/crates/bindings-uniswapx/src/mockvalidationcontract.rs b/crates/bindings-uniswapx/src/mockvalidationcontract.rs index de1451c..bdfad0b 100644 --- a/crates/bindings-uniswapx/src/mockvalidationcontract.rs +++ b/crates/bindings-uniswapx/src/mockvalidationcontract.rs @@ -184,41 +184,55 @@ interface MockValidationContract { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MockValidationContract { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b5061057c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80636c64edee146100465780636e84ba2b14610087578063c19912191461009a575b600080fd5b6100856100543660046100fb565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b610085610095366004610460565b6100bb565b6000546100a79060ff1681565b604051901515815260200160405180910390f35b60005460ff166100f7576040517fb3ca2e2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60006020828403121561010d57600080fd5b8135801515811461011d57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461014657600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561019b5761019b610149565b60405290565b60405160a0810167ffffffffffffffff8111828210171561019b5761019b610149565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561020b5761020b610149565b604052919050565b600082601f83011261022457600080fd5b813567ffffffffffffffff81111561023e5761023e610149565b61026f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016101c4565b81815284602083860101111561028457600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156102b357600080fd5b60405160c0810167ffffffffffffffff82821081831117156102d7576102d7610149565b81604052829350843591506102eb82610124565b9082526020840135906102fd82610124565b81602084015260408501356040840152606085013560608401526080850135915061032782610124565b81608084015260a085013591508082111561034157600080fd5b5061034e85828601610213565b60a0830152505092915050565b60006060828403121561036d57600080fd5b610375610178565b9050813561038281610124565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126103b157600080fd5b8135602067ffffffffffffffff8211156103cd576103cd610149565b6103db818360051b016101c4565b828152606092830285018201928282019190878511156103fa57600080fd5b8387015b858110156104535781818a0312156104165760008081fd5b61041e610178565b813561042981610124565b8152818601358682015260408083013561044281610124565b9082015284529284019281016103fe565b5090979650505050505050565b6000806040838503121561047357600080fd5b823561047e81610124565b9150602083013567ffffffffffffffff8082111561049b57600080fd5b9084019060e082870312156104af57600080fd5b6104b76101a1565b8235828111156104c657600080fd5b6104d2888286016102a1565b8252506104e2876020850161035b565b60208201526080830135828111156104f957600080fd5b610505888286016103a0565b60408301525060a08301358281111561051d57600080fd5b61052988828601610213565b60608301525060c08301356080820152809350505050925092905056fea2646970667358221220ec43ccebacdbd95c7ccec8508538d4256e57eb37a4e8d92ca2a5a4134555c22764736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b5061055b8061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80636c64edee146100435780636e84ba2b14610083578063c199121914610096575b5f80fd5b6100816100513660046100f5565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b610081610091366004610446565b6100b6565b5f546100a29060ff1681565b604051901515815260200160405180910390f35b5f5460ff166100f1576040517fb3ca2e2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f60208284031215610105575f80fd5b81358015158114610114575f80fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461013c575f80fd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561018f5761018f61013f565b60405290565b60405160a0810167ffffffffffffffff8111828210171561018f5761018f61013f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156101ff576101ff61013f565b604052919050565b5f82601f830112610216575f80fd5b813567ffffffffffffffff8111156102305761023061013f565b61026160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016101b8565b818152846020838601011115610275575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156102a1575f80fd5b60405160c0810167ffffffffffffffff82821081831117156102c5576102c561013f565b81604052829350843591506102d98261011b565b9082526020840135906102eb8261011b565b8160208401526040850135604084015260608501356060840152608085013591506103158261011b565b81608084015260a085013591508082111561032e575f80fd5b5061033b85828601610207565b60a0830152505092915050565b5f60608284031215610358575f80fd5b61036061016c565b9050813561036d8161011b565b80825250602082013560208201526040820135604082015292915050565b5f82601f83011261039a575f80fd5b8135602067ffffffffffffffff8211156103b6576103b661013f565b6103c4818360051b016101b8565b828152606092830285018201928282019190878511156103e2575f80fd5b8387015b858110156104395781818a0312156103fc575f80fd5b61040461016c565b813561040f8161011b565b815281860135868201526040808301356104288161011b565b9082015284529284019281016103e6565b5090979650505050505050565b5f8060408385031215610457575f80fd5b82356104628161011b565b9150602083013567ffffffffffffffff8082111561047e575f80fd5b9084019060e08287031215610491575f80fd5b610499610195565b8235828111156104a7575f80fd5b6104b388828601610291565b8252506104c38760208501610348565b60208201526080830135828111156104d9575f80fd5b6104e58882860161038b565b60408301525060a0830135828111156104fc575f80fd5b61050888828601610207565b60608301525060c08301356080820152809350505050925092905056fea26469706673582212204db48dec8b2433de1fb6819c89c42d8e5ae821dd5cbe5264a9b3a4dbb080bfa764736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x05|\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cld\xED\xEE\x14a\0FW\x80cn\x84\xBA+\x14a\0\x87W\x80c\xC1\x99\x12\x19\x14a\0\x9AW[`\0\x80\xFD[a\0\x85a\0T6`\x04a\0\xFBV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[\0[a\0\x85a\0\x956`\x04a\x04`V[a\0\xBBV[`\0Ta\0\xA7\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`\0T`\xFF\x16a\0\xF7W`@Q\x7F\xB3\xCA.(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[`\0` \x82\x84\x03\x12\x15a\x01\rW`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x01\x1DW`\0\x80\xFD[\x93\x92PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01FW`\0\x80\xFD[PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9BWa\x01\x9Ba\x01IV[`@R\x90V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x01\x9BWa\x01\x9Ba\x01IV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\x0BWa\x02\x0Ba\x01IV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x02$W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02>Wa\x02>a\x01IV[a\x02o` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x01\xC4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x02\x84W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x02\xB3W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x02\xD7Wa\x02\xD7a\x01IV[\x81`@R\x82\x93P\x845\x91Pa\x02\xEB\x82a\x01$V[\x90\x82R` \x84\x015\x90a\x02\xFD\x82a\x01$V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x03'\x82a\x01$V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x03AW`\0\x80\xFD[Pa\x03N\x85\x82\x86\x01a\x02\x13V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x03mW`\0\x80\xFD[a\x03ua\x01xV[\x90P\x815a\x03\x82\x81a\x01$V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x03\xB1W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x03\xCDWa\x03\xCDa\x01IV[a\x03\xDB\x81\x83`\x05\x1B\x01a\x01\xC4V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x03\xFAW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x04SW\x81\x81\x8A\x03\x12\x15a\x04\x16W`\0\x80\x81\xFD[a\x04\x1Ea\x01xV[\x815a\x04)\x81a\x01$V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x04B\x81a\x01$V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x03\xFEV[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[\x825a\x04~\x81a\x01$V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\x9BW`\0\x80\xFD[\x90\x84\x01\x90`\xE0\x82\x87\x03\x12\x15a\x04\xAFW`\0\x80\xFD[a\x04\xB7a\x01\xA1V[\x825\x82\x81\x11\x15a\x04\xC6W`\0\x80\xFD[a\x04\xD2\x88\x82\x86\x01a\x02\xA1V[\x82RPa\x04\xE2\x87` \x85\x01a\x03[V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x04\xF9W`\0\x80\xFD[a\x05\x05\x88\x82\x86\x01a\x03\xA0V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x05\x1DW`\0\x80\xFD[a\x05)\x88\x82\x86\x01a\x02\x13V[``\x83\x01RP`\xC0\x83\x015`\x80\x82\x01R\x80\x93PPPP\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 \xECC\xCC\xEB\xAC\xDB\xD9\\|\xCE\xC8P\x858\xD4%nW\xEB7\xA4\xE8\xD9,\xA2\xA5\xA4\x13EU\xC2'dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[Pa\x05[\x80a\0\x1D_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cld\xED\xEE\x14a\0CW\x80cn\x84\xBA+\x14a\0\x83W\x80c\xC1\x99\x12\x19\x14a\0\x96W[_\x80\xFD[a\0\x81a\0Q6`\x04a\0\xF5V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[\0[a\0\x81a\0\x916`\x04a\x04FV[a\0\xB6V[_Ta\0\xA2\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[_T`\xFF\x16a\0\xF1W`@Q\x7F\xB3\xCA.(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[_` \x82\x84\x03\x12\x15a\x01\x05W_\x80\xFD[\x815\x80\x15\x15\x81\x14a\x01\x14W_\x80\xFD[\x93\x92PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01Wa\x02>a\x01IV[a\x02o` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a\x01\xC4V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x02\x84W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a\x02\xB3W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a\x02\xD7Wa\x02\xD7a\x01IV[\x81`@R\x82\x93P\x845\x91Pa\x02\xEB\x82a\x01$V[\x90\x82R` \x84\x015\x90a\x02\xFD\x82a\x01$V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa\x03'\x82a\x01$V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a\x03AW`\0\x80\xFD[Pa\x03N\x85\x82\x86\x01a\x02\x13V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a\x03mW`\0\x80\xFD[a\x03ua\x01xV[\x90P\x815a\x03\x82\x81a\x01$V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a\x03\xB1W`\0\x80\xFD[\x815` g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x03\xCDWa\x03\xCDa\x01IV[a\x03\xDB\x81\x83`\x05\x1B\x01a\x01\xC4V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x03\xFAW`\0\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x04SW\x81\x81\x8A\x03\x12\x15a\x04\x16W`\0\x80\x81\xFD[a\x04\x1Ea\x01xV[\x815a\x04)\x81a\x01$V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x04B\x81a\x01$V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x03\xFEV[P\x90\x97\x96PPPPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04sW`\0\x80\xFD[\x825a\x04~\x81a\x01$V[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\x9BW`\0\x80\xFD[\x90\x84\x01\x90`\xE0\x82\x87\x03\x12\x15a\x04\xAFW`\0\x80\xFD[a\x04\xB7a\x01\xA1V[\x825\x82\x81\x11\x15a\x04\xC6W`\0\x80\xFD[a\x04\xD2\x88\x82\x86\x01a\x02\xA1V[\x82RPa\x04\xE2\x87` \x85\x01a\x03[V[` \x82\x01R`\x80\x83\x015\x82\x81\x11\x15a\x04\xF9W`\0\x80\xFD[a\x05\x05\x88\x82\x86\x01a\x03\xA0V[`@\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a\x05\x1DW`\0\x80\xFD[a\x05)\x88\x82\x86\x01a\x02\x13V[``\x83\x01RP`\xC0\x83\x015`\x80\x82\x01R\x80\x93PPPP\x92P\x92\x90PV\xFE\xA2dipfsX\"\x12 \xECC\xCC\xEB\xAC\xDB\xD9\\|\xCE\xC8P\x858\xD4%nW\xEB7\xA4\xE8\xD9,\xA2\xA5\xA4\x13EU\xC2'dsolcC\0\x08\x18\x003", + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0?W_5`\xE0\x1C\x80cld\xED\xEE\x14a\0CW\x80cn\x84\xBA+\x14a\0\x83W\x80c\xC1\x99\x12\x19\x14a\0\x96W[_\x80\xFD[a\0\x81a\0Q6`\x04a\0\xF5V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x16\x91\x15\x15\x91\x90\x91\x17\x90UV[\0[a\0\x81a\0\x916`\x04a\x04FV[a\0\xB6V[_Ta\0\xA2\x90`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[_T`\xFF\x16a\0\xF1W`@Q\x7F\xB3\xCA.(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[_` \x82\x84\x03\x12\x15a\x01\x05W_\x80\xFD[\x815\x80\x15\x15\x81\x14a\x01\x14W_\x80\xFD[\x93\x92PPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x01 = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -448,17 +462,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -474,8 +499,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -744,14 +769,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -763,7 +796,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -977,18 +1010,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1266,10 +1309,15 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity error MockValidationError(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MockValidationError {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1325,16 +1373,22 @@ error MockValidationError(); ```solidity function setValid(bool _valid) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setValidCall { + #[allow(missing_docs)] pub _valid: bool, } ///Container type for the return parameters of the [`setValid(bool)`](setValidCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setValidReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1442,16 +1496,22 @@ function setValid(bool _valid) external; ```solidity function valid() external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct validCall {} ///Container type for the return parameters of the [`valid()`](validCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct validReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1555,17 +1615,24 @@ function valid() external view returns (bool); ```solidity function validate(address, ResolvedOrder memory) external view; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct validateCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _1: ::RustType, } ///Container type for the return parameters of the [`validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))`](validateCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct validateReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1678,8 +1745,11 @@ function validate(address, ResolvedOrder memory) external view; }; ///Container for all the [`MockValidationContract`](self) function calls. pub enum MockValidationContractCalls { + #[allow(missing_docs)] setValid(setValidCall), + #[allow(missing_docs)] valid(validCall), + #[allow(missing_docs)] validate(validateCall), } #[automatically_derived] @@ -1718,7 +1788,7 @@ function validate(address, ResolvedOrder memory) external view; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1776,7 +1846,7 @@ function validate(address, ResolvedOrder memory) external view; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -1815,6 +1885,7 @@ function validate(address, ResolvedOrder memory) external view; } ///Container for all the [`MockValidationContract`](self) custom errors. pub enum MockValidationContractErrors { + #[allow(missing_docs)] MockValidationError(MockValidationError), } #[automatically_derived] @@ -1849,7 +1920,7 @@ function validate(address, ResolvedOrder memory) external view; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1881,7 +1952,7 @@ function validate(address, ResolvedOrder memory) external view; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/multifillerswaprouter02executor.rs b/crates/bindings-uniswapx/src/multifillerswaprouter02executor.rs index 41fdf2e..7743094 100644 --- a/crates/bindings-uniswapx/src/multifillerswaprouter02executor.rs +++ b/crates/bindings-uniswapx/src/multifillerswaprouter02executor.rs @@ -431,41 +431,55 @@ interface MultiFillerSwapRouter02Executor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod MultiFillerSwapRouter02Executor { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60c06040523480156200001157600080fd5b5060405162001e3338038062001e338339810160408190526200003491620001c1565b600080546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060005b8451811015620000df576001806000878481518110620000a457620000a4620002cc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010162000080565b50600280546001600160a01b0319166001600160a01b038581169190911790915581166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa15801562000143573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001699190620002e2565b6001600160a01b031660a052506200030992505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620001ac57600080fd5b50565b8051620001bc8162000196565b919050565b60008060008060808587031215620001d857600080fd5b84516001600160401b0380821115620001f057600080fd5b818701915087601f8301126200020557600080fd5b81516020828211156200021c576200021c62000180565b8160051b604051601f19603f8301168101818110868211171562000244576200024462000180565b60405292835281830193508481018201928b8411156200026357600080fd5b948201945b838610156200028c576200027c86620001af565b8552948201949382019362000268565b98506200029d9050898201620001af565b965050505050620002b160408601620001af565b9150620002c160608601620001af565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b600060208284031215620002f557600080fd5b8151620003028162000196565b9392505050565b60805160a051611ae86200034b600039600081816109870152610a390152600081816102e901528181610417015281816106b801526107820152611ae86000f3fe6080604052600436106100c05760003560e01c80638da5cb5b11610074578063d0f2d8ac1161004e578063d0f2d8ac14610211578063e5135ec614610231578063f2fde38b1461025157600080fd5b80638da5cb5b1461016e5780639456fbcc146101c4578063ab572650146101e457600080fd5b806363fb0b96116100a557806363fb0b961461010e578063690d83201461012e57806389a3f1361461014e57600080fd5b8063585da628146100cc5780635c8f9bf6146100ee57600080fd5b366100c757005b600080fd5b3480156100d857600080fd5b506100ec6100e73660046111d8565b610271565b005b3480156100fa57600080fd5b506100ec610109366004611266565b610506565b34801561011a57600080fd5b506100ec61012936600461128a565b610627565b34801561013a57600080fd5b506100ec610149366004611266565b610847565b34801561015a57600080fd5b506100ec610169366004611266565b6108d5565b34801561017a57600080fd5b5060005461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101d057600080fd5b506100ec6101df3660046112ea565b610ab8565b3480156101f057600080fd5b5060025461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561021d57600080fd5b506100ec61022c366004611323565b610beb565b34801561023d57600080fd5b506100ec61024c3660046111d8565b610cc0565b34801561025d57600080fd5b506100ec61026c366004611266565b610da1565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102c2576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806102d2848601866114f4565b92509250925060005b8351811015610370576103687f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061033b5761033b61162a565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610e929092919063ffffffff16565b6001016102db565b5060005b82518110156103d95760025483516103d19173ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908590811061033b5761033b61162a565b600101610374565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc9061046e907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161167d565b6000604051808303816000875af115801561048d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104d3919081019061173b565b5047156104fd576002546104fd9073ffffffffffffffffffffffffffffffffffffffff1647610f67565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff808516825290921660208301527f3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b60005b838110156107445761073c7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87878581811061070a5761070a61162a565b905060200201602081019061071f9190611266565b73ffffffffffffffffffffffffffffffffffffffff169190610e92565b6001016106ab565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906107db907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869086906004016118d5565b6000604051808303816000875af11580156107fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610840919081019061173b565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6108d28147611006565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a079190611966565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b50505050610ab48247611006565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610ab490829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611966565b73ffffffffffffffffffffffffffffffffffffffff8516919061107b565b3360009081526001602052604081205460ff1615159003610c38576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d33588490610c92908690869086906004016119ca565b600060405180830381600087803b158015610cac57600080fd5b505af11580156104fd573d6000803e3d6000fd5b3360009081526001602052604081205460ff1615159003610d0d576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906313fb72c790610d699087908790879087906004016119f0565b600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610583565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610fc1576040519150601f19603f3d011682016040523d82523d6000602084013e610fc6565b606091505b5050905080611001576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080611001576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610583565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610583565b60008083601f84011261115c57600080fd5b50813567ffffffffffffffff81111561117457600080fd5b6020830191508360208260051b850101111561118f57600080fd5b9250929050565b60008083601f8401126111a857600080fd5b50813567ffffffffffffffff8111156111c057600080fd5b60208301915083602082850101111561118f57600080fd5b600080600080604085870312156111ee57600080fd5b843567ffffffffffffffff8082111561120657600080fd5b6112128883890161114a565b9096509450602087013591508082111561122b57600080fd5b5061123887828801611196565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108d257600080fd5b60006020828403121561127857600080fd5b813561128381611244565b9392505050565b600080600080604085870312156112a057600080fd5b843567ffffffffffffffff808211156112b857600080fd5b6112c48883890161114a565b909650945060208701359150808211156112dd57600080fd5b506112388782880161114a565b600080604083850312156112fd57600080fd5b823561130881611244565b9150602083013561131881611244565b809150509250929050565b60008060006040848603121561133857600080fd5b833567ffffffffffffffff8082111561135057600080fd5b908501906040828803121561136457600080fd5b9093506020850135908082111561137a57600080fd5b5061138786828701611196565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561140a5761140a611394565b604052919050565b600067ffffffffffffffff82111561142c5761142c611394565b5060051b60200190565b600082601f83011261144757600080fd5b8135602061145c61145783611412565b6113c3565b8083825260208201915060208460051b87010193508684111561147e57600080fd5b602086015b848110156114a357803561149681611244565b8352918301918301611483565b509695505050505050565b600067ffffffffffffffff8211156114c8576114c8611394565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060006060848603121561150957600080fd5b833567ffffffffffffffff8082111561152157600080fd5b61152d87838801611436565b945060209150818601358181111561154457600080fd5b61155088828901611436565b9450506040808701358281111561156657600080fd5b8701601f8101891361157757600080fd5b803561158561145782611412565b81815260059190911b8201850190858101908b8311156115a457600080fd5b8684015b83811015611618578035878111156115c05760008081fd5b8501603f81018e136115d25760008081fd5b888101356115e2611457826114ae565b8181528f898385010111156115f75760008081fd5b818984018c83013760009181018b01919091528452509187019187016115a8565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561167457818101518382015260200161165c565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b8281101561172d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452815180518088526116f081888a01898501611659565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016969096018501955092840192908401906001016116ab565b509398975050505050505050565b6000602080838503121561174e57600080fd5b825167ffffffffffffffff8082111561176657600080fd5b818501915085601f83011261177a57600080fd5b815161178861145782611412565b81815260059190911b830184019084810190888311156117a757600080fd5b8585015b8381101561181b578051858111156117c35760008081fd5b8601603f81018b136117d55760008081fd5b8781015160406117e7611457836114ae565b8281528d828486010111156117fc5760008081fd5b61180b838c8301848701611659565b86525050509186019186016117ab565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126118a657600080fd5b830160208101925035905067ffffffffffffffff8111156118c657600080fd5b80360382131561118f57600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b87811015611958577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018352611939828a611871565b611944878284611828565b965050509183019190830190600101611900565b509298975050505050505050565b60006020828403121561197857600080fd5b5051919050565b600061198b8283611871565b6040855261199d604086018284611828565b9150506119ad6020840184611871565b85830360208701526119c0838284611828565b9695505050505050565b6040815260006119dd604083018661197f565b82810360208401526119c0818587611828565b6040808252810184905260006060600586901b830181019083018783805b89811015611a90577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112611a6e578283fd5b611a7a868d830161197f565b9550506020938401939290920191600101611a0e565b505050508281036020840152611aa7818587611828565b97965050505050505056fea26469706673582212200b39cb1d4ed27a99075eb0ba2bd0956359096764fc5d36462a8d461ef0c3820864736f6c63430008180033 + ///0x60c060405234801562000010575f80fd5b5060405162001d7c38038062001d7c8339810160408190526200003391620001b7565b5f80546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f5b8451811015620000da576001805f878481518110620000a057620000a0620002bc565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016200007d565b50600280546001600160a01b0319166001600160a01b038581169190911790915581166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa1580156200013c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001629190620002d0565b6001600160a01b031660a05250620002f592505050565b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0381168114620001a2575f80fd5b50565b8051620001b2816200018d565b919050565b5f805f8060808587031215620001cb575f80fd5b84516001600160401b0380821115620001e2575f80fd5b818701915087601f830112620001f6575f80fd5b81516020828211156200020d576200020d62000179565b8160051b604051601f19603f8301168101818110868211171562000235576200023562000179565b60405292835281830193508481018201928b84111562000253575f80fd5b948201945b838610156200027c576200026c86620001a5565b8552948201949382019362000258565b98506200028d9050898201620001a5565b965050505050620002a160408601620001a5565b9150620002b160608601620001a5565b905092959194509250565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215620002e1575f80fd5b8151620002ee816200018d565b9392505050565b60805160a051611a49620003335f395f81816109620152610a1201525f81816102d5015281816104020152818161069b01526107650152611a495ff3fe6080604052600436106100bb575f3560e01c80638da5cb5b11610071578063d0f2d8ac1161004c578063d0f2d8ac14610202578063e5135ec614610221578063f2fde38b14610240575f80fd5b80638da5cb5b146101635780639456fbcc146101b7578063ab572650146101d6575f80fd5b806363fb0b96116100a157806363fb0b9614610106578063690d83201461012557806389a3f13614610144575f80fd5b8063585da628146100c65780635c8f9bf6146100e7575f80fd5b366100c257005b5f80fd5b3480156100d1575f80fd5b506100e56100e0366004611184565b61025f565b005b3480156100f2575f80fd5b506100e561010136600461120c565b6104ec565b348015610111575f80fd5b506100e561012036600461122e565b61060c565b348015610130575f80fd5b506100e561013f36600461120c565b610825565b34801561014f575f80fd5b506100e561015e36600461120c565b6108b2565b34801561016e575f80fd5b505f5461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101c2575f80fd5b506100e56101d1366004611289565b610a8c565b3480156101e1575f80fd5b5060025461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020d575f80fd5b506100e561021c3660046112c0565b610bbc565b34801561022c575f80fd5b506100e561023b366004611184565b610c8b565b34801561024b575f80fd5b506100e561025a36600461120c565b610d66565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102b0576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80806102bf84860186611484565b9250925092505f5b835181101561035c576103547f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff868481518110610327576103276115ab565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610e559092919063ffffffff16565b6001016102c7565b505f5b82518110156103c45760025483516103bc9173ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869085908110610327576103276115ab565b60010161035f565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610459907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9085906004016115fa565b5f604051808303815f875af1158015610474573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104b991908101906116b6565b5047156104e3576002546104e39073ffffffffffffffffffffffffffffffffffffffff1647610f26565b50505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff808516825290921660208301527f3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461068c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b5f5b838110156107275761071f7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8787858181106106ed576106ed6115ab565b9050602002016020810190610702919061120c565b73ffffffffffffffffffffffffffffffffffffffff169190610e55565b60010161068e565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906107be907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908690869060040161183f565b5f604051808303815f875af11580156107d9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261081e91908101906116b6565b5050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b6108af8147610fc1565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e091906118ce565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b158015610a68575f80fd5b505af1158015610a7a573d5f803e3d5ffd5b50505050610a888247610fc1565b5050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610a8890829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610b7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9e91906118ce565b73ffffffffffffffffffffffffffffffffffffffff85169190611033565b335f9081526001602052604081205460ff1615159003610c08576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d33588490610c629086908690869060040161192f565b5f604051808303815f87803b158015610c79575f80fd5b505af11580156104e3573d5f803e3d5ffd5b335f9081526001602052604081205460ff1615159003610cd7576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906313fb72c790610d33908790879087908790600401611954565b5f604051808303815f87803b158015610d4a575f80fd5b505af1158015610d5c573d5f803e3d5ffd5b5050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610f20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610568565b50505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610f7c576040519150601f19603f3d011682016040523d82523d5f602084013e610f81565b606091505b5050905080610fbc576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f805f805f85875af1905080610fbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610568565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610f20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610568565b5f8083601f84011261110e575f80fd5b50813567ffffffffffffffff811115611125575f80fd5b6020830191508360208260051b850101111561113f575f80fd5b9250929050565b5f8083601f840112611156575f80fd5b50813567ffffffffffffffff81111561116d575f80fd5b60208301915083602082850101111561113f575f80fd5b5f805f8060408587031215611197575f80fd5b843567ffffffffffffffff808211156111ae575f80fd5b6111ba888389016110fe565b909650945060208701359150808211156111d2575f80fd5b506111df87828801611146565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108af575f80fd5b5f6020828403121561121c575f80fd5b8135611227816111eb565b9392505050565b5f805f8060408587031215611241575f80fd5b843567ffffffffffffffff80821115611258575f80fd5b611264888389016110fe565b9096509450602087013591508082111561127c575f80fd5b506111df878288016110fe565b5f806040838503121561129a575f80fd5b82356112a5816111eb565b915060208301356112b5816111eb565b809150509250929050565b5f805f604084860312156112d2575f80fd5b833567ffffffffffffffff808211156112e9575f80fd5b90850190604082880312156112fc575f80fd5b90935060208501359080821115611311575f80fd5b5061131e86828701611146565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561139f5761139f61132b565b604052919050565b5f67ffffffffffffffff8211156113c0576113c061132b565b5060051b60200190565b5f82601f8301126113d9575f80fd5b813560206113ee6113e9836113a7565b611358565b8083825260208201915060208460051b87010193508684111561140f575f80fd5b602086015b84811015611434578035611427816111eb565b8352918301918301611414565b509695505050505050565b5f67ffffffffffffffff8211156114585761145861132b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f805f60608486031215611496575f80fd5b833567ffffffffffffffff808211156114ad575f80fd5b6114b9878388016113ca565b94506020915081860135818111156114cf575f80fd5b6114db888289016113ca565b945050604080870135828111156114f0575f80fd5b8701601f81018913611500575f80fd5b803561150e6113e9826113a7565b81815260059190911b8201850190858101908b83111561152c575f80fd5b8684015b8381101561159957803587811115611546575f80fd5b8501603f81018e13611556575f80fd5b888101356115666113e98261143f565b8181528f89838501011115611579575f80fd5b818984018c8301375f9181018b0191909152845250918701918701611530565b50809750505050505050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156115f25781810151838201526020016115da565b50505f910152565b5f60408201848352602060408185015281855180845260608601915060608160051b87010193508287015f5b828110156116a8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261166b81888a018985016115d8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101611626565b509398975050505050505050565b5f60208083850312156116c7575f80fd5b825167ffffffffffffffff808211156116de575f80fd5b818501915085601f8301126116f1575f80fd5b81516116ff6113e9826113a7565b81815260059190911b8301840190848101908883111561171d575f80fd5b8585015b8381101561178b57805185811115611737575f80fd5b8601603f81018b13611747575f80fd5b8781015160406117596113e98361143f565b8281528d8284860101111561176c575f80fd5b61177b838c83018487016115d8565b8652505050918601918601611721565b5098975050505050505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611812575f80fd5b830160208101925035905067ffffffffffffffff811115611831575f80fd5b80360382131561113f575f80fd5b5f604082018583526020604060208501528185835260608501905060608660051b8601019250865f5b878110156118c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08786030183526118a1828a6117df565b6118ac878284611798565b965050509183019190830190600101611868565b509298975050505050505050565b5f602082840312156118de575f80fd5b5051919050565b5f6118f082836117df565b60408552611902604086018284611798565b91505061191260208401846117df565b8583036020870152611925838284611798565b9695505050505050565b604081525f61194160408301866118e5565b8281036020840152611925818587611798565b604080825281018490525f6060600586901b8301810190830187835b888110156119f2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18b36030181126119d0575f80fd5b6119dc858c83016118e5565b9450506020928301929190910190600101611970565b5050508281036020840152611a08818587611798565b97965050505050505056fea26469706673582212206b02d4f628042990b8186f8c8cbe1e3b6782e60550ac271c2a7ec84aee2c8c8164736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x1E38\x03\x80b\0\x1E3\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\xC1V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\0[\x84Q\x81\x10\x15b\0\0\xDFW`\x01\x80`\0\x87\x84\x81Q\x81\x10b\0\0\xA4Wb\0\0\xA4b\0\x02\xCCV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x82R\x81\x01\x91\x90\x91R`@\x01`\0 \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U`\x01\x01b\0\0\x80V[P`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x91\x90\x91\x17\x90\x91U\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01i\x91\x90b\0\x02\xE2V[`\x01`\x01`\xA0\x1B\x03\x16`\xA0RPb\0\x03\t\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01\xACW`\0\x80\xFD[PV[\x80Qb\0\x01\xBC\x81b\0\x01\x96V[\x91\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x01\xD8W`\0\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xF0W`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12b\0\x02\x05W`\0\x80\xFD[\x81Q` \x82\x82\x11\x15b\0\x02\x1CWb\0\x02\x1Cb\0\x01\x80V[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15b\0\x02DWb\0\x02Db\0\x01\x80V[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x8B\x84\x11\x15b\0\x02cW`\0\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15b\0\x02\x8CWb\0\x02|\x86b\0\x01\xAFV[\x85R\x94\x82\x01\x94\x93\x82\x01\x93b\0\x02hV[\x98Pb\0\x02\x9D\x90P\x89\x82\x01b\0\x01\xAFV[\x96PPPPPb\0\x02\xB1`@\x86\x01b\0\x01\xAFV[\x91Pb\0\x02\xC1``\x86\x01b\0\x01\xAFV[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15b\0\x02\xF5W`\0\x80\xFD[\x81Qb\0\x03\x02\x81b\0\x01\x96V[\x93\x92PPPV[`\x80Q`\xA0Qa\x1A\xE8b\0\x03K`\09`\0\x81\x81a\t\x87\x01Ra\n9\x01R`\0\x81\x81a\x02\xE9\x01R\x81\x81a\x04\x17\x01R\x81\x81a\x06\xB8\x01Ra\x07\x82\x01Ra\x1A\xE8`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xC0W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0tW\x80c\xD0\xF2\xD8\xAC\x11a\0NW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x11W\x80c\xE5\x13^\xC6\x14a\x021W\x80c\xF2\xFD\xE3\x8B\x14a\x02QW`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01nW\x80c\x94V\xFB\xCC\x14a\x01\xC4W\x80c\xABW&P\x14a\x01\xE4W`\0\x80\xFD[\x80cc\xFB\x0B\x96\x11a\0\xA5W\x80cc\xFB\x0B\x96\x14a\x01\x0EW\x80ci\r\x83 \x14a\x01.W\x80c\x89\xA3\xF16\x14a\x01NW`\0\x80\xFD[\x80cX]\xA6(\x14a\0\xCCW\x80c\\\x8F\x9B\xF6\x14a\0\xEEW`\0\x80\xFD[6a\0\xC7W\0[`\0\x80\xFD[4\x80\x15a\0\xD8W`\0\x80\xFD[Pa\0\xECa\0\xE76`\x04a\x11\xD8V[a\x02qV[\0[4\x80\x15a\0\xFAW`\0\x80\xFD[Pa\0\xECa\x01\t6`\x04a\x12fV[a\x05\x06V[4\x80\x15a\x01\x1AW`\0\x80\xFD[Pa\0\xECa\x01)6`\x04a\x12\x8AV[a\x06'V[4\x80\x15a\x01:W`\0\x80\xFD[Pa\0\xECa\x01I6`\x04a\x12fV[a\x08GV[4\x80\x15a\x01ZW`\0\x80\xFD[Pa\0\xECa\x01i6`\x04a\x12fV[a\x08\xD5V[4\x80\x15a\x01zW`\0\x80\xFD[P`\0Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xD0W`\0\x80\xFD[Pa\0\xECa\x01\xDF6`\x04a\x12\xEAV[a\n\xB8V[4\x80\x15a\x01\xF0W`\0\x80\xFD[P`\x02Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\0\xECa\x02,6`\x04a\x13#V[a\x0B\xEBV[4\x80\x15a\x02=W`\0\x80\xFD[Pa\0\xECa\x02L6`\x04a\x11\xD8V[a\x0C\xC0V[4\x80\x15a\x02]W`\0\x80\xFD[Pa\0\xECa\x02l6`\x04a\x12fV[a\r\xA1V[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02\xC2W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02\xD2\x84\x86\x01\x86a\x14\xF4V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x03pWa\x03h\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03;Wa\x03;a\x16*V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0E\x92\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02\xDBV[P`\0[\x82Q\x81\x10\x15a\x03\xD9W`\x02T\x83Qa\x03\xD1\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x85\x90\x81\x10a\x03;Wa\x03;a\x16*V[`\x01\x01a\x03tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x04n\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x16}V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\x8DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xD3\x91\x90\x81\x01\x90a\x17;V[PG\x15a\x04\xFDW`\x02Ta\x04\xFD\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16Ga\x0FgV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x82R\x90\x92\x16` \x83\x01R\x7F?Gi\xCBf\xE4,\x90\x99\x80\x90'}]r\xEEh>\xF1v\xA1\xF5o\xB1\x852\x8FUJ*\xB7\xDC\x91\x01`@Q\x80\x91\x03\x90\xA1`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0[\x83\x81\x10\x15a\x07DWa\x07<\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x07\nWa\x07\na\x16*V[\x90P` \x02\x01` \x81\x01\x90a\x07\x1F\x91\x90a\x12fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0E\x92V[`\x01\x01a\x06\xABV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x07\xDB\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x18\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x08@\x91\x90\x81\x01\x90a\x17;V[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xC8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[a\x08\xD2\x81Ga\x10\x06V[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\tVW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xE3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x07\x91\x90a\x19fV[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\n\xA6W=`\0\x80>=`\0\xFD[PPPPa\n\xB4\x82Ga\x10\x06V[PPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\n\xB4\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xA9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xCD\x91\x90a\x19fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x10{V[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C8W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\r3X\x84\x90a\x0C\x92\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x19\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\xACW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xFDW=`\0\x80>=`\0\xFD[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\r\rW`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x13\xFBr\xC7\x90a\ri\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x19\xF0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\x97W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0E\"W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x0F\xC1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0F\xC6V[``\x91P[PP\x90P\x80a\x10\x01W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x10\x01W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80\x83`\x1F\x84\x01\x12a\x11\\W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11tW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x11\xA8W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xC0W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x11\xEEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\x06W`\0\x80\xFD[a\x12\x12\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12+W`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xD2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12xW`\0\x80\xFD[\x815a\x12\x83\x81a\x12DV[\x93\x92PPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x12\xA0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\xB8W`\0\x80\xFD[a\x12\xC4\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12\xDDW`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11JV[`\0\x80`@\x83\x85\x03\x12\x15a\x12\xFDW`\0\x80\xFD[\x825a\x13\x08\x81a\x12DV[\x91P` \x83\x015a\x13\x18\x81a\x12DV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x138W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13PW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x13dW`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x13zW`\0\x80\xFD[Pa\x13\x87\x86\x82\x87\x01a\x11\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x14\nWa\x14\na\x13\x94V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14,Wa\x14,a\x13\x94V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x14GW`\0\x80\xFD[\x815` a\x14\\a\x14W\x83a\x14\x12V[a\x13\xC3V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x14~W`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x14\xA3W\x805a\x14\x96\x81a\x12DV[\x83R\x91\x83\x01\x91\x83\x01a\x14\x83V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14\xC8Wa\x14\xC8a\x13\x94V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15\tW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15!W`\0\x80\xFD[a\x15-\x87\x83\x88\x01a\x146V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x15DW`\0\x80\xFD[a\x15P\x88\x82\x89\x01a\x146V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x15fW`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x15wW`\0\x80\xFD[\x805a\x15\x85a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x15\xA4W`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x16\x18W\x805\x87\x81\x11\x15a\x15\xC0W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x15\xD2W`\0\x80\x81\xFD[\x88\x81\x015a\x15\xE2a\x14W\x82a\x14\xAEV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x15\xF7W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x15\xA8V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x16tW\x81\x81\x01Q\x83\x82\x01R` \x01a\x16\\V[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x17-W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x16\xF0\x81\x88\x8A\x01\x89\x85\x01a\x16YV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x16\xABV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17NW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x17fW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x17zW`\0\x80\xFD[\x81Qa\x17\x88a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x17\xA7W`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x18\x1BW\x80Q\x85\x81\x11\x15a\x17\xC3W`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x17\xD5W`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x17\xE7a\x14W\x83a\x14\xAEV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x17\xFCW`\0\x80\x81\xFD[a\x18\x0B\x83\x8C\x83\x01\x84\x87\x01a\x16YV[\x86RPPP\x91\x86\x01\x91\x86\x01a\x17\xABV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x18\xA6W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x18\xC6W`\0\x80\xFD[\x806\x03\x82\x13\x15a\x11\x8FW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x19XW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x199\x82\x8Aa\x18qV[a\x19D\x87\x82\x84a\x18(V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x19\0V[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x19xW`\0\x80\xFD[PQ\x91\x90PV[`\0a\x19\x8B\x82\x83a\x18qV[`@\x85Ra\x19\x9D`@\x86\x01\x82\x84a\x18(V[\x91PPa\x19\xAD` \x84\x01\x84a\x18qV[\x85\x83\x03` \x87\x01Ra\x19\xC0\x83\x82\x84a\x18(V[\x96\x95PPPPPPV[`@\x81R`\0a\x19\xDD`@\x83\x01\x86a\x19\x7FV[\x82\x81\x03` \x84\x01Ra\x19\xC0\x81\x85\x87a\x18(V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x1A\x90W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x1AnW\x82\x83\xFD[a\x1Az\x86\x8D\x83\x01a\x19\x7FV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x1A\x0EV[PPPP\x82\x81\x03` \x84\x01Ra\x1A\xA7\x81\x85\x87a\x18(V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 \x0B9\xCB\x1DN\xD2z\x99\x07^\xB0\xBA+\xD0\x95cY\tgd\xFC]6F*\x8DF\x1E\xF0\xC3\x82\x08dsolcC\0\x08\x18\x003", + b"`\xC0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0\x1D|8\x03\x80b\0\x1D|\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01\xB7V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P_[\x84Q\x81\x10\x15b\0\0\xDAW`\x01\x80_\x87\x84\x81Q\x81\x10b\0\0\xA0Wb\0\0\xA0b\0\x02\xBCV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q`\x01`\x01`\xA0\x1B\x03\x16\x82R\x81\x01\x91\x90\x91R`@\x01_ \x80T`\xFF\x19\x16\x91\x15\x15\x91\x90\x91\x17\x90U`\x01\x01b\0\0}V[P`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x91\x90\x91\x17\x90\x91U\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\x01=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01b\x91\x90b\0\x02\xD0V[`\x01`\x01`\xA0\x1B\x03\x16`\xA0RPb\0\x02\xF5\x92PPPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01\xA2W_\x80\xFD[PV[\x80Qb\0\x01\xB2\x81b\0\x01\x8DV[\x91\x90PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15b\0\x01\xCBW_\x80\xFD[\x84Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xE2W_\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12b\0\x01\xF6W_\x80\xFD[\x81Q` \x82\x82\x11\x15b\0\x02\rWb\0\x02\rb\0\x01yV[\x81`\x05\x1B`@Q`\x1F\x19`?\x83\x01\x16\x81\x01\x81\x81\x10\x86\x82\x11\x17\x15b\0\x025Wb\0\x025b\0\x01yV[`@R\x92\x83R\x81\x83\x01\x93P\x84\x81\x01\x82\x01\x92\x8B\x84\x11\x15b\0\x02SW_\x80\xFD[\x94\x82\x01\x94[\x83\x86\x10\x15b\0\x02|Wb\0\x02l\x86b\0\x01\xA5V[\x85R\x94\x82\x01\x94\x93\x82\x01\x93b\0\x02XV[\x98Pb\0\x02\x8D\x90P\x89\x82\x01b\0\x01\xA5V[\x96PPPPPb\0\x02\xA1`@\x86\x01b\0\x01\xA5V[\x91Pb\0\x02\xB1``\x86\x01b\0\x01\xA5V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15b\0\x02\xE1W_\x80\xFD[\x81Qb\0\x02\xEE\x81b\0\x01\x8DV[\x93\x92PPPV[`\x80Q`\xA0Qa\x1AIb\0\x033_9_\x81\x81a\tb\x01Ra\n\x12\x01R_\x81\x81a\x02\xD5\x01R\x81\x81a\x04\x02\x01R\x81\x81a\x06\x9B\x01Ra\x07e\x01Ra\x1AI_\xF3\xFE`\x80`@R`\x046\x10a\0\xBBW_5`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0qW\x80c\xD0\xF2\xD8\xAC\x11a\0LW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x02W\x80c\xE5\x13^\xC6\x14a\x02!W\x80c\xF2\xFD\xE3\x8B\x14a\x02@W_\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01cW\x80c\x94V\xFB\xCC\x14a\x01\xB7W\x80c\xABW&P\x14a\x01\xD6W_\x80\xFD[\x80cc\xFB\x0B\x96\x11a\0\xA1W\x80cc\xFB\x0B\x96\x14a\x01\x06W\x80ci\r\x83 \x14a\x01%W\x80c\x89\xA3\xF16\x14a\x01DW_\x80\xFD[\x80cX]\xA6(\x14a\0\xC6W\x80c\\\x8F\x9B\xF6\x14a\0\xE7W_\x80\xFD[6a\0\xC2W\0[_\x80\xFD[4\x80\x15a\0\xD1W_\x80\xFD[Pa\0\xE5a\0\xE06`\x04a\x11\x84V[a\x02_V[\0[4\x80\x15a\0\xF2W_\x80\xFD[Pa\0\xE5a\x01\x016`\x04a\x12\x0CV[a\x04\xECV[4\x80\x15a\x01\x11W_\x80\xFD[Pa\0\xE5a\x01 6`\x04a\x12.V[a\x06\x0CV[4\x80\x15a\x010W_\x80\xFD[Pa\0\xE5a\x01?6`\x04a\x12\x0CV[a\x08%V[4\x80\x15a\x01OW_\x80\xFD[Pa\0\xE5a\x01^6`\x04a\x12\x0CV[a\x08\xB2V[4\x80\x15a\x01nW_\x80\xFD[P_Ta\x01\x8E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xC2W_\x80\xFD[Pa\0\xE5a\x01\xD16`\x04a\x12\x89V[a\n\x8CV[4\x80\x15a\x01\xE1W_\x80\xFD[P`\x02Ta\x01\x8E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x02\rW_\x80\xFD[Pa\0\xE5a\x02\x1C6`\x04a\x12\xC0V[a\x0B\xBCV[4\x80\x15a\x02,W_\x80\xFD[Pa\0\xE5a\x02;6`\x04a\x11\x84V[a\x0C\x8BV[4\x80\x15a\x02KW_\x80\xFD[Pa\0\xE5a\x02Z6`\x04a\x12\x0CV[a\rfV[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02\xB0W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x02\xBF\x84\x86\x01\x86a\x14\x84V[\x92P\x92P\x92P_[\x83Q\x81\x10\x15a\x03\\Wa\x03T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03'Wa\x03'a\x15\xABV[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0EU\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02\xC7V[P_[\x82Q\x81\x10\x15a\x03\xC4W`\x02T\x83Qa\x03\xBC\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x85\x90\x81\x10a\x03'Wa\x03'a\x15\xABV[`\x01\x01a\x03_V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x04Y\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x15\xFAV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x04tW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xB9\x91\x90\x81\x01\x90a\x16\xB6V[PG\x15a\x04\xE3W`\x02Ta\x04\xE3\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16Ga\x0F&V[PPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05qW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x82R\x90\x92\x16` \x83\x01R\x7F?Gi\xCBf\xE4,\x90\x99\x80\x90'}]r\xEEh>\xF1v\xA1\xF5o\xB1\x852\x8FUJ*\xB7\xDC\x91\x01`@Q\x80\x91\x03\x90\xA1`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_[\x83\x81\x10\x15a\x07'Wa\x07\x1F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x06\xEDWa\x06\xEDa\x15\xABV[\x90P` \x02\x01` \x81\x01\x90a\x07\x02\x91\x90a\x12\x0CV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0EUV[`\x01\x01a\x06\x8EV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x07\xBE\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x18?V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x07\xD9W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x08\x1E\x91\x90\x81\x01\x90a\x16\xB6V[PPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xA5W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[a\x08\xAF\x81Ga\x0F\xC1V[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xBCW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xE0\x91\x90a\x18\xCEV[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\nhW_\x80\xFD[PZ\xF1\x15\x80\x15a\nzW=_\x80>=_\xFD[PPPPa\n\x88\x82Ga\x0F\xC1V[PPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\x0CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\n\x88\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0BzW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x9E\x91\x90a\x18\xCEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x103V[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C\x08W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\r3X\x84\x90a\x0Cb\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x19/V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0CyW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xE3W=_\x80>=_\xFD[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C\xD7W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x13\xFBr\xC7\x90a\r3\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x19TV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\rJW_\x80\xFD[PZ\xF1\x15\x80\x15a\r\\W=_\x80>=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\r\xE6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0F W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0F|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0F\x81V[``\x91P[PP\x90P\x80a\x0F\xBCW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\x0F\xBCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0F W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_\x80\x83`\x1F\x84\x01\x12a\x11\x0EW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11%W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11?W_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x11VW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11mW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11?W_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\x11\x97W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xAEW_\x80\xFD[a\x11\xBA\x88\x83\x89\x01a\x10\xFEV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x11\xD2W_\x80\xFD[Pa\x11\xDF\x87\x82\x88\x01a\x11FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xAFW_\x80\xFD[_` \x82\x84\x03\x12\x15a\x12\x1CW_\x80\xFD[\x815a\x12'\x81a\x11\xEBV[\x93\x92PPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x12AW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12XW_\x80\xFD[a\x12d\x88\x83\x89\x01a\x10\xFEV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12|W_\x80\xFD[Pa\x11\xDF\x87\x82\x88\x01a\x10\xFEV[_\x80`@\x83\x85\x03\x12\x15a\x12\x9AW_\x80\xFD[\x825a\x12\xA5\x81a\x11\xEBV[\x91P` \x83\x015a\x12\xB5\x81a\x11\xEBV[\x80\x91PP\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\x12\xD2W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\xE9W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x12\xFCW_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x13\x11W_\x80\xFD[Pa\x13\x1E\x86\x82\x87\x01a\x11FV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x13\x9FWa\x13\x9Fa\x13+V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x13\xC0Wa\x13\xC0a\x13+V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x13\xD9W_\x80\xFD[\x815` a\x13\xEEa\x13\xE9\x83a\x13\xA7V[a\x13XV[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x14\x0FW_\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x144W\x805a\x14'\x81a\x11\xEBV[\x83R\x91\x83\x01\x91\x83\x01a\x14\x14V[P\x96\x95PPPPPPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14XWa\x14Xa\x13+V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x80_``\x84\x86\x03\x12\x15a\x14\x96W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\xADW_\x80\xFD[a\x14\xB9\x87\x83\x88\x01a\x13\xCAV[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x14\xCFW_\x80\xFD[a\x14\xDB\x88\x82\x89\x01a\x13\xCAV[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x14\xF0W_\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x15\0W_\x80\xFD[\x805a\x15\x0Ea\x13\xE9\x82a\x13\xA7V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x15,W_\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x15\x99W\x805\x87\x81\x11\x15a\x15FW_\x80\xFD[\x85\x01`?\x81\x01\x8E\x13a\x15VW_\x80\xFD[\x88\x81\x015a\x15fa\x13\xE9\x82a\x14?V[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x15yW_\x80\xFD[\x81\x89\x84\x01\x8C\x83\x017_\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x150V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x15\xF2W\x81\x81\x01Q\x83\x82\x01R` \x01a\x15\xDAV[PP_\x91\x01RV[_`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01_[\x82\x81\x10\x15a\x16\xA8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x16k\x81\x88\x8A\x01\x89\x85\x01a\x15\xD8V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x16&V[P\x93\x98\x97PPPPPPPPV[_` \x80\x83\x85\x03\x12\x15a\x16\xC7W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x16\xDEW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x16\xF1W_\x80\xFD[\x81Qa\x16\xFFa\x13\xE9\x82a\x13\xA7V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x17\x1DW_\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x17\x8BW\x80Q\x85\x81\x11\x15a\x177W_\x80\xFD[\x86\x01`?\x81\x01\x8B\x13a\x17GW_\x80\xFD[\x87\x81\x01Q`@a\x17Ya\x13\xE9\x83a\x14?V[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x17lW_\x80\xFD[a\x17{\x83\x8C\x83\x01\x84\x87\x01a\x15\xD8V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x17!V[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x18\x12W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x181W_\x80\xFD[\x806\x03\x82\x13\x15a\x11?W_\x80\xFD[_`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86_[\x87\x81\x10\x15a\x18\xC0W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x18\xA1\x82\x8Aa\x17\xDFV[a\x18\xAC\x87\x82\x84a\x17\x98V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x18hV[P\x92\x98\x97PPPPPPPPV[_` \x82\x84\x03\x12\x15a\x18\xDEW_\x80\xFD[PQ\x91\x90PV[_a\x18\xF0\x82\x83a\x17\xDFV[`@\x85Ra\x19\x02`@\x86\x01\x82\x84a\x17\x98V[\x91PPa\x19\x12` \x84\x01\x84a\x17\xDFV[\x85\x83\x03` \x87\x01Ra\x19%\x83\x82\x84a\x17\x98V[\x96\x95PPPPPPV[`@\x81R_a\x19A`@\x83\x01\x86a\x18\xE5V[\x82\x81\x03` \x84\x01Ra\x19%\x81\x85\x87a\x17\x98V[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x19\xF2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x19\xD0W_\x80\xFD[a\x19\xDC\x85\x8C\x83\x01a\x18\xE5V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x19pV[PPP\x82\x81\x03` \x84\x01Ra\x1A\x08\x81\x85\x87a\x17\x98V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 k\x02\xD4\xF6(\x04)\x90\xB8\x18o\x8C\x8C\xBE\x1E;g\x82\xE6\x05P\xAC'\x1C*~\xC8J\xEE,\x8C\x81dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080604052600436106100c05760003560e01c80638da5cb5b11610074578063d0f2d8ac1161004e578063d0f2d8ac14610211578063e5135ec614610231578063f2fde38b1461025157600080fd5b80638da5cb5b1461016e5780639456fbcc146101c4578063ab572650146101e457600080fd5b806363fb0b96116100a557806363fb0b961461010e578063690d83201461012e57806389a3f1361461014e57600080fd5b8063585da628146100cc5780635c8f9bf6146100ee57600080fd5b366100c757005b600080fd5b3480156100d857600080fd5b506100ec6100e73660046111d8565b610271565b005b3480156100fa57600080fd5b506100ec610109366004611266565b610506565b34801561011a57600080fd5b506100ec61012936600461128a565b610627565b34801561013a57600080fd5b506100ec610149366004611266565b610847565b34801561015a57600080fd5b506100ec610169366004611266565b6108d5565b34801561017a57600080fd5b5060005461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101d057600080fd5b506100ec6101df3660046112ea565b610ab8565b3480156101f057600080fd5b5060025461019b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561021d57600080fd5b506100ec61022c366004611323565b610beb565b34801561023d57600080fd5b506100ec61024c3660046111d8565b610cc0565b34801561025d57600080fd5b506100ec61026c366004611266565b610da1565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102c2576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806102d2848601866114f4565b92509250925060005b8351811015610370576103687f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061033b5761033b61162a565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610e929092919063ffffffff16565b6001016102db565b5060005b82518110156103d95760025483516103d19173ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908590811061033b5761033b61162a565b600101610374565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc9061046e907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161167d565b6000604051808303816000875af115801561048d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104d3919081019061173b565b5047156104fd576002546104fd9073ffffffffffffffffffffffffffffffffffffffff1647610f67565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff808516825290921660208301527f3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b60005b838110156107445761073c7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87878581811061070a5761070a61162a565b905060200201602081019061071f9190611266565b73ffffffffffffffffffffffffffffffffffffffff169190610e92565b6001016106ab565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906107db907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869086906004016118d5565b6000604051808303816000875af11580156107fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610840919081019061173b565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6108d28147611006565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a079190611966565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015610a9257600080fd5b505af1158015610aa6573d6000803e3d6000fd5b50505050610ab48247611006565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610ab490829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcd9190611966565b73ffffffffffffffffffffffffffffffffffffffff8516919061107b565b3360009081526001602052604081205460ff1615159003610c38576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d33588490610c92908690869086906004016119ca565b600060405180830381600087803b158015610cac57600080fd5b505af11580156104fd573d6000803e3d6000fd5b3360009081526001602052604081205460ff1615159003610d0d576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906313fb72c790610d699087908790879087906004016119f0565b600060405180830381600087803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610583565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610583565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610fc1576040519150601f19603f3d011682016040523d82523d6000602084013e610fc6565b606091505b5050905080611001576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080611001576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610583565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610583565b60008083601f84011261115c57600080fd5b50813567ffffffffffffffff81111561117457600080fd5b6020830191508360208260051b850101111561118f57600080fd5b9250929050565b60008083601f8401126111a857600080fd5b50813567ffffffffffffffff8111156111c057600080fd5b60208301915083602082850101111561118f57600080fd5b600080600080604085870312156111ee57600080fd5b843567ffffffffffffffff8082111561120657600080fd5b6112128883890161114a565b9096509450602087013591508082111561122b57600080fd5b5061123887828801611196565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108d257600080fd5b60006020828403121561127857600080fd5b813561128381611244565b9392505050565b600080600080604085870312156112a057600080fd5b843567ffffffffffffffff808211156112b857600080fd5b6112c48883890161114a565b909650945060208701359150808211156112dd57600080fd5b506112388782880161114a565b600080604083850312156112fd57600080fd5b823561130881611244565b9150602083013561131881611244565b809150509250929050565b60008060006040848603121561133857600080fd5b833567ffffffffffffffff8082111561135057600080fd5b908501906040828803121561136457600080fd5b9093506020850135908082111561137a57600080fd5b5061138786828701611196565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561140a5761140a611394565b604052919050565b600067ffffffffffffffff82111561142c5761142c611394565b5060051b60200190565b600082601f83011261144757600080fd5b8135602061145c61145783611412565b6113c3565b8083825260208201915060208460051b87010193508684111561147e57600080fd5b602086015b848110156114a357803561149681611244565b8352918301918301611483565b509695505050505050565b600067ffffffffffffffff8211156114c8576114c8611394565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60008060006060848603121561150957600080fd5b833567ffffffffffffffff8082111561152157600080fd5b61152d87838801611436565b945060209150818601358181111561154457600080fd5b61155088828901611436565b9450506040808701358281111561156657600080fd5b8701601f8101891361157757600080fd5b803561158561145782611412565b81815260059190911b8201850190858101908b8311156115a457600080fd5b8684015b83811015611618578035878111156115c05760008081fd5b8501603f81018e136115d25760008081fd5b888101356115e2611457826114ae565b8181528f898385010111156115f75760008081fd5b818984018c83013760009181018b01919091528452509187019187016115a8565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561167457818101518382015260200161165c565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b8281101561172d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452815180518088526116f081888a01898501611659565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016969096018501955092840192908401906001016116ab565b509398975050505050505050565b6000602080838503121561174e57600080fd5b825167ffffffffffffffff8082111561176657600080fd5b818501915085601f83011261177a57600080fd5b815161178861145782611412565b81815260059190911b830184019084810190888311156117a757600080fd5b8585015b8381101561181b578051858111156117c35760008081fd5b8601603f81018b136117d55760008081fd5b8781015160406117e7611457836114ae565b8281528d828486010111156117fc5760008081fd5b61180b838c8301848701611659565b86525050509186019186016117ab565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126118a657600080fd5b830160208101925035905067ffffffffffffffff8111156118c657600080fd5b80360382131561118f57600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b87811015611958577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018352611939828a611871565b611944878284611828565b965050509183019190830190600101611900565b509298975050505050505050565b60006020828403121561197857600080fd5b5051919050565b600061198b8283611871565b6040855261199d604086018284611828565b9150506119ad6020840184611871565b85830360208701526119c0838284611828565b9695505050505050565b6040815260006119dd604083018661197f565b82810360208401526119c0818587611828565b6040808252810184905260006060600586901b830181019083018783805b89811015611a90577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112611a6e578283fd5b611a7a868d830161197f565b9550506020938401939290920191600101611a0e565b505050508281036020840152611aa7818587611828565b97965050505050505056fea26469706673582212200b39cb1d4ed27a99075eb0ba2bd0956359096764fc5d36462a8d461ef0c3820864736f6c63430008180033 + ///0x6080604052600436106100bb575f3560e01c80638da5cb5b11610071578063d0f2d8ac1161004c578063d0f2d8ac14610202578063e5135ec614610221578063f2fde38b14610240575f80fd5b80638da5cb5b146101635780639456fbcc146101b7578063ab572650146101d6575f80fd5b806363fb0b96116100a157806363fb0b9614610106578063690d83201461012557806389a3f13614610144575f80fd5b8063585da628146100c65780635c8f9bf6146100e7575f80fd5b366100c257005b5f80fd5b3480156100d1575f80fd5b506100e56100e0366004611184565b61025f565b005b3480156100f2575f80fd5b506100e561010136600461120c565b6104ec565b348015610111575f80fd5b506100e561012036600461122e565b61060c565b348015610130575f80fd5b506100e561013f36600461120c565b610825565b34801561014f575f80fd5b506100e561015e36600461120c565b6108b2565b34801561016e575f80fd5b505f5461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101c2575f80fd5b506100e56101d1366004611289565b610a8c565b3480156101e1575f80fd5b5060025461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020d575f80fd5b506100e561021c3660046112c0565b610bbc565b34801561022c575f80fd5b506100e561023b366004611184565b610c8b565b34801561024b575f80fd5b506100e561025a36600461120c565b610d66565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102b0576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80806102bf84860186611484565b9250925092505f5b835181101561035c576103547f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff868481518110610327576103276115ab565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610e559092919063ffffffff16565b6001016102c7565b505f5b82518110156103c45760025483516103bc9173ffffffffffffffffffffffffffffffffffffffff16907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869085908110610327576103276115ab565b60010161035f565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610459907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9085906004016115fa565b5f604051808303815f875af1158015610474573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104b991908101906116b6565b5047156104e3576002546104e39073ffffffffffffffffffffffffffffffffffffffff1647610f26565b50505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002546040805173ffffffffffffffffffffffffffffffffffffffff808516825290921660208301527f3f4769cb66e42c90998090277d5d72ee683ef176a1f56fb185328f554a2ab7dc910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461068c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b5f5b838110156107275761071f7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8787858181106106ed576106ed6115ab565b9050602002016020810190610702919061120c565b73ffffffffffffffffffffffffffffffffffffffff169190610e55565b60010161068e565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906107be907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff908690869060040161183f565b5f604051808303815f875af11580156107d9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261081e91908101906116b6565b5050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b6108af8147610fc1565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156109bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e091906118ce565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b158015610a68575f80fd5b505af1158015610a7a573d5f803e3d5ffd5b50505050610a888247610fc1565b5050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610a8890829073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610b7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9e91906118ce565b73ffffffffffffffffffffffffffffffffffffffff85169190611033565b335f9081526001602052604081205460ff1615159003610c08576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690630d33588490610c629086908690869060040161192f565b5f604051808303815f87803b158015610c79575f80fd5b505af11580156104e3573d5f803e3d5ffd5b335f9081526001602052604081205460ff1615159003610cd7576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906313fb72c790610d33908790879087908790600401611954565b5f604051808303815f87803b158015610d4a575f80fd5b505af1158015610d5c573d5f803e3d5ffd5b5050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610568565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610f20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610568565b50505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610f7c576040519150601f19603f3d011682016040523d82523d5f602084013e610f81565b606091505b5050905080610fbc576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f805f805f85875af1905080610fbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610568565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610f20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610568565b5f8083601f84011261110e575f80fd5b50813567ffffffffffffffff811115611125575f80fd5b6020830191508360208260051b850101111561113f575f80fd5b9250929050565b5f8083601f840112611156575f80fd5b50813567ffffffffffffffff81111561116d575f80fd5b60208301915083602082850101111561113f575f80fd5b5f805f8060408587031215611197575f80fd5b843567ffffffffffffffff808211156111ae575f80fd5b6111ba888389016110fe565b909650945060208701359150808211156111d2575f80fd5b506111df87828801611146565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108af575f80fd5b5f6020828403121561121c575f80fd5b8135611227816111eb565b9392505050565b5f805f8060408587031215611241575f80fd5b843567ffffffffffffffff80821115611258575f80fd5b611264888389016110fe565b9096509450602087013591508082111561127c575f80fd5b506111df878288016110fe565b5f806040838503121561129a575f80fd5b82356112a5816111eb565b915060208301356112b5816111eb565b809150509250929050565b5f805f604084860312156112d2575f80fd5b833567ffffffffffffffff808211156112e9575f80fd5b90850190604082880312156112fc575f80fd5b90935060208501359080821115611311575f80fd5b5061131e86828701611146565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561139f5761139f61132b565b604052919050565b5f67ffffffffffffffff8211156113c0576113c061132b565b5060051b60200190565b5f82601f8301126113d9575f80fd5b813560206113ee6113e9836113a7565b611358565b8083825260208201915060208460051b87010193508684111561140f575f80fd5b602086015b84811015611434578035611427816111eb565b8352918301918301611414565b509695505050505050565b5f67ffffffffffffffff8211156114585761145861132b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f805f60608486031215611496575f80fd5b833567ffffffffffffffff808211156114ad575f80fd5b6114b9878388016113ca565b94506020915081860135818111156114cf575f80fd5b6114db888289016113ca565b945050604080870135828111156114f0575f80fd5b8701601f81018913611500575f80fd5b803561150e6113e9826113a7565b81815260059190911b8201850190858101908b83111561152c575f80fd5b8684015b8381101561159957803587811115611546575f80fd5b8501603f81018e13611556575f80fd5b888101356115666113e98261143f565b8181528f89838501011115611579575f80fd5b818984018c8301375f9181018b0191909152845250918701918701611530565b50809750505050505050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156115f25781810151838201526020016115da565b50505f910152565b5f60408201848352602060408185015281855180845260608601915060608160051b87010193508287015f5b828110156116a8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261166b81888a018985016115d8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01696909601850195509284019290840190600101611626565b509398975050505050505050565b5f60208083850312156116c7575f80fd5b825167ffffffffffffffff808211156116de575f80fd5b818501915085601f8301126116f1575f80fd5b81516116ff6113e9826113a7565b81815260059190911b8301840190848101908883111561171d575f80fd5b8585015b8381101561178b57805185811115611737575f80fd5b8601603f81018b13611747575f80fd5b8781015160406117596113e98361143f565b8281528d8284860101111561176c575f80fd5b61177b838c83018487016115d8565b8652505050918601918601611721565b5098975050505050505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611812575f80fd5b830160208101925035905067ffffffffffffffff811115611831575f80fd5b80360382131561113f575f80fd5b5f604082018583526020604060208501528185835260608501905060608660051b8601019250865f5b878110156118c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08786030183526118a1828a6117df565b6118ac878284611798565b965050509183019190830190600101611868565b509298975050505050505050565b5f602082840312156118de575f80fd5b5051919050565b5f6118f082836117df565b60408552611902604086018284611798565b91505061191260208401846117df565b8583036020870152611925838284611798565b9695505050505050565b604081525f61194160408301866118e5565b8281036020840152611925818587611798565b604080825281018490525f6060600586901b8301810190830187835b888110156119f2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18b36030181126119d0575f80fd5b6119dc858c83016118e5565b9450506020928301929190910190600101611970565b5050508281036020840152611a08818587611798565b97965050505050505056fea26469706673582212206b02d4f628042990b8186f8c8cbe1e3b6782e60550ac271c2a7ec84aee2c8c8164736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x046\x10a\0\xC0W`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0tW\x80c\xD0\xF2\xD8\xAC\x11a\0NW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x11W\x80c\xE5\x13^\xC6\x14a\x021W\x80c\xF2\xFD\xE3\x8B\x14a\x02QW`\0\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01nW\x80c\x94V\xFB\xCC\x14a\x01\xC4W\x80c\xABW&P\x14a\x01\xE4W`\0\x80\xFD[\x80cc\xFB\x0B\x96\x11a\0\xA5W\x80cc\xFB\x0B\x96\x14a\x01\x0EW\x80ci\r\x83 \x14a\x01.W\x80c\x89\xA3\xF16\x14a\x01NW`\0\x80\xFD[\x80cX]\xA6(\x14a\0\xCCW\x80c\\\x8F\x9B\xF6\x14a\0\xEEW`\0\x80\xFD[6a\0\xC7W\0[`\0\x80\xFD[4\x80\x15a\0\xD8W`\0\x80\xFD[Pa\0\xECa\0\xE76`\x04a\x11\xD8V[a\x02qV[\0[4\x80\x15a\0\xFAW`\0\x80\xFD[Pa\0\xECa\x01\t6`\x04a\x12fV[a\x05\x06V[4\x80\x15a\x01\x1AW`\0\x80\xFD[Pa\0\xECa\x01)6`\x04a\x12\x8AV[a\x06'V[4\x80\x15a\x01:W`\0\x80\xFD[Pa\0\xECa\x01I6`\x04a\x12fV[a\x08GV[4\x80\x15a\x01ZW`\0\x80\xFD[Pa\0\xECa\x01i6`\x04a\x12fV[a\x08\xD5V[4\x80\x15a\x01zW`\0\x80\xFD[P`\0Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xD0W`\0\x80\xFD[Pa\0\xECa\x01\xDF6`\x04a\x12\xEAV[a\n\xB8V[4\x80\x15a\x01\xF0W`\0\x80\xFD[P`\x02Ta\x01\x9B\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x02\x1DW`\0\x80\xFD[Pa\0\xECa\x02,6`\x04a\x13#V[a\x0B\xEBV[4\x80\x15a\x02=W`\0\x80\xFD[Pa\0\xECa\x02L6`\x04a\x11\xD8V[a\x0C\xC0V[4\x80\x15a\x02]W`\0\x80\xFD[Pa\0\xECa\x02l6`\x04a\x12fV[a\r\xA1V[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02\xC2W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02\xD2\x84\x86\x01\x86a\x14\xF4V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x03pWa\x03h\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03;Wa\x03;a\x16*V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0E\x92\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02\xDBV[P`\0[\x82Q\x81\x10\x15a\x03\xD9W`\x02T\x83Qa\x03\xD1\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x85\x90\x81\x10a\x03;Wa\x03;a\x16*V[`\x01\x01a\x03tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x04n\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x16}V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\x8DW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xD3\x91\x90\x81\x01\x90a\x17;V[PG\x15a\x04\xFDW`\x02Ta\x04\xFD\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16Ga\x0FgV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x82R\x90\x92\x16` \x83\x01R\x7F?Gi\xCBf\xE4,\x90\x99\x80\x90'}]r\xEEh>\xF1v\xA1\xF5o\xB1\x852\x8FUJ*\xB7\xDC\x91\x01`@Q\x80\x91\x03\x90\xA1`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0[\x83\x81\x10\x15a\x07DWa\x07<\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x07\nWa\x07\na\x16*V[\x90P` \x02\x01` \x81\x01\x90a\x07\x1F\x91\x90a\x12fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0E\x92V[`\x01\x01a\x06\xABV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x07\xDB\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x18\xD5V[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x07\xFAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x08@\x91\x90\x81\x01\x90a\x17;V[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xC8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[a\x08\xD2\x81Ga\x10\x06V[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\tVW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xE3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x07\x91\x90a\x19fV[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x92W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\n\xA6W=`\0\x80>=`\0\xFD[PPPPa\n\xB4\x82Ga\x10\x06V[PPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\n\xB4\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B\xA9W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\xCD\x91\x90a\x19fV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x10{V[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C8W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\r3X\x84\x90a\x0C\x92\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x19\xCAV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0C\xACW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xFDW=`\0\x80>=`\0\xFD[3`\0\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\r\rW`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x13\xFBr\xC7\x90a\ri\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x19\xF0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x83W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r\x97W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0E\"W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x0F\xC1W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x0F\xC6V[``\x91P[PP\x90P\x80a\x10\x01W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x10\x01W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x0FaW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05\x83V[`\0\x80\x83`\x1F\x84\x01\x12a\x11\\W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11tW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x11\xA8W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11\xC0W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\x8FW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x11\xEEW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\x06W`\0\x80\xFD[a\x12\x12\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12+W`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11\x96V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xD2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x12xW`\0\x80\xFD[\x815a\x12\x83\x81a\x12DV[\x93\x92PPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x12\xA0W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\xB8W`\0\x80\xFD[a\x12\xC4\x88\x83\x89\x01a\x11JV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12\xDDW`\0\x80\xFD[Pa\x128\x87\x82\x88\x01a\x11JV[`\0\x80`@\x83\x85\x03\x12\x15a\x12\xFDW`\0\x80\xFD[\x825a\x13\x08\x81a\x12DV[\x91P` \x83\x015a\x13\x18\x81a\x12DV[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x138W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13PW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x13dW`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x13zW`\0\x80\xFD[Pa\x13\x87\x86\x82\x87\x01a\x11\x96V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x14\nWa\x14\na\x13\x94V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14,Wa\x14,a\x13\x94V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x14GW`\0\x80\xFD[\x815` a\x14\\a\x14W\x83a\x14\x12V[a\x13\xC3V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x14~W`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x14\xA3W\x805a\x14\x96\x81a\x12DV[\x83R\x91\x83\x01\x91\x83\x01a\x14\x83V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14\xC8Wa\x14\xC8a\x13\x94V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x15\tW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x15!W`\0\x80\xFD[a\x15-\x87\x83\x88\x01a\x146V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x15DW`\0\x80\xFD[a\x15P\x88\x82\x89\x01a\x146V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x15fW`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x15wW`\0\x80\xFD[\x805a\x15\x85a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x15\xA4W`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x16\x18W\x805\x87\x81\x11\x15a\x15\xC0W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x15\xD2W`\0\x80\x81\xFD[\x88\x81\x015a\x15\xE2a\x14W\x82a\x14\xAEV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x15\xF7W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x15\xA8V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x16tW\x81\x81\x01Q\x83\x82\x01R` \x01a\x16\\V[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x17-W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x16\xF0\x81\x88\x8A\x01\x89\x85\x01a\x16YV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x16\xABV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x17NW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x17fW`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x17zW`\0\x80\xFD[\x81Qa\x17\x88a\x14W\x82a\x14\x12V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x17\xA7W`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x18\x1BW\x80Q\x85\x81\x11\x15a\x17\xC3W`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x17\xD5W`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x17\xE7a\x14W\x83a\x14\xAEV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x17\xFCW`\0\x80\x81\xFD[a\x18\x0B\x83\x8C\x83\x01\x84\x87\x01a\x16YV[\x86RPPP\x91\x86\x01\x91\x86\x01a\x17\xABV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x18\xA6W`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x18\xC6W`\0\x80\xFD[\x806\x03\x82\x13\x15a\x11\x8FW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x19XW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x199\x82\x8Aa\x18qV[a\x19D\x87\x82\x84a\x18(V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x19\0V[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x19xW`\0\x80\xFD[PQ\x91\x90PV[`\0a\x19\x8B\x82\x83a\x18qV[`@\x85Ra\x19\x9D`@\x86\x01\x82\x84a\x18(V[\x91PPa\x19\xAD` \x84\x01\x84a\x18qV[\x85\x83\x03` \x87\x01Ra\x19\xC0\x83\x82\x84a\x18(V[\x96\x95PPPPPPV[`@\x81R`\0a\x19\xDD`@\x83\x01\x86a\x19\x7FV[\x82\x81\x03` \x84\x01Ra\x19\xC0\x81\x85\x87a\x18(V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x1A\x90W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x1AnW\x82\x83\xFD[a\x1Az\x86\x8D\x83\x01a\x19\x7FV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x1A\x0EV[PPPP\x82\x81\x03` \x84\x01Ra\x1A\xA7\x81\x85\x87a\x18(V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 \x0B9\xCB\x1DN\xD2z\x99\x07^\xB0\xBA+\xD0\x95cY\tgd\xFC]6F*\x8DF\x1E\xF0\xC3\x82\x08dsolcC\0\x08\x18\x003", + b"`\x80`@R`\x046\x10a\0\xBBW_5`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0qW\x80c\xD0\xF2\xD8\xAC\x11a\0LW\x80c\xD0\xF2\xD8\xAC\x14a\x02\x02W\x80c\xE5\x13^\xC6\x14a\x02!W\x80c\xF2\xFD\xE3\x8B\x14a\x02@W_\x80\xFD[\x80c\x8D\xA5\xCB[\x14a\x01cW\x80c\x94V\xFB\xCC\x14a\x01\xB7W\x80c\xABW&P\x14a\x01\xD6W_\x80\xFD[\x80cc\xFB\x0B\x96\x11a\0\xA1W\x80cc\xFB\x0B\x96\x14a\x01\x06W\x80ci\r\x83 \x14a\x01%W\x80c\x89\xA3\xF16\x14a\x01DW_\x80\xFD[\x80cX]\xA6(\x14a\0\xC6W\x80c\\\x8F\x9B\xF6\x14a\0\xE7W_\x80\xFD[6a\0\xC2W\0[_\x80\xFD[4\x80\x15a\0\xD1W_\x80\xFD[Pa\0\xE5a\0\xE06`\x04a\x11\x84V[a\x02_V[\0[4\x80\x15a\0\xF2W_\x80\xFD[Pa\0\xE5a\x01\x016`\x04a\x12\x0CV[a\x04\xECV[4\x80\x15a\x01\x11W_\x80\xFD[Pa\0\xE5a\x01 6`\x04a\x12.V[a\x06\x0CV[4\x80\x15a\x010W_\x80\xFD[Pa\0\xE5a\x01?6`\x04a\x12\x0CV[a\x08%V[4\x80\x15a\x01OW_\x80\xFD[Pa\0\xE5a\x01^6`\x04a\x12\x0CV[a\x08\xB2V[4\x80\x15a\x01nW_\x80\xFD[P_Ta\x01\x8E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xC2W_\x80\xFD[Pa\0\xE5a\x01\xD16`\x04a\x12\x89V[a\n\x8CV[4\x80\x15a\x01\xE1W_\x80\xFD[P`\x02Ta\x01\x8E\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x02\rW_\x80\xFD[Pa\0\xE5a\x02\x1C6`\x04a\x12\xC0V[a\x0B\xBCV[4\x80\x15a\x02,W_\x80\xFD[Pa\0\xE5a\x02;6`\x04a\x11\x84V[a\x0C\x8BV[4\x80\x15a\x02KW_\x80\xFD[Pa\0\xE5a\x02Z6`\x04a\x12\x0CV[a\rfV[`\x02Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x02\xB0W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x02\xBF\x84\x86\x01\x86a\x14\x84V[\x92P\x92P\x92P_[\x83Q\x81\x10\x15a\x03\\Wa\x03T\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x03'Wa\x03'a\x15\xABV[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0EU\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02\xC7V[P_[\x82Q\x81\x10\x15a\x03\xC4W`\x02T\x83Qa\x03\xBC\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x85\x90\x81\x10a\x03'Wa\x03'a\x15\xABV[`\x01\x01a\x03_V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x04Y\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x15\xFAV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x04tW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04\xB9\x91\x90\x81\x01\x90a\x16\xB6V[PG\x15a\x04\xE3W`\x02Ta\x04\xE3\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16Ga\x0F&V[PPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05qW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x85\x16\x82R\x90\x92\x16` \x83\x01R\x7F?Gi\xCBf\xE4,\x90\x99\x80\x90'}]r\xEEh>\xF1v\xA1\xF5o\xB1\x852\x8FUJ*\xB7\xDC\x91\x01`@Q\x80\x91\x03\x90\xA1`\x02\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\x8CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_[\x83\x81\x10\x15a\x07'Wa\x07\x1F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x06\xEDWa\x06\xEDa\x15\xABV[\x90P` \x02\x01` \x81\x01\x90a\x07\x02\x91\x90a\x12\x0CV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0EUV[`\x01\x01a\x06\x8EV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x07\xBE\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x18?V[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x07\xD9W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x08\x1E\x91\x90\x81\x01\x90a\x16\xB6V[PPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xA5W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[a\x08\xAF\x81Ga\x0F\xC1V[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xBCW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xE0\x91\x90a\x18\xCEV[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\nhW_\x80\xFD[PZ\xF1\x15\x80\x15a\nzW=_\x80>=_\xFD[PPPPa\n\x88\x82Ga\x0F\xC1V[PPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\x0CW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01Ra\n\x88\x90\x82\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0BzW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x9E\x91\x90a\x18\xCEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16\x91\x90a\x103V[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C\x08W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\r3X\x84\x90a\x0Cb\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x19/V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x0CyW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04\xE3W=_\x80>=_\xFD[3_\x90\x81R`\x01` R`@\x81 T`\xFF\x16\x15\x15\x90\x03a\x0C\xD7W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02T`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90c\x13\xFBr\xC7\x90a\r3\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x19TV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\rJW_\x80\xFD[PZ\xF1\x15\x80\x15a\r\\W=_\x80>=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\r\xE6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0F W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0F|W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0F\x81V[``\x91P[PP\x90P\x80a\x0F\xBCW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\x0F\xBCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_`@Q\x7F\xA9\x05\x9C\xBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0F W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0F`$\x82\x01R\x7FTRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x05hV[_\x80\x83`\x1F\x84\x01\x12a\x11\x0EW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11%W_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11?W_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x11VW_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x11mW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11?W_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\x11\x97W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xAEW_\x80\xFD[a\x11\xBA\x88\x83\x89\x01a\x10\xFEV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x11\xD2W_\x80\xFD[Pa\x11\xDF\x87\x82\x88\x01a\x11FV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\xAFW_\x80\xFD[_` \x82\x84\x03\x12\x15a\x12\x1CW_\x80\xFD[\x815a\x12'\x81a\x11\xEBV[\x93\x92PPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x12AW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12XW_\x80\xFD[a\x12d\x88\x83\x89\x01a\x10\xFEV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x12|W_\x80\xFD[Pa\x11\xDF\x87\x82\x88\x01a\x10\xFEV[_\x80`@\x83\x85\x03\x12\x15a\x12\x9AW_\x80\xFD[\x825a\x12\xA5\x81a\x11\xEBV[\x91P` \x83\x015a\x12\xB5\x81a\x11\xEBV[\x80\x91PP\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a\x12\xD2W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x12\xE9W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x12\xFCW_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x13\x11W_\x80\xFD[Pa\x13\x1E\x86\x82\x87\x01a\x11FV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x13\x9FWa\x13\x9Fa\x13+V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x13\xC0Wa\x13\xC0a\x13+V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x13\xD9W_\x80\xFD[\x815` a\x13\xEEa\x13\xE9\x83a\x13\xA7V[a\x13XV[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x14\x0FW_\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x144W\x805a\x14'\x81a\x11\xEBV[\x83R\x91\x83\x01\x91\x83\x01a\x14\x14V[P\x96\x95PPPPPPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x14XWa\x14Xa\x13+V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x80_``\x84\x86\x03\x12\x15a\x14\x96W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\xADW_\x80\xFD[a\x14\xB9\x87\x83\x88\x01a\x13\xCAV[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x14\xCFW_\x80\xFD[a\x14\xDB\x88\x82\x89\x01a\x13\xCAV[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x14\xF0W_\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x15\0W_\x80\xFD[\x805a\x15\x0Ea\x13\xE9\x82a\x13\xA7V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x15,W_\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x15\x99W\x805\x87\x81\x11\x15a\x15FW_\x80\xFD[\x85\x01`?\x81\x01\x8E\x13a\x15VW_\x80\xFD[\x88\x81\x015a\x15fa\x13\xE9\x82a\x14?V[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x15yW_\x80\xFD[\x81\x89\x84\x01\x8C\x83\x017_\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x150V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x15\xF2W\x81\x81\x01Q\x83\x82\x01R` \x01a\x15\xDAV[PP_\x91\x01RV[_`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01_[\x82\x81\x10\x15a\x16\xA8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x16k\x81\x88\x8A\x01\x89\x85\x01a\x15\xD8V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x16&V[P\x93\x98\x97PPPPPPPPV[_` \x80\x83\x85\x03\x12\x15a\x16\xC7W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x16\xDEW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x16\xF1W_\x80\xFD[\x81Qa\x16\xFFa\x13\xE9\x82a\x13\xA7V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x17\x1DW_\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x17\x8BW\x80Q\x85\x81\x11\x15a\x177W_\x80\xFD[\x86\x01`?\x81\x01\x8B\x13a\x17GW_\x80\xFD[\x87\x81\x01Q`@a\x17Ya\x13\xE9\x83a\x14?V[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x17lW_\x80\xFD[a\x17{\x83\x8C\x83\x01\x84\x87\x01a\x15\xD8V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x17!V[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x18\x12W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x181W_\x80\xFD[\x806\x03\x82\x13\x15a\x11?W_\x80\xFD[_`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86_[\x87\x81\x10\x15a\x18\xC0W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x18\xA1\x82\x8Aa\x17\xDFV[a\x18\xAC\x87\x82\x84a\x17\x98V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x18hV[P\x92\x98\x97PPPPPPPPV[_` \x82\x84\x03\x12\x15a\x18\xDEW_\x80\xFD[PQ\x91\x90PV[_a\x18\xF0\x82\x83a\x17\xDFV[`@\x85Ra\x19\x02`@\x86\x01\x82\x84a\x17\x98V[\x91PPa\x19\x12` \x84\x01\x84a\x17\xDFV[\x85\x83\x03` \x87\x01Ra\x19%\x83\x82\x84a\x17\x98V[\x96\x95PPPPPPV[`@\x81R_a\x19A`@\x83\x01\x86a\x18\xE5V[\x82\x81\x03` \x84\x01Ra\x19%\x81\x85\x87a\x17\x98V[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x19\xF2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x19\xD0W_\x80\xFD[a\x19\xDC\x85\x8C\x83\x01a\x18\xE5V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x19pV[PPP\x82\x81\x03` \x84\x01Ra\x1A\x08\x81\x85\x87a\x17\x98V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 k\x02\xD4\xF6(\x04)\x90\xB8\x18o\x8C\x8C\xBE\x1E;g\x82\xE6\x05P\xAC'\x1C*~\xC8J\xEE,\x8C\x81dsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -477,8 +491,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -695,17 +709,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -721,8 +746,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -991,14 +1016,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1010,7 +1043,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1224,18 +1257,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1512,13 +1555,20 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; /**```solidity struct SignedOrder { bytes order; bytes sig; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignedOrder { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1724,10 +1774,15 @@ struct SignedOrder { bytes order; bytes sig; } ```solidity error CallerNotWhitelisted(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct CallerNotWhitelisted {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1783,10 +1838,15 @@ error CallerNotWhitelisted(); ```solidity error MsgSenderNotReactor(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MsgSenderNotReactor {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1842,10 +1902,15 @@ error MsgSenderNotReactor(); ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1901,7 +1966,12 @@ error NativeTransferFailed(); ```solidity event OwnershipTransferred(address indexed user, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -1909,7 +1979,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1971,6 +2046,21 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -2019,7 +2109,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity event ReactorChanged(address newReactor, address oldReactor); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ReactorChanged { #[allow(missing_docs)] @@ -2027,7 +2122,12 @@ event ReactorChanged(address newReactor, address oldReactor); #[allow(missing_docs)] pub oldReactor: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2088,6 +2188,21 @@ event ReactorChanged(address newReactor, address oldReactor); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -2137,14 +2252,18 @@ event ReactorChanged(address newReactor, address oldReactor); ```solidity constructor(address[] _whitelistedCallers, address _reactor, address _owner, address _swapRouter02); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _whitelistedCallers: alloy::sol_types::private::Vec< alloy::sol_types::private::Address, >, + #[allow(missing_docs)] pub _reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _swapRouter02: alloy::sol_types::private::Address, } const _: () = { @@ -2240,17 +2359,24 @@ constructor(address[] _whitelistedCallers, address _reactor, address _owner, add ```solidity function execute(SignedOrder memory order, bytes memory callbackData) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`execute((bytes,bytes),bytes)`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2368,19 +2494,26 @@ function execute(SignedOrder memory order, bytes memory callbackData) external; ```solidity function executeBatch(SignedOrder[] memory orders, bytes memory callbackData) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[],bytes)`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2505,21 +2638,28 @@ function executeBatch(SignedOrder[] memory orders, bytes memory callbackData) ex ```solidity function multicall(address[] memory tokensToApprove, bytes[] memory multicallData) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct multicallCall { + #[allow(missing_docs)] pub tokensToApprove: alloy::sol_types::private::Vec< alloy::sol_types::private::Address, >, + #[allow(missing_docs)] pub multicallData: alloy::sol_types::private::Vec< alloy::sol_types::private::Bytes, >, } ///Container type for the return parameters of the [`multicall(address[],bytes[])`](multicallCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct multicallReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2642,16 +2782,22 @@ function multicall(address[] memory tokensToApprove, bytes[] memory multicallDat ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2755,16 +2901,22 @@ function owner() external view returns (address); ```solidity function reactor() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCall {} ///Container type for the return parameters of the [`reactor()`](reactorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2868,19 +3020,26 @@ function reactor() external view returns (address); ```solidity function reactorCallback(ResolvedOrder[] memory, bytes memory callbackData) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3007,16 +3166,22 @@ function reactorCallback(ResolvedOrder[] memory, bytes memory callbackData) exte ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3128,16 +3293,22 @@ function transferOwnership(address newOwner) external; ```solidity function unwrapWETH(address recipient) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unwrapWETHCall { + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`unwrapWETH(address)`](unwrapWETHCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unwrapWETHReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3245,16 +3416,22 @@ function unwrapWETH(address recipient) external; ```solidity function updateReactor(address _reactor) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateReactorCall { + #[allow(missing_docs)] pub _reactor: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`updateReactor(address)`](updateReactorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct updateReactorReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3362,17 +3539,24 @@ function updateReactor(address _reactor) external; ```solidity function withdrawERC20(address token, address to) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawERC20Call { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`withdrawERC20(address,address)`](withdrawERC20Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawERC20Return {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3495,16 +3679,22 @@ function withdrawERC20(address token, address to) external; ```solidity function withdrawETH(address recipient) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawETHCall { + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`withdrawETH(address)`](withdrawETHCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawETHReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3610,16 +3800,27 @@ function withdrawETH(address recipient) external; }; ///Container for all the [`MultiFillerSwapRouter02Executor`](self) function calls. pub enum MultiFillerSwapRouter02ExecutorCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] multicall(multicallCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] reactor(reactorCall), + #[allow(missing_docs)] reactorCallback(reactorCallbackCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), + #[allow(missing_docs)] unwrapWETH(unwrapWETHCall), + #[allow(missing_docs)] updateReactor(updateReactorCall), + #[allow(missing_docs)] withdrawERC20(withdrawERC20Call), + #[allow(missing_docs)] withdrawETH(withdrawETHCall), } #[automatically_derived] @@ -3690,7 +3891,7 @@ function withdrawETH(address recipient) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3852,7 +4053,7 @@ function withdrawETH(address recipient) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3969,8 +4170,11 @@ function withdrawETH(address recipient) external; } ///Container for all the [`MultiFillerSwapRouter02Executor`](self) custom errors. pub enum MultiFillerSwapRouter02ExecutorErrors { + #[allow(missing_docs)] CallerNotWhitelisted(CallerNotWhitelisted), + #[allow(missing_docs)] MsgSenderNotReactor(MsgSenderNotReactor), + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), } #[automatically_derived] @@ -4015,7 +4219,7 @@ function withdrawETH(address recipient) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -4079,7 +4283,7 @@ function withdrawETH(address recipient) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -4127,7 +4331,9 @@ function withdrawETH(address recipient) external; } ///Container for all the [`MultiFillerSwapRouter02Executor`](self) events. pub enum MultiFillerSwapRouter02ExecutorEvents { + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), + #[allow(missing_docs)] ReactorChanged(ReactorChanged), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/nonlineardutchdecaylib.rs b/crates/bindings-uniswapx/src/nonlineardutchdecaylib.rs index ac28cc7..3fc00d9 100644 --- a/crates/bindings-uniswapx/src/nonlineardutchdecaylib.rs +++ b/crates/bindings-uniswapx/src/nonlineardutchdecaylib.rs @@ -17,38 +17,49 @@ interface NonlinearDutchDecayLib { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod NonlinearDutchDecayLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073e8454d043c4efd1a7cad7946aa7e5dd5c8fc017b17f52cb7b4317d1fc8662f64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208384beb250e6eb764156305d6dd9dac1d333ed6f6573a72cc96df619914be92564736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 s\xE8EM\x04 usize { diff --git a/crates/bindings-uniswapx/src/orderinfobuilder.rs b/crates/bindings-uniswapx/src/orderinfobuilder.rs index 3dd2793..ea4c447 100644 --- a/crates/bindings-uniswapx/src/orderinfobuilder.rs +++ b/crates/bindings-uniswapx/src/orderinfobuilder.rs @@ -9,29 +9,35 @@ interface OrderInfoBuilder {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod OrderInfoBuilder { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122037e19c9c70d71ae5be891143bec1fbeeb48269c10abd4a21cb3c604500d6775d64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209263d5c7be530639465ed9f24cc97313267bcffdc3f3f59a38ba2d96a36bc0c364736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 7\xE1\x9C\x9Cp\xD7\x1A\xE5\xBE\x89\x11C\xBE\xC1\xFB\xEE\xB4\x82i\xC1\n\xBDJ!\xCB<`E\0\xD6w]dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x92c\xD5\xC7\xBES\x069F^\xD9\xF2L\xC9s\x13&{\xCF\xFD\xC3\xF3\xF5\x9A8\xBA-\x96\xA3k\xC0\xC3dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122037e19c9c70d71ae5be891143bec1fbeeb48269c10abd4a21cb3c604500d6775d64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209263d5c7be530639465ed9f24cc97313267bcffdc3f3f59a38ba2d96a36bc0c364736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 7\xE1\x9C\x9Cp\xD7\x1A\xE5\xBE\x89\x11C\xBE\xC1\xFB\xEE\xB4\x82i\xC1\n\xBDJ!\xCB<`E\0\xD6w]dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x92c\xD5\xC7\xBES\x069F^\xD9\xF2L\xC9s\x13&{\xCF\xFD\xC3\xF3\xF5\x9A8\xBA-\x96\xA3k\xC0\xC3dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`OrderInfoBuilder`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/orderinfolib.rs b/crates/bindings-uniswapx/src/orderinfolib.rs index 7eb6d8c..ff953f7 100644 --- a/crates/bindings-uniswapx/src/orderinfolib.rs +++ b/crates/bindings-uniswapx/src/orderinfolib.rs @@ -9,29 +9,35 @@ interface OrderInfoLib {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod OrderInfoLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf507c7c51e908416930d5ccdd15d04d06b5f83a6a96fe588a5ef4f7e21bec7764736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e3fc5b9604cd526753a591d2c79d40d25e0d6e8e515466ed361974747ce1219264736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xBFP||Q\xE9\x08Ai0\xD5\xCC\xDD\x15\xD0M\x06\xB5\xF8:j\x96\xFEX\x8A^\xF4\xF7\xE2\x1B\xECwdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xE3\xFC[\x96\x04\xCDRgS\xA5\x91\xD2\xC7\x9D@\xD2^\rn\x8EQTf\xED6\x19tt|\xE1!\x92dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf507c7c51e908416930d5ccdd15d04d06b5f83a6a96fe588a5ef4f7e21bec7764736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220e3fc5b9604cd526753a591d2c79d40d25e0d6e8e515466ed361974747ce1219264736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xBFP||Q\xE9\x08Ai0\xD5\xCC\xDD\x15\xD0M\x06\xB5\xF8:j\x96\xFEX\x8A^\xF4\xF7\xE2\x1B\xECwdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xE3\xFC[\x96\x04\xCDRgS\xA5\x91\xD2\xC7\x9D@\xD2^\rn\x8EQTf\xED6\x19tt|\xE1!\x92dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`OrderInfoLib`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/orderquoter.rs b/crates/bindings-uniswapx/src/orderquoter.rs index 7cb14fe..2165f5a 100644 --- a/crates/bindings-uniswapx/src/orderquoter.rs +++ b/crates/bindings-uniswapx/src/orderquoter.rs @@ -294,41 +294,55 @@ interface OrderQuoter { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod OrderQuoter { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x608060405234801561001057600080fd5b50610df9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b50610da68061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c806341d88d6914610043578063585da6281461006c5780637671d07b14610081575b5f80fd5b6100566100513660046104a8565b6100c2565b60405161006391906105dc565b60405180910390f35b61007f61007a3660046108c4565b610218565b005b61009d61008f366004610a2a565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610063565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183525f815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101aa9291600401610a64565b5f604051808303815f87803b1580156101c1575f80fd5b505af19250505080156101d2575060015b610212573d8080156101ff576040519150601f19603f3d011682016040523d82523d5f602084013e610204565b606091505b5061020e81610297565b9150505b92915050565b8151600114610253576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f825f8151811061026657610266610ad7565b602002602001015160405160200161027e91906105dc565b6040516020818303038152906040529050805181602001fd5b60408051610160810182525f60a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031257815182602001fd5b818060200190518101906102129190610ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561037657610376610326565b60405290565b6040516060810167ffffffffffffffff8111828210171561037657610376610326565b60405160a0810167ffffffffffffffff8111828210171561037657610376610326565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561040957610409610326565b604052919050565b5f67ffffffffffffffff82111561042a5761042a610326565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610465575f80fd5b813561047861047382610411565b6103c2565b81815284602083860101111561048c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156104b9575f80fd5b823567ffffffffffffffff808211156104d0575f80fd5b6104dc86838701610456565b935060208501359150808211156104f1575f80fd5b506104fe85828601610456565b9150509250929050565b5f5b8381101561052257818101518382015260200161050a565b50505f910152565b5f8151808452610541816020860160208601610508565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156105d1578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101610586565b509495945050505050565b602081525f825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106576101c084018261052a565b905060208401516106956040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106d08383610573565b925060608601519150808584030160c0860152506106ee828261052a565b915050608084015160e08401528091505092915050565b5f67ffffffffffffffff82111561071e5761071e610326565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610749575f80fd5b50565b5f60c0828403121561075c575f80fd5b610764610353565b9050813561077181610728565b8152602082013561078181610728565b80602083015250604082013560408201526060820135606082015260808201356107aa81610728565b608082015260a082013567ffffffffffffffff8111156107c8575f80fd5b6107d484828501610456565b60a08301525092915050565b5f606082840312156107f0575f80fd5b6107f861037c565b9050813561080581610728565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610832575f80fd5b8135602061084261047383610705565b82815260609283028501820192828201919087851115610860575f80fd5b8387015b858110156108b75781818a03121561087a575f80fd5b61088261037c565b813561088d81610728565b815281860135868201526040808301356108a681610728565b908201528452928401928101610864565b5090979650505050505050565b5f80604083850312156108d5575f80fd5b823567ffffffffffffffff808211156108ec575f80fd5b818501915085601f8301126108ff575f80fd5b8135602061090f61047383610705565b82815260059290921b8401810191818101908984111561092d575f80fd5b8286015b84811015610a1457803586811115610947575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181131561097b575f80fd5b61098361039f565b8683013589811115610993575f80fd5b6109a18f898387010161074c565b8252506109b18e604085016107e0565b8782015260a0830135898111156109c6575f80fd5b6109d48f8983870101610823565b60408301525060c0830135898111156109eb575f80fd5b6109f98f8983870101610456565b60608301525091013560808201528352918301918301610931565b50965050860135925050808211156104f1575f80fd5b5f60208284031215610a3a575f80fd5b813567ffffffffffffffff811115610a50575f80fd5b610a5c84828501610456565b949350505050565b604081525f8351604080840152610a7e608084018261052a565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610ab9828261052a565b9150508281036020840152610ace818561052a565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82601f830112610b13575f80fd5b8151610b2161047382610411565b818152846020838601011115610b35575f80fd5b610a5c826020830160208701610508565b5f60c08284031215610b56575f80fd5b610b5e610353565b90508151610b6b81610728565b81526020820151610b7b81610728565b8060208301525060408201516040820152606082015160608201526080820151610ba481610728565b608082015260a082015167ffffffffffffffff811115610bc2575f80fd5b6107d484828501610b04565b5f60608284031215610bde575f80fd5b610be661037c565b90508151610bf381610728565b80825250602082015160208201526040820151604082015292915050565b5f82601f830112610c20575f80fd5b81516020610c3061047383610705565b82815260609283028501820192828201919087851115610c4e575f80fd5b8387015b858110156108b75781818a031215610c68575f80fd5b610c7061037c565b8151610c7b81610728565b81528186015186820152604080830151610c9481610728565b908201528452928401928101610c52565b5f60208284031215610cb5575f80fd5b815167ffffffffffffffff80821115610ccc575f80fd5b9083019060e08286031215610cdf575f80fd5b610ce761039f565b825182811115610cf5575f80fd5b610d0187828601610b46565b825250610d118660208501610bce565b6020820152608083015182811115610d27575f80fd5b610d3387828601610c11565b60408301525060a083015182811115610d4a575f80fd5b610d5687828601610b04565b60608301525060c09290920151608083015250939250505056fea2646970667358221220b0816c51d51c5ab3947bad3df8fedfb8758eb6ce0ed20b8fc1844c9926a031be64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\r\xF9\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xB0\x81lQ\xD5\x1CZ\xB3\x94{\xAD=\xF8\xFE\xDF\xB8u\x8E\xB6\xCE\x0E\xD2\x0B\x8F\xC1\x84L\x99&\xA01\xBEdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x608060405234801561001057600080fd5b50600436106100415760003560e01c806341d88d6914610046578063585da6281461006f5780637671d07b14610084575b600080fd5b6100596100543660046104bb565b6100c5565b60405161006691906105f8565b60405180910390f35b61008261007d3660046108ed565b610221565b005b6100a0610092366004610a63565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610066565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183526000815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101af9291600401610aa0565b600060405180830381600087803b1580156101c957600080fd5b505af19250505080156101da575060015b61021b573d808015610208576040519150601f19603f3d011682016040523d82523d6000602084013e61020d565b606091505b50610217816102a2565b9150505b92915050565b815160011461025c576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260008151811061027157610271610b14565b602002602001015160405160200161028991906105f8565b6040516020818303038152906040529050805181602001fd5b6040805161016081018252600060a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031e57815182602001fd5b8180602001905181019061021b9190610cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff8111828210171561038457610384610332565b60405290565b6040516060810167ffffffffffffffff8111828210171561038457610384610332565b60405160a0810167ffffffffffffffff8111828210171561038457610384610332565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561041757610417610332565b604052919050565b600067ffffffffffffffff82111561043957610439610332565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261047657600080fd5b81356104896104848261041f565b6103d0565b81815284602083860101111561049e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156104ce57600080fd5b823567ffffffffffffffff808211156104e657600080fd5b6104f286838701610465565b9350602085013591508082111561050857600080fd5b5061051585828601610465565b9150509250929050565b60005b8381101561053a578181015183820152602001610522565b50506000910152565b6000815180845261055b81602086016020860161051f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156105ed578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016105a2565b509495945050505050565b602081526000825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106746101c0840182610543565b905060208401516106b26040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106ed838361058d565b925060608601519150808584030160c08601525061070b8282610543565b915050608084015160e08401528091505092915050565b600067ffffffffffffffff82111561073c5761073c610332565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461076857600080fd5b50565b600060c0828403121561077d57600080fd5b610785610361565b9050813561079281610746565b815260208201356107a281610746565b80602083015250604082013560408201526060820135606082015260808201356107cb81610746565b608082015260a082013567ffffffffffffffff8111156107ea57600080fd5b6107f684828501610465565b60a08301525092915050565b60006060828403121561081457600080fd5b61081c61038a565b9050813561082981610746565b80825250602082013560208201526040820135604082015292915050565b600082601f83011261085857600080fd5b8135602061086861048483610722565b8281526060928302850182019282820191908785111561088757600080fd5b8387015b858110156108e05781818a0312156108a35760008081fd5b6108ab61038a565b81356108b681610746565b815281860135868201526040808301356108cf81610746565b90820152845292840192810161088b565b5090979650505050505050565b6000806040838503121561090057600080fd5b823567ffffffffffffffff8082111561091857600080fd5b818501915085601f83011261092c57600080fd5b8135602061093c61048483610722565b82815260059290921b8401810191818101908984111561095b57600080fd5b8286015b84811015610a4c578035868111156109775760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156109ad5760008081fd5b6109b56103ad565b86830135898111156109c75760008081fd5b6109d58f898387010161076b565b8252506109e58e60408501610802565b8782015260a0830135898111156109fc5760008081fd5b610a0a8f8983870101610847565b60408301525060c083013589811115610a235760008081fd5b610a318f8983870101610465565b6060830152509101356080820152835291830191830161095f565b509650508601359250508082111561050857600080fd5b600060208284031215610a7557600080fd5b813567ffffffffffffffff811115610a8c57600080fd5b610a9884828501610465565b949350505050565b6040815260008351604080840152610abb6080840182610543565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610af68282610543565b9150508281036020840152610b0b8185610543565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f830112610b5457600080fd5b8151610b626104848261041f565b818152846020838601011115610b7757600080fd5b610a9882602083016020870161051f565b600060c08284031215610b9a57600080fd5b610ba2610361565b90508151610baf81610746565b81526020820151610bbf81610746565b8060208301525060408201516040820152606082015160608201526080820151610be881610746565b608082015260a082015167ffffffffffffffff811115610c0757600080fd5b6107f684828501610b43565b600060608284031215610c2557600080fd5b610c2d61038a565b90508151610c3a81610746565b80825250602082015160208201526040820151604082015292915050565b600082601f830112610c6957600080fd5b81516020610c7961048483610722565b82815260609283028501820192828201919087851115610c9857600080fd5b8387015b858110156108e05781818a031215610cb45760008081fd5b610cbc61038a565b8151610cc781610746565b81528186015186820152604080830151610ce081610746565b908201528452928401928101610c9c565b600060208284031215610d0357600080fd5b815167ffffffffffffffff80821115610d1b57600080fd5b9083019060e08286031215610d2f57600080fd5b610d376103ad565b825182811115610d4657600080fd5b610d5287828601610b88565b825250610d628660208501610c13565b6020820152608083015182811115610d7957600080fd5b610d8587828601610c58565b60408301525060a083015182811115610d9d57600080fd5b610da987828601610b43565b60608301525060c09290920151608083015250939250505056fea26469706673582212204f0c1d83024b905d8ef6bd70f1f68fe1f6eff5ddb41ab1eb260cc430411949f664736f6c63430008180033 + ///0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c806341d88d6914610043578063585da6281461006c5780637671d07b14610081575b5f80fd5b6100566100513660046104a8565b6100c2565b60405161006391906105dc565b60405180910390f35b61007f61007a3660046108c4565b610218565b005b61009d61008f366004610a2a565b604081810151909101015190565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610063565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810191909152604080840151840101516040805180820182528581526020808201869052825190810183525f815291517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9390931692630d335884926101aa9291600401610a64565b5f604051808303815f87803b1580156101c1575f80fd5b505af19250505080156101d2575060015b610212573d8080156101ff576040519150601f19603f3d011682016040523d82523d5f602084013e610204565b606091505b5061020e81610297565b9150505b92915050565b8151600114610253576040517f06ee987800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f825f8151811061026657610266610ad7565b602002602001015160405160200161027e91906105dc565b6040516020818303038152906040529050805181602001fd5b60408051610160810182525f60a0820181815260c080840183905260e08401839052610100840183905261012084018390526060610140850181905291845284518083018652838152602080820185905281870185905285015293830181905280830152608082015282519091111561031257815182602001fd5b818060200190518101906102129190610ca5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561037657610376610326565b60405290565b6040516060810167ffffffffffffffff8111828210171561037657610376610326565b60405160a0810167ffffffffffffffff8111828210171561037657610376610326565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561040957610409610326565b604052919050565b5f67ffffffffffffffff82111561042a5761042a610326565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610465575f80fd5b813561047861047382610411565b6103c2565b81815284602083860101111561048c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156104b9575f80fd5b823567ffffffffffffffff808211156104d0575f80fd5b6104dc86838701610456565b935060208501359150808211156104f1575f80fd5b506104fe85828601610456565b9150509250929050565b5f5b8381101561052257818101518382015260200161050a565b50505f910152565b5f8151808452610541816020860160208601610508565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156105d1578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101610586565b509495945050505050565b602081525f825160e0602084015273ffffffffffffffffffffffffffffffffffffffff808251166101008501528060208301511661012085015260408201516101408501526060820151610160850152806080830151166101808501525060a0810151905060c06101a08401526106576101c084018261052a565b905060208401516106956040850182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b5060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160a08601526106d08383610573565b925060608601519150808584030160c0860152506106ee828261052a565b915050608084015160e08401528091505092915050565b5f67ffffffffffffffff82111561071e5761071e610326565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114610749575f80fd5b50565b5f60c0828403121561075c575f80fd5b610764610353565b9050813561077181610728565b8152602082013561078181610728565b80602083015250604082013560408201526060820135606082015260808201356107aa81610728565b608082015260a082013567ffffffffffffffff8111156107c8575f80fd5b6107d484828501610456565b60a08301525092915050565b5f606082840312156107f0575f80fd5b6107f861037c565b9050813561080581610728565b80825250602082013560208201526040820135604082015292915050565b5f82601f830112610832575f80fd5b8135602061084261047383610705565b82815260609283028501820192828201919087851115610860575f80fd5b8387015b858110156108b75781818a03121561087a575f80fd5b61088261037c565b813561088d81610728565b815281860135868201526040808301356108a681610728565b908201528452928401928101610864565b5090979650505050505050565b5f80604083850312156108d5575f80fd5b823567ffffffffffffffff808211156108ec575f80fd5b818501915085601f8301126108ff575f80fd5b8135602061090f61047383610705565b82815260059290921b8401810191818101908984111561092d575f80fd5b8286015b84811015610a1457803586811115610947575f80fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181131561097b575f80fd5b61098361039f565b8683013589811115610993575f80fd5b6109a18f898387010161074c565b8252506109b18e604085016107e0565b8782015260a0830135898111156109c6575f80fd5b6109d48f8983870101610823565b60408301525060c0830135898111156109eb575f80fd5b6109f98f8983870101610456565b60608301525091013560808201528352918301918301610931565b50965050860135925050808211156104f1575f80fd5b5f60208284031215610a3a575f80fd5b813567ffffffffffffffff811115610a50575f80fd5b610a5c84828501610456565b949350505050565b604081525f8351604080840152610a7e608084018261052a565b905060208501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0848303016060850152610ab9828261052a565b9150508281036020840152610ace818561052a565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82601f830112610b13575f80fd5b8151610b2161047382610411565b818152846020838601011115610b35575f80fd5b610a5c826020830160208701610508565b5f60c08284031215610b56575f80fd5b610b5e610353565b90508151610b6b81610728565b81526020820151610b7b81610728565b8060208301525060408201516040820152606082015160608201526080820151610ba481610728565b608082015260a082015167ffffffffffffffff811115610bc2575f80fd5b6107d484828501610b04565b5f60608284031215610bde575f80fd5b610be661037c565b90508151610bf381610728565b80825250602082015160208201526040820151604082015292915050565b5f82601f830112610c20575f80fd5b81516020610c3061047383610705565b82815260609283028501820192828201919087851115610c4e575f80fd5b8387015b858110156108b75781818a031215610c68575f80fd5b610c7061037c565b8151610c7b81610728565b81528186015186820152604080830151610c9481610728565b908201528452928401928101610c52565b5f60208284031215610cb5575f80fd5b815167ffffffffffffffff80821115610ccc575f80fd5b9083019060e08286031215610cdf575f80fd5b610ce761039f565b825182811115610cf5575f80fd5b610d0187828601610b46565b825250610d118660208501610bce565b6020820152608083015182811115610d27575f80fd5b610d3387828601610c11565b60408301525060a083015182811115610d4a575f80fd5b610d5687828601610b04565b60608301525060c09290920151608083015250939250505056fea2646970667358221220b0816c51d51c5ab3947bad3df8fedfb8758eb6ce0ed20b8fc1844c9926a031be64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0AW`\x005`\xE0\x1C\x80cA\xD8\x8Di\x14a\0FW\x80cX]\xA6(\x14a\0oW\x80cvq\xD0{\x14a\0\x84W[`\0\x80\xFD[a\0Ya\0T6`\x04a\x04\xBBV[a\0\xC5V[`@Qa\0f\x91\x90a\x05\xF8V[`@Q\x80\x91\x03\x90\xF3[a\0\x82a\0}6`\x04a\x08\xEDV[a\x02!V[\0[a\0\xA0a\0\x926`\x04a\ncV[`@\x81\x81\x01Q\x90\x91\x01\x01Q\x90V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\0fV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x91\x90\x91R`@\x80\x84\x01Q\x84\x01\x01Q`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x86\x90R\x82Q\x90\x81\x01\x83R`\0\x81R\x91Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x90\x93\x16\x92c\r3X\x84\x92a\x01\xAF\x92\x91`\x04\x01a\n\xA0V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x01\xC9W`\0\x80\xFD[PZ\xF1\x92PPP\x80\x15a\x01\xDAWP`\x01[a\x02\x1BW=\x80\x80\x15a\x02\x08W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x02\rV[``\x91P[Pa\x02\x17\x81a\x02\xA2V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02\\W`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x82`\0\x81Q\x81\x10a\x02qWa\x02qa\x0B\x14V[` \x02` \x01\x01Q`@Q` \x01a\x02\x89\x91\x90a\x05\xF8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x1EW\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x1B\x91\x90a\x0C\xF1V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03\x84Wa\x03\x84a\x032V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\x17Wa\x04\x17a\x032V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x049Wa\x049a\x032V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x04vW`\0\x80\xFD[\x815a\x04\x89a\x04\x84\x82a\x04\x1FV[a\x03\xD0V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x9EW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x04\xCEW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xE6W`\0\x80\xFD[a\x04\xF2\x86\x83\x87\x01a\x04eV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x05\x08W`\0\x80\xFD[Pa\x05\x15\x85\x82\x86\x01a\x04eV[\x91PP\x92P\x92\x90PV[`\0[\x83\x81\x10\x15a\x05:W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\"V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra\x05[\x81` \x86\x01` \x86\x01a\x05\x1FV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\x05\xEDW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\xA2V[P\x94\x95\x94PPPPPV[` \x81R`\0\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06ta\x01\xC0\x84\x01\x82a\x05CV[\x90P` \x84\x01Qa\x06\xB2`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xED\x83\x83a\x05\x8DV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x07\x0B\x82\x82a\x05CV[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07a\x02\x04V[``\x91P[Pa\x02\x0E\x81a\x02\x97V[\x91PP[\x92\x91PPV[\x81Q`\x01\x14a\x02SW`@Q\x7F\x06\xEE\x98x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x82_\x81Q\x81\x10a\x02fWa\x02fa\n\xD7V[` \x02` \x01\x01Q`@Q` \x01a\x02~\x91\x90a\x05\xDCV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P\x80Q\x81` \x01\xFD[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x80\x84\x01\x83\x90R`\xE0\x84\x01\x83\x90Ra\x01\0\x84\x01\x83\x90Ra\x01 \x84\x01\x83\x90R``a\x01@\x85\x01\x81\x90R\x91\x84R\x84Q\x80\x83\x01\x86R\x83\x81R` \x80\x82\x01\x85\x90R\x81\x87\x01\x85\x90R\x85\x01R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82Q\x90\x91\x11\x15a\x03\x12W\x81Q\x82` \x01\xFD[\x81\x80` \x01\x90Q\x81\x01\x90a\x02\x12\x91\x90a\x0C\xA5V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x03vWa\x03va\x03&V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x04\tWa\x04\ta\x03&V[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x04*Wa\x04*a\x03&V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x04eW_\x80\xFD[\x815a\x04xa\x04s\x82a\x04\x11V[a\x03\xC2V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x04\x8CW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_\x80`@\x83\x85\x03\x12\x15a\x04\xB9W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x04\xD0W_\x80\xFD[a\x04\xDC\x86\x83\x87\x01a\x04VV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[Pa\x04\xFE\x85\x82\x86\x01a\x04VV[\x91PP\x92P\x92\x90PV[_[\x83\x81\x10\x15a\x05\"W\x81\x81\x01Q\x83\x82\x01R` \x01a\x05\nV[PP_\x91\x01RV[_\x81Q\x80\x84Ra\x05A\x81` \x86\x01` \x86\x01a\x05\x08V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x05\xD1W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a\x05\x86V[P\x94\x95\x94PPPPPV[` \x81R_\x82Q`\xE0` \x84\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16a\x01\0\x85\x01R\x80` \x83\x01Q\x16a\x01 \x85\x01R`@\x82\x01Qa\x01@\x85\x01R``\x82\x01Qa\x01`\x85\x01R\x80`\x80\x83\x01Q\x16a\x01\x80\x85\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\xA0\x84\x01Ra\x06Wa\x01\xC0\x84\x01\x82a\x05*V[\x90P` \x84\x01Qa\x06\x95`@\x85\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x84\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x80\x85\x84\x03\x01`\xA0\x86\x01Ra\x06\xD0\x83\x83a\x05sV[\x92P``\x86\x01Q\x91P\x80\x85\x84\x03\x01`\xC0\x86\x01RPa\x06\xEE\x82\x82a\x05*V[\x91PP`\x80\x84\x01Q`\xE0\x84\x01R\x80\x91PP\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x07\x1EWa\x07\x1Ea\x03&V[P`\x05\x1B` \x01\x90V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07IW_\x80\xFD[PV[_`\xC0\x82\x84\x03\x12\x15a\x07\\W_\x80\xFD[a\x07da\x03SV[\x90P\x815a\x07q\x81a\x07(V[\x81R` \x82\x015a\x07\x81\x81a\x07(V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a\x07\xAA\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x07\xC8W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x04VV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a\x07\xF0W_\x80\xFD[a\x07\xF8a\x03|V[\x90P\x815a\x08\x05\x81a\x07(V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x082W_\x80\xFD[\x815` a\x08Ba\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x08`W_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x08zW_\x80\xFD[a\x08\x82a\x03|V[\x815a\x08\x8D\x81a\x07(V[\x81R\x81\x86\x015\x86\x82\x01R`@\x80\x83\x015a\x08\xA6\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x08dV[P\x90\x97\x96PPPPPPPV[_\x80`@\x83\x85\x03\x12\x15a\x08\xD5W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xECW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xFFW_\x80\xFD[\x815` a\t\x0Fa\x04s\x83a\x07\x05V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x89\x84\x11\x15a\t-W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\tGW_\x80\xFD[\x87\x01`\xE0\x81\x8D\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81\x13\x15a\t{W_\x80\xFD[a\t\x83a\x03\x9FV[\x86\x83\x015\x89\x81\x11\x15a\t\x93W_\x80\xFD[a\t\xA1\x8F\x89\x83\x87\x01\x01a\x07LV[\x82RPa\t\xB1\x8E`@\x85\x01a\x07\xE0V[\x87\x82\x01R`\xA0\x83\x015\x89\x81\x11\x15a\t\xC6W_\x80\xFD[a\t\xD4\x8F\x89\x83\x87\x01\x01a\x08#V[`@\x83\x01RP`\xC0\x83\x015\x89\x81\x11\x15a\t\xEBW_\x80\xFD[a\t\xF9\x8F\x89\x83\x87\x01\x01a\x04VV[``\x83\x01RP\x91\x015`\x80\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a\t1V[P\x96PP\x86\x015\x92PP\x80\x82\x11\x15a\x04\xF1W_\x80\xFD[_` \x82\x84\x03\x12\x15a\n:W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\nPW_\x80\xFD[a\n\\\x84\x82\x85\x01a\x04VV[\x94\x93PPPPV[`@\x81R_\x83Q`@\x80\x84\x01Ra\n~`\x80\x84\x01\x82a\x05*V[\x90P` \x85\x01Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x84\x83\x03\x01``\x85\x01Ra\n\xB9\x82\x82a\x05*V[\x91PP\x82\x81\x03` \x84\x01Ra\n\xCE\x81\x85a\x05*V[\x95\x94PPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_\x82`\x1F\x83\x01\x12a\x0B\x13W_\x80\xFD[\x81Qa\x0B!a\x04s\x82a\x04\x11V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x0B5W_\x80\xFD[a\n\\\x82` \x83\x01` \x87\x01a\x05\x08V[_`\xC0\x82\x84\x03\x12\x15a\x0BVW_\x80\xFD[a\x0B^a\x03SV[\x90P\x81Qa\x0Bk\x81a\x07(V[\x81R` \x82\x01Qa\x0B{\x81a\x07(V[\x80` \x83\x01RP`@\x82\x01Q`@\x82\x01R``\x82\x01Q``\x82\x01R`\x80\x82\x01Qa\x0B\xA4\x81a\x07(V[`\x80\x82\x01R`\xA0\x82\x01Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xC2W_\x80\xFD[a\x07\xD4\x84\x82\x85\x01a\x0B\x04V[_``\x82\x84\x03\x12\x15a\x0B\xDEW_\x80\xFD[a\x0B\xE6a\x03|V[\x90P\x81Qa\x0B\xF3\x81a\x07(V[\x80\x82RP` \x82\x01Q` \x82\x01R`@\x82\x01Q`@\x82\x01R\x92\x91PPV[_\x82`\x1F\x83\x01\x12a\x0C W_\x80\xFD[\x81Q` a\x0C0a\x04s\x83a\x07\x05V[\x82\x81R``\x92\x83\x02\x85\x01\x82\x01\x92\x82\x82\x01\x91\x90\x87\x85\x11\x15a\x0CNW_\x80\xFD[\x83\x87\x01[\x85\x81\x10\x15a\x08\xB7W\x81\x81\x8A\x03\x12\x15a\x0ChW_\x80\xFD[a\x0Cpa\x03|V[\x81Qa\x0C{\x81a\x07(V[\x81R\x81\x86\x01Q\x86\x82\x01R`@\x80\x83\x01Qa\x0C\x94\x81a\x07(V[\x90\x82\x01R\x84R\x92\x84\x01\x92\x81\x01a\x0CRV[_` \x82\x84\x03\x12\x15a\x0C\xB5W_\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0C\xCCW_\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a\x0C\xDFW_\x80\xFD[a\x0C\xE7a\x03\x9FV[\x82Q\x82\x81\x11\x15a\x0C\xF5W_\x80\xFD[a\r\x01\x87\x82\x86\x01a\x0BFV[\x82RPa\r\x11\x86` \x85\x01a\x0B\xCEV[` \x82\x01R`\x80\x83\x01Q\x82\x81\x11\x15a\r'W_\x80\xFD[a\r3\x87\x82\x86\x01a\x0C\x11V[`@\x83\x01RP`\xA0\x83\x01Q\x82\x81\x11\x15a\rJW_\x80\xFD[a\rV\x87\x82\x86\x01a\x0B\x04V[``\x83\x01RP`\xC0\x92\x90\x92\x01Q`\x80\x83\x01RP\x93\x92PPPV\xFE\xA2dipfsX\"\x12 \xB0\x81lQ\xD5\x1CZ\xB3\x94{\xAD=\xF8\xFE\xDF\xB8u\x8E\xB6\xCE\x0E\xD2\x0B\x8F\xC1\x84L\x99&\xA01\xBEdsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -340,8 +354,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -558,17 +572,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -584,8 +609,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -854,14 +879,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -873,7 +906,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1087,18 +1120,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1376,10 +1419,15 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; ```solidity error OrdersLengthIncorrect(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrdersLengthIncorrect {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1435,18 +1483,25 @@ error OrdersLengthIncorrect(); ```solidity function getReactor(bytes memory order) external pure returns (address reactor); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getReactorCall { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`getReactor(bytes)`](getReactorCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct getReactorReturn { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1554,19 +1609,27 @@ function getReactor(bytes memory order) external pure returns (address reactor); ```solidity function quote(bytes memory order, bytes memory sig) external returns (ResolvedOrder memory result); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quoteCall { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`quote(bytes,bytes)`](quoteCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct quoteReturn { + #[allow(missing_docs)] pub result: ::RustType, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1691,19 +1754,26 @@ function quote(bytes memory order, bytes memory sig) external returns (ResolvedO ```solidity function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) external pure; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackCall { + #[allow(missing_docs)] pub resolvedOrders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub _1: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1828,8 +1898,11 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex }; ///Container for all the [`OrderQuoter`](self) function calls. pub enum OrderQuoterCalls { + #[allow(missing_docs)] getReactor(getReactorCall), + #[allow(missing_docs)] quote(quoteCall), + #[allow(missing_docs)] reactorCallback(reactorCallbackCall), } #[automatically_derived] @@ -1872,7 +1945,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1930,7 +2003,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -1971,6 +2044,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex } ///Container for all the [`OrderQuoter`](self) custom errors. pub enum OrderQuoterErrors { + #[allow(missing_docs)] OrdersLengthIncorrect(OrdersLengthIncorrect), } #[automatically_derived] @@ -2005,7 +2079,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2037,7 +2111,7 @@ function reactorCallback(ResolvedOrder[] memory resolvedOrders, bytes memory) ex ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/outputsbuilder.rs b/crates/bindings-uniswapx/src/outputsbuilder.rs index ee0c1e0..e40b0b0 100644 --- a/crates/bindings-uniswapx/src/outputsbuilder.rs +++ b/crates/bindings-uniswapx/src/outputsbuilder.rs @@ -9,29 +9,35 @@ interface OutputsBuilder {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod OutputsBuilder { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209a87c0565c863cfc5baf5b06beda674f87bd15d0faa52848f82fad617d1e231e64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f54900623695ea6ba0cb1228fddccbb9869ef559e1a6ad20f83fcfa0299ed07164736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9A\x87\xC0V\\\x86<\xFC[\xAF[\x06\xBE\xDAgO\x87\xBD\x15\xD0\xFA\xA5(H\xF8/\xADa}\x1E#\x1EdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xF5I\0b6\x95\xEAk\xA0\xCB\x12(\xFD\xDC\xCB\xB9\x86\x9E\xF5Y\xE1\xA6\xAD \xF8?\xCF\xA0)\x9E\xD0qdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209a87c0565c863cfc5baf5b06beda674f87bd15d0faa52848f82fad617d1e231e64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220f54900623695ea6ba0cb1228fddccbb9869ef559e1a6ad20f83fcfa0299ed07164736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9A\x87\xC0V\\\x86<\xFC[\xAF[\x06\xBE\xDAgO\x87\xBD\x15\xD0\xFA\xA5(H\xF8/\xADa}\x1E#\x1EdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xF5I\0b6\x95\xEAk\xA0\xCB\x12(\xFD\xDC\xCB\xB9\x86\x9E\xF5Y\xE1\xA6\xAD \xF8?\xCF\xA0)\x9E\xD0qdsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`OutputsBuilder`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/owned.rs b/crates/bindings-uniswapx/src/owned.rs index 4f6f019..18f6c8c 100644 --- a/crates/bindings-uniswapx/src/owned.rs +++ b/crates/bindings-uniswapx/src/owned.rs @@ -60,7 +60,13 @@ interface Owned { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod Owned { use super::*; use alloy::sol_types as alloy_sol_types; @@ -88,7 +94,12 @@ pub mod Owned { ```solidity event OwnershipTransferred(address indexed user, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -96,7 +107,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -158,6 +174,21 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -206,16 +237,22 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -319,16 +356,22 @@ function owner() external view returns (address); ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -438,7 +481,9 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`Owned`](self) function calls. pub enum OwnedCalls { + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -477,7 +522,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -522,7 +567,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -554,6 +599,7 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`Owned`](self) events. pub enum OwnedEvents { + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/path.rs b/crates/bindings-uniswapx/src/path.rs index 9eac5ed..a620dd8 100644 --- a/crates/bindings-uniswapx/src/path.rs +++ b/crates/bindings-uniswapx/src/path.rs @@ -9,29 +9,35 @@ interface Path {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod Path { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209309ae5cbf4818965da5d32dd109cb6bd432be37daad310b2af84a2fe51585e564736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212207dbb50d1d3d7660c3062ab325249f1b623b2538a69abfdbcdcdb8c71490d2abb64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x93\t\xAE\\\xBFH\x18\x96]\xA5\xD3-\xD1\t\xCBk\xD42\xBE7\xDA\xAD1\x0B*\xF8J/\xE5\x15\x85\xE5dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 }\xBBP\xD1\xD3\xD7f\x0C0b\xAB2RI\xF1\xB6#\xB2S\x8Ai\xAB\xFD\xBC\xDC\xDB\x8CqI\r*\xBBdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209309ae5cbf4818965da5d32dd109cb6bd432be37daad310b2af84a2fe51585e564736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212207dbb50d1d3d7660c3062ab325249f1b623b2538a69abfdbcdcdb8c71490d2abb64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x93\t\xAE\\\xBFH\x18\x96]\xA5\xD3-\xD1\t\xCBk\xD42\xBE7\xDA\xAD1\x0B*\xF8J/\xE5\x15\x85\xE5dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 }\xBBP\xD1\xD3\xD7f\x0C0b\xAB2RI\xF1\xB6#\xB2S\x8Ai\xAB\xFD\xBC\xDC\xDB\x8CqI\r*\xBBdsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`Path`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/pathbuilder.rs b/crates/bindings-uniswapx/src/pathbuilder.rs index 4817cc9..3f20ede 100644 --- a/crates/bindings-uniswapx/src/pathbuilder.rs +++ b/crates/bindings-uniswapx/src/pathbuilder.rs @@ -9,29 +9,35 @@ interface PathBuilder {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod PathBuilder { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206731f2c85fbcff7fa5dcac6f5fb03f537c3ceea466115131f713168e8e26841464736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220ae802c2902e23d54461b85bf153ab5ddfdf972c3f59cca6785e1794407ef8ad964736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 g1\xF2\xC8_\xBC\xFF\x7F\xA5\xDC\xACo_\xB0?S|<\xEE\xA4f\x11Q1\xF7\x13\x16\x8E\x8E&\x84\x14dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xAE\x80,)\x02\xE2=TF\x1B\x85\xBF\x15:\xB5\xDD\xFD\xF9r\xC3\xF5\x9C\xCAg\x85\xE1yD\x07\xEF\x8A\xD9dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206731f2c85fbcff7fa5dcac6f5fb03f537c3ceea466115131f713168e8e26841464736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220ae802c2902e23d54461b85bf153ab5ddfdf972c3f59cca6785e1794407ef8ad964736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 g1\xF2\xC8_\xBC\xFF\x7F\xA5\xDC\xACo_\xB0?S|<\xEE\xA4f\x11Q1\xF7\x13\x16\x8E\x8E&\x84\x14dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xAE\x80,)\x02\xE2=TF\x1B\x85\xBF\x15:\xB5\xDD\xFD\xF9r\xC3\xF5\x9C\xCAg\x85\xE1yD\x07\xEF\x8A\xD9dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`PathBuilder`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/permit2lib.rs b/crates/bindings-uniswapx/src/permit2lib.rs index 169565d..2ff00da 100644 --- a/crates/bindings-uniswapx/src/permit2lib.rs +++ b/crates/bindings-uniswapx/src/permit2lib.rs @@ -9,29 +9,35 @@ interface Permit2Lib {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod Permit2Lib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207dc0c30b41e846110f8902726312ffb6810ad4f3279ebf3174114e0bd977581664736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220fef771135a7fe8514a967d17bb7b49148bc501b1eba8aa1716f071eeafeb507764736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 }\xC0\xC3\x0BA\xE8F\x11\x0F\x89\x02rc\x12\xFF\xB6\x81\n\xD4\xF3'\x9E\xBF1t\x11N\x0B\xD9wX\x16dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xFE\xF7q\x13Z\x7F\xE8QJ\x96}\x17\xBB{I\x14\x8B\xC5\x01\xB1\xEB\xA8\xAA\x17\x16\xF0q\xEE\xAF\xEBPwdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207dc0c30b41e846110f8902726312ffb6810ad4f3279ebf3174114e0bd977581664736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220fef771135a7fe8514a967d17bb7b49148bc501b1eba8aa1716f071eeafeb507764736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 }\xC0\xC3\x0BA\xE8F\x11\x0F\x89\x02rc\x12\xFF\xB6\x81\n\xD4\xF3'\x9E\xBF1t\x11N\x0B\xD9wX\x16dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xFE\xF7q\x13Z\x7F\xE8QJ\x96}\x17\xBB{I\x14\x8B\xC5\x01\xB1\xEB\xA8\xAA\x17\x16\xF0q\xEE\xAF\xEBPwdsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`Permit2Lib`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/permitsignature.rs b/crates/bindings-uniswapx/src/permitsignature.rs index 24240ad..c29f0dc 100644 --- a/crates/bindings-uniswapx/src/permitsignature.rs +++ b/crates/bindings-uniswapx/src/permitsignature.rs @@ -1,911 +1,264 @@ +///Module containing a contract's types and functions. /** -Generated by the following Solidity interface... ```solidity -interface PermitSignature { - struct FuzzArtifactSelector { - string artifact; - bytes4[] selectors; - } - struct FuzzInterface { - address addr; - string[] artifacts; +library StdInvariant { + struct FuzzArtifactSelector { string artifact; bytes4[] selectors; } + struct FuzzInterface { address addr; string[] artifacts; } + struct FuzzSelector { address addr; bytes4[] selectors; } +} +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod StdInvariant { + use super::*; + use alloy::sol_types as alloy_sol_types; + /**```solidity +struct FuzzArtifactSelector { string artifact; bytes4[] selectors; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzArtifactSelector { + #[allow(missing_docs)] + pub artifact: alloy::sol_types::private::String, + #[allow(missing_docs)] + pub selectors: alloy::sol_types::private::Vec< + alloy::sol_types::private::FixedBytes<4>, + >, } - struct FuzzSelector { - address addr; - bytes4[] selectors; + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::String, + alloy::sol_types::sol_data::Array>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::String, + alloy::sol_types::private::Vec>, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: FuzzArtifactSelector) -> Self { + (value.artifact, value.selectors) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for FuzzArtifactSelector { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + artifact: tuple.0, + selectors: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolValue for FuzzArtifactSelector { + type SolType = Self; + } + #[automatically_derived] + impl alloy_sol_types::private::SolTypeValue for FuzzArtifactSelector { + #[inline] + fn stv_to_tokens(&self) -> ::Token<'_> { + ( + ::tokenize( + &self.artifact, + ), + , + > as alloy_sol_types::SolType>::tokenize(&self.selectors), + ) + } + #[inline] + fn stv_abi_encoded_size(&self) -> usize { + if let Some(size) = ::ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encoded_size(&tuple) + } + #[inline] + fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { + ::eip712_hash_struct(self) + } + #[inline] + fn stv_abi_encode_packed_to( + &self, + out: &mut alloy_sol_types::private::Vec, + ) { + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) + } + #[inline] + fn stv_abi_packed_encoded_size(&self) -> usize { + if let Some(size) = ::PACKED_ENCODED_SIZE { + return size; + } + let tuple = as ::core::convert::From>::from(self.clone()); + as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolType for FuzzArtifactSelector { + type RustType = Self; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SOL_NAME: &'static str = ::NAME; + const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; + const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; + #[inline] + fn valid_token(token: &Self::Token<'_>) -> bool { + as alloy_sol_types::SolType>::valid_token(token) + } + #[inline] + fn detokenize(token: Self::Token<'_>) -> Self::RustType { + let tuple = as alloy_sol_types::SolType>::detokenize(token); + >>::from(tuple) + } + } + #[automatically_derived] + impl alloy_sol_types::SolStruct for FuzzArtifactSelector { + const NAME: &'static str = "FuzzArtifactSelector"; + #[inline] + fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { + alloy_sol_types::private::Cow::Borrowed( + "FuzzArtifactSelector(string artifact,bytes4[] selectors)", + ) + } + #[inline] + fn eip712_components() -> alloy_sol_types::private::Vec< + alloy_sol_types::private::Cow<'static, str>, + > { + alloy_sol_types::private::Vec::new() + } + #[inline] + fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { + ::eip712_root_type() + } + #[inline] + fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { + [ + ::eip712_data_word( + &self.artifact, + ) + .0, + , + > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) + .0, + ] + .concat() + } + } + #[automatically_derived] + impl alloy_sol_types::EventTopic for FuzzArtifactSelector { + #[inline] + fn topic_preimage_length(rust: &Self::RustType) -> usize { + 0usize + + ::topic_preimage_length( + &rust.artifact, + ) + + , + > as alloy_sol_types::EventTopic>::topic_preimage_length( + &rust.selectors, + ) + } + #[inline] + fn encode_topic_preimage( + rust: &Self::RustType, + out: &mut alloy_sol_types::private::Vec, + ) { + out.reserve( + ::topic_preimage_length(rust), + ); + ::encode_topic_preimage( + &rust.artifact, + out, + ); + , + > as alloy_sol_types::EventTopic>::encode_topic_preimage( + &rust.selectors, + out, + ); + } + #[inline] + fn encode_topic( + rust: &Self::RustType, + ) -> alloy_sol_types::abi::token::WordToken { + let mut out = alloy_sol_types::private::Vec::new(); + ::encode_topic_preimage( + rust, + &mut out, + ); + alloy_sol_types::abi::token::WordToken( + alloy_sol_types::private::keccak256(out), + ) + } + } + }; + /**```solidity +struct FuzzInterface { address addr; string[] artifacts; } +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct FuzzInterface { + #[allow(missing_docs)] + pub addr: alloy::sol_types::private::Address, + #[allow(missing_docs)] + pub artifacts: alloy::sol_types::private::Vec, } - - event log(string); - event log_address(address); - event log_array(uint256[] val); - event log_array(int256[] val); - event log_array(address[] val); - event log_bytes(bytes); - event log_bytes32(bytes32); - event log_int(int256); - event log_named_address(string key, address val); - event log_named_array(string key, uint256[] val); - event log_named_array(string key, int256[] val); - event log_named_array(string key, address[] val); - event log_named_bytes(string key, bytes val); - event log_named_bytes32(string key, bytes32 val); - event log_named_decimal_int(string key, int256 val, uint256 decimals); - event log_named_decimal_uint(string key, uint256 val, uint256 decimals); - event log_named_int(string key, int256 val); - event log_named_string(string key, string val); - event log_named_uint(string key, uint256 val); - event log_string(string); - event log_uint(uint256); - event logs(bytes); - - function IS_TEST() external view returns (bool); - function NAME_HASH() external view returns (bytes32); - function TYPE_HASH() external view returns (bytes32); - function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); - function excludeContracts() external view returns (address[] memory excludedContracts_); - function excludeSelectors() external view returns (FuzzSelector[] memory excludedSelectors_); - function excludeSenders() external view returns (address[] memory excludedSenders_); - function failed() external view returns (bool); - function targetArtifactSelectors() external view returns (FuzzArtifactSelector[] memory targetedArtifactSelectors_); - function targetArtifacts() external view returns (string[] memory targetedArtifacts_); - function targetContracts() external view returns (address[] memory targetedContracts_); - function targetInterfaces() external view returns (FuzzInterface[] memory targetedInterfaces_); - function targetSelectors() external view returns (FuzzSelector[] memory targetedSelectors_); - function targetSenders() external view returns (address[] memory targetedSenders_); -} -``` - -...which was generated by the following JSON ABI: -```json -[ - { - "type": "function", - "name": "IS_TEST", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "NAME_HASH", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "TYPE_HASH", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "excludeArtifacts", - "inputs": [], - "outputs": [ - { - "name": "excludedArtifacts_", - "type": "string[]", - "internalType": "string[]" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "excludeContracts", - "inputs": [], - "outputs": [ - { - "name": "excludedContracts_", - "type": "address[]", - "internalType": "address[]" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "excludeSelectors", - "inputs": [], - "outputs": [ - { - "name": "excludedSelectors_", - "type": "tuple[]", - "internalType": "struct StdInvariant.FuzzSelector[]", - "components": [ - { - "name": "addr", - "type": "address", - "internalType": "address" - }, - { - "name": "selectors", - "type": "bytes4[]", - "internalType": "bytes4[]" - } - ] - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "excludeSenders", - "inputs": [], - "outputs": [ - { - "name": "excludedSenders_", - "type": "address[]", - "internalType": "address[]" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "failed", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "targetArtifactSelectors", - "inputs": [], - "outputs": [ - { - "name": "targetedArtifactSelectors_", - "type": "tuple[]", - "internalType": "struct StdInvariant.FuzzArtifactSelector[]", - "components": [ - { - "name": "artifact", - "type": "string", - "internalType": "string" - }, - { - "name": "selectors", - "type": "bytes4[]", - "internalType": "bytes4[]" - } - ] - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "targetArtifacts", - "inputs": [], - "outputs": [ - { - "name": "targetedArtifacts_", - "type": "string[]", - "internalType": "string[]" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "targetContracts", - "inputs": [], - "outputs": [ - { - "name": "targetedContracts_", - "type": "address[]", - "internalType": "address[]" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "targetInterfaces", - "inputs": [], - "outputs": [ - { - "name": "targetedInterfaces_", - "type": "tuple[]", - "internalType": "struct StdInvariant.FuzzInterface[]", - "components": [ - { - "name": "addr", - "type": "address", - "internalType": "address" - }, - { - "name": "artifacts", - "type": "string[]", - "internalType": "string[]" - } - ] - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "targetSelectors", - "inputs": [], - "outputs": [ - { - "name": "targetedSelectors_", - "type": "tuple[]", - "internalType": "struct StdInvariant.FuzzSelector[]", - "components": [ - { - "name": "addr", - "type": "address", - "internalType": "address" - }, - { - "name": "selectors", - "type": "bytes4[]", - "internalType": "bytes4[]" - } - ] - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "targetSenders", - "inputs": [], - "outputs": [ - { - "name": "targetedSenders_", - "type": "address[]", - "internalType": "address[]" - } - ], - "stateMutability": "view" - }, - { - "type": "event", - "name": "log", - "inputs": [ - { - "name": "", - "type": "string", - "indexed": false, - "internalType": "string" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_address", - "inputs": [ - { - "name": "", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_array", - "inputs": [ - { - "name": "val", - "type": "uint256[]", - "indexed": false, - "internalType": "uint256[]" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_array", - "inputs": [ - { - "name": "val", - "type": "int256[]", - "indexed": false, - "internalType": "int256[]" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_array", - "inputs": [ - { - "name": "val", - "type": "address[]", - "indexed": false, - "internalType": "address[]" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_bytes", - "inputs": [ - { - "name": "", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_bytes32", - "inputs": [ - { - "name": "", - "type": "bytes32", - "indexed": false, - "internalType": "bytes32" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_int", - "inputs": [ - { - "name": "", - "type": "int256", - "indexed": false, - "internalType": "int256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_named_address", - "inputs": [ - { - "name": "key", - "type": "string", - "indexed": false, - "internalType": "string" - }, - { - "name": "val", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_named_array", - "inputs": [ - { - "name": "key", - "type": "string", - "indexed": false, - "internalType": "string" - }, - { - "name": "val", - "type": "uint256[]", - "indexed": false, - "internalType": "uint256[]" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_named_array", - "inputs": [ - { - "name": "key", - "type": "string", - "indexed": false, - "internalType": "string" - }, - { - "name": "val", - "type": "int256[]", - "indexed": false, - "internalType": "int256[]" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_named_array", - "inputs": [ - { - "name": "key", - "type": "string", - "indexed": false, - "internalType": "string" - }, - { - "name": "val", - "type": "address[]", - "indexed": false, - "internalType": "address[]" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_named_bytes", - "inputs": [ - { - "name": "key", - "type": "string", - "indexed": false, - "internalType": "string" - }, - { - "name": "val", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_named_bytes32", - "inputs": [ - { - "name": "key", - "type": "string", - "indexed": false, - "internalType": "string" - }, - { - "name": "val", - "type": "bytes32", - "indexed": false, - "internalType": "bytes32" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_named_decimal_int", - "inputs": [ - { - "name": "key", - "type": "string", - "indexed": false, - "internalType": "string" - }, - { - "name": "val", - "type": "int256", - "indexed": false, - "internalType": "int256" - }, - { - "name": "decimals", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_named_decimal_uint", - "inputs": [ - { - "name": "key", - "type": "string", - "indexed": false, - "internalType": "string" - }, - { - "name": "val", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "decimals", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_named_int", - "inputs": [ - { - "name": "key", - "type": "string", - "indexed": false, - "internalType": "string" - }, - { - "name": "val", - "type": "int256", - "indexed": false, - "internalType": "int256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_named_string", - "inputs": [ - { - "name": "key", - "type": "string", - "indexed": false, - "internalType": "string" - }, - { - "name": "val", - "type": "string", - "indexed": false, - "internalType": "string" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_named_uint", - "inputs": [ - { - "name": "key", - "type": "string", - "indexed": false, - "internalType": "string" - }, - { - "name": "val", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_string", - "inputs": [ - { - "name": "", - "type": "string", - "indexed": false, - "internalType": "string" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "log_uint", - "inputs": [ - { - "name": "", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "logs", - "inputs": [ - { - "name": "", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - } - ], - "anonymous": false - } -] -```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] -pub mod PermitSignature { - use super::*; - use alloy::sol_types as alloy_sol_types; - /// The creation / init bytecode of the contract. - /// - /// ```text - ///0x6080604052600c8054600160ff199182168117909255601f8054909116909117905534801561002d57600080fd5b50610f9b8061003d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa9146101d1578063ba414fa6146101d9578063e20c9f71146101f1578063fa7626d4146101f957600080fd5b806385226c811461019f578063916a17c6146101b4578063b0464fdc146101c957600080fd5b80633e5e3c23116100c85780633e5e3c23146101535780633f7286f41461015b57806364d4c8191461016357806366d9a9a01461018a57600080fd5b806304622c2e146100ef5780631ed7831c146101295780632ade38801461013e575b600080fd5b6101167f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a81565b6040519081526020015b60405180910390f35b610131610206565b6040516101209190610b11565b610146610275565b6040516101209190610bcf565b6101316103c4565b610131610431565b6101167f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61019261049e565b6040516101209190610d36565b6101a7610620565b6040516101209190610ddb565b6101bc6106f0565b6040516101209190610e5d565b6101bc6107f8565b6101a7610900565b6101e16109d0565b6040519015158152602001610120565b610131610aa4565b601f546101e19060ff1681565b6060601680548060200260200160405190810160405280929190818152602001828054801561026b57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156103bb576000848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103a457838290600052602060002001805461031790610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461034390610ef9565b80156103905780601f1061036557610100808354040283529160200191610390565b820191906000526020600020905b81548152906001019060200180831161037357829003601f168201915b5050505050815260200190600101906102f8565b505050508152505081526020019060010190610299565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561026b5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561026b5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002090600202016040518060400160405290816000820180546104f590610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461052190610ef9565b801561056e5780601f106105435761010080835404028352916020019161056e565b820191906000526020600020905b81548152906001019060200180831161055157829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561060857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105b55790505b505050505081525050815260200190600101906104c2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002001805461066390610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461068f90610ef9565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b505050505081526020019060010190610644565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156103bb57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156107e057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161078d5790505b50505050508152505081526020019060010190610714565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156103bb57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108e857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108955790505b5050505050815250508152602001906001019061081c565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002001805461094390610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461096f90610ef9565b80156109bc5780601f10610991576101008083540402835291602001916109bc565b820191906000526020600020905b81548152906001019060200180831161099f57829003601f168201915b505050505081526020019060010190610924565b60085460009060ff16156109e8575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9d9190610f4c565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561026b5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575050505050905090565b6020808252825182820181905260009190848201906040850190845b81811015610b5f57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610b2d565b50909695505050505050565b6000815180845260005b81811015610b9157602081850181015186830182015201610b75565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610cc8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b85030187528251805173ffffffffffffffffffffffffffffffffffffffff1685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610cb2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898503018352610ca0848651610b6b565b948e01949350918d0191600101610c66565b505050978a019794505091880191600101610bf6565b50919a9950505050505050505050565b60008151808452602080850194506020840160005b83811015610d2b5781517fffffffff000000000000000000000000000000000000000000000000000000001687529582019590820190600101610ced565b509495945050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015610dcd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552610da188860182610b6b565b91890151858303868b0152919050610db98183610cd8565b968901969450505090860190600101610d5f565b509098975050505050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015610e50577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610e3e858351610b6b565b94509285019290850190600101610e04565b5092979650505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015610dcd578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff168452870151878401879052610ee687850182610cd8565b9588019593505090860190600101610e86565b600181811c90821680610f0d57607f821691505b602082108103610f46577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215610f5e57600080fd5b505191905056fea264697066735822122026d939e7d9dd41d878bf01c5cab20688fed635637c6ca152757ad4ebec5dc76d64736f6c63430008180033 - /// ``` - #[rustfmt::skip] - #[allow(clippy::all)] - pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x0C\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x1F\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15a\0-W`\0\x80\xFD[Pa\x0F\x9B\x80a\0=`\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\x8CW\x80c\xB5P\x8A\xA9\x11a\0fW\x80c\xB5P\x8A\xA9\x14a\x01\xD1W\x80c\xBAAO\xA6\x14a\x01\xD9W\x80c\xE2\x0C\x9Fq\x14a\x01\xF1W\x80c\xFAv&\xD4\x14a\x01\xF9W`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x01\x9FW\x80c\x91j\x17\xC6\x14a\x01\xB4W\x80c\xB0FO\xDC\x14a\x01\xC9W`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x01SW\x80c?r\x86\xF4\x14a\x01[W\x80cd\xD4\xC8\x19\x14a\x01cW\x80cf\xD9\xA9\xA0\x14a\x01\x8AW`\0\x80\xFD[\x80c\x04b,.\x14a\0\xEFW\x80c\x1E\xD7\x83\x1C\x14a\x01)W\x80c*\xDE8\x80\x14a\x01>W[`\0\x80\xFD[a\x01\x16\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x011a\x02\x06V[`@Qa\x01 \x91\x90a\x0B\x11V[a\x01Fa\x02uV[`@Qa\x01 \x91\x90a\x0B\xCFV[a\x011a\x03\xC4V[a\x011a\x041V[a\x01\x16\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[a\x01\x92a\x04\x9EV[`@Qa\x01 \x91\x90a\r6V[a\x01\xA7a\x06 V[`@Qa\x01 \x91\x90a\r\xDBV[a\x01\xBCa\x06\xF0V[`@Qa\x01 \x91\x90a\x0E]V[a\x01\xBCa\x07\xF8V[a\x01\xA7a\t\0V[a\x01\xE1a\t\xD0V[`@Q\x90\x15\x15\x81R` \x01a\x01 V[a\x011a\n\xA4V[`\x1FTa\x01\xE1\x90`\xFF\x16\x81V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@W[PPPPP\x90P\x90V[```\x1E\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xA4W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03\x17\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03C\x90a\x0E\xF9V[\x80\x15a\x03\x90W\x80`\x1F\x10a\x03eWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x90V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03sW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x02\xF8V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\x99V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@WPPPPP\x90P\x90V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@WPPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW\x83\x82\x90`\0R` `\0 \x90`\x02\x02\x01`@Q\x80`@\x01`@R\x90\x81`\0\x82\x01\x80Ta\x04\xF5\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05!\x90a\x0E\xF9V[\x80\x15a\x05nW\x80`\x1F\x10a\x05CWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05QW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01`\x01\x82\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x06\x08W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\xB5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xC2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x06c\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x8F\x90a\x0E\xF9V[\x80\x15a\x06\xDCW\x80`\x1F\x10a\x06\xB1Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\xDCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xBFW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06DV[```\x1D\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\xE0W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x8DW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\x14V[```\x1C\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xE8W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\x95W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x1CV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW\x83\x82\x90`\0R` `\0 \x01\x80Ta\tC\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\to\x90a\x0E\xF9V[\x80\x15a\t\xBCW\x80`\x1F\x10a\t\x91Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\xBCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t$V[`\x08T`\0\x90`\xFF\x16\x15a\t\xE8WP`\x08T`\xFF\x16\x90V[`@Q\x7Ff\x7F\x9Dp\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\x04\x82\x01\x81\x90R\x7Ffailed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`$\x83\x01R`\0\x91cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nyW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x9D\x91\x90a\x0FLV[\x14\x15\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@WPPPPP\x90P\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0B_W\x83Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0B-V[P\x90\x96\x95PPPPPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x0B\x91W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0BuV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0C\xC8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x8B\x85\x03\x01\x87R\x82Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0C\xB2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x89\x85\x03\x01\x83Ra\x0C\xA0\x84\x86Qa\x0BkV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0CfV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\x0B\xF6V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\r+W\x81Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x0C\xEDV[P\x94\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a\r\xCDW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x89\x84\x03\x01\x85R\x81Q\x80Q\x87\x85Ra\r\xA1\x88\x86\x01\x82a\x0BkV[\x91\x89\x01Q\x85\x83\x03\x86\x8B\x01R\x91\x90Pa\r\xB9\x81\x83a\x0C\xD8V[\x96\x89\x01\x96\x94PPP\x90\x86\x01\x90`\x01\x01a\r_V[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01`\0[\x82\x81\x10\x15a\x0EPW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x88\x86\x03\x01\x84Ra\x0E>\x85\x83Qa\x0BkV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0E\x04V[P\x92\x97\x96PPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a\r\xCDW\x88\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x01\x85R\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x87\x01Q\x87\x84\x01\x87\x90Ra\x0E\xE6\x87\x85\x01\x82a\x0C\xD8V[\x95\x88\x01\x95\x93PP\x90\x86\x01\x90`\x01\x01a\x0E\x86V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\rW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0FFW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F^W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 &\xD99\xE7\xD9\xDDA\xD8x\xBF\x01\xC5\xCA\xB2\x06\x88\xFE\xD65c|l\xA1Ruz\xD4\xEB\xEC]\xC7mdsolcC\0\x08\x18\x003", - ); - /// The runtime bytecode of the contract, as deployed on the network. - /// - /// ```text - ///0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806385226c811161008c578063b5508aa911610066578063b5508aa9146101d1578063ba414fa6146101d9578063e20c9f71146101f1578063fa7626d4146101f957600080fd5b806385226c811461019f578063916a17c6146101b4578063b0464fdc146101c957600080fd5b80633e5e3c23116100c85780633e5e3c23146101535780633f7286f41461015b57806364d4c8191461016357806366d9a9a01461018a57600080fd5b806304622c2e146100ef5780631ed7831c146101295780632ade38801461013e575b600080fd5b6101167f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a81565b6040519081526020015b60405180910390f35b610131610206565b6040516101209190610b11565b610146610275565b6040516101209190610bcf565b6101316103c4565b610131610431565b6101167f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61019261049e565b6040516101209190610d36565b6101a7610620565b6040516101209190610ddb565b6101bc6106f0565b6040516101209190610e5d565b6101bc6107f8565b6101a7610900565b6101e16109d0565b6040519015158152602001610120565b610131610aa4565b601f546101e19060ff1681565b6060601680548060200260200160405190810160405280929190818152602001828054801561026b57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020016000905b828210156103bb576000848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156103a457838290600052602060002001805461031790610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461034390610ef9565b80156103905780601f1061036557610100808354040283529160200191610390565b820191906000526020600020905b81548152906001019060200180831161037357829003601f168201915b5050505050815260200190600101906102f8565b505050508152505081526020019060010190610299565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561026b5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561026b5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002090600202016040518060400160405290816000820180546104f590610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461052190610ef9565b801561056e5780601f106105435761010080835404028352916020019161056e565b820191906000526020600020905b81548152906001019060200180831161055157829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561060857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116105b55790505b505050505081525050815260200190600101906104c2565b6060601a805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002001805461066390610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461068f90610ef9565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b505050505081526020019060010190610644565b6060601d805480602002602001604051908101604052809291908181526020016000905b828210156103bb57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156107e057602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161078d5790505b50505050508152505081526020019060010190610714565b6060601c805480602002602001604051908101604052809291908181526020016000905b828210156103bb57600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108e857602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116108955790505b5050505050815250508152602001906001019061081c565b60606019805480602002602001604051908101604052809291908181526020016000905b828210156103bb57838290600052602060002001805461094390610ef9565b80601f016020809104026020016040519081016040528092919081815260200182805461096f90610ef9565b80156109bc5780601f10610991576101008083540402835291602001916109bc565b820191906000526020600020905b81548152906001019060200180831161099f57829003601f168201915b505050505081526020019060010190610924565b60085460009060ff16156109e8575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c65640000000000000000000000000000000000000000000000000000602483015260009163667f9d7090604401602060405180830381865afa158015610a79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9d9190610f4c565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561026b5760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610240575050505050905090565b6020808252825182820181905260009190848201906040850190845b81811015610b5f57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610b2d565b50909695505050505050565b6000815180845260005b81811015610b9157602081850181015186830182015201610b75565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602080825282518282018190526000919060409081850190600581811b8701840188860187805b85811015610cc8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08b85030187528251805173ffffffffffffffffffffffffffffffffffffffff1685528901518985018990528051898601819052908a0190606081881b870181019190870190855b81811015610cb2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898503018352610ca0848651610b6b565b948e01949350918d0191600101610c66565b505050978a019794505091880191600101610bf6565b50919a9950505050505050505050565b60008151808452602080850194506020840160005b83811015610d2b5781517fffffffff000000000000000000000000000000000000000000000000000000001687529582019590820190600101610ced565b509495945050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015610dcd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552610da188860182610b6b565b91890151858303868b0152919050610db98183610cd8565b968901969450505090860190600101610d5f565b509098975050505050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015610e50577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610e3e858351610b6b565b94509285019290850190600101610e04565b5092979650505050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b83811015610dcd578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff168452870151878401879052610ee687850182610cd8565b9588019593505090860190600101610e86565b600181811c90821680610f0d57607f821691505b602082108103610f46577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215610f5e57600080fd5b505191905056fea264697066735822122026d939e7d9dd41d878bf01c5cab20688fed635637c6ca152757ad4ebec5dc76d64736f6c63430008180033 - /// ``` - #[rustfmt::skip] - #[allow(clippy::all)] - pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80c\x85\"l\x81\x11a\0\x8CW\x80c\xB5P\x8A\xA9\x11a\0fW\x80c\xB5P\x8A\xA9\x14a\x01\xD1W\x80c\xBAAO\xA6\x14a\x01\xD9W\x80c\xE2\x0C\x9Fq\x14a\x01\xF1W\x80c\xFAv&\xD4\x14a\x01\xF9W`\0\x80\xFD[\x80c\x85\"l\x81\x14a\x01\x9FW\x80c\x91j\x17\xC6\x14a\x01\xB4W\x80c\xB0FO\xDC\x14a\x01\xC9W`\0\x80\xFD[\x80c>^<#\x11a\0\xC8W\x80c>^<#\x14a\x01SW\x80c?r\x86\xF4\x14a\x01[W\x80cd\xD4\xC8\x19\x14a\x01cW\x80cf\xD9\xA9\xA0\x14a\x01\x8AW`\0\x80\xFD[\x80c\x04b,.\x14a\0\xEFW\x80c\x1E\xD7\x83\x1C\x14a\x01)W\x80c*\xDE8\x80\x14a\x01>W[`\0\x80\xFD[a\x01\x16\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x011a\x02\x06V[`@Qa\x01 \x91\x90a\x0B\x11V[a\x01Fa\x02uV[`@Qa\x01 \x91\x90a\x0B\xCFV[a\x011a\x03\xC4V[a\x011a\x041V[a\x01\x16\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[a\x01\x92a\x04\x9EV[`@Qa\x01 \x91\x90a\r6V[a\x01\xA7a\x06 V[`@Qa\x01 \x91\x90a\r\xDBV[a\x01\xBCa\x06\xF0V[`@Qa\x01 \x91\x90a\x0E]V[a\x01\xBCa\x07\xF8V[a\x01\xA7a\t\0V[a\x01\xE1a\t\xD0V[`@Q\x90\x15\x15\x81R` \x01a\x01 V[a\x011a\n\xA4V[`\x1FTa\x01\xE1\x90`\xFF\x16\x81V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90[\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@W[PPPPP\x90P\x90V[```\x1E\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW`\0\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\xA4W\x83\x82\x90`\0R` `\0 \x01\x80Ta\x03\x17\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03C\x90a\x0E\xF9V[\x80\x15a\x03\x90W\x80`\x1F\x10a\x03eWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x90V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03sW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x02\xF8V[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\x99V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@WPPPPP\x90P\x90V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@WPPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW\x83\x82\x90`\0R` `\0 \x90`\x02\x02\x01`@Q\x80`@\x01`@R\x90\x81`\0\x82\x01\x80Ta\x04\xF5\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05!\x90a\x0E\xF9V[\x80\x15a\x05nW\x80`\x1F\x10a\x05CWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05nV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05QW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01`\x01\x82\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x06\x08W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\xB5W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xC2V[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW\x83\x82\x90`\0R` `\0 \x01\x80Ta\x06c\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06\x8F\x90a\x0E\xF9V[\x80\x15a\x06\xDCW\x80`\x1F\x10a\x06\xB1Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\xDCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\xBFW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06DV[```\x1D\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\xE0W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07\x8DW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\x14V[```\x1C\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW`\0\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xE8W` \x02\x82\x01\x91\x90`\0R` `\0 \x90`\0\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08\x95W\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x08\x1CV[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01`\0\x90[\x82\x82\x10\x15a\x03\xBBW\x83\x82\x90`\0R` `\0 \x01\x80Ta\tC\x90a\x0E\xF9V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\to\x90a\x0E\xF9V[\x80\x15a\t\xBCW\x80`\x1F\x10a\t\x91Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\xBCV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\t\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\t$V[`\x08T`\0\x90`\xFF\x16\x15a\t\xE8WP`\x08T`\xFF\x16\x90V[`@Q\x7Ff\x7F\x9Dp\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\x04\x82\x01\x81\x90R\x7Ffailed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`$\x83\x01R`\0\x91cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nyW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x9D\x91\x90a\x0FLV[\x14\x15\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02kW` \x02\x82\x01\x91\x90`\0R` `\0 \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x02@WPPPPP\x90P\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0B_W\x83Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\x0B-V[P\x90\x96\x95PPPPPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x0B\x91W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0BuV[P`\0` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R`\0\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87\x80[\x85\x81\x10\x15a\x0C\xC8W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x8B\x85\x03\x01\x87R\x82Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85R\x89\x01Q\x89\x85\x01\x89\x90R\x80Q\x89\x86\x01\x81\x90R\x90\x8A\x01\x90``\x81\x88\x1B\x87\x01\x81\x01\x91\x90\x87\x01\x90\x85[\x81\x81\x10\x15a\x0C\xB2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x89\x85\x03\x01\x83Ra\x0C\xA0\x84\x86Qa\x0BkV[\x94\x8E\x01\x94\x93P\x91\x8D\x01\x91`\x01\x01a\x0CfV[PPP\x97\x8A\x01\x97\x94PP\x91\x88\x01\x91`\x01\x01a\x0B\xF6V[P\x91\x9A\x99PPPPPPPPPPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a\r+W\x81Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x0C\xEDV[P\x94\x95\x94PPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a\r\xCDW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x89\x84\x03\x01\x85R\x81Q\x80Q\x87\x85Ra\r\xA1\x88\x86\x01\x82a\x0BkV[\x91\x89\x01Q\x85\x83\x03\x86\x8B\x01R\x91\x90Pa\r\xB9\x81\x83a\x0C\xD8V[\x96\x89\x01\x96\x94PPP\x90\x86\x01\x90`\x01\x01a\r_V[P\x90\x98\x97PPPPPPPPV[`\0` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01`\0[\x82\x81\x10\x15a\x0EPW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x88\x86\x03\x01\x84Ra\x0E>\x85\x83Qa\x0BkV[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\x0E\x04V[P\x92\x97\x96PPPPPPPV[`\0` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01`\0[\x83\x81\x10\x15a\r\xCDW\x88\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x01\x85R\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x87\x01Q\x87\x84\x01\x87\x90Ra\x0E\xE6\x87\x85\x01\x82a\x0C\xD8V[\x95\x88\x01\x95\x93PP\x90\x86\x01\x90`\x01\x01a\x0E\x86V[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0F\rW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0FFW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x0F^W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 &\xD99\xE7\xD9\xDDA\xD8x\xBF\x01\xC5\xCA\xB2\x06\x88\xFE\xD65c|l\xA1Ruz\xD4\xEB\xEC]\xC7mdsolcC\0\x08\x18\x003", - ); - /**```solidity -struct FuzzArtifactSelector { string artifact; bytes4[] selectors; } -```*/ - #[allow(non_camel_case_types, non_snake_case)] - #[derive(Clone)] - pub struct FuzzArtifactSelector { - pub artifact: alloy::sol_types::private::String, - pub selectors: alloy::sol_types::private::Vec< - alloy::sol_types::private::FixedBytes<4>, - >, - } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] - const _: () = { - use alloy::sol_types as alloy_sol_types; - #[doc(hidden)] - type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::String, - alloy::sol_types::sol_data::Array>, - ); - #[doc(hidden)] - type UnderlyingRustTuple<'a> = ( - alloy::sol_types::private::String, - alloy::sol_types::private::Vec>, - ); - #[cfg(test)] - #[allow(dead_code, unreachable_patterns)] - fn _type_assertion( - _t: alloy_sol_types::private::AssertTypeEq, - ) { - match _t { - alloy_sol_types::private::AssertTypeEq::< - ::RustType, - >(_) => {} - } - } - #[automatically_derived] - #[doc(hidden)] - impl ::core::convert::From for UnderlyingRustTuple<'_> { - fn from(value: FuzzArtifactSelector) -> Self { - (value.artifact, value.selectors) - } - } - #[automatically_derived] - #[doc(hidden)] - impl ::core::convert::From> for FuzzArtifactSelector { - fn from(tuple: UnderlyingRustTuple<'_>) -> Self { - Self { - artifact: tuple.0, - selectors: tuple.1, - } - } - } - #[automatically_derived] - impl alloy_sol_types::SolValue for FuzzArtifactSelector { - type SolType = Self; - } - #[automatically_derived] - impl alloy_sol_types::private::SolTypeValue for FuzzArtifactSelector { - #[inline] - fn stv_to_tokens(&self) -> ::Token<'_> { - ( - ::tokenize( - &self.artifact, - ), - , - > as alloy_sol_types::SolType>::tokenize(&self.selectors), - ) - } - #[inline] - fn stv_abi_encoded_size(&self) -> usize { - if let Some(size) = ::ENCODED_SIZE { - return size; - } - let tuple = as ::core::convert::From>::from(self.clone()); - as alloy_sol_types::SolType>::abi_encoded_size(&tuple) - } - #[inline] - fn stv_eip712_data_word(&self) -> alloy_sol_types::Word { - ::eip712_hash_struct(self) - } - #[inline] - fn stv_abi_encode_packed_to( - &self, - out: &mut alloy_sol_types::private::Vec, - ) { - let tuple = as ::core::convert::From>::from(self.clone()); - as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out) - } - #[inline] - fn stv_abi_packed_encoded_size(&self) -> usize { - if let Some(size) = ::PACKED_ENCODED_SIZE { - return size; - } - let tuple = as ::core::convert::From>::from(self.clone()); - as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple) - } - } - #[automatically_derived] - impl alloy_sol_types::SolType for FuzzArtifactSelector { - type RustType = Self; - type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; - const SOL_NAME: &'static str = ::NAME; - const ENCODED_SIZE: Option = as alloy_sol_types::SolType>::ENCODED_SIZE; - const PACKED_ENCODED_SIZE: Option = as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE; - #[inline] - fn valid_token(token: &Self::Token<'_>) -> bool { - as alloy_sol_types::SolType>::valid_token(token) - } - #[inline] - fn detokenize(token: Self::Token<'_>) -> Self::RustType { - let tuple = as alloy_sol_types::SolType>::detokenize(token); - >>::from(tuple) - } - } - #[automatically_derived] - impl alloy_sol_types::SolStruct for FuzzArtifactSelector { - const NAME: &'static str = "FuzzArtifactSelector"; - #[inline] - fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> { - alloy_sol_types::private::Cow::Borrowed( - "FuzzArtifactSelector(string artifact,bytes4[] selectors)", - ) - } - #[inline] - fn eip712_components() -> alloy_sol_types::private::Vec< - alloy_sol_types::private::Cow<'static, str>, - > { - alloy_sol_types::private::Vec::new() - } - #[inline] - fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> { - ::eip712_root_type() - } - #[inline] - fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec { - [ - ::eip712_data_word( - &self.artifact, - ) - .0, - , - > as alloy_sol_types::SolType>::eip712_data_word(&self.selectors) - .0, - ] - .concat() - } - } - #[automatically_derived] - impl alloy_sol_types::EventTopic for FuzzArtifactSelector { - #[inline] - fn topic_preimage_length(rust: &Self::RustType) -> usize { - 0usize - + ::topic_preimage_length( - &rust.artifact, - ) - + , - > as alloy_sol_types::EventTopic>::topic_preimage_length( - &rust.selectors, - ) - } - #[inline] - fn encode_topic_preimage( - rust: &Self::RustType, - out: &mut alloy_sol_types::private::Vec, - ) { - out.reserve( - ::topic_preimage_length(rust), - ); - ::encode_topic_preimage( - &rust.artifact, - out, - ); - , - > as alloy_sol_types::EventTopic>::encode_topic_preimage( - &rust.selectors, - out, - ); - } - #[inline] - fn encode_topic( - rust: &Self::RustType, - ) -> alloy_sol_types::abi::token::WordToken { - let mut out = alloy_sol_types::private::Vec::new(); - ::encode_topic_preimage( - rust, - &mut out, - ); - alloy_sol_types::abi::token::WordToken( - alloy_sol_types::private::keccak256(out), - ) - } - } - }; - /**```solidity -struct FuzzInterface { address addr; string[] artifacts; } -```*/ - #[allow(non_camel_case_types, non_snake_case)] - #[derive(Clone)] - pub struct FuzzInterface { - pub addr: alloy::sol_types::private::Address, - pub artifacts: alloy::sol_types::private::Vec, - } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1114,15 +467,22 @@ struct FuzzInterface { address addr; string[] artifacts; } /**```solidity struct FuzzSelector { address addr; bytes4[] selectors; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct FuzzSelector { + #[allow(missing_docs)] pub addr: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub selectors: alloy::sol_types::private::Vec< alloy::sol_types::private::FixedBytes<4>, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1328,17 +688,844 @@ struct FuzzSelector { address addr; bytes4[] selectors; } } } }; + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + +See the [wrapper's documentation](`StdInvariantInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> StdInvariantInstance { + StdInvariantInstance::::new(address, provider) + } + /**A [`StdInvariant`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`StdInvariant`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct StdInvariantInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for StdInvariantInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("StdInvariantInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StdInvariantInstance { + /**Creates a new wrapper around an on-chain [`StdInvariant`](self) contract instance. + +See the [wrapper's documentation](`StdInvariantInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl StdInvariantInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> StdInvariantInstance { + StdInvariantInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StdInvariantInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > StdInvariantInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} +/** + +Generated by the following Solidity interface... +```solidity +library StdInvariant { + struct FuzzArtifactSelector { + string artifact; + bytes4[] selectors; + } + struct FuzzInterface { + address addr; + string[] artifacts; + } + struct FuzzSelector { + address addr; + bytes4[] selectors; + } +} + +interface PermitSignature { + event log(string); + event log_address(address); + event log_array(uint256[] val); + event log_array(int256[] val); + event log_array(address[] val); + event log_bytes(bytes); + event log_bytes32(bytes32); + event log_int(int256); + event log_named_address(string key, address val); + event log_named_array(string key, uint256[] val); + event log_named_array(string key, int256[] val); + event log_named_array(string key, address[] val); + event log_named_bytes(string key, bytes val); + event log_named_bytes32(string key, bytes32 val); + event log_named_decimal_int(string key, int256 val, uint256 decimals); + event log_named_decimal_uint(string key, uint256 val, uint256 decimals); + event log_named_int(string key, int256 val); + event log_named_string(string key, string val); + event log_named_uint(string key, uint256 val); + event log_string(string); + event log_uint(uint256); + event logs(bytes); + + function IS_TEST() external view returns (bool); + function NAME_HASH() external view returns (bytes32); + function TYPE_HASH() external view returns (bytes32); + function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); + function excludeContracts() external view returns (address[] memory excludedContracts_); + function excludeSelectors() external view returns (StdInvariant.FuzzSelector[] memory excludedSelectors_); + function excludeSenders() external view returns (address[] memory excludedSenders_); + function failed() external view returns (bool); + function targetArtifactSelectors() external view returns (StdInvariant.FuzzArtifactSelector[] memory targetedArtifactSelectors_); + function targetArtifacts() external view returns (string[] memory targetedArtifacts_); + function targetContracts() external view returns (address[] memory targetedContracts_); + function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); + function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); + function targetSenders() external view returns (address[] memory targetedSenders_); +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "IS_TEST", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "NAME_HASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "TYPE_HASH", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeArtifacts", + "inputs": [], + "outputs": [ + { + "name": "excludedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeContracts", + "inputs": [], + "outputs": [ + { + "name": "excludedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSelectors", + "inputs": [], + "outputs": [ + { + "name": "excludedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "excludeSenders", + "inputs": [], + "outputs": [ + { + "name": "excludedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "failed", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifactSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifactSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzArtifactSelector[]", + "components": [ + { + "name": "artifact", + "type": "string", + "internalType": "string" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetArtifacts", + "inputs": [], + "outputs": [ + { + "name": "targetedArtifacts_", + "type": "string[]", + "internalType": "string[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetContracts", + "inputs": [], + "outputs": [ + { + "name": "targetedContracts_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetInterfaces", + "inputs": [], + "outputs": [ + { + "name": "targetedInterfaces_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzInterface[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "artifacts", + "type": "string[]", + "internalType": "string[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSelectors", + "inputs": [], + "outputs": [ + { + "name": "targetedSelectors_", + "type": "tuple[]", + "internalType": "struct StdInvariant.FuzzSelector[]", + "components": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + }, + { + "name": "selectors", + "type": "bytes4[]", + "internalType": "bytes4[]" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "targetSenders", + "inputs": [], + "outputs": [ + { + "name": "targetedSenders_", + "type": "address[]", + "internalType": "address[]" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "log", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_address", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_array", + "inputs": [ + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_bytes32", + "inputs": [ + { + "name": "", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_int", + "inputs": [ + { + "name": "", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_address", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256[]", + "indexed": false, + "internalType": "uint256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256[]", + "indexed": false, + "internalType": "int256[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_array", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "address[]", + "indexed": false, + "internalType": "address[]" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_bytes32", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "bytes32", + "indexed": false, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_decimal_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "decimals", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_int", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "int256", + "indexed": false, + "internalType": "int256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_string", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_named_uint", + "inputs": [ + { + "name": "key", + "type": "string", + "indexed": false, + "internalType": "string" + }, + { + "name": "val", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_string", + "inputs": [ + { + "name": "", + "type": "string", + "indexed": false, + "internalType": "string" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "log_uint", + "inputs": [ + { + "name": "", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "logs", + "inputs": [ + { + "name": "", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod PermitSignature { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x6080604052600c8054600160ff199182168117909255601f8054909116909117905534801561002c575f80fd5b50610f538061003a5f395ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806385226c8111610088578063b5508aa911610063578063b5508aa9146101cb578063ba414fa6146101d3578063e20c9f71146101eb578063fa7626d4146101f3575f80fd5b806385226c8114610199578063916a17c6146101ae578063b0464fdc146101c3575f80fd5b80633e5e3c23116100c35780633e5e3c231461014d5780633f7286f41461015557806364d4c8191461015d57806366d9a9a014610184575f80fd5b806304622c2e146100e95780631ed7831c146101235780632ade388014610138575b5f80fd5b6101107f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a81565b6040519081526020015b60405180910390f35b61012b610200565b60405161011a9190610adc565b61014061026d565b60405161011a9190610b96565b61012b6103b6565b61012b610421565b6101107f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61018c61048c565b60405161011a9190610cf8565b6101a1610605565b60405161011a9190610d9b565b6101b66106d0565b60405161011a9190610e1b565b6101b66107d3565b6101a16108d6565b6101db6109a1565b604051901515815260200161011a565b61012b610a71565b601f546101db9060ff1681565b6060601680548060200260200160405190810160405280929190818152602001828054801561026357602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610238575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b828210156103ad575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610396578382905f5260205f2001805461030b90610eb5565b80601f016020809104026020016040519081016040528092919081815260200182805461033790610eb5565b80156103825780601f1061035957610100808354040283529160200191610382565b820191905f5260205f20905b81548152906001019060200180831161036557829003601f168201915b5050505050815260200190600101906102ee565b505050508152505081526020019060010190610290565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561026357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610238575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561026357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610238575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020015f905b828210156103ad578382905f5260205f2090600202016040518060400160405290815f820180546104df90610eb5565b80601f016020809104026020016040519081016040528092919081815260200182805461050b90610eb5565b80156105565780601f1061052d57610100808354040283529160200191610556565b820191905f5260205f20905b81548152906001019060200180831161053957829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156105ed57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161059a5790505b505050505081525050815260200190600101906104af565b6060601a805480602002602001604051908101604052809291908181526020015f905b828210156103ad578382905f5260205f2001805461064590610eb5565b80601f016020809104026020016040519081016040528092919081815260200182805461067190610eb5565b80156106bc5780601f10610693576101008083540402835291602001916106bc565b820191905f5260205f20905b81548152906001019060200180831161069f57829003601f168201915b505050505081526020019060010190610628565b6060601d805480602002602001604051908101604052809291908181526020015f905b828210156103ad575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156107bb57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107685790505b505050505081525050815260200190600101906106f3565b6060601c805480602002602001604051908101604052809291908181526020015f905b828210156103ad575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108be57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161086b5790505b505050505081525050815260200190600101906107f6565b60606019805480602002602001604051908101604052809291908181526020015f905b828210156103ad578382905f5260205f2001805461091690610eb5565b80601f016020809104026020016040519081016040528092919081815260200182805461094290610eb5565b801561098d5780601f106109645761010080835404028352916020019161098d565b820191905f5260205f20905b81548152906001019060200180831161097057829003601f168201915b5050505050815260200190600101906108f9565b6008545f9060ff16156109b8575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa158015610a46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6a9190610f06565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561026357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610238575050505050905090565b602080825282518282018190525f9190848201906040850190845b81811015610b2957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610af7565b50909695505050505050565b5f81518084525f5b81811015610b5957602081850181015186830182015201610b3d565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602080825282518282018190525f919060409081850190600581811b87018401888601875b84811015610c8d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08a84030186528151805173ffffffffffffffffffffffffffffffffffffffff168452880151888401889052805188850181905290890190606081871b8601810191908601905f5b81811015610c77577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888503018352610c65848651610b35565b948d01949350918c0191600101610c2b565b5050509689019693505090870190600101610bbb565b50909998505050505050505050565b5f815180845260208085019450602084015f5b83811015610ced5781517fffffffff000000000000000000000000000000000000000000000000000000001687529582019590820190600101610caf565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015610d8d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552610d6188860182610b35565b91890151858303868b0152919050610d798183610c9c565b968901969450505090860190600101610d1f565b509098975050505050505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015610e0e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610dfc858351610b35565b94509285019290850190600101610dc2565b5092979650505050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015610d8d578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff168452870151878401879052610ea287850182610c9c565b9588019593505090860190600101610e42565b600181811c90821680610ec957607f821691505b602082108103610f00577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215610f16575f80fd5b505191905056fea2646970667358221220b72d199ce0ced8535f126e6a42a5f6c20bb9b633787f4d0830ecb84995dca7a064736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R`\x0C\x80T`\x01`\xFF\x19\x91\x82\x16\x81\x17\x90\x92U`\x1F\x80T\x90\x91\x16\x90\x91\x17\x90U4\x80\x15a\0,W_\x80\xFD[Pa\x0FS\x80a\0:_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0\xE5W_5`\xE0\x1C\x80c\x85\"l\x81\x11a\0\x88W\x80c\xB5P\x8A\xA9\x11a\0cW\x80c\xB5P\x8A\xA9\x14a\x01\xCBW\x80c\xBAAO\xA6\x14a\x01\xD3W\x80c\xE2\x0C\x9Fq\x14a\x01\xEBW\x80c\xFAv&\xD4\x14a\x01\xF3W_\x80\xFD[\x80c\x85\"l\x81\x14a\x01\x99W\x80c\x91j\x17\xC6\x14a\x01\xAEW\x80c\xB0FO\xDC\x14a\x01\xC3W_\x80\xFD[\x80c>^<#\x11a\0\xC3W\x80c>^<#\x14a\x01MW\x80c?r\x86\xF4\x14a\x01UW\x80cd\xD4\xC8\x19\x14a\x01]W\x80cf\xD9\xA9\xA0\x14a\x01\x84W_\x80\xFD[\x80c\x04b,.\x14a\0\xE9W\x80c\x1E\xD7\x83\x1C\x14a\x01#W\x80c*\xDE8\x80\x14a\x018W[_\x80\xFD[a\x01\x10\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01+a\x02\0V[`@Qa\x01\x1A\x91\x90a\n\xDCV[a\x01@a\x02mV[`@Qa\x01\x1A\x91\x90a\x0B\x96V[a\x01+a\x03\xB6V[a\x01+a\x04!V[a\x01\x10\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[a\x01\x8Ca\x04\x8CV[`@Qa\x01\x1A\x91\x90a\x0C\xF8V[a\x01\xA1a\x06\x05V[`@Qa\x01\x1A\x91\x90a\r\x9BV[a\x01\xB6a\x06\xD0V[`@Qa\x01\x1A\x91\x90a\x0E\x1BV[a\x01\xB6a\x07\xD3V[a\x01\xA1a\x08\xD6V[a\x01\xDBa\t\xA1V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1AV[a\x01+a\nqV[`\x1FTa\x01\xDB\x90`\xFF\x16\x81V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90[\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028W[PPPPP\x90P\x90V[```\x1E\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW_\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\x96W\x83\x82\x90_R` _ \x01\x80Ta\x03\x0B\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x037\x90a\x0E\xB5V[\x80\x15a\x03\x82W\x80`\x1F\x10a\x03YWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x82V[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03eW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x02\xEEV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\x90V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028WPPPPP\x90P\x90V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028WPPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW\x83\x82\x90_R` _ \x90`\x02\x02\x01`@Q\x80`@\x01`@R\x90\x81_\x82\x01\x80Ta\x04\xDF\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x0B\x90a\x0E\xB5V[\x80\x15a\x05VW\x80`\x1F\x10a\x05-Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05VV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x059W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01`\x01\x82\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05\xEDW` \x02\x82\x01\x91\x90_R` _ \x90_\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\x9AW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xAFV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW\x83\x82\x90_R` _ \x01\x80Ta\x06E\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06q\x90a\x0E\xB5V[\x80\x15a\x06\xBCW\x80`\x1F\x10a\x06\x93Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\xBCV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06(V[```\x1D\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW_\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\xBBW` \x02\x82\x01\x91\x90_R` _ \x90_\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07hW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xF3V[```\x1C\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW_\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xBEW` \x02\x82\x01\x91\x90_R` _ \x90_\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08kW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF6V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW\x83\x82\x90_R` _ \x01\x80Ta\t\x16\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\tB\x90a\x0E\xB5V[\x80\x15a\t\x8DW\x80`\x1F\x10a\tdWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8DV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\tpW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xF9V[`\x08T_\x90`\xFF\x16\x15a\t\xB8WP`\x08T`\xFF\x16\x90V[`@Q\x7Ff\x7F\x9Dp\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\x04\x82\x01\x81\x90R\x7Ffailed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`$\x83\x01R_\x91cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nFW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nj\x91\x90a\x0F\x06V[\x14\x15\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028WPPPPP\x90P\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0B)W\x83Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\xF7V[P\x90\x96\x95PPPPPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x0BYW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0B=V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87[\x84\x81\x10\x15a\x0C\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x8A\x84\x03\x01\x86R\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x88\x01Q\x88\x84\x01\x88\x90R\x80Q\x88\x85\x01\x81\x90R\x90\x89\x01\x90``\x81\x87\x1B\x86\x01\x81\x01\x91\x90\x86\x01\x90_[\x81\x81\x10\x15a\x0CwW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x85\x03\x01\x83Ra\x0Ce\x84\x86Qa\x0B5V[\x94\x8D\x01\x94\x93P\x91\x8C\x01\x91`\x01\x01a\x0C+V[PPP\x96\x89\x01\x96\x93PP\x90\x87\x01\x90`\x01\x01a\x0B\xBBV[P\x90\x99\x98PPPPPPPPPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x0C\xEDW\x81Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x0C\xAFV[P\x94\x95\x94PPPPPV[_` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01_[\x83\x81\x10\x15a\r\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x89\x84\x03\x01\x85R\x81Q\x80Q\x87\x85Ra\ra\x88\x86\x01\x82a\x0B5V[\x91\x89\x01Q\x85\x83\x03\x86\x8B\x01R\x91\x90Pa\ry\x81\x83a\x0C\x9CV[\x96\x89\x01\x96\x94PPP\x90\x86\x01\x90`\x01\x01a\r\x1FV[P\x90\x98\x97PPPPPPPPV[_` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15a\x0E\x0EW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x88\x86\x03\x01\x84Ra\r\xFC\x85\x83Qa\x0B5V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\r\xC2V[P\x92\x97\x96PPPPPPPV[_` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01_[\x83\x81\x10\x15a\r\x8DW\x88\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x01\x85R\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x87\x01Q\x87\x84\x01\x87\x90Ra\x0E\xA2\x87\x85\x01\x82a\x0C\x9CV[\x95\x88\x01\x95\x93PP\x90\x86\x01\x90`\x01\x01a\x0EBV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0E\xC9W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0F\0W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[_` \x82\x84\x03\x12\x15a\x0F\x16W_\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB7-\x19\x9C\xE0\xCE\xD8S_\x12njB\xA5\xF6\xC2\x0B\xB9\xB63x\x7FM\x080\xEC\xB8I\x95\xDC\xA7\xA0dsolcC\0\x08\x18\x003", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806385226c8111610088578063b5508aa911610063578063b5508aa9146101cb578063ba414fa6146101d3578063e20c9f71146101eb578063fa7626d4146101f3575f80fd5b806385226c8114610199578063916a17c6146101ae578063b0464fdc146101c3575f80fd5b80633e5e3c23116100c35780633e5e3c231461014d5780633f7286f41461015557806364d4c8191461015d57806366d9a9a014610184575f80fd5b806304622c2e146100e95780631ed7831c146101235780632ade388014610138575b5f80fd5b6101107f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a81565b6040519081526020015b60405180910390f35b61012b610200565b60405161011a9190610adc565b61014061026d565b60405161011a9190610b96565b61012b6103b6565b61012b610421565b6101107f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61018c61048c565b60405161011a9190610cf8565b6101a1610605565b60405161011a9190610d9b565b6101b66106d0565b60405161011a9190610e1b565b6101b66107d3565b6101a16108d6565b6101db6109a1565b604051901515815260200161011a565b61012b610a71565b601f546101db9060ff1681565b6060601680548060200260200160405190810160405280929190818152602001828054801561026357602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610238575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b828210156103ad575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610396578382905f5260205f2001805461030b90610eb5565b80601f016020809104026020016040519081016040528092919081815260200182805461033790610eb5565b80156103825780601f1061035957610100808354040283529160200191610382565b820191905f5260205f20905b81548152906001019060200180831161036557829003601f168201915b5050505050815260200190600101906102ee565b505050508152505081526020019060010190610290565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561026357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610238575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561026357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610238575050505050905090565b6060601b805480602002602001604051908101604052809291908181526020015f905b828210156103ad578382905f5260205f2090600202016040518060400160405290815f820180546104df90610eb5565b80601f016020809104026020016040519081016040528092919081815260200182805461050b90610eb5565b80156105565780601f1061052d57610100808354040283529160200191610556565b820191905f5260205f20905b81548152906001019060200180831161053957829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156105ed57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161059a5790505b505050505081525050815260200190600101906104af565b6060601a805480602002602001604051908101604052809291908181526020015f905b828210156103ad578382905f5260205f2001805461064590610eb5565b80601f016020809104026020016040519081016040528092919081815260200182805461067190610eb5565b80156106bc5780601f10610693576101008083540402835291602001916106bc565b820191905f5260205f20905b81548152906001019060200180831161069f57829003601f168201915b505050505081526020019060010190610628565b6060601d805480602002602001604051908101604052809291908181526020015f905b828210156103ad575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156107bb57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116107685790505b505050505081525050815260200190600101906106f3565b6060601c805480602002602001604051908101604052809291908181526020015f905b828210156103ad575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156108be57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161086b5790505b505050505081525050815260200190600101906107f6565b60606019805480602002602001604051908101604052809291908181526020015f905b828210156103ad578382905f5260205f2001805461091690610eb5565b80601f016020809104026020016040519081016040528092919081815260200182805461094290610eb5565b801561098d5780601f106109645761010080835404028352916020019161098d565b820191905f5260205f20905b81548152906001019060200180831161097057829003601f168201915b5050505050815260200190600101906108f9565b6008545f9060ff16156109b8575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa158015610a46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a6a9190610f06565b1415905090565b6060601580548060200260200160405190810160405280929190818152602001828054801561026357602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610238575050505050905090565b602080825282518282018190525f9190848201906040850190845b81811015610b2957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101610af7565b50909695505050505050565b5f81518084525f5b81811015610b5957602081850181015186830182015201610b3d565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602080825282518282018190525f919060409081850190600581811b87018401888601875b84811015610c8d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08a84030186528151805173ffffffffffffffffffffffffffffffffffffffff168452880151888401889052805188850181905290890190606081871b8601810191908601905f5b81811015610c77577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888503018352610c65848651610b35565b948d01949350918c0191600101610c2b565b5050509689019693505090870190600101610bbb565b50909998505050505050505050565b5f815180845260208085019450602084015f5b83811015610ced5781517fffffffff000000000000000000000000000000000000000000000000000000001687529582019590820190600101610caf565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015610d8d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281518051878552610d6188860182610b35565b91890151858303868b0152919050610d798183610c9c565b968901969450505090860190600101610d1f565b509098975050505050505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b82811015610e0e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610dfc858351610b35565b94509285019290850190600101610dc2565b5092979650505050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015610d8d578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff168452870151878401879052610ea287850182610c9c565b9588019593505090860190600101610e42565b600181811c90821680610ec957607f821691505b602082108103610f00577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215610f16575f80fd5b505191905056fea2646970667358221220b72d199ce0ced8535f126e6a42a5f6c20bb9b633787f4d0830ecb84995dca7a064736f6c63430008180033 + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"`\x80`@R4\x80\x15a\0\x0FW_\x80\xFD[P`\x046\x10a\0\xE5W_5`\xE0\x1C\x80c\x85\"l\x81\x11a\0\x88W\x80c\xB5P\x8A\xA9\x11a\0cW\x80c\xB5P\x8A\xA9\x14a\x01\xCBW\x80c\xBAAO\xA6\x14a\x01\xD3W\x80c\xE2\x0C\x9Fq\x14a\x01\xEBW\x80c\xFAv&\xD4\x14a\x01\xF3W_\x80\xFD[\x80c\x85\"l\x81\x14a\x01\x99W\x80c\x91j\x17\xC6\x14a\x01\xAEW\x80c\xB0FO\xDC\x14a\x01\xC3W_\x80\xFD[\x80c>^<#\x11a\0\xC3W\x80c>^<#\x14a\x01MW\x80c?r\x86\xF4\x14a\x01UW\x80cd\xD4\xC8\x19\x14a\x01]W\x80cf\xD9\xA9\xA0\x14a\x01\x84W_\x80\xFD[\x80c\x04b,.\x14a\0\xE9W\x80c\x1E\xD7\x83\x1C\x14a\x01#W\x80c*\xDE8\x80\x14a\x018W[_\x80\xFD[a\x01\x10\x7F\x9A\xC9\x97An\x8F\xF9\xD2\xFFk\xEB\xEBqI\xF6\\\xDA\xE5\xE3.+\x90D\x0BVk\xB3\x04@A\xD3j\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01+a\x02\0V[`@Qa\x01\x1A\x91\x90a\n\xDCV[a\x01@a\x02mV[`@Qa\x01\x1A\x91\x90a\x0B\x96V[a\x01+a\x03\xB6V[a\x01+a\x04!V[a\x01\x10\x7F\x8C\xAD\x95h{\xA8,,\xE5\x0Et\xF7\xB7Td^Q\x17\xC3\xA5\xBE\xC8\x15\x1C\x07&\xD5\x85y\x80\xA8f\x81V[a\x01\x8Ca\x04\x8CV[`@Qa\x01\x1A\x91\x90a\x0C\xF8V[a\x01\xA1a\x06\x05V[`@Qa\x01\x1A\x91\x90a\r\x9BV[a\x01\xB6a\x06\xD0V[`@Qa\x01\x1A\x91\x90a\x0E\x1BV[a\x01\xB6a\x07\xD3V[a\x01\xA1a\x08\xD6V[a\x01\xDBa\t\xA1V[`@Q\x90\x15\x15\x81R` \x01a\x01\x1AV[a\x01+a\nqV[`\x1FTa\x01\xDB\x90`\xFF\x16\x81V[```\x16\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90[\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028W[PPPPP\x90P\x90V[```\x1E\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW_\x84\x81R` \x80\x82 `@\x80Q\x80\x82\x01\x82R`\x02\x87\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x95\x91\x94\x86\x81\x01\x94\x91\x92\x90\x84\x01[\x82\x82\x10\x15a\x03\x96W\x83\x82\x90_R` _ \x01\x80Ta\x03\x0B\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x037\x90a\x0E\xB5V[\x80\x15a\x03\x82W\x80`\x1F\x10a\x03YWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x82V[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03eW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x02\xEEV[PPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x02\x90V[PPPP\x90P\x90V[```\x18\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028WPPPPP\x90P\x90V[```\x17\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028WPPPPP\x90P\x90V[```\x1B\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW\x83\x82\x90_R` _ \x90`\x02\x02\x01`@Q\x80`@\x01`@R\x90\x81_\x82\x01\x80Ta\x04\xDF\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05\x0B\x90a\x0E\xB5V[\x80\x15a\x05VW\x80`\x1F\x10a\x05-Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05VV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x059W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01`\x01\x82\x01\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x05\xEDW` \x02\x82\x01\x91\x90_R` _ \x90_\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x05\x9AW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x04\xAFV[```\x1A\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW\x83\x82\x90_R` _ \x01\x80Ta\x06E\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x06q\x90a\x0E\xB5V[\x80\x15a\x06\xBCW\x80`\x1F\x10a\x06\x93Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x06\xBCV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x06\x9FW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x06(V[```\x1D\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW_\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x07\xBBW` \x02\x82\x01\x91\x90_R` _ \x90_\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x07hW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x06\xF3V[```\x1C\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW_\x84\x81R` \x90\x81\x90 `@\x80Q\x80\x82\x01\x82R`\x02\x86\x02\x90\x92\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R`\x01\x81\x01\x80T\x83Q\x81\x87\x02\x81\x01\x87\x01\x90\x94R\x80\x84R\x93\x94\x91\x93\x85\x83\x01\x93\x92\x83\x01\x82\x82\x80\x15a\x08\xBEW` \x02\x82\x01\x91\x90_R` _ \x90_\x90[\x82\x82\x90T\x90a\x01\0\n\x90\x04`\xE0\x1B{\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x01\x90`\x04\x01\x90` \x82`\x03\x01\x04\x92\x83\x01\x92`\x01\x03\x82\x02\x91P\x80\x84\x11a\x08kW\x90P[PPPPP\x81RPP\x81R` \x01\x90`\x01\x01\x90a\x07\xF6V[```\x19\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01_\x90[\x82\x82\x10\x15a\x03\xADW\x83\x82\x90_R` _ \x01\x80Ta\t\x16\x90a\x0E\xB5V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\tB\x90a\x0E\xB5V[\x80\x15a\t\x8DW\x80`\x1F\x10a\tdWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\t\x8DV[\x82\x01\x91\x90_R` _ \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\tpW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81R` \x01\x90`\x01\x01\x90a\x08\xF9V[`\x08T_\x90`\xFF\x16\x15a\t\xB8WP`\x08T`\xFF\x16\x90V[`@Q\x7Ff\x7F\x9Dp\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rsq\tp\x9E\xCF\xA9\x1A\x80bo\xF3\x98\x9Dh\xF6\x7F[\x1D\xD1-`\x04\x82\x01\x81\x90R\x7Ffailed\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`$\x83\x01R_\x91cf\x7F\x9Dp\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nFW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\nj\x91\x90a\x0F\x06V[\x14\x15\x90P\x90V[```\x15\x80T\x80` \x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80T\x80\x15a\x02cW` \x02\x82\x01\x91\x90_R` _ \x90\x81Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R`\x01\x90\x91\x01\x90` \x01\x80\x83\x11a\x028WPPPPP\x90P\x90V[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90\x84\x82\x01\x90`@\x85\x01\x90\x84[\x81\x81\x10\x15a\x0B)W\x83Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a\n\xF7V[P\x90\x96\x95PPPPPPV[_\x81Q\x80\x84R_[\x81\x81\x10\x15a\x0BYW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x0B=V[P_` \x82\x86\x01\x01R` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x90`@\x90\x81\x85\x01\x90`\x05\x81\x81\x1B\x87\x01\x84\x01\x88\x86\x01\x87[\x84\x81\x10\x15a\x0C\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x8A\x84\x03\x01\x86R\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x88\x01Q\x88\x84\x01\x88\x90R\x80Q\x88\x85\x01\x81\x90R\x90\x89\x01\x90``\x81\x87\x1B\x86\x01\x81\x01\x91\x90\x86\x01\x90_[\x81\x81\x10\x15a\x0CwW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x85\x03\x01\x83Ra\x0Ce\x84\x86Qa\x0B5V[\x94\x8D\x01\x94\x93P\x91\x8C\x01\x91`\x01\x01a\x0C+V[PPP\x96\x89\x01\x96\x93PP\x90\x87\x01\x90`\x01\x01a\x0B\xBBV[P\x90\x99\x98PPPPPPPPPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a\x0C\xEDW\x81Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x87R\x95\x82\x01\x95\x90\x82\x01\x90`\x01\x01a\x0C\xAFV[P\x94\x95\x94PPPPPV[_` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01_[\x83\x81\x10\x15a\r\x8DW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x89\x84\x03\x01\x85R\x81Q\x80Q\x87\x85Ra\ra\x88\x86\x01\x82a\x0B5V[\x91\x89\x01Q\x85\x83\x03\x86\x8B\x01R\x91\x90Pa\ry\x81\x83a\x0C\x9CV[\x96\x89\x01\x96\x94PPP\x90\x86\x01\x90`\x01\x01a\r\x1FV[P\x90\x98\x97PPPPPPPPV[_` \x80\x83\x01` \x84R\x80\x85Q\x80\x83R`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x92P` \x87\x01_[\x82\x81\x10\x15a\x0E\x0EW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x88\x86\x03\x01\x84Ra\r\xFC\x85\x83Qa\x0B5V[\x94P\x92\x85\x01\x92\x90\x85\x01\x90`\x01\x01a\r\xC2V[P\x92\x97\x96PPPPPPPV[_` \x80\x83\x01\x81\x84R\x80\x85Q\x80\x83R`@\x92P`@\x86\x01\x91P`@\x81`\x05\x1B\x87\x01\x01\x84\x88\x01_[\x83\x81\x10\x15a\r\x8DW\x88\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC0\x01\x85R\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x84R\x87\x01Q\x87\x84\x01\x87\x90Ra\x0E\xA2\x87\x85\x01\x82a\x0C\x9CV[\x95\x88\x01\x95\x93PP\x90\x86\x01\x90`\x01\x01a\x0EBV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0E\xC9W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0F\0W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[_` \x82\x84\x03\x12\x15a\x0F\x16W_\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xB7-\x19\x9C\xE0\xCE\xD8S_\x12njB\xA5\xF6\xC2\x0B\xB9\xB63x\x7FM\x080\xEC\xB8I\x95\xDC\xA7\xA0dsolcC\0\x08\x18\x003", + ); /**Event with signature `log(string)` and selector `0x41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50`. ```solidity event log(string); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log { #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1393,6 +1580,21 @@ event log(string); Self { _0: data.0 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -1439,13 +1641,23 @@ event log(string); ```solidity event log_address(address); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_address { #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1500,6 +1712,21 @@ event log_address(address); Self { _0: data.0 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -1546,13 +1773,25 @@ event log_address(address); ```solidity event log_array(uint256[] val); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_array_0 { #[allow(missing_docs)] - pub val: alloy::sol_types::private::Vec, + pub val: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1609,6 +1848,21 @@ event log_array(uint256[] val); Self { val: data.0 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( , + pub val: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::I256, + >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1718,6 +1984,21 @@ event log_array(int256[] val); Self { val: data.0 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( , } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1827,6 +2118,21 @@ event log_array(address[] val); Self { val: data.0 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -1980,13 +2311,23 @@ event log_bytes(bytes); ```solidity event log_bytes32(bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_bytes32 { #[allow(missing_docs)] pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2041,6 +2382,21 @@ event log_bytes32(bytes32); Self { _0: data.0 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -2309,15 +2715,27 @@ event log_named_address(string key, address val); ```solidity event log_named_array(string key, uint256[] val); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_named_array_0 { #[allow(missing_docs)] pub key: alloy::sol_types::private::String, #[allow(missing_docs)] - pub val: alloy::sol_types::private::Vec, + pub val: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::U256, + >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2375,6 +2793,21 @@ event log_named_array(string key, uint256[] val); Self { key: data.0, val: data.1 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -2424,15 +2857,27 @@ event log_named_array(string key, uint256[] val); ```solidity event log_named_array(string key, int256[] val); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_named_array_1 { #[allow(missing_docs)] pub key: alloy::sol_types::private::String, #[allow(missing_docs)] - pub val: alloy::sol_types::private::Vec, + pub val: alloy::sol_types::private::Vec< + alloy::sol_types::private::primitives::aliases::I256, + >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2490,6 +2935,21 @@ event log_named_array(string key, int256[] val); Self { key: data.0, val: data.1 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -2539,7 +2999,12 @@ event log_named_array(string key, int256[] val); ```solidity event log_named_array(string key, address[] val); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_named_array_2 { #[allow(missing_docs)] @@ -2547,7 +3012,12 @@ event log_named_array(string key, address[] val); #[allow(missing_docs)] pub val: alloy::sol_types::private::Vec, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2605,6 +3075,21 @@ event log_named_array(string key, address[] val); Self { key: data.0, val: data.1 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -2654,7 +3139,12 @@ event log_named_array(string key, address[] val); ```solidity event log_named_bytes(string key, bytes val); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_named_bytes { #[allow(missing_docs)] @@ -2662,7 +3152,12 @@ event log_named_bytes(string key, bytes val); #[allow(missing_docs)] pub val: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2720,6 +3215,21 @@ event log_named_bytes(string key, bytes val); Self { key: data.0, val: data.1 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -2769,7 +3279,12 @@ event log_named_bytes(string key, bytes val); ```solidity event log_named_bytes32(string key, bytes32 val); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_named_bytes32 { #[allow(missing_docs)] @@ -2777,7 +3292,12 @@ event log_named_bytes32(string key, bytes32 val); #[allow(missing_docs)] pub val: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2835,6 +3355,21 @@ event log_named_bytes32(string key, bytes32 val); Self { key: data.0, val: data.1 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -2884,17 +3419,27 @@ event log_named_bytes32(string key, bytes32 val); ```solidity event log_named_decimal_int(string key, int256 val, uint256 decimals); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_named_decimal_int { #[allow(missing_docs)] pub key: alloy::sol_types::private::String, #[allow(missing_docs)] - pub val: alloy::sol_types::private::I256, + pub val: alloy::sol_types::private::primitives::aliases::I256, #[allow(missing_docs)] - pub decimals: alloy::sol_types::private::U256, + pub decimals: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -2957,6 +3502,21 @@ event log_named_decimal_int(string key, int256 val, uint256 decimals); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -3009,17 +3569,27 @@ event log_named_decimal_int(string key, int256 val, uint256 decimals); ```solidity event log_named_decimal_uint(string key, uint256 val, uint256 decimals); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_named_decimal_uint { #[allow(missing_docs)] pub key: alloy::sol_types::private::String, #[allow(missing_docs)] - pub val: alloy::sol_types::private::U256, + pub val: alloy::sol_types::private::primitives::aliases::U256, #[allow(missing_docs)] - pub decimals: alloy::sol_types::private::U256, + pub decimals: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3082,6 +3652,21 @@ event log_named_decimal_uint(string key, uint256 val, uint256 decimals); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -3134,15 +3719,25 @@ event log_named_decimal_uint(string key, uint256 val, uint256 decimals); ```solidity event log_named_int(string key, int256 val); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_named_int { #[allow(missing_docs)] pub key: alloy::sol_types::private::String, #[allow(missing_docs)] - pub val: alloy::sol_types::private::I256, + pub val: alloy::sol_types::private::primitives::aliases::I256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3200,6 +3795,21 @@ event log_named_int(string key, int256 val); Self { key: data.0, val: data.1 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -3249,7 +3859,12 @@ event log_named_int(string key, int256 val); ```solidity event log_named_string(string key, string val); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_named_string { #[allow(missing_docs)] @@ -3257,7 +3872,12 @@ event log_named_string(string key, string val); #[allow(missing_docs)] pub val: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3315,6 +3935,21 @@ event log_named_string(string key, string val); Self { key: data.0, val: data.1 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -3364,15 +3999,25 @@ event log_named_string(string key, string val); ```solidity event log_named_uint(string key, uint256 val); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_named_uint { #[allow(missing_docs)] pub key: alloy::sol_types::private::String, #[allow(missing_docs)] - pub val: alloy::sol_types::private::U256, + pub val: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3430,6 +4075,21 @@ event log_named_uint(string key, uint256 val); Self { key: data.0, val: data.1 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -3479,13 +4139,23 @@ event log_named_uint(string key, uint256 val); ```solidity event log_string(string); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_string { #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3540,6 +4210,21 @@ event log_string(string); Self { _0: data.0 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -3586,13 +4271,23 @@ event log_string(string); ```solidity event log_uint(uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct log_uint { #[allow(missing_docs)] - pub _0: alloy::sol_types::private::U256, + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -3647,6 +4342,21 @@ event log_uint(uint256); Self { _0: data.0 } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -3800,16 +4535,22 @@ event logs(bytes); ```solidity function IS_TEST() external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_TESTCall {} ///Container type for the return parameters of the [`IS_TEST()`](IS_TESTCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IS_TESTReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3913,16 +4654,22 @@ function IS_TEST() external view returns (bool); ```solidity function NAME_HASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NAME_HASHCall {} ///Container type for the return parameters of the [`NAME_HASH()`](NAME_HASHCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NAME_HASHReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4026,16 +4773,22 @@ function NAME_HASH() external view returns (bytes32); ```solidity function TYPE_HASH() external view returns (bytes32); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct TYPE_HASHCall {} ///Container type for the return parameters of the [`TYPE_HASH()`](TYPE_HASHCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct TYPE_HASHReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4139,18 +4892,24 @@ function TYPE_HASH() external view returns (bytes32); ```solidity function excludeArtifacts() external view returns (string[] memory excludedArtifacts_); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct excludeArtifactsCall {} ///Container type for the return parameters of the [`excludeArtifacts()`](excludeArtifactsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct excludeArtifactsReturn { + #[allow(missing_docs)] pub excludedArtifacts_: alloy::sol_types::private::Vec< alloy::sol_types::private::String, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4266,18 +5025,24 @@ function excludeArtifacts() external view returns (string[] memory excludedArtif ```solidity function excludeContracts() external view returns (address[] memory excludedContracts_); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct excludeContractsCall {} ///Container type for the return parameters of the [`excludeContracts()`](excludeContractsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct excludeContractsReturn { + #[allow(missing_docs)] pub excludedContracts_: alloy::sol_types::private::Vec< alloy::sol_types::private::Address, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4391,20 +5156,26 @@ function excludeContracts() external view returns (address[] memory excludedCont }; /**Function with signature `excludeSelectors()` and selector `0xb0464fdc`. ```solidity -function excludeSelectors() external view returns (FuzzSelector[] memory excludedSelectors_); +function excludeSelectors() external view returns (StdInvariant.FuzzSelector[] memory excludedSelectors_); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct excludeSelectorsCall {} ///Container type for the return parameters of the [`excludeSelectors()`](excludeSelectorsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct excludeSelectorsReturn { + #[allow(missing_docs)] pub excludedSelectors_: alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4443,12 +5214,12 @@ function excludeSelectors() external view returns (FuzzSelector[] memory exclude { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, ); #[cfg(test)] @@ -4488,7 +5259,9 @@ function excludeSelectors() external view returns (FuzzSelector[] memory exclude 'a, > as alloy_sol_types::SolType>::Token<'a>; type Return = excludeSelectorsReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; @@ -4520,18 +5293,24 @@ function excludeSelectors() external view returns (FuzzSelector[] memory exclude ```solidity function excludeSenders() external view returns (address[] memory excludedSenders_); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct excludeSendersCall {} ///Container type for the return parameters of the [`excludeSenders()`](excludeSendersCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct excludeSendersReturn { + #[allow(missing_docs)] pub excludedSenders_: alloy::sol_types::private::Vec< alloy::sol_types::private::Address, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4643,16 +5422,22 @@ function excludeSenders() external view returns (address[] memory excludedSender ```solidity function failed() external view returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct failedCall {} ///Container type for the return parameters of the [`failed()`](failedCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct failedReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4754,20 +5539,26 @@ function failed() external view returns (bool); }; /**Function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0`. ```solidity -function targetArtifactSelectors() external view returns (FuzzArtifactSelector[] memory targetedArtifactSelectors_); +function targetArtifactSelectors() external view returns (StdInvariant.FuzzArtifactSelector[] memory targetedArtifactSelectors_); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct targetArtifactSelectorsCall {} ///Container type for the return parameters of the [`targetArtifactSelectors()`](targetArtifactSelectorsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct targetArtifactSelectorsReturn { + #[allow(missing_docs)] pub targetedArtifactSelectors_: alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -4806,12 +5597,12 @@ function targetArtifactSelectors() external view returns (FuzzArtifactSelector[] { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, ); #[cfg(test)] @@ -4852,7 +5643,7 @@ function targetArtifactSelectors() external view returns (FuzzArtifactSelector[] > as alloy_sol_types::SolType>::Token<'a>; type Return = targetArtifactSelectorsReturn; type ReturnTuple<'a> = ( - alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, ); type ReturnToken<'a> = , } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5010,18 +5807,24 @@ function targetArtifacts() external view returns (string[] memory targetedArtifa ```solidity function targetContracts() external view returns (address[] memory targetedContracts_); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct targetContractsCall {} ///Container type for the return parameters of the [`targetContracts()`](targetContractsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct targetContractsReturn { + #[allow(missing_docs)] pub targetedContracts_: alloy::sol_types::private::Vec< alloy::sol_types::private::Address, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5133,20 +5936,26 @@ function targetContracts() external view returns (address[] memory targetedContr }; /**Function with signature `targetInterfaces()` and selector `0x2ade3880`. ```solidity -function targetInterfaces() external view returns (FuzzInterface[] memory targetedInterfaces_); +function targetInterfaces() external view returns (StdInvariant.FuzzInterface[] memory targetedInterfaces_); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct targetInterfacesCall {} ///Container type for the return parameters of the [`targetInterfaces()`](targetInterfacesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct targetInterfacesReturn { + #[allow(missing_docs)] pub targetedInterfaces_: alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5185,12 +5994,12 @@ function targetInterfaces() external view returns (FuzzInterface[] memory target { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, ); #[cfg(test)] @@ -5230,7 +6039,9 @@ function targetInterfaces() external view returns (FuzzInterface[] memory target 'a, > as alloy_sol_types::SolType>::Token<'a>; type Return = targetInterfacesReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; @@ -5260,20 +6071,26 @@ function targetInterfaces() external view returns (FuzzInterface[] memory target }; /**Function with signature `targetSelectors()` and selector `0x916a17c6`. ```solidity -function targetSelectors() external view returns (FuzzSelector[] memory targetedSelectors_); +function targetSelectors() external view returns (StdInvariant.FuzzSelector[] memory targetedSelectors_); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct targetSelectorsCall {} ///Container type for the return parameters of the [`targetSelectors()`](targetSelectorsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct targetSelectorsReturn { + #[allow(missing_docs)] pub targetedSelectors_: alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5310,12 +6127,12 @@ function targetSelectors() external view returns (FuzzSelector[] memory targeted { #[doc(hidden)] type UnderlyingSolTuple<'a> = ( - alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Array, ); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Vec< - ::RustType, + ::RustType, >, ); #[cfg(test)] @@ -5355,7 +6172,9 @@ function targetSelectors() external view returns (FuzzSelector[] memory targeted 'a, > as alloy_sol_types::SolType>::Token<'a>; type Return = targetSelectorsReturn; - type ReturnTuple<'a> = (alloy::sol_types::sol_data::Array,); + type ReturnTuple<'a> = ( + alloy::sol_types::sol_data::Array, + ); type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; @@ -5387,18 +6206,24 @@ function targetSelectors() external view returns (FuzzSelector[] memory targeted ```solidity function targetSenders() external view returns (address[] memory targetedSenders_); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct targetSendersCall {} ///Container type for the return parameters of the [`targetSenders()`](targetSendersCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct targetSendersReturn { + #[allow(missing_docs)] pub targetedSenders_: alloy::sol_types::private::Vec< alloy::sol_types::private::Address, >, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -5506,19 +6331,33 @@ function targetSenders() external view returns (address[] memory targetedSenders }; ///Container for all the [`PermitSignature`](self) function calls. pub enum PermitSignatureCalls { + #[allow(missing_docs)] IS_TEST(IS_TESTCall), + #[allow(missing_docs)] NAME_HASH(NAME_HASHCall), + #[allow(missing_docs)] TYPE_HASH(TYPE_HASHCall), + #[allow(missing_docs)] excludeArtifacts(excludeArtifactsCall), + #[allow(missing_docs)] excludeContracts(excludeContractsCall), + #[allow(missing_docs)] excludeSelectors(excludeSelectorsCall), + #[allow(missing_docs)] excludeSenders(excludeSendersCall), + #[allow(missing_docs)] failed(failedCall), + #[allow(missing_docs)] targetArtifactSelectors(targetArtifactSelectorsCall), + #[allow(missing_docs)] targetArtifacts(targetArtifactsCall), + #[allow(missing_docs)] targetContracts(targetContractsCall), + #[allow(missing_docs)] targetInterfaces(targetInterfacesCall), + #[allow(missing_docs)] targetSelectors(targetSelectorsCall), + #[allow(missing_docs)] targetSenders(targetSendersCall), } #[automatically_derived] @@ -5603,7 +6442,7 @@ function targetSenders() external view returns (address[] memory targetedSenders Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -5804,7 +6643,7 @@ function targetSenders() external view returns (address[] memory targetedSenders ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -5959,27 +6798,49 @@ function targetSenders() external view returns (address[] memory targetedSenders } ///Container for all the [`PermitSignature`](self) events. pub enum PermitSignatureEvents { + #[allow(missing_docs)] log(log), + #[allow(missing_docs)] log_address(log_address), + #[allow(missing_docs)] log_array_0(log_array_0), + #[allow(missing_docs)] log_array_1(log_array_1), + #[allow(missing_docs)] log_array_2(log_array_2), + #[allow(missing_docs)] log_bytes(log_bytes), + #[allow(missing_docs)] log_bytes32(log_bytes32), + #[allow(missing_docs)] log_int(log_int), + #[allow(missing_docs)] log_named_address(log_named_address), + #[allow(missing_docs)] log_named_array_0(log_named_array_0), + #[allow(missing_docs)] log_named_array_1(log_named_array_1), + #[allow(missing_docs)] log_named_array_2(log_named_array_2), + #[allow(missing_docs)] log_named_bytes(log_named_bytes), + #[allow(missing_docs)] log_named_bytes32(log_named_bytes32), + #[allow(missing_docs)] log_named_decimal_int(log_named_decimal_int), + #[allow(missing_docs)] log_named_decimal_uint(log_named_decimal_uint), + #[allow(missing_docs)] log_named_int(log_named_int), + #[allow(missing_docs)] log_named_string(log_named_string), + #[allow(missing_docs)] log_named_uint(log_named_uint), + #[allow(missing_docs)] log_string(log_string), + #[allow(missing_docs)] log_uint(log_uint), + #[allow(missing_docs)] logs(logs), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/priorityfeelib.rs b/crates/bindings-uniswapx/src/priorityfeelib.rs index 07030ae..bb13654 100644 --- a/crates/bindings-uniswapx/src/priorityfeelib.rs +++ b/crates/bindings-uniswapx/src/priorityfeelib.rs @@ -9,29 +9,35 @@ interface PriorityFeeLib {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod PriorityFeeLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba058eeaf1cdc2400fa891f5668a5338558285dc5917c84d1f1c1a1cd017802c64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212200a7641feb258347841e9599caace1c550454d63b47de697d6a4a7122de2a0a6c64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xBA\x05\x8E\xEA\xF1\xCD\xC2@\x0F\xA8\x91\xF5f\x8AS8U\x82\x85\xDCY\x17\xC8M\x1F\x1C\x1A\x1C\xD0\x17\x80,dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \nvA\xFE\xB2X4xA\xE9Y\x9C\xAA\xCE\x1CU\x04T\xD6;G\xDEi}jJq\"\xDE*\nldsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba058eeaf1cdc2400fa891f5668a5338558285dc5917c84d1f1c1a1cd017802c64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212200a7641feb258347841e9599caace1c550454d63b47de697d6a4a7122de2a0a6c64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xBA\x05\x8E\xEA\xF1\xCD\xC2@\x0F\xA8\x91\xF5f\x8AS8U\x82\x85\xDCY\x17\xC8M\x1F\x1C\x1A\x1C\xD0\x17\x80,dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \nvA\xFE\xB2X4xA\xE9Y\x9C\xAA\xCE\x1CU\x04T\xD6;G\xDEi}jJq\"\xDE*\nldsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`PriorityFeeLib`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/priorityorderlib.rs b/crates/bindings-uniswapx/src/priorityorderlib.rs index 4370227..5187633 100644 --- a/crates/bindings-uniswapx/src/priorityorderlib.rs +++ b/crates/bindings-uniswapx/src/priorityorderlib.rs @@ -9,29 +9,35 @@ interface PriorityOrderLib {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod PriorityOrderLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220125b2cb2f9ea5ad3c0b36c17a41ebde6e465a2ee66763efba5e2f2cc9ec46b8364736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220ab8ec8383f7ab13f7188f1738d217ecdeeb784b97fd4cacaea72c5161b5b4b3e64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x12[,\xB2\xF9\xEAZ\xD3\xC0\xB3l\x17\xA4\x1E\xBD\xE6\xE4e\xA2\xEEfv>\xFB\xA5\xE2\xF2\xCC\x9E\xC4k\x83dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xAB\x8E\xC88?z\xB1?q\x88\xF1s\x8D!~\xCD\xEE\xB7\x84\xB9\x7F\xD4\xCA\xCA\xEAr\xC5\x16\x1B[K>dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220125b2cb2f9ea5ad3c0b36c17a41ebde6e465a2ee66763efba5e2f2cc9ec46b8364736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220ab8ec8383f7ab13f7188f1738d217ecdeeb784b97fd4cacaea72c5161b5b4b3e64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x12[,\xB2\xF9\xEAZ\xD3\xC0\xB3l\x17\xA4\x1E\xBD\xE6\xE4e\xA2\xEEfv>\xFB\xA5\xE2\xF2\xCC\x9E\xC4k\x83dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xAB\x8E\xC88?z\xB1?q\x88\xF1s\x8D!~\xCD\xEE\xB7\x84\xB9\x7F\xD4\xCA\xCA\xEAr\xC5\x16\x1B[K>dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`PriorityOrderLib`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/priorityorderreactor.rs b/crates/bindings-uniswapx/src/priorityorderreactor.rs index d661010..4e62483 100644 --- a/crates/bindings-uniswapx/src/priorityorderreactor.rs +++ b/crates/bindings-uniswapx/src/priorityorderreactor.rs @@ -398,40 +398,53 @@ interface PriorityOrderReactor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod PriorityOrderReactor { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a06040523480156200001157600080fd5b5060405162003470380380620034708339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b608051613350620001206000396000818160e001528181610d6101526119eb01526133506000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004612440565b6101eb565b005b6100b96100c93660046124ee565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004612530565b6104c5565b34801561014a57600080fd5b506100b96101593660046125c9565b610683565b6100b961016c3660046125ed565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125c9565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612659565b60200260200101819052506102d981610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906103199084908790879060040161285c565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bb1565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff8111156103885761038861262a565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612659565b90506020028101906104789190612922565b6109f6565b82828151811061048f5761048f612659565b6020908102919091010152600101610449565b506104ac81610b60565b6104b581610bb1565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e961262a565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612659565b8282815181106105d9576105d9612659565b60209081029190910101526001016105aa565b506105f681610b60565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da628906106369084908890889060040161285c565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bb1565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612659565b602002602001018190525061087d81610b60565b61088681610bb1565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612960565b810190610a7c9190612d2c565b80516020810151604090910151919250610a9591610d04565b6000610aa082610e17565b9050610aac8183611065565b6000610abb83606001516111c7565b90506040518060a0016040528084600001518152602001610ae983866080015161121c90919063ffffffff16565b8152602001610b05838660a0015161131b90919063ffffffff16565b8152602001868060200190610b1a9190612960565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060200192909252509392505050565b805160005b8181101561035f576000838281518110610b8157610b81612659565b60200260200101519050610b9481611400565b610b9e81336118f0565b610ba881336119e9565b50600101610b65565b805160005b81811015610cf3576000838281518110610bd257610bd2612659565b602002602001015190506000816040015151905060005b81811015610c5357600083604001518281518110610c0957610c09612659565b60200260200101519050610c4a81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d239092919063ffffffff16565b50600101610be9565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c9c57610c9c612659565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610ce191815260200190565b60405180910390a45050600101610bb6565b5047156104c1576104c13347611d6a565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b916000917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dce9190612e2d565b9050818118808316600003610e0f576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b82015260009060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061323360208301396040518060800160405280604881526020016131bd604891396040518060800160405280605b81526020016132c0605b9139604051602001610fb19493929190612e46565b60405160208183030381529060405280519060200120610fd48360000151611e04565b836020015184604001518560600151610ff08760800151611e9e565b610ffd8860a00151611f05565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110a4576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff16158015906110d157508043105b80156110e1575060c08201515181115b1561110b576020820151611103906110f98486611fa3565b8460e0015161201a565b5060c0810151515b80431015611145576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561035f5760005b8260a001515181101561067d5760008360a00151828151811061117b5761117b612659565b60200260200101516040015111156111bf576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101611156565b6000483a1015611203576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a0381811115611213570390565b5060005b919050565b6112566040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60008360400151836112689190612ecc565b90506298968081106112b6576040518060600160405280856000015173ffffffffffffffffffffffffffffffffffffffff168152602001600081526020018560200151815250915050611315565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156113005760208601516112fb906298968085810390612142565b611306565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156113395761133961262a565b6040519080825280602002602001820160405280156113a257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113575790505b50915060005b818110156113f8576113d38582815181106113c5576113c5612659565b60200260200101518561217e565b8382815181106113e5576113e5612659565b60209081029190910101526001016113a8565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166114205750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611477908590600401612ee3565b600060405180830381865afa158015611494573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114da9190810190612ef6565b60408301515181519192509060006114f28284612fc6565b67ffffffffffffffff81111561150a5761150a61262a565b60405190808252806020026020018201604052801561157357816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115285790505b50905060005b838110156115c4578560400151818151811061159757611597612659565b60200260200101518282815181106115b1576115b1612659565b6020908102919091010152600101611579565b5060008060005b848110156118df5760008782815181106115e7576115e7612659565b6020026020010151905060005b828110156116a55788818151811061160e5761160e612659565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff160361169d5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016115f4565b506000805b888110156117665760008b6040015182815181106116ca576116ca612659565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361175d578515611747576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117569084612fc6565b9250600196505b506001016116aa565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117df5784156117c6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117d89082612fc6565b9050600193505b806000036118345781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611842816005612710612142565b826020015111156118b5578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106118ca576118ca612659565b602090810291909101015250506001016115cb565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611941576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119bd9084908690600401612fd9565b60006040518083038186803b1580156119d557600080fd5b505afa158015610e0f573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611aa9846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff86168252808701518101519082015285600001516020015186608001516040518060c00160405280608d8152602001613233608d91396040518060800160405280604881526020016131bd60489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916132c09060d401396040518060600160405280602e8152602001613205602e9139604051602001611c88959493929190613008565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cf596959493926004016130a3565b600060405180830381600087803b158015611d0f57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d485761035f8282611d6a565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612232565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001613233608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161104898939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040518060800160405280604881526020016131bd6048913980516020918201208351848301516040808701519051611048950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b600080825160200267ffffffffffffffff811115611f2557611f2561262a565b6040519080825280601f01601f191660200182016040528015611f4f576020820181803683370190505b50905060005b8351811015611f94576000611f82858381518110611f7557611f75612659565b6020026020010151612324565b60208381028501015250600101611f55565b50805160209091012092915050565b600081468460c00151604051602001611fbf9151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ffc93929160200161316b565b60405160208183030381529060405280519060200120905092915050565b600080828060200190518101906120319190613198565b9150915060008360408151811061204a5761204a612659565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156120a7573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612102575073ffffffffffffffffffffffffffffffffffffffff8116155b15612139576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261217757600080fd5b5091020490565b604080516060810182526000808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff16815290840151602082019015612201576121fc8560400151856121e09190612ecc565b6121ed9062989680612fc6565b6020870151906298968061239b565b612207565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061231d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b60006040518060800160405280605b81526020016132c0605b9139805160209182012083518483015160408087015160608801519151611048969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123d057600080fd5b50910281810615159190040190565b6000604082840312156123f157600080fd5b50919050565b60008083601f84011261240957600080fd5b50813567ffffffffffffffff81111561242157600080fd5b60208301915083602082850101111561243957600080fd5b9250929050565b60008060006040848603121561245557600080fd5b833567ffffffffffffffff8082111561246d57600080fd5b612479878388016123df565b9450602086013591508082111561248f57600080fd5b5061249c868287016123f7565b9497909650939450505050565b60008083601f8401126124bb57600080fd5b50813567ffffffffffffffff8111156124d357600080fd5b6020830191508360208260051b850101111561243957600080fd5b6000806020838503121561250157600080fd5b823567ffffffffffffffff81111561251857600080fd5b612524858286016124a9565b90969095509350505050565b6000806000806040858703121561254657600080fd5b843567ffffffffffffffff8082111561255e57600080fd5b61256a888389016124a9565b9096509450602087013591508082111561258357600080fd5b50612590878288016123f7565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356112178161259c565b6000602082840312156125db57600080fd5b81356125e68161259c565b9392505050565b6000602082840312156125ff57600080fd5b813567ffffffffffffffff81111561261657600080fd5b612622848285016123df565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126a357818101518382015260200161268b565b50506000910152565b600081518084526126c4816020860160208601612688565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612756578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a015260409182015116908801526060909601959082019060010161270b565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d56101a08501826126ac565b905060208301516128136020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282b82826126f6565b915050606083015184820360a086015261284582826126ac565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128bf868351612761565b95509382019390820190600101612885565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261295657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261299557600080fd5b83018035915067ffffffffffffffff8211156129b057600080fd5b60200191503681900382131561243957600080fd5b6040516060810167ffffffffffffffff811182821017156129e8576129e861262a565b60405290565b6040516080810167ffffffffffffffff811182821017156129e8576129e861262a565b604051610100810167ffffffffffffffff811182821017156129e8576129e861262a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a7c57612a7c61262a565b604052919050565b600082601f830112612a9557600080fd5b813567ffffffffffffffff811115612aaf57612aaf61262a565b612ae060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a35565b818152846020838601011115612af557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2457600080fd5b60405160c0810167ffffffffffffffff8282108183111715612b4857612b4861262a565b8160405282935084359150612b5c8261259c565b908252602084013590612b6e8261259c565b816020840152604085013560408401526060850135606084015260808501359150612b988261259c565b81608084015260a0850135915080821115612bb257600080fd5b50612bbf85828601612a84565b60a0830152505092915050565b600060608284031215612bde57600080fd5b612be66129c5565b90508135612bf38161259c565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c2b57612c2b61262a565b5060051b60200190565b600082601f830112612c4657600080fd5b81356020612c5b612c5683612c11565b612a35565b82815260079290921b84018101918181019086841115612c7a57600080fd5b8286015b84811015612cdf5760808189031215612c975760008081fd5b612c9f6129ee565b8135612caa8161259c565b8152818501358582015260408083013590820152606080830135612ccd8161259c565b90820152835291830191608001612c7e565b509695505050505050565b600060208284031215612cfc57600080fd5b6040516020810181811067ffffffffffffffff82111715612d1f57612d1f61262a565b6040529135825250919050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff80821115612d5657600080fd5b908301906101408286031215612d6b57600080fd5b612d73612a11565b823582811115612d8257600080fd5b612d8e87828601612b12565b825250612d9d602084016125be565b60208201526040830135604082015260608301356060820152612dc38660808501612bcc565b608082015260e083013582811115612dda57600080fd5b612de687828601612c35565b60a083015250612dfa866101008501612cea565b60c082015261012083013582811115612e1257600080fd5b612e1e87828601612a84565b60e08301525095945050505050565b600060208284031215612e3f57600080fd5b5051919050565b60008551612e58818460208a01612688565b855190830190612e6c818360208a01612688565b8551910190612e7f818360208901612688565b8451910190612e92818360208801612688565b019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761131557611315612e9d565b6020815260006125e66020830184612761565b60006020808385031215612f0957600080fd5b825167ffffffffffffffff811115612f2057600080fd5b8301601f81018513612f3157600080fd5b8051612f3f612c5682612c11565b81815260609182028301840191848201919088841115612f5e57600080fd5b938501935b83851015612fba5780858a031215612f7b5760008081fd5b612f836129c5565b8551612f8e8161259c565b81528587015187820152604080870151612fa78161259c565b9082015283529384019391850191612f63565b50979650505050505050565b8082018082111561131557611315612e9d565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006126226040830184612761565b7f5072696f726974794f72646572207769746e657373290000000000000000000081526000601687516130418183860160208c01612688565b8751908401906130578184840160208c01612688565b875191019061306c8184840160208b01612688565b86519101906130818184840160208a01612688565b85519101906130968184840160208901612688565b0101979650505050505050565b60006101406130d3838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131146080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e084015280610100840152613149818401866126ac565b905082810361012084015261315e81856126ac565b9998505050505050505050565b83815282602082015260008251613189816040850160208701612688565b91909101604001949350505050565b600080604083850312156131ab57600080fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220353e4a9c8af32ce67b5de33aaecb5fae198f4618ed76c7f0ec66d08df440265b64736f6c63430008180033 + ///0x60a060405234801562000010575f80fd5b5060405162003390380380620033908339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b608051613278620001185f395f818160da01528181610d2d015261198f01526132785ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af3660046123bd565b6101e0565b005b6100b46100c4366004612462565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46101333660046124a1565b6104af565b348015610143575f80fd5b506100b4610152366004612534565b610665565b6100b4610165366004612556565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db366004612534565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b76125bd565b60200260200101819052506102cb81610b37565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b908490879087906004016127b8565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b86565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff81111561037457610374612590565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c57610467858583818110610450576104506125bd565b9050602002810190610462919061287b565b6109d2565b828281518110610479576104796125bd565b6020908102919091010152600101610433565b5061049681610b37565b61049f81610b86565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d2612590565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae878783818110610450576104506125bd565b8282815181106105c0576105c06125bd565b6020908102919091010152600101610591565b506105dd81610b37565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d908490889088906004016127b8565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b86565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f81518110610847576108476125bd565b602002602001018190525061085b81610b37565b61086481610b86565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a83806128b7565b810190610a579190612c6e565b80516020810151604090910151919250610a7091610cd1565b5f610a7a82610de0565b9050610a86818361102c565b5f610a94836060015161118c565b90506040518060a00160405280845f01518152602001610ac18386608001516111df90919063ffffffff16565b8152602001610add838660a001516112d890919063ffffffff16565b8152602001868060200190610af291906128b7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200192909252509392505050565b80515f5b8181101561034c575f838281518110610b5657610b566125bd565b60200260200101519050610b69816113bb565b610b738133611898565b610b7d813361198d565b50600101610b3b565b80515f5b81811015610cc0575f838281518110610ba557610ba56125bd565b602002602001015190505f81604001515190505f5b81811015610c22575f83604001518281518110610bd957610bd96125bd565b60200260200101519050610c1981604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611cbf9092919063ffffffff16565b50600101610bba565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c6a57610c6a6125bd565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610cae91815260200190565b60405180910390a45050600101610b8a565b5047156104ab576104ab3347611d06565b6040517f4fe02b4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152600883901c6024830181905291600160ff85161b915f917f000000000000000000000000000000000000000000000000000000000000000090911690634fe02b4490604401602060405180830381865afa158015610d74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d989190612d68565b90508181188083165f03610dd8576040517fee3b3d4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6040517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b8201525f9060b401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061315b60208301396040518060800160405280604881526020016130e5604891396040518060800160405280605b81526020016131e8605b9139604051602001610f799493929190612d7f565b60405160208183030381529060405280519060200120610f9b835f0151611d9c565b836020015184604001518560600151610fb78760800151611e35565b610fc48860a00151611e9b565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff9093166060860152608085019190915260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b80516060015142111561106b576040517f769d11e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040810151602082015173ffffffffffffffffffffffffffffffffffffffff161580159061109857508043105b80156110a8575060c08201515181115b156110d25760208201516110ca906110c08486611f36565b8460e00151611fac565b5060c0810151515b8043101561110c576040517fc603552000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820151604001511561034c575f5b8260a001515181101561065f575f8360a001518281518110611140576111406125bd565b6020026020010151604001511115611184576040517fa6b844f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60010161111c565b5f483a10156111c7576040517ff3eb44e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50483a03818111156111d7570390565b505f5b919050565b61121660405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f8360400151836112279190612e02565b9050629896808110611273576040518060600160405280855f015173ffffffffffffffffffffffffffffffffffffffff1681526020015f815260200185602001518152509150506112d2565b6040805160608101909152845173ffffffffffffffffffffffffffffffffffffffff1681526020810182156112bd5760208601516112b89062989680858103906120cf565b6112c3565b85602001515b81526020868101519101529150505b92915050565b81516060908067ffffffffffffffff8111156112f6576112f6612590565b60405190808252806020026020018201604052801561135e57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113145790505b5091505f5b818110156113b35761138e858281518110611380576113806125bd565b602002602001015185612109565b8382815181106113a0576113a06125bd565b6020908102919091010152600101611363565b505092915050565b60015473ffffffffffffffffffffffffffffffffffffffff166113db5750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611431908590600401612e19565b5f60405180830381865afa15801561144b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114909190810190612e2b565b6040830151518151919250905f6114a78284612ef4565b67ffffffffffffffff8111156114bf576114bf612590565b60405190808252806020026020018201604052801561152757816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114dd5790505b5090505f5b83811015611577578560400151818151811061154a5761154a6125bd565b6020026020010151828281518110611564576115646125bd565b602090810291909101015260010161152c565b505f805f5b84811015611887575f878281518110611597576115976125bd565b602002602001015190505f5b82811015611652578881815181106115bd576115bd6125bd565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff160361164a5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6001016115a3565b505f805b8881101561170f575f8b604001518281518110611675576116756125bd565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff16036117065785156116f0576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516116ff9084612ef4565b9250600196505b50600101611656565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361178857841561176f576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117819082612ef4565b9050600193505b805f036117dc5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6117ea8160056127106120cf565b8260200151111561185d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a0181518110611872576118726125bd565b6020908102919091010152505060010161157c565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146118e9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119659084908690600401612f07565b5f6040518083038186803b15801561197b575f80fd5b505afa158015610dd8573d5f803e3d5ffd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611a4c846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff861682528087015181015190820152855f01516020015186608001516040518060c00160405280608d815260200161315b608d91396040518060800160405280604881526020016130e560489139604080517f5072696f726974794f726465722800000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602e8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603d8201527f75696e743235362061756374696f6e5374617274426c6f636b2c000000000000604e8201527f75696e7432353620626173656c696e655072696f726974794665655765692c0060688201527f5072696f72697479496e70757420696e7075742c00000000000000000000000060878201527f5072696f726974794f75747075745b5d206f7574707574732900000000000000609b820152815160948183030181526101348201909252605b60b48201818152916131e89060d401396040518060600160405280602e815260200161312d602e9139604051602001611c29959493929190612f35565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611c969695949392600401612fcf565b5f604051808303815f87803b158015611cad575f80fd5b505af1158015610dd8573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611ce45761034c8282611d06565b61034c73ffffffffffffffffffffffffffffffffffffffff84163384846121bc565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611d5c576040519150601f19603f3d011682016040523d82523d5f602084013e611d61565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060c00160405280608d815260200161315b608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161100f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f6040518060800160405280604881526020016130e5604891398051602091820120835184830151604080870151905161100f950193845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b5f80825160200267ffffffffffffffff811115611eba57611eba612590565b6040519080825280601f01601f191660200182016040528015611ee4576020820181803683370190505b5090505f5b8351811015611f27575f611f15858381518110611f0857611f086125bd565b60200260200101516122aa565b60208381028501015250600101611ee9565b50805160209091012092915050565b5f81468460c00151604051602001611f519151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611f8e939291602001613096565b60405160208183030381529060405280519060200120905092915050565b5f8082806020019051810190611fc291906130c2565b915091505f83604081518110611fda57611fda6125bd565b01602090810151604080515f80825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa158015612034573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158061208f575073ffffffffffffffffffffffffffffffffffffffff8116155b156120c6576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612102575f80fd5b5091020490565b604080516060810182525f808252602082018190529181019190915260408051606081018252845173ffffffffffffffffffffffffffffffffffffffff1681529084015160208201901561218b5761218685604001518561216a9190612e02565b6121779062989680612ef4565b60208701519062989680612320565b612191565b84602001515b8152602001846060015173ffffffffffffffffffffffffffffffffffffffff16815250905092915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5050505050565b5f6040518060800160405280605b81526020016131e8605b913980516020918201208351848301516040808701516060880151915161100f969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612353575f80fd5b50910281810615159190040190565b5f60408284031215612372575f80fd5b50919050565b5f8083601f840112612388575f80fd5b50813567ffffffffffffffff81111561239f575f80fd5b6020830191508360208285010111156123b6575f80fd5b9250929050565b5f805f604084860312156123cf575f80fd5b833567ffffffffffffffff808211156123e6575f80fd5b6123f287838801612362565b94506020860135915080821115612407575f80fd5b5061241486828701612378565b9497909650939450505050565b5f8083601f840112612431575f80fd5b50813567ffffffffffffffff811115612448575f80fd5b6020830191508360208260051b85010111156123b6575f80fd5b5f8060208385031215612473575f80fd5b823567ffffffffffffffff811115612489575f80fd5b61249585828601612421565b90969095509350505050565b5f805f80604085870312156124b4575f80fd5b843567ffffffffffffffff808211156124cb575f80fd5b6124d788838901612421565b909650945060208701359150808211156124ef575f80fd5b506124fc87828801612378565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b80356111da81612508565b5f60208284031215612544575f80fd5b813561254f81612508565b9392505050565b5f60208284031215612566575f80fd5b813567ffffffffffffffff81111561257c575f80fd5b61258884828501612362565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156126045781810151838201526020016125ec565b50505f910152565b5f81518084526126238160208601602086016125ea565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b838110156126b3578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612668565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127316101a085018261260c565b9050602083015161276f6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526127878282612655565b915050606083015184820360a08601526127a1828261260c565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b8381101561282b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128198683516126be565b955093820193908201906001016127df565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126128ad575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128ea575f80fd5b83018035915067ffffffffffffffff821115612904575f80fd5b6020019150368190038213156123b6575f80fd5b6040516060810167ffffffffffffffff8111828210171561293b5761293b612590565b60405290565b6040516080810167ffffffffffffffff8111828210171561293b5761293b612590565b604051610100810167ffffffffffffffff8111828210171561293b5761293b612590565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129cf576129cf612590565b604052919050565b5f82601f8301126129e6575f80fd5b813567ffffffffffffffff811115612a0057612a00612590565b612a3160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612988565b818152846020838601011115612a45575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215612a71575f80fd5b60405160c0810167ffffffffffffffff8282108183111715612a9557612a95612590565b8160405282935084359150612aa982612508565b908252602084013590612abb82612508565b816020840152604085013560408401526060850135606084015260808501359150612ae582612508565b81608084015260a0850135915080821115612afe575f80fd5b50612b0b858286016129d7565b60a0830152505092915050565b5f60608284031215612b28575f80fd5b612b30612918565b90508135612b3d81612508565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612b7457612b74612590565b5060051b60200190565b5f82601f830112612b8d575f80fd5b81356020612ba2612b9d83612b5b565b612988565b82815260079290921b84018101918181019086841115612bc0575f80fd5b8286015b84811015612c235760808189031215612bdb575f80fd5b612be3612941565b8135612bee81612508565b8152818501358582015260408083013590820152606080830135612c1181612508565b90820152835291830191608001612bc4565b509695505050505050565b5f60208284031215612c3e575f80fd5b6040516020810181811067ffffffffffffffff82111715612c6157612c61612590565b6040529135825250919050565b5f60208284031215612c7e575f80fd5b813567ffffffffffffffff80821115612c95575f80fd5b908301906101408286031215612ca9575f80fd5b612cb1612964565b823582811115612cbf575f80fd5b612ccb87828601612a61565b825250612cda60208401612529565b60208201526040830135604082015260608301356060820152612d008660808501612b18565b608082015260e083013582811115612d16575f80fd5b612d2287828601612b7e565b60a083015250612d36866101008501612c2e565b60c082015261012083013582811115612d4d575f80fd5b612d59878286016129d7565b60e08301525095945050505050565b5f60208284031215612d78575f80fd5b5051919050565b5f8551612d90818460208a016125ea565b855190830190612da4818360208a016125ea565b8551910190612db78183602089016125ea565b8451910190612dca8183602088016125ea565b019695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176112d2576112d2612dd5565b602081525f61254f60208301846126be565b5f6020808385031215612e3c575f80fd5b825167ffffffffffffffff811115612e52575f80fd5b8301601f81018513612e62575f80fd5b8051612e70612b9d82612b5b565b81815260609182028301840191848201919088841115612e8e575f80fd5b938501935b83851015612ee85780858a031215612ea9575f80fd5b612eb1612918565b8551612ebc81612508565b81528587015187820152604080870151612ed581612508565b9082015283529384019391850191612e93565b50979650505050505050565b808201808211156112d2576112d2612dd5565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f61258860408301846126be565b7f5072696f726974794f72646572207769746e657373290000000000000000000081525f60168751612f6d8183860160208c016125ea565b875190840190612f838184840160208c016125ea565b8751910190612f988184840160208b016125ea565b8651910190612fad8184840160208a016125ea565b8551910190612fc281848401602089016125ea565b0101979650505050505050565b5f610140612ffe838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261303f6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526130748184018661260c565b9050828103610120840152613089818561260c565b9998505050505050505050565b8381528260208201525f82516130b38160408501602087016125ea565b91909101604001949350505050565b5f80604083850312156130d3575f80fd5b50508051602090910151909290915056fe5072696f72697479496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f7269747946656557656929546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e44617461295072696f726974794f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c75696e74323536206d70735065725072696f726974794665655765692c6164647265737320726563697069656e7429a2646970667358221220d3e31f920a5d8c4218b042df25184b48b18b01bb6564f8902884558a765be30664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x004p8\x03\x80b\x004p\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa3Pb\0\x01 `\09`\0\x81\x81`\xE0\x01R\x81\x81a\ra\x01Ra\x19\xEB\x01Ra3P`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$@V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\xEEV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%0V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a%\xC9V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\xEDV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a%\xC9V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&YV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB1V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\"V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0B`V[a\x04\xB5\x81a\x0B\xB1V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB1V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&YV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0B`V[a\x08\x86\x81a\x0B\xB1V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a)`V[\x81\x01\x90a\n|\x91\x90a-,V[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\n\x95\x91a\r\x04V[`\0a\n\xA0\x82a\x0E\x17V[\x90Pa\n\xAC\x81\x83a\x10eV[`\0a\n\xBB\x83``\x01Qa\x11\xC7V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\n\xE9\x83\x86`\x80\x01Qa\x12\x1C\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\x0B\x05\x83\x86`\xA0\x01Qa\x13\x1B\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x1A\x91\x90a)`V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x81Wa\x0B\x81a&YV[` \x02` \x01\x01Q\x90Pa\x0B\x94\x81a\x14\0V[a\x0B\x9E\x813a\x18\xF0V[a\x0B\xA8\x813a\x19\xE9V[P`\x01\x01a\x0BeV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF3W`\0\x83\x82\x81Q\x81\x10a\x0B\xD2Wa\x0B\xD2a&YV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CSW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\tWa\x0C\ta&YV[` \x02` \x01\x01Q\x90Pa\x0CJ\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D#\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xE9V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9CWa\x0C\x9Ca&YV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE1\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB6V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1DjV[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xCE\x91\x90a.-V[\x90P\x81\x81\x18\x80\x83\x16`\0\x03a\x0E\x0FW`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R`\0\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a23` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919`@Q` \x01a\x0F\xB1\x94\x93\x92\x91\x90a.FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\xD4\x83`\0\x01Qa\x1E\x04V[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xF0\x87`\x80\x01Qa\x1E\x9EV[a\x0F\xFD\x88`\xA0\x01Qa\x1F\x05V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xA4W`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\xD1WP\x80C\x10[\x80\x15a\x10\xE1WP`\xC0\x82\x01QQ\x81\x11[\x15a\x11\x0BW` \x82\x01Qa\x11\x03\x90a\x10\xF9\x84\x86a\x1F\xA3V[\x84`\xE0\x01Qa \x1AV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11EW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03_W`\0[\x82`\xA0\x01QQ\x81\x10\x15a\x06}W`\0\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11{Wa\x11{a&YV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\xBFW`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11VV[`\0H:\x10\x15a\x12\x03W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x12\x13W\x03\x90V[P`\0[\x91\x90PV[a\x12V`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0\x83`@\x01Q\x83a\x12h\x91\x90a.\xCCV[\x90Pb\x98\x96\x80\x81\x10a\x12\xB6W`@Q\x80``\x01`@R\x80\x85`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x13\x15V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x13\0W` \x86\x01Qa\x12\xFB\x90b\x98\x96\x80\x85\x81\x03\x90a!BV[a\x13\x06V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x139Wa\x139a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xA2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13WW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x13\xF8Wa\x13\xD3\x85\x82\x81Q\x81\x10a\x13\xC5Wa\x13\xC5a&YV[` \x02` \x01\x01Q\x85a!~V[\x83\x82\x81Q\x81\x10a\x13\xE5Wa\x13\xE5a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xA8V[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14 WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14w\x90\x85\x90`\x04\x01a.\xE3V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xDA\x91\x90\x81\x01\x90a.\xF6V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x14\xF2\x82\x84a/\xC6V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\nWa\x15\na&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15sW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15(W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\xC4W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\x97Wa\x15\x97a&YV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xB1Wa\x15\xB1a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15yV[P`\0\x80`\0[\x84\x81\x10\x15a\x18\xDFW`\0\x87\x82\x81Q\x81\x10a\x15\xE7Wa\x15\xE7a&YV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x16\xA5W\x88\x81\x81Q\x81\x10a\x16\x0EWa\x16\x0Ea&YV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\x9DW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x15\xF4V[P`\0\x80[\x88\x81\x10\x15a\x17fW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xCAWa\x16\xCAa&YV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17]W\x85\x15a\x17GW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17V\x90\x84a/\xC6V[\x92P`\x01\x96P[P`\x01\x01a\x16\xAAV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xDFW\x84\x15a\x17\xC6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xD8\x90\x82a/\xC6V[\x90P`\x01\x93P[\x80`\0\x03a\x184W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18B\x81`\x05a'\x10a!BV[\x82` \x01Q\x11\x15a\x18\xB5W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xCAWa\x18\xCAa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xCBV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19AW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xBD\x90\x84\x90\x86\x90`\x04\x01a/\xD9V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xD5W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xA9\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a2\xC0\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\x05`.\x919`@Q` \x01a\x1C\x88\x95\x94\x93\x92\x91\x90a0\x08V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xF5\x96\x95\x94\x93\x92`\x04\x01a0\xA3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\x0FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1DHWa\x03_\x82\x82a\x1DjV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\"2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xC4W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1D\xC9V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10H\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10H\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1F%Wa\x1F%a&*V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1FOW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F\x94W`\0a\x1F\x82\x85\x83\x81Q\x81\x10a\x1FuWa\x1Fua&YV[` \x02` \x01\x01Qa#$V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1FUV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xC0\x01Q`@Q` \x01a\x1F\xBF\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\xFC\x93\x92\x91` \x01a1kV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a 1\x91\x90a1\x98V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a JWa Ja&YV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a \xA7W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a!\x02WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a!9W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!wW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a\"\x01Wa!\xFC\x85`@\x01Q\x85a!\xE0\x91\x90a.\xCCV[a!\xED\x90b\x98\x96\x80a/\xC6V[` \x87\x01Q\x90b\x98\x96\x80a#\x9BV[a\"\x07V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a#\x1DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10H\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xD0W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0`@\x82\x84\x03\x12\x15a#\xF1W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\tW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$!W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$UW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$mW`\0\x80\xFD[a$y\x87\x83\x88\x01a#\xDFV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x8FW`\0\x80\xFD[Pa$\x9C\x86\x82\x87\x01a#\xF7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a$\xBBW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xD3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\x01W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x18W`\0\x80\xFD[a%$\x85\x82\x86\x01a$\xA9V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%FW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%^W`\0\x80\xFD[a%j\x88\x83\x89\x01a$\xA9V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x83W`\0\x80\xFD[Pa%\x90\x87\x82\x88\x01a#\xF7V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a\x12\x17\x81a%\x9CV[`\0` \x82\x84\x03\x12\x15a%\xDBW`\0\x80\xFD[\x815a%\xE6\x81a%\x9CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\xFFW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\x16W`\0\x80\xFD[a&\"\x84\x82\x85\x01a#\xDFV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra&\xC4\x81` \x86\x01` \x86\x01a&\x88V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'VW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x0BV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD5a\x01\xA0\x85\x01\x82a&\xACV[\x90P` \x83\x01Qa(\x13` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(+\x82\x82a&\xF6V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(E\x82\x82a&\xACV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a(\xD1W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xBF\x86\x83Qa'aV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(\x85V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)VW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x95W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xB0W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$9W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*|Wa*|a&*V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a*\x95W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xAFWa*\xAFa&*V[a*\xE0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xF5W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+$W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a+HWa+Ha&*V[\x81`@R\x82\x93P\x845\x91Pa+\\\x82a%\x9CV[\x90\x82R` \x84\x015\x90a+n\x82a%\x9CV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa+\x98\x82a%\x9CV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a+\xB2W`\0\x80\xFD[Pa+\xBF\x85\x82\x86\x01a*\x84V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a+\xDEW`\0\x80\xFD[a+\xE6a)\xC5V[\x90P\x815a+\xF3\x81a%\x9CV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,+Wa,+a&*V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,FW`\0\x80\xFD[\x815` a,[a,V\x83a,\x11V[a*5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,zW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xDFW`\x80\x81\x89\x03\x12\x15a,\x97W`\0\x80\x81\xFD[a,\x9Fa)\xEEV[\x815a,\xAA\x81a%\x9CV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\xCD\x81a%\x9CV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,~V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\xFCW`\0\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a-\x1FWa-\x1Fa&*V[`@R\x915\x82RP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a->W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-VW`\0\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a-kW`\0\x80\xFD[a-sa*\x11V[\x825\x82\x81\x11\x15a-\x82W`\0\x80\xFD[a-\x8E\x87\x82\x86\x01a+\x12V[\x82RPa-\x9D` \x84\x01a%\xBEV[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\xC3\x86`\x80\x85\x01a+\xCCV[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\xDAW`\0\x80\xFD[a-\xE6\x87\x82\x86\x01a,5V[`\xA0\x83\x01RPa-\xFA\x86a\x01\0\x85\x01a,\xEAV[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a.\x12W`\0\x80\xFD[a.\x1E\x87\x82\x86\x01a*\x84V[`\xE0\x83\x01RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.?W`\0\x80\xFD[PQ\x91\x90PV[`\0\x85Qa.X\x81\x84` \x8A\x01a&\x88V[\x85Q\x90\x83\x01\x90a.l\x81\x83` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a.\x7F\x81\x83` \x89\x01a&\x88V[\x84Q\x91\x01\x90a.\x92\x81\x83` \x88\x01a&\x88V[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x13\x15Wa\x13\x15a.\x9DV[` \x81R`\0a%\xE6` \x83\x01\x84a'aV[`\0` \x80\x83\x85\x03\x12\x15a/\tW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/ W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/1W`\0\x80\xFD[\x80Qa/?a,V\x82a,\x11V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/^W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a/\xBAW\x80\x85\x8A\x03\x12\x15a/{W`\0\x80\x81\xFD[a/\x83a)\xC5V[\x85Qa/\x8E\x81a%\x9CV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa/\xA7\x81a%\x9CV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a/cV[P\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x13\x15Wa\x13\x15a.\x9DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a&\"`@\x83\x01\x84a'aV[\x7FPriorityOrder witness)\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x16\x87Qa0A\x81\x83\x86\x01` \x8C\x01a&\x88V[\x87Q\x90\x84\x01\x90a0W\x81\x84\x84\x01` \x8C\x01a&\x88V[\x87Q\x91\x01\x90a0l\x81\x84\x84\x01` \x8B\x01a&\x88V[\x86Q\x91\x01\x90a0\x81\x81\x84\x84\x01` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a0\x96\x81\x84\x84\x01` \x89\x01a&\x88V[\x01\x01\x97\x96PPPPPPPV[`\0a\x01@a0\xD3\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\x14`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1I\x81\x84\x01\x86a&\xACV[\x90P\x82\x81\x03a\x01 \x84\x01Ra1^\x81\x85a&\xACV[\x99\x98PPPPPPPPPV[\x83\x81R\x82` \x82\x01R`\0\x82Qa1\x89\x81`@\x85\x01` \x87\x01a&\x88V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a1\xABW`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV\xFEPriorityInput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)PriorityOutput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei,address recipient)\xA2dipfsX\"\x12 5>J\x9C\x8A\xF3,\xE6{]\xE3:\xAE\xCB_\xAE\x19\x8FF\x18\xEDv\xC7\xF0\xECf\xD0\x8D\xF4@&[dsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x003\x908\x03\x80b\x003\x90\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa2xb\0\x01\x18_9_\x81\x81`\xDA\x01R\x81\x81a\r-\x01Ra\x19\x8F\x01Ra2x_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a#\xBDV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a$bV[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a$\xA1V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%4V[a\x06eV[a\0\xB4a\x01e6`\x04a%VV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%4V[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a%\xBDV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x86V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a({V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B7V[a\x04\x9F\x81a\x0B\x86V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x86V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga%\xBDV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B7V[a\x08d\x81a\x0B\x86V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a(\xB7V[\x81\x01\x90a\nW\x91\x90a,nV[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\np\x91a\x0C\xD1V[_a\nz\x82a\r\xE0V[\x90Pa\n\x86\x81\x83a\x10,V[_a\n\x94\x83``\x01Qa\x11\x8CV[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\n\xC1\x83\x86`\x80\x01Qa\x11\xDF\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xDD\x83\x86`\xA0\x01Qa\x12\xD8\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\n\xF2\x91\x90a(\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BVWa\x0BVa%\xBDV[` \x02` \x01\x01Q\x90Pa\x0Bi\x81a\x13\xBBV[a\x0Bs\x813a\x18\x98V[a\x0B}\x813a\x19\x8DV[P`\x01\x01a\x0B;V[\x80Q_[\x81\x81\x10\x15a\x0C\xC0W_\x83\x82\x81Q\x81\x10a\x0B\xA5Wa\x0B\xA5a%\xBDV[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\"W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xD9Wa\x0B\xD9a%\xBDV[` \x02` \x01\x01Q\x90Pa\x0C\x19\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBAV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CjWa\x0Cja%\xBDV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xAE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8AV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1D\x06V[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91_\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\rtW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x98\x91\x90a-hV[\x90P\x81\x81\x18\x80\x83\x16_\x03a\r\xD8W`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R_\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a1[` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919`@Q` \x01a\x0Fy\x94\x93\x92\x91\x90a-\x7FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\x9B\x83_\x01Qa\x1D\x9CV[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xB7\x87`\x80\x01Qa\x1E5V[a\x0F\xC4\x88`\xA0\x01Qa\x1E\x9BV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10kW`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\x98WP\x80C\x10[\x80\x15a\x10\xA8WP`\xC0\x82\x01QQ\x81\x11[\x15a\x10\xD2W` \x82\x01Qa\x10\xCA\x90a\x10\xC0\x84\x86a\x1F6V[\x84`\xE0\x01Qa\x1F\xACV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11\x0CW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03LW_[\x82`\xA0\x01QQ\x81\x10\x15a\x06_W_\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11@Wa\x11@a%\xBDV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\x84W`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11\x1CV[_H:\x10\x15a\x11\xC7W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x11\xD7W\x03\x90V[P_[\x91\x90PV[a\x12\x16`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[_\x83`@\x01Q\x83a\x12'\x91\x90a.\x02V[\x90Pb\x98\x96\x80\x81\x10a\x12sW`@Q\x80``\x01`@R\x80\x85_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x12\xD2V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x12\xBDW` \x86\x01Qa\x12\xB8\x90b\x98\x96\x80\x85\x81\x03\x90a \xCFV[a\x12\xC3V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xF6Wa\x12\xF6a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x14W\x90P[P\x91P_[\x81\x81\x10\x15a\x13\xB3Wa\x13\x8E\x85\x82\x81Q\x81\x10a\x13\x80Wa\x13\x80a%\xBDV[` \x02` \x01\x01Q\x85a!\tV[\x83\x82\x81Q\x81\x10a\x13\xA0Wa\x13\xA0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13cV[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x13\xDBWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x141\x90\x85\x90`\x04\x01a.\x19V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14KW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\x90\x91\x90\x81\x01\x90a.+V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x14\xA7\x82\x84a.\xF4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\xBFWa\x14\xBFa%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x15wW\x85`@\x01Q\x81\x81Q\x81\x10a\x15JWa\x15Ja%\xBDV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15dWa\x15da%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15,V[P_\x80_[\x84\x81\x10\x15a\x18\x87W_\x87\x82\x81Q\x81\x10a\x15\x97Wa\x15\x97a%\xBDV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16RW\x88\x81\x81Q\x81\x10a\x15\xBDWa\x15\xBDa%\xBDV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x15\xA3V[P_\x80[\x88\x81\x10\x15a\x17\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16uWa\x16ua%\xBDV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x06W\x85\x15a\x16\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x16\xFF\x90\x84a.\xF4V[\x92P`\x01\x96P[P`\x01\x01a\x16VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\x88W\x84\x15a\x17oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\x81\x90\x82a.\xF4V[\x90P`\x01\x93P[\x80_\x03a\x17\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x17\xEA\x81`\x05a'\x10a \xCFV[\x82` \x01Q\x11\x15a\x18]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18rWa\x18ra%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x18\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19e\x90\x84\x90\x86\x90`\x04\x01a/\x07V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19{W_\x80\xFD[PZ\xFA\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1AL\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a1\xE8\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a1-`.\x919`@Q` \x01a\x1C)\x95\x94\x93\x92\x91\x90a/5V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\x96\x96\x95\x94\x93\x92`\x04\x01a/\xCFV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xADW_\x80\xFD[PZ\xF1\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1C\xE4Wa\x03L\x82\x82a\x1D\x06V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xBCV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\\W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1DaV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x0F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10\x0F\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBAWa\x1E\xBAa%\x90V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE4W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1F'W_a\x1F\x15\x85\x83\x81Q\x81\x10a\x1F\x08Wa\x1F\x08a%\xBDV[` \x02` \x01\x01Qa\"\xAAV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xE9V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xC0\x01Q`@Q` \x01a\x1FQ\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x8E\x93\x92\x91` \x01a0\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x1F\xC2\x91\x90a0\xC2V[\x91P\x91P_\x83`@\x81Q\x81\x10a\x1F\xDAWa\x1F\xDAa%\xBDV[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a 4W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a \x8FWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a \xC6W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\x02W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a!\x8BWa!\x86\x85`@\x01Q\x85a!j\x91\x90a.\x02V[a!w\x90b\x98\x96\x80a.\xF4V[` \x87\x01Q\x90b\x98\x96\x80a# V[a!\x91V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\"\xA3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10\x0F\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#SW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_`@\x82\x84\x03\x12\x15a#rW_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a#\x88W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\x9FW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a#\xCFW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE6W_\x80\xFD[a#\xF2\x87\x83\x88\x01a#bV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x07W_\x80\xFD[Pa$\x14\x86\x82\x87\x01a#xV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$1W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$HW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a$sW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x89W_\x80\xFD[a$\x95\x85\x82\x86\x01a$!V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a$\xB4W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\xCBW_\x80\xFD[a$\xD7\x88\x83\x89\x01a$!V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\xEFW_\x80\xFD[Pa$\xFC\x87\x82\x88\x01a#xV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a\x11\xDA\x81a%\x08V[_` \x82\x84\x03\x12\x15a%DW_\x80\xFD[\x815a%O\x81a%\x08V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a%fW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%|W_\x80\xFD[a%\x88\x84\x82\x85\x01a#bV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\x04W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xECV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&#\x81` \x86\x01` \x86\x01a%\xEAV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a&\xB3W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a&hV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'1a\x01\xA0\x85\x01\x82a&\x0CV[\x90P` \x83\x01Qa'o` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'\x87\x82\x82a&UV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'\xA1\x82\x82a&\x0CV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(+W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\x19\x86\x83Qa&\xBEV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\xDFV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(\xADW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xEAW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\x04W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#\xB6W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xCFWa)\xCFa%\x90V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\xE6W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\0Wa*\0a%\x90V[a*1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)\x88V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*EW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a*qW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\x95Wa*\x95a%\x90V[\x81`@R\x82\x93P\x845\x91Pa*\xA9\x82a%\x08V[\x90\x82R` \x84\x015\x90a*\xBB\x82a%\x08V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xE5\x82a%\x08V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xFEW_\x80\xFD[Pa+\x0B\x85\x82\x86\x01a)\xD7V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+(W_\x80\xFD[a+0a)\x18V[\x90P\x815a+=\x81a%\x08V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+tWa+ta%\x90V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a+\x8DW_\x80\xFD[\x815` a+\xA2a+\x9D\x83a+[V[a)\x88V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\xC0W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,#W`\x80\x81\x89\x03\x12\x15a+\xDBW_\x80\xFD[a+\xE3a)AV[\x815a+\xEE\x81a%\x08V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x11\x81a%\x08V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\xC4V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a,>W_\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a,aWa,aa%\x90V[`@R\x915\x82RP\x91\x90PV[_` \x82\x84\x03\x12\x15a,~W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,\x95W_\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a,\xA9W_\x80\xFD[a,\xB1a)dV[\x825\x82\x81\x11\x15a,\xBFW_\x80\xFD[a,\xCB\x87\x82\x86\x01a*aV[\x82RPa,\xDA` \x84\x01a%)V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\0\x86`\x80\x85\x01a+\x18V[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\x16W_\x80\xFD[a-\"\x87\x82\x86\x01a+~V[`\xA0\x83\x01RPa-6\x86a\x01\0\x85\x01a,.V[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a-MW_\x80\xFD[a-Y\x87\x82\x86\x01a)\xD7V[`\xE0\x83\x01RP\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-xW_\x80\xFD[PQ\x91\x90PV[_\x85Qa-\x90\x81\x84` \x8A\x01a%\xEAV[\x85Q\x90\x83\x01\x90a-\xA4\x81\x83` \x8A\x01a%\xEAV[\x85Q\x91\x01\x90a-\xB7\x81\x83` \x89\x01a%\xEAV[\x84Q\x91\x01\x90a-\xCA\x81\x83` \x88\x01a%\xEAV[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x12\xD2Wa\x12\xD2a-\xD5V[` \x81R_a%O` \x83\x01\x84a&\xBEV[_` \x80\x83\x85\x03\x12\x15a.W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$@V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a$\xEEV[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%0V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a%\xC9V[a\x06\x83V[a\0\xB9a\x01l6`\x04a%\xEDV[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a%\xC9V[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&YV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xB1V[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\"V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0B`V[a\x04\xB5\x81a\x0B\xB1V[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&YV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0B`V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\\V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xB1V[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&YV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0B`V[a\x08\x86\x81a\x0B\xB1V[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a)`V[\x81\x01\x90a\n|\x91\x90a-,V[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\n\x95\x91a\r\x04V[`\0a\n\xA0\x82a\x0E\x17V[\x90Pa\n\xAC\x81\x83a\x10eV[`\0a\n\xBB\x83``\x01Qa\x11\xC7V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\n\xE9\x83\x86`\x80\x01Qa\x12\x1C\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\x0B\x05\x83\x86`\xA0\x01Qa\x13\x1B\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x1A\x91\x90a)`V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x81Wa\x0B\x81a&YV[` \x02` \x01\x01Q\x90Pa\x0B\x94\x81a\x14\0V[a\x0B\x9E\x813a\x18\xF0V[a\x0B\xA8\x813a\x19\xE9V[P`\x01\x01a\x0BeV[\x80Q`\0[\x81\x81\x10\x15a\x0C\xF3W`\0\x83\x82\x81Q\x81\x10a\x0B\xD2Wa\x0B\xD2a&YV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0CSW`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\tWa\x0C\ta&YV[` \x02` \x01\x01Q\x90Pa\x0CJ\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D#\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xE9V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\x9CWa\x0C\x9Ca&YV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xE1\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xB6V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1DjV[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91`\0\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\r\xAAW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\xCE\x91\x90a.-V[\x90P\x81\x81\x18\x80\x83\x16`\0\x03a\x0E\x0FW`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R`\0\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a23` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919`@Q` \x01a\x0F\xB1\x94\x93\x92\x91\x90a.FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\xD4\x83`\0\x01Qa\x1E\x04V[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xF0\x87`\x80\x01Qa\x1E\x9EV[a\x0F\xFD\x88`\xA0\x01Qa\x1F\x05V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xA4W`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\xD1WP\x80C\x10[\x80\x15a\x10\xE1WP`\xC0\x82\x01QQ\x81\x11[\x15a\x11\x0BW` \x82\x01Qa\x11\x03\x90a\x10\xF9\x84\x86a\x1F\xA3V[\x84`\xE0\x01Qa \x1AV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11EW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03_W`\0[\x82`\xA0\x01QQ\x81\x10\x15a\x06}W`\0\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11{Wa\x11{a&YV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\xBFW`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11VV[`\0H:\x10\x15a\x12\x03W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x12\x13W\x03\x90V[P`\0[\x91\x90PV[a\x12V`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0\x83`@\x01Q\x83a\x12h\x91\x90a.\xCCV[\x90Pb\x98\x96\x80\x81\x10a\x12\xB6W`@Q\x80``\x01`@R\x80\x85`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x13\x15V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x13\0W` \x86\x01Qa\x12\xFB\x90b\x98\x96\x80\x85\x81\x03\x90a!BV[a\x13\x06V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x139Wa\x139a&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xA2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13WW\x90P[P\x91P`\0[\x81\x81\x10\x15a\x13\xF8Wa\x13\xD3\x85\x82\x81Q\x81\x10a\x13\xC5Wa\x13\xC5a&YV[` \x02` \x01\x01Q\x85a!~V[\x83\x82\x81Q\x81\x10a\x13\xE5Wa\x13\xE5a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xA8V[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14 WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14w\x90\x85\x90`\x04\x01a.\xE3V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\x94W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xDA\x91\x90\x81\x01\x90a.\xF6V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x14\xF2\x82\x84a/\xC6V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\nWa\x15\na&*V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15sW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15(W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x15\xC4W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\x97Wa\x15\x97a&YV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xB1Wa\x15\xB1a&YV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15yV[P`\0\x80`\0[\x84\x81\x10\x15a\x18\xDFW`\0\x87\x82\x81Q\x81\x10a\x15\xE7Wa\x15\xE7a&YV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x16\xA5W\x88\x81\x81Q\x81\x10a\x16\x0EWa\x16\x0Ea&YV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\x9DW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x15\xF4V[P`\0\x80[\x88\x81\x10\x15a\x17fW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xCAWa\x16\xCAa&YV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17]W\x85\x15a\x17GW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17V\x90\x84a/\xC6V[\x92P`\x01\x96P[P`\x01\x01a\x16\xAAV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xDFW\x84\x15a\x17\xC6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xD8\x90\x82a/\xC6V[\x90P`\x01\x93P[\x80`\0\x03a\x184W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18B\x81`\x05a'\x10a!BV[\x82` \x01Q\x11\x15a\x18\xB5W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xCAWa\x18\xCAa&YV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xCBV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19AW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xBD\x90\x84\x90\x86\x90`\x04\x01a/\xD9V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xD5W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xA9\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a2\xC0\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\x05`.\x919`@Q` \x01a\x1C\x88\x95\x94\x93\x92\x91\x90a0\x08V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xF5\x96\x95\x94\x93\x92`\x04\x01a0\xA3V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\x0FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\x0FW=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1DHWa\x03_\x82\x82a\x1DjV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a\"2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xC4W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1D\xC9V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a23`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10H\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a1\xBD`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10H\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1F%Wa\x1F%a&*V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1FOW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1F\x94W`\0a\x1F\x82\x85\x83\x81Q\x81\x10a\x1FuWa\x1Fua&YV[` \x02` \x01\x01Qa#$V[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1FUV[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xC0\x01Q`@Q` \x01a\x1F\xBF\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\xFC\x93\x92\x91` \x01a1kV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a 1\x91\x90a1\x98V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a JWa Ja&YV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a \xA7W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a!\x02WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a!9W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!wW`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a\"\x01Wa!\xFC\x85`@\x01Q\x85a!\xE0\x91\x90a.\xCCV[a!\xED\x90b\x98\x96\x80a/\xC6V[` \x87\x01Q\x90b\x98\x96\x80a#\x9BV[a\"\x07V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a#\x1DW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[PPPPPV[`\0`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a2\xC0`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10H\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xD0W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0`@\x82\x84\x03\x12\x15a#\xF1W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\tW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$!W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$UW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$mW`\0\x80\xFD[a$y\x87\x83\x88\x01a#\xDFV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x8FW`\0\x80\xFD[Pa$\x9C\x86\x82\x87\x01a#\xF7V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a$\xBBW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xD3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$9W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\x01W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\x18W`\0\x80\xFD[a%$\x85\x82\x86\x01a$\xA9V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%FW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%^W`\0\x80\xFD[a%j\x88\x83\x89\x01a$\xA9V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x83W`\0\x80\xFD[Pa%\x90\x87\x82\x88\x01a#\xF7V[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a\x12\x17\x81a%\x9CV[`\0` \x82\x84\x03\x12\x15a%\xDBW`\0\x80\xFD[\x815a%\xE6\x81a%\x9CV[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\xFFW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\x16W`\0\x80\xFD[a&\"\x84\x82\x85\x01a#\xDFV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra&\xC4\x81` \x86\x01` \x86\x01a&\x88V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'VW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x0BV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD5a\x01\xA0\x85\x01\x82a&\xACV[\x90P` \x83\x01Qa(\x13` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(+\x82\x82a&\xF6V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(E\x82\x82a&\xACV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a(\xD1W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xBF\x86\x83Qa'aV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(\x85V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)VW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x95W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xB0W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$9W`\0\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xE8Wa)\xE8a&*V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*|Wa*|a&*V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a*\x95W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\xAFWa*\xAFa&*V[a*\xE0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xF5W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+$W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a+HWa+Ha&*V[\x81`@R\x82\x93P\x845\x91Pa+\\\x82a%\x9CV[\x90\x82R` \x84\x015\x90a+n\x82a%\x9CV[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa+\x98\x82a%\x9CV[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a+\xB2W`\0\x80\xFD[Pa+\xBF\x85\x82\x86\x01a*\x84V[`\xA0\x83\x01RPP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a+\xDEW`\0\x80\xFD[a+\xE6a)\xC5V[\x90P\x815a+\xF3\x81a%\x9CV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,+Wa,+a&*V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,FW`\0\x80\xFD[\x815` a,[a,V\x83a,\x11V[a*5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,zW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\xDFW`\x80\x81\x89\x03\x12\x15a,\x97W`\0\x80\x81\xFD[a,\x9Fa)\xEEV[\x815a,\xAA\x81a%\x9CV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\xCD\x81a%\x9CV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,~V[P\x96\x95PPPPPPV[`\0` \x82\x84\x03\x12\x15a,\xFCW`\0\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a-\x1FWa-\x1Fa&*V[`@R\x915\x82RP\x91\x90PV[`\0` \x82\x84\x03\x12\x15a->W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-VW`\0\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a-kW`\0\x80\xFD[a-sa*\x11V[\x825\x82\x81\x11\x15a-\x82W`\0\x80\xFD[a-\x8E\x87\x82\x86\x01a+\x12V[\x82RPa-\x9D` \x84\x01a%\xBEV[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\xC3\x86`\x80\x85\x01a+\xCCV[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\xDAW`\0\x80\xFD[a-\xE6\x87\x82\x86\x01a,5V[`\xA0\x83\x01RPa-\xFA\x86a\x01\0\x85\x01a,\xEAV[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a.\x12W`\0\x80\xFD[a.\x1E\x87\x82\x86\x01a*\x84V[`\xE0\x83\x01RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.?W`\0\x80\xFD[PQ\x91\x90PV[`\0\x85Qa.X\x81\x84` \x8A\x01a&\x88V[\x85Q\x90\x83\x01\x90a.l\x81\x83` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a.\x7F\x81\x83` \x89\x01a&\x88V[\x84Q\x91\x01\x90a.\x92\x81\x83` \x88\x01a&\x88V[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x13\x15Wa\x13\x15a.\x9DV[` \x81R`\0a%\xE6` \x83\x01\x84a'aV[`\0` \x80\x83\x85\x03\x12\x15a/\tW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/ W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/1W`\0\x80\xFD[\x80Qa/?a,V\x82a,\x11V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/^W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a/\xBAW\x80\x85\x8A\x03\x12\x15a/{W`\0\x80\x81\xFD[a/\x83a)\xC5V[\x85Qa/\x8E\x81a%\x9CV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa/\xA7\x81a%\x9CV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a/cV[P\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x13\x15Wa\x13\x15a.\x9DV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a&\"`@\x83\x01\x84a'aV[\x7FPriorityOrder witness)\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x16\x87Qa0A\x81\x83\x86\x01` \x8C\x01a&\x88V[\x87Q\x90\x84\x01\x90a0W\x81\x84\x84\x01` \x8C\x01a&\x88V[\x87Q\x91\x01\x90a0l\x81\x84\x84\x01` \x8B\x01a&\x88V[\x86Q\x91\x01\x90a0\x81\x81\x84\x84\x01` \x8A\x01a&\x88V[\x85Q\x91\x01\x90a0\x96\x81\x84\x84\x01` \x89\x01a&\x88V[\x01\x01\x97\x96PPPPPPPV[`\0a\x01@a0\xD3\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\x14`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1I\x81\x84\x01\x86a&\xACV[\x90P\x82\x81\x03a\x01 \x84\x01Ra1^\x81\x85a&\xACV[\x99\x98PPPPPPPPPV[\x83\x81R\x82` \x82\x01R`\0\x82Qa1\x89\x81`@\x85\x01` \x87\x01a&\x88V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a1\xABW`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV\xFEPriorityInput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)PriorityOutput(address token,uint256 amount,uint256 mpsPerPriorityFeeWei,address recipient)\xA2dipfsX\"\x12 5>J\x9C\x8A\xF3,\xE6{]\xE3:\xAE\xCB_\xAE\x19\x8FF\x18\xEDv\xC7\xF0\xECf\xD0\x8D\xF4@&[dsolcC\0\x08\x18\x003", + b"`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a#\xBDV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a$bV[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a$\xA1V[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%4V[a\x06eV[a\0\xB4a\x01e6`\x04a%VV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%4V[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a%\xBDV[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x86V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a({V[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B7V[a\x04\x9F\x81a\x0B\x86V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa%\xBDV[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B7V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a'\xB8V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x86V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga%\xBDV[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B7V[a\x08d\x81a\x0B\x86V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a(\xB7V[\x81\x01\x90a\nW\x91\x90a,nV[\x80Q` \x81\x01Q`@\x90\x91\x01Q\x91\x92Pa\np\x91a\x0C\xD1V[_a\nz\x82a\r\xE0V[\x90Pa\n\x86\x81\x83a\x10,V[_a\n\x94\x83``\x01Qa\x11\x8CV[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\n\xC1\x83\x86`\x80\x01Qa\x11\xDF\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01a\n\xDD\x83\x86`\xA0\x01Qa\x12\xD8\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R` \x01\x86\x80` \x01\x90a\n\xF2\x91\x90a(\xB7V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x92\x90\x92RP\x93\x92PPPV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BVWa\x0BVa%\xBDV[` \x02` \x01\x01Q\x90Pa\x0Bi\x81a\x13\xBBV[a\x0Bs\x813a\x18\x98V[a\x0B}\x813a\x19\x8DV[P`\x01\x01a\x0B;V[\x80Q_[\x81\x81\x10\x15a\x0C\xC0W_\x83\x82\x81Q\x81\x10a\x0B\xA5Wa\x0B\xA5a%\xBDV[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\"W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xD9Wa\x0B\xD9a%\xBDV[` \x02` \x01\x01Q\x90Pa\x0C\x19\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xBF\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xBAV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CjWa\x0Cja%\xBDV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xAE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x8AV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1D\x06V[`@Q\x7FO\xE0+D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16`\x04\x83\x01R`\x08\x83\x90\x1C`$\x83\x01\x81\x90R\x91`\x01`\xFF\x85\x16\x1B\x91_\x91\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90cO\xE0+D\x90`D\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\rtW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\r\x98\x91\x90a-hV[\x90P\x81\x81\x18\x80\x83\x16_\x03a\r\xD8W`@Q\x7F\xEE;=K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`@Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R_\x90`\xB4\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90a1[` \x83\x019`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919`@Q` \x01a\x0Fy\x94\x93\x92\x91\x90a-\x7FV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0F\x9B\x83_\x01Qa\x1D\x9CV[\x83` \x01Q\x84`@\x01Q\x85``\x01Qa\x0F\xB7\x87`\x80\x01Qa\x1E5V[a\x0F\xC4\x88`\xA0\x01Qa\x1E\x9BV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x93\x16``\x86\x01R`\x80\x85\x01\x91\x90\x91R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10kW`@Q\x7Fv\x9D\x11\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Q` \x82\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15\x80\x15\x90a\x10\x98WP\x80C\x10[\x80\x15a\x10\xA8WP`\xC0\x82\x01QQ\x81\x11[\x15a\x10\xD2W` \x82\x01Qa\x10\xCA\x90a\x10\xC0\x84\x86a\x1F6V[\x84`\xE0\x01Qa\x1F\xACV[P`\xC0\x81\x01QQ[\x80C\x10\x15a\x11\x0CW`@Q\x7F\xC6\x03U \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x82\x01Q`@\x01Q\x15a\x03LW_[\x82`\xA0\x01QQ\x81\x10\x15a\x06_W_\x83`\xA0\x01Q\x82\x81Q\x81\x10a\x11@Wa\x11@a%\xBDV[` \x02` \x01\x01Q`@\x01Q\x11\x15a\x11\x84W`@Q\x7F\xA6\xB8D\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x01a\x11\x1CV[_H:\x10\x15a\x11\xC7W`@Q\x7F\xF3\xEBD\xE5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PH:\x03\x81\x81\x11\x15a\x11\xD7W\x03\x90V[P_[\x91\x90PV[a\x12\x16`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[_\x83`@\x01Q\x83a\x12'\x91\x90a.\x02V[\x90Pb\x98\x96\x80\x81\x10a\x12sW`@Q\x80``\x01`@R\x80\x85_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01\x85` \x01Q\x81RP\x91PPa\x12\xD2V[`@\x80Q``\x81\x01\x90\x91R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x82\x15a\x12\xBDW` \x86\x01Qa\x12\xB8\x90b\x98\x96\x80\x85\x81\x03\x90a \xCFV[a\x12\xC3V[\x85` \x01Q[\x81R` \x86\x81\x01Q\x91\x01R\x91PP[\x92\x91PPV[\x81Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x12\xF6Wa\x12\xF6a%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\x14W\x90P[P\x91P_[\x81\x81\x10\x15a\x13\xB3Wa\x13\x8E\x85\x82\x81Q\x81\x10a\x13\x80Wa\x13\x80a%\xBDV[` \x02` \x01\x01Q\x85a!\tV[\x83\x82\x81Q\x81\x10a\x13\xA0Wa\x13\xA0a%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13cV[PP\x92\x91PPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x13\xDBWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x141\x90\x85\x90`\x04\x01a.\x19V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14KW=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\x90\x91\x90\x81\x01\x90a.+V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x14\xA7\x82\x84a.\xF4V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\xBFWa\x14\xBFa%\x90V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15'W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\xDDW\x90P[P\x90P_[\x83\x81\x10\x15a\x15wW\x85`@\x01Q\x81\x81Q\x81\x10a\x15JWa\x15Ja%\xBDV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15dWa\x15da%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15,V[P_\x80_[\x84\x81\x10\x15a\x18\x87W_\x87\x82\x81Q\x81\x10a\x15\x97Wa\x15\x97a%\xBDV[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16RW\x88\x81\x81Q\x81\x10a\x15\xBDWa\x15\xBDa%\xBDV[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16JW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x15\xA3V[P_\x80[\x88\x81\x10\x15a\x17\x0FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16uWa\x16ua%\xBDV[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x06W\x85\x15a\x16\xF0W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x16\xFF\x90\x84a.\xF4V[\x92P`\x01\x96P[P`\x01\x01a\x16VV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\x88W\x84\x15a\x17oW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\x81\x90\x82a.\xF4V[\x90P`\x01\x93P[\x80_\x03a\x17\xDCW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x17\xEA\x81`\x05a'\x10a \xCFV[\x82` \x01Q\x11\x15a\x18]W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18rWa\x18ra%\xBDV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15|V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x18\xE9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19e\x90\x84\x90\x86\x90`\x04\x01a/\x07V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19{W_\x80\xFD[PZ\xFA\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1AL\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919`@\x80Q\x7FPriorityOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`.\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`=\x82\x01R\x7Fuint256 auctionStartBlock,\0\0\0\0\0\0`N\x82\x01R\x7Fuint256 baselinePriorityFeeWei,\0`h\x82\x01R\x7FPriorityInput input,\0\0\0\0\0\0\0\0\0\0\0\0`\x87\x82\x01R\x7FPriorityOutput[] outputs)\0\0\0\0\0\0\0`\x9B\x82\x01R\x81Q`\x94\x81\x83\x03\x01\x81Ra\x014\x82\x01\x90\x92R`[`\xB4\x82\x01\x81\x81R\x91a1\xE8\x90`\xD4\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01a1-`.\x919`@Q` \x01a\x1C)\x95\x94\x93\x92\x91\x90a/5V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\x96\x96\x95\x94\x93\x92`\x04\x01a/\xCFV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xADW_\x80\xFD[PZ\xF1\x15\x80\x15a\r\xD8W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1C\xE4Wa\x03L\x82\x82a\x1D\x06V[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xBCV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\\W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1DaV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a1[`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x0F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q\x80`\x80\x01`@R\x80`H\x81R` \x01a0\xE5`H\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q\x90Qa\x10\x0F\x95\x01\x93\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x92\x90\x92\x16` \x84\x01R`@\x83\x01R``\x82\x01R`\x80\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xBAWa\x1E\xBAa%\x90V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xE4W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1F'W_a\x1F\x15\x85\x83\x81Q\x81\x10a\x1F\x08Wa\x1F\x08a%\xBDV[` \x02` \x01\x01Qa\"\xAAV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xE9V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xC0\x01Q`@Q` \x01a\x1FQ\x91Q\x81R` \x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1F\x8E\x93\x92\x91` \x01a0\x96V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x1F\xC2\x91\x90a0\xC2V[\x91P\x91P_\x83`@\x81Q\x81\x10a\x1F\xDAWa\x1F\xDAa%\xBDV[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a 4W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a \x8FWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a \xC6W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\x02W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`@\x80Q``\x81\x01\x82R\x84Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R\x90\x84\x01Q` \x82\x01\x90\x15a!\x8BWa!\x86\x85`@\x01Q\x85a!j\x91\x90a.\x02V[a!w\x90b\x98\x96\x80a.\xF4V[` \x87\x01Q\x90b\x98\x96\x80a# V[a!\x91V[\x84` \x01Q[\x81R` \x01\x84``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x90P\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\"\xA3W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[PPPPPV[_`@Q\x80`\x80\x01`@R\x80`[\x81R` \x01a1\xE8`[\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x10\x0F\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#SW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_`@\x82\x84\x03\x12\x15a#rW_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a#\x88W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\x9FW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a#\xCFW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a#\xE6W_\x80\xFD[a#\xF2\x87\x83\x88\x01a#bV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\x07W_\x80\xFD[Pa$\x14\x86\x82\x87\x01a#xV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$1W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$HW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a#\xB6W_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a$sW_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\x89W_\x80\xFD[a$\x95\x85\x82\x86\x01a$!V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a$\xB4W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\xCBW_\x80\xFD[a$\xD7\x88\x83\x89\x01a$!V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a$\xEFW_\x80\xFD[Pa$\xFC\x87\x82\x88\x01a#xV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a\x11\xDA\x81a%\x08V[_` \x82\x84\x03\x12\x15a%DW_\x80\xFD[\x815a%O\x81a%\x08V[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a%fW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%|W_\x80\xFD[a%\x88\x84\x82\x85\x01a#bV[\x94\x93PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\x04W\x81\x81\x01Q\x83\x82\x01R` \x01a%\xECV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&#\x81` \x86\x01` \x86\x01a%\xEAV[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a&\xB3W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a&hV[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'1a\x01\xA0\x85\x01\x82a&\x0CV[\x90P` \x83\x01Qa'o` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra'\x87\x82\x82a&UV[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra'\xA1\x82\x82a&\x0CV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(+W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\x19\x86\x83Qa&\xBEV[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a'\xDFV[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a(\xADW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a(\xEAW_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\x04W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a#\xB6W_\x80\xFD[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@R\x90V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Qa\x01\0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a);Wa);a%\x90V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xCFWa)\xCFa%\x90V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a)\xE6W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\0Wa*\0a%\x90V[a*1` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a)\x88V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*EW_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a*qW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x82\x10\x81\x83\x11\x17\x15a*\x95Wa*\x95a%\x90V[\x81`@R\x82\x93P\x845\x91Pa*\xA9\x82a%\x08V[\x90\x82R` \x84\x015\x90a*\xBB\x82a%\x08V[\x81` \x84\x01R`@\x85\x015`@\x84\x01R``\x85\x015``\x84\x01R`\x80\x85\x015\x91Pa*\xE5\x82a%\x08V[\x81`\x80\x84\x01R`\xA0\x85\x015\x91P\x80\x82\x11\x15a*\xFEW_\x80\xFD[Pa+\x0B\x85\x82\x86\x01a)\xD7V[`\xA0\x83\x01RPP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+(W_\x80\xFD[a+0a)\x18V[\x90P\x815a+=\x81a%\x08V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+tWa+ta%\x90V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a+\x8DW_\x80\xFD[\x815` a+\xA2a+\x9D\x83a+[V[a)\x88V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a+\xC0W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,#W`\x80\x81\x89\x03\x12\x15a+\xDBW_\x80\xFD[a+\xE3a)AV[\x815a+\xEE\x81a%\x08V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x11\x81a%\x08V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a+\xC4V[P\x96\x95PPPPPPV[_` \x82\x84\x03\x12\x15a,>W_\x80\xFD[`@Q` \x81\x01\x81\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17\x15a,aWa,aa%\x90V[`@R\x915\x82RP\x91\x90PV[_` \x82\x84\x03\x12\x15a,~W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a,\x95W_\x80\xFD[\x90\x83\x01\x90a\x01@\x82\x86\x03\x12\x15a,\xA9W_\x80\xFD[a,\xB1a)dV[\x825\x82\x81\x11\x15a,\xBFW_\x80\xFD[a,\xCB\x87\x82\x86\x01a*aV[\x82RPa,\xDA` \x84\x01a%)V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015``\x82\x01Ra-\0\x86`\x80\x85\x01a+\x18V[`\x80\x82\x01R`\xE0\x83\x015\x82\x81\x11\x15a-\x16W_\x80\xFD[a-\"\x87\x82\x86\x01a+~V[`\xA0\x83\x01RPa-6\x86a\x01\0\x85\x01a,.V[`\xC0\x82\x01Ra\x01 \x83\x015\x82\x81\x11\x15a-MW_\x80\xFD[a-Y\x87\x82\x86\x01a)\xD7V[`\xE0\x83\x01RP\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-xW_\x80\xFD[PQ\x91\x90PV[_\x85Qa-\x90\x81\x84` \x8A\x01a%\xEAV[\x85Q\x90\x83\x01\x90a-\xA4\x81\x83` \x8A\x01a%\xEAV[\x85Q\x91\x01\x90a-\xB7\x81\x83` \x89\x01a%\xEAV[\x84Q\x91\x01\x90a-\xCA\x81\x83` \x88\x01a%\xEAV[\x01\x96\x95PPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x12\xD2Wa\x12\xD2a-\xD5V[` \x81R_a%O` \x83\x01\x84a&\xBEV[_` \x80\x83\x85\x03\x12\x15a. = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -787,10 +814,15 @@ error FeeTooLarge(address token, uint256 amount, address recipient); ```solidity error InputAndOutputFees(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputFees {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -846,10 +878,15 @@ error InputAndOutputFees(); ```solidity error InputOutputScaling(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputOutputScaling {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -905,10 +942,15 @@ error InputOutputScaling(); ```solidity error InvalidCosignature(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidCosignature {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -964,10 +1006,15 @@ error InvalidCosignature(); ```solidity error InvalidDeadline(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidDeadline {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1023,12 +1070,18 @@ error InvalidDeadline(); ```solidity error InvalidFeeToken(address feeToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidFeeToken { + #[allow(missing_docs)] pub feeToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1088,10 +1141,15 @@ error InvalidFeeToken(address feeToken); ```solidity error InvalidGasPrice(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidGasPrice {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1147,10 +1205,15 @@ error InvalidGasPrice(); ```solidity error InvalidReactor(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidReactor {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1206,10 +1269,15 @@ error InvalidReactor(); ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1265,10 +1333,15 @@ error NativeTransferFailed(); ```solidity error OrderAlreadyFilled(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderAlreadyFilled {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1324,10 +1397,15 @@ error OrderAlreadyFilled(); ```solidity error OrderNotFillable(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderNotFillable {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1383,7 +1461,12 @@ error OrderNotFillable(); ```solidity event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Fill { #[allow(missing_docs)] @@ -1393,9 +1476,14 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub nonce: alloy::sol_types::private::U256, + pub nonce: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1460,6 +1548,21 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1638,7 +1766,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ProtocolFeeControllerSet { #[allow(missing_docs)] @@ -1646,7 +1779,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle #[allow(missing_docs)] pub newFeeController: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1707,6 +1845,21 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -1758,10 +1911,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle ```solidity constructor(address _permit2, address _protocolFeeOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _permit2: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _protocolFeeOwner: alloy::sol_types::private::Address, } const _: () = { @@ -1838,16 +1993,22 @@ constructor(address _permit2, address _protocolFeeOwner); ```solidity function execute(SignedOrder memory order) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1953,18 +2114,24 @@ function execute(SignedOrder memory order) external payable; ```solidity function executeBatch(SignedOrder[] memory orders) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2078,19 +2245,26 @@ function executeBatch(SignedOrder[] memory orders) external payable; ```solidity function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2219,17 +2393,24 @@ function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory call ```solidity function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2351,16 +2532,22 @@ function executeWithCallback(SignedOrder memory order, bytes memory callbackData ```solidity function feeController() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerCall {} ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2464,16 +2651,22 @@ function feeController() external view returns (address); ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2577,16 +2770,22 @@ function owner() external view returns (address); ```solidity function permit2() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Call {} ///Container type for the return parameters of the [`permit2()`](permit2Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Return { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2690,16 +2889,22 @@ function permit2() external view returns (address); ```solidity function setProtocolFeeController(address _newFeeController) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerCall { + #[allow(missing_docs)] pub _newFeeController: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2811,16 +3016,22 @@ function setProtocolFeeController(address _newFeeController) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2930,14 +3141,23 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`PriorityOrderReactor`](self) function calls. pub enum PriorityOrderReactorCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] executeBatchWithCallback(executeBatchWithCallbackCall), + #[allow(missing_docs)] executeWithCallback(executeWithCallbackCall), + #[allow(missing_docs)] feeController(feeControllerCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] permit2(permit2Call), + #[allow(missing_docs)] setProtocolFeeController(setProtocolFeeControllerCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -3000,7 +3220,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3136,7 +3356,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3235,17 +3455,29 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`PriorityOrderReactor`](self) custom errors. pub enum PriorityOrderReactorErrors { + #[allow(missing_docs)] DuplicateFeeOutput(DuplicateFeeOutput), + #[allow(missing_docs)] FeeTooLarge(FeeTooLarge), + #[allow(missing_docs)] InputAndOutputFees(InputAndOutputFees), + #[allow(missing_docs)] InputOutputScaling(InputOutputScaling), + #[allow(missing_docs)] InvalidCosignature(InvalidCosignature), + #[allow(missing_docs)] InvalidDeadline(InvalidDeadline), + #[allow(missing_docs)] InvalidFeeToken(InvalidFeeToken), + #[allow(missing_docs)] InvalidGasPrice(InvalidGasPrice), + #[allow(missing_docs)] InvalidReactor(InvalidReactor), + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), + #[allow(missing_docs)] OrderAlreadyFilled(OrderAlreadyFilled), + #[allow(missing_docs)] OrderNotFillable(OrderNotFillable), } #[automatically_derived] @@ -3326,7 +3558,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3501,7 +3733,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3646,8 +3878,11 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`PriorityOrderReactor`](self) events. pub enum PriorityOrderReactorEvents { + #[allow(missing_docs)] Fill(Fill), + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), + #[allow(missing_docs)] ProtocolFeeControllerSet(ProtocolFeeControllerSet), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/protocolfees.rs b/crates/bindings-uniswapx/src/protocolfees.rs index 849752a..ddc265c 100644 --- a/crates/bindings-uniswapx/src/protocolfees.rs +++ b/crates/bindings-uniswapx/src/protocolfees.rs @@ -161,7 +161,13 @@ interface ProtocolFees { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod ProtocolFees { use super::*; use alloy::sol_types as alloy_sol_types; @@ -189,12 +195,18 @@ pub mod ProtocolFees { ```solidity error DuplicateFeeOutput(address duplicateToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DuplicateFeeOutput { + #[allow(missing_docs)] pub duplicateToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -254,14 +266,22 @@ error DuplicateFeeOutput(address duplicateToken); ```solidity error FeeTooLarge(address token, uint256 amount, address recipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct FeeTooLarge { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -273,7 +293,7 @@ error FeeTooLarge(address token, uint256 amount, address recipient); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -339,10 +359,15 @@ error FeeTooLarge(address token, uint256 amount, address recipient); ```solidity error InputAndOutputFees(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputFees {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -398,12 +423,18 @@ error InputAndOutputFees(); ```solidity error InvalidFeeToken(address feeToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidFeeToken { + #[allow(missing_docs)] pub feeToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -463,7 +494,12 @@ error InvalidFeeToken(address feeToken); ```solidity event OwnershipTransferred(address indexed user, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -471,7 +507,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -533,6 +574,21 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -581,7 +637,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ProtocolFeeControllerSet { #[allow(missing_docs)] @@ -589,7 +650,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle #[allow(missing_docs)] pub newFeeController: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -650,6 +716,21 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -701,16 +782,22 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle ```solidity function feeController() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerCall {} ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -814,16 +901,22 @@ function feeController() external view returns (address); ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -927,16 +1020,22 @@ function owner() external view returns (address); ```solidity function setProtocolFeeController(address _newFeeController) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerCall { + #[allow(missing_docs)] pub _newFeeController: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1048,16 +1147,22 @@ function setProtocolFeeController(address _newFeeController) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1167,9 +1272,13 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`ProtocolFees`](self) function calls. pub enum ProtocolFeesCalls { + #[allow(missing_docs)] feeController(feeControllerCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] setProtocolFeeController(setProtocolFeeControllerCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -1216,7 +1325,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1287,7 +1396,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -1341,9 +1450,13 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`ProtocolFees`](self) custom errors. pub enum ProtocolFeesErrors { + #[allow(missing_docs)] DuplicateFeeOutput(DuplicateFeeOutput), + #[allow(missing_docs)] FeeTooLarge(FeeTooLarge), + #[allow(missing_docs)] InputAndOutputFees(InputAndOutputFees), + #[allow(missing_docs)] InvalidFeeToken(InvalidFeeToken), } #[automatically_derived] @@ -1392,7 +1505,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -1463,7 +1576,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -1520,7 +1633,9 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`ProtocolFees`](self) events. pub enum ProtocolFeesEvents { + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), + #[allow(missing_docs)] ProtocolFeeControllerSet(ProtocolFeeControllerSet), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/reactorevents.rs b/crates/bindings-uniswapx/src/reactorevents.rs index 1f45c4e..c142367 100644 --- a/crates/bindings-uniswapx/src/reactorevents.rs +++ b/crates/bindings-uniswapx/src/reactorevents.rs @@ -43,7 +43,13 @@ interface ReactorEvents { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod ReactorEvents { use super::*; use alloy::sol_types as alloy_sol_types; @@ -71,7 +77,12 @@ pub mod ReactorEvents { ```solidity event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Fill { #[allow(missing_docs)] @@ -81,9 +92,14 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub nonce: alloy::sol_types::private::U256, + pub nonce: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -148,6 +164,21 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( usize { diff --git a/crates/bindings-uniswapx/src/safecast.rs b/crates/bindings-uniswapx/src/safecast.rs index 3288098..38b06b7 100644 --- a/crates/bindings-uniswapx/src/safecast.rs +++ b/crates/bindings-uniswapx/src/safecast.rs @@ -9,29 +9,35 @@ interface SafeCast {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod SafeCast { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d0bcea8e0408ff457a1a97330d81e2c2352181a61dfb5fd135f0948bbb204ad64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220ec1341014145276a75ff612bbfc1066d2d14c9f9a100aa316f36378bf0dce4ef64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9D\x0B\xCE\xA8\xE0@\x8F\xF4W\xA1\xA9s0\xD8\x1E,#R\x18\x1Aa\xDF\xB5\xFD\x13_\tH\xBB\xB2\x04\xADdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xEC\x13A\x01AE'ju\xFFa+\xBF\xC1\x06m-\x14\xC9\xF9\xA1\0\xAA1o67\x8B\xF0\xDC\xE4\xEFdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209d0bcea8e0408ff457a1a97330d81e2c2352181a61dfb5fd135f0948bbb204ad64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220ec1341014145276a75ff612bbfc1066d2d14c9f9a100aa316f36378bf0dce4ef64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9D\x0B\xCE\xA8\xE0@\x8F\xF4W\xA1\xA9s0\xD8\x1E,#R\x18\x1Aa\xDF\xB5\xFD\x13_\tH\xBB\xB2\x04\xADdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xEC\x13A\x01AE'ju\xFFa+\xBF\xC1\x06m-\x14\xC9\xF9\xA1\0\xAA1o67\x8B\xF0\xDC\xE4\xEFdsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`SafeCast`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/safetransferlib.rs b/crates/bindings-uniswapx/src/safetransferlib.rs index 7671b59..167a9e4 100644 --- a/crates/bindings-uniswapx/src/safetransferlib.rs +++ b/crates/bindings-uniswapx/src/safetransferlib.rs @@ -9,29 +9,35 @@ interface SafeTransferLib {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod SafeTransferLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122060697c11f93b7ce2bfe7e07577de68d4e64d6ec7f62e2a2e8affa7e4a6655e8764736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122057937b98b35dcf40bcadfe427b29a0b65a6e813558a11493cf71ad38c91eff7664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 `i|\x11\xF9;|\xE2\xBF\xE7\xE0uw\xDEh\xD4\xE6Mn\xC7\xF6.*.\x8A\xFF\xA7\xE4\xA6e^\x87dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 W\x93{\x98\xB3]\xCF@\xBC\xAD\xFEB{)\xA0\xB6Zn\x815X\xA1\x14\x93\xCFq\xAD8\xC9\x1E\xFFvdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122060697c11f93b7ce2bfe7e07577de68d4e64d6ec7f62e2a2e8affa7e4a6655e8764736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122057937b98b35dcf40bcadfe427b29a0b65a6e813558a11493cf71ad38c91eff7664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 `i|\x11\xF9;|\xE2\xBF\xE7\xE0uw\xDEh\xD4\xE6Mn\xC7\xF6.*.\x8A\xFF\xA7\xE4\xA6e^\x87dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 W\x93{\x98\xB3]\xCF@\xBC\xAD\xFEB{)\xA0\xB6Zn\x815X\xA1\x14\x93\xCFq\xAD8\xC9\x1E\xFFvdsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`SafeTransferLib`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/shortstrings.rs b/crates/bindings-uniswapx/src/shortstrings.rs index 074c8e9..8af8a56 100644 --- a/crates/bindings-uniswapx/src/shortstrings.rs +++ b/crates/bindings-uniswapx/src/shortstrings.rs @@ -29,38 +29,49 @@ interface ShortStrings { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod ShortStrings { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206f753514e72671d4c80df6863d70f127c1ff676ec5ea0d38b7773626d8cb637264736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208b64e2c37ce5fc174f49977909f20d0211be9539ca71d8a56147f369921e857664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 ou5\x14\xE7&q\xD4\xC8\r\xF6\x86=p\xF1'\xC1\xFFgn\xC5\xEA\r8\xB7w6&\xD8\xCBcrdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x8Bd\xE2\xC3|\xE5\xFC\x17OI\x97y\t\xF2\r\x02\x11\xBE\x959\xCAq\xD8\xA5aG\xF3i\x92\x1E\x85vdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206f753514e72671d4c80df6863d70f127c1ff676ec5ea0d38b7773626d8cb637264736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208b64e2c37ce5fc174f49977909f20d0211be9539ca71d8a56147f369921e857664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 ou5\x14\xE7&q\xD4\xC8\r\xF6\x86=p\xF1'\xC1\xFFgn\xC5\xEA\r8\xB7w6&\xD8\xCBcrdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x8Bd\xE2\xC3|\xE5\xFC\x17OI\x97y\t\xF2\r\x02\x11\xBE\x959\xCAq\xD8\xA5aG\xF3i\x92\x1E\x85vdsolcC\0\x08\x18\x003", ); /**Custom error with signature `InvalidShortString()` and selector `0xb3512b0c`. ```solidity error InvalidShortString(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidShortString {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -116,12 +127,18 @@ error InvalidShortString(); ```solidity error StringTooLong(string str); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct StringTooLong { + #[allow(missing_docs)] pub str: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -179,7 +196,9 @@ error StringTooLong(string str); }; ///Container for all the [`ShortStrings`](self) custom errors. pub enum ShortStringsErrors { + #[allow(missing_docs)] InvalidShortString(InvalidShortString), + #[allow(missing_docs)] StringTooLong(StringTooLong), } #[automatically_derived] @@ -220,7 +239,7 @@ error StringTooLong(string str); Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -265,7 +284,7 @@ error StringTooLong(string str); ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { diff --git a/crates/bindings-uniswapx/src/signedmath.rs b/crates/bindings-uniswapx/src/signedmath.rs index 6932fb1..8bce411 100644 --- a/crates/bindings-uniswapx/src/signedmath.rs +++ b/crates/bindings-uniswapx/src/signedmath.rs @@ -9,29 +9,35 @@ interface SignedMath {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod SignedMath { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201441d1165b23759ac59e4907b34f456bb4d6f8e1dfd7898d647c820c9e40796b64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206ac34247505793e6a35803f13c38089d045d64a836bf25d6c09c217bd7daaaf664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x14A\xD1\x16[#u\x9A\xC5\x9EI\x07\xB3OEk\xB4\xD6\xF8\xE1\xDF\xD7\x89\x8Dd|\x82\x0C\x9E@ykdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 j\xC3BGPW\x93\xE6\xA3X\x03\xF1<8\x08\x9D\x04]d\xA86\xBF%\xD6\xC0\x9C!{\xD7\xDA\xAA\xF6dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201441d1165b23759ac59e4907b34f456bb4d6f8e1dfd7898d647c820c9e40796b64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212206ac34247505793e6a35803f13c38089d045d64a836bf25d6c09c217bd7daaaf664736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x14A\xD1\x16[#u\x9A\xC5\x9EI\x07\xB3OEk\xB4\xD6\xF8\xE1\xDF\xD7\x89\x8Dd|\x82\x0C\x9E@ykdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 j\xC3BGPW\x93\xE6\xA3X\x03\xF1<8\x08\x9D\x04]d\xA86\xBF%\xD6\xC0\x9C!{\xD7\xDA\xAA\xF6dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`SignedMath`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/solarray.rs b/crates/bindings-uniswapx/src/solarray.rs index c5e8273..bc34e18 100644 --- a/crates/bindings-uniswapx/src/solarray.rs +++ b/crates/bindings-uniswapx/src/solarray.rs @@ -9,29 +9,35 @@ interface Solarray {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod Solarray { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208521abdefb4bd4010a5faa6967a010522ae63f42a70250bfdd3bc6197a833fdb64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220cf14d2309a579dbe9c20f2dd854495ca825c263d198035c1dfb5a301be53f20064736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x85!\xAB\xDE\xFBK\xD4\x01\n_\xAAig\xA0\x10R*\xE6?B\xA7\x02P\xBF\xDD;\xC6\x19z\x83?\xDBdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xCF\x14\xD20\x9AW\x9D\xBE\x9C \xF2\xDD\x85D\x95\xCA\x82\\&=\x19\x805\xC1\xDF\xB5\xA3\x01\xBES\xF2\0dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208521abdefb4bd4010a5faa6967a010522ae63f42a70250bfdd3bc6197a833fdb64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220cf14d2309a579dbe9c20f2dd854495ca825c263d198035c1dfb5a301be53f20064736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x85!\xAB\xDE\xFBK\xD4\x01\n_\xAAig\xA0\x10R*\xE6?B\xA7\x02P\xBF\xDD;\xC6\x19z\x83?\xDBdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \xCF\x14\xD20\x9AW\x9D\xBE\x9C \xF2\xDD\x85D\x95\xCA\x82\\&=\x19\x805\xC1\xDF\xB5\xA3\x01\xBES\xF2\0dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`Solarray`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/storageslot.rs b/crates/bindings-uniswapx/src/storageslot.rs index 59f097e..4ccb277 100644 --- a/crates/bindings-uniswapx/src/storageslot.rs +++ b/crates/bindings-uniswapx/src/storageslot.rs @@ -9,29 +9,35 @@ interface StorageSlot {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod StorageSlot { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dd902391a5af7dee270ac786f31dec2612e26293b68ce60eb65577426383304564736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212202756757be558811381b6cc869ca827684846f0767da7e51643e305fafaad964d64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xDD\x90#\x91\xA5\xAF}\xEE'\n\xC7\x86\xF3\x1D\xEC&\x12\xE2b\x93\xB6\x8C\xE6\x0E\xB6UwBc\x830EdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 'Vu{\xE5X\x81\x13\x81\xB6\xCC\x86\x9C\xA8'hHF\xF0v}\xA7\xE5\x16C\xE3\x05\xFA\xFA\xAD\x96MdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dd902391a5af7dee270ac786f31dec2612e26293b68ce60eb65577426383304564736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212202756757be558811381b6cc869ca827684846f0767da7e51643e305fafaad964d64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xDD\x90#\x91\xA5\xAF}\xEE'\n\xC7\x86\xF3\x1D\xEC&\x12\xE2b\x93\xB6\x8C\xE6\x0E\xB6UwBc\x830EdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 'Vu{\xE5X\x81\x13\x81\xB6\xCC\x86\x9C\xA8'hHF\xF0v}\xA7\xE5\x16C\xE3\x05\xFA\xFA\xAD\x96MdsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`StorageSlot`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/strings.rs b/crates/bindings-uniswapx/src/strings.rs index 6c5f535..267d302 100644 --- a/crates/bindings-uniswapx/src/strings.rs +++ b/crates/bindings-uniswapx/src/strings.rs @@ -9,29 +9,35 @@ interface Strings {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod Strings { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b7c7f72e70606dd166442ec70e1e311c0943796f1cd70d533a8b4a66b0b612ab64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122001f51552e9e351e2904b0752c5b3aa6c92c9be2b2e7fa4d180c42351e487390264736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xB7\xC7\xF7.p`m\xD1fD.\xC7\x0E\x1E1\x1C\tCyo\x1C\xD7\rS:\x8BJf\xB0\xB6\x12\xABdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x01\xF5\x15R\xE9\xE3Q\xE2\x90K\x07R\xC5\xB3\xAAl\x92\xC9\xBE+.\x7F\xA4\xD1\x80\xC4#Q\xE4\x879\x02dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b7c7f72e70606dd166442ec70e1e311c0943796f1cd70d533a8b4a66b0b612ab64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122001f51552e9e351e2904b0752c5b3aa6c92c9be2b2e7fa4d180c42351e487390264736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xB7\xC7\xF7.p`m\xD1fD.\xC7\x0E\x1E1\x1C\tCyo\x1C\xD7\rS:\x8BJf\xB0\xB6\x12\xABdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x01\xF5\x15R\xE9\xE3Q\xE2\x90K\x07R\xC5\xB3\xAAl\x92\xC9\xBE+.\x7F\xA4\xD1\x80\xC4#Q\xE4\x879\x02dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`Strings`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/swaprouter02executor.rs b/crates/bindings-uniswapx/src/swaprouter02executor.rs index 5102956..56beb30 100644 --- a/crates/bindings-uniswapx/src/swaprouter02executor.rs +++ b/crates/bindings-uniswapx/src/swaprouter02executor.rs @@ -364,41 +364,55 @@ interface SwapRouter02Executor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod SwapRouter02Executor { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x6101006040523480156200001257600080fd5b50604051620019ba380380620019ba83398101604081905262000035916200012b565b600080546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0380851660a05283811660c05281166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa158015620000d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fb919062000193565b6001600160a01b031660e05250620001ba92505050565b6001600160a01b03811681146200012857600080fd5b50565b600080600080608085870312156200014257600080fd5b84516200014f8162000112565b6020860151909450620001628162000112565b6040860151909350620001758162000112565b6060860151909250620001888162000112565b939692955090935050565b600060208284031215620001a657600080fd5b8151620001b38162000112565b9392505050565b60805160a05160c05160e05161178762000233600039600081816107e501526108970152600081816101db015281816102f201528181610452015281816109c20152610ad501526000818161092e0152610a410152600081816102590152818161038a0152818161051601526105e001526117876000f3fe60806040526004361061007f5760003560e01c80638da5cb5b1161004e5780638da5cb5b1461010d578063d0f2d8ac14610163578063e5135ec614610183578063f2fde38b146101a357600080fd5b8063585da6281461008b57806363fb0b96146100ad578063690d8320146100cd57806389a3f136146100ed57600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a6366004610eb0565b6101c3565b005b3480156100b957600080fd5b506100ab6100c8366004610f1c565b610480565b3480156100d957600080fd5b506100ab6100e8366004610f9e565b6106a5565b3480156100f957600080fd5b506100ab610108366004610f9e565b610733565b34801561011957600080fd5b5060005461013a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34801561016f57600080fd5b506100ab61017e366004610fc2565b610916565b34801561018f57600080fd5b506100ab61019e366004610eb0565b610a29565b3480156101af57600080fd5b506100ab6101be366004610f9e565b610b48565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610232576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808061024284860186611193565b92509250925060005b83518110156102e0576102d87f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8684815181106102ab576102ab6112c9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610c399092919063ffffffff16565b60010161024b565b5060005b825181101561034c576103447f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8584815181106102ab576102ab6112c9565b6001016102e4565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906103e1907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161131c565b6000604051808303816000875af1158015610400573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261044691908101906113da565b504715610477576104777f000000000000000000000000000000000000000000000000000000000000000047610d0e565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b838110156105a25761059a7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff878785818110610568576105686112c9565b905060200201602081019061057d9190610f9e565b73ffffffffffffffffffffffffffffffffffffffff169190610c39565b600101610509565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610639907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908690600401611574565b6000604051808303816000875af1158015610658573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261069e91908101906113da565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6107308147610dad565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108659190611605565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050506109128247610dad565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610985576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906109fb90869086908690600401611669565b600060405180830381600087803b158015610a1557600080fd5b505af1158015610477573d6000803e3d6000fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a98576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c790610b1090879087908790879060040161168f565b600060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c454400000000000000000000000000000000000060448201526064016104fd565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610d68576040519150601f19603f3d011682016040523d82523d6000602084013e610d6d565b606091505b5050905080610da8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064016104fd565b60008083601f840112610e3457600080fd5b50813567ffffffffffffffff811115610e4c57600080fd5b6020830191508360208260051b8501011115610e6757600080fd5b9250929050565b60008083601f840112610e8057600080fd5b50813567ffffffffffffffff811115610e9857600080fd5b602083019150836020828501011115610e6757600080fd5b60008060008060408587031215610ec657600080fd5b843567ffffffffffffffff80821115610ede57600080fd5b610eea88838901610e22565b90965094506020870135915080821115610f0357600080fd5b50610f1087828801610e6e565b95989497509550505050565b60008060008060408587031215610f3257600080fd5b843567ffffffffffffffff80821115610f4a57600080fd5b610f5688838901610e22565b90965094506020870135915080821115610f6f57600080fd5b50610f1087828801610e22565b73ffffffffffffffffffffffffffffffffffffffff8116811461073057600080fd5b600060208284031215610fb057600080fd5b8135610fbb81610f7c565b9392505050565b600080600060408486031215610fd757600080fd5b833567ffffffffffffffff80821115610fef57600080fd5b908501906040828803121561100357600080fd5b9093506020850135908082111561101957600080fd5b5061102686828701610e6e565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156110a9576110a9611033565b604052919050565b600067ffffffffffffffff8211156110cb576110cb611033565b5060051b60200190565b600082601f8301126110e657600080fd5b813560206110fb6110f6836110b1565b611062565b8083825260208201915060208460051b87010193508684111561111d57600080fd5b602086015b8481101561114257803561113581610f7c565b8352918301918301611122565b509695505050505050565b600067ffffffffffffffff82111561116757611167611033565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806000606084860312156111a857600080fd5b833567ffffffffffffffff808211156111c057600080fd5b6111cc878388016110d5565b94506020915081860135818111156111e357600080fd5b6111ef888289016110d5565b9450506040808701358281111561120557600080fd5b8701601f8101891361121657600080fd5b80356112246110f6826110b1565b81815260059190911b8201850190858101908b83111561124357600080fd5b8684015b838110156112b75780358781111561125f5760008081fd5b8501603f81018e136112715760008081fd5b888101356112816110f68261114d565b8181528f898385010111156112965760008081fd5b818984018c83013760009181018b0191909152845250918701918701611247565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156113135781810151838201526020016112fb565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b828110156113cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261138f81888a018985016112f8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169690960185019550928401929084019060010161134a565b509398975050505050505050565b600060208083850312156113ed57600080fd5b825167ffffffffffffffff8082111561140557600080fd5b818501915085601f83011261141957600080fd5b81516114276110f6826110b1565b81815260059190911b8301840190848101908883111561144657600080fd5b8585015b838110156114ba578051858111156114625760008081fd5b8601603f81018b136114745760008081fd5b8781015160406114866110f68361114d565b8281528d8284860101111561149b5760008081fd5b6114aa838c83018487016112f8565b865250505091860191860161144a565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261154557600080fd5b830160208101925035905067ffffffffffffffff81111561156557600080fd5b803603821315610e6757600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b878110156115f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08786030183526115d8828a611510565b6115e38782846114c7565b96505050918301919083019060010161159f565b509298975050505050505050565b60006020828403121561161757600080fd5b5051919050565b600061162a8283611510565b6040855261163c6040860182846114c7565b91505061164c6020840184611510565b858303602087015261165f8382846114c7565b9695505050505050565b60408152600061167c604083018661161e565b828103602084015261165f8185876114c7565b6040808252810184905260006060600586901b830181019083018783805b8981101561172f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c360301811261170d578283fd5b611719868d830161161e565b95505060209384019392909201916001016116ad565b5050505082810360208401526117468185876114c7565b97965050505050505056fea26469706673582212205640b0557ec4552053567f3573115b9ceb5d4ac286ac0a470e1e07df158e28e864736f6c63430008180033 + ///0x61010060405234801562000011575f80fd5b506040516200191c3803806200191c833981016040819052620000349162000126565b5f80546001600160a01b0319166001600160a01b03841690811782556040518492907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0380851660a05283811660c05281166080819052604080516312a9293f60e21b81529051634aa4a4fc916004808201926020929091908290030181865afa158015620000d1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000f791906200018b565b6001600160a01b031660e05250620001b092505050565b6001600160a01b038116811462000123575f80fd5b50565b5f805f80608085870312156200013a575f80fd5b845162000147816200010e565b60208601519094506200015a816200010e565b60408601519093506200016d816200010e565b606086015190925062000180816200010e565b939692955090935050565b5f602082840312156200019c575f80fd5b8151620001a9816200010e565b9392505050565b60805160a05160c05160e0516116f9620002235f395f81816107c6015261087601525f81816101ce015281816102e20152818161043d0152818161099c0152610aaa01525f81816109080152610a1601525f818161024a0152818161037a015281816104ff01526105c901526116f95ff3fe60806040526004361061007c575f3560e01c80638da5cb5b1161004c5780638da5cb5b14610105578063d0f2d8ac14610159578063e5135ec614610178578063f2fde38b14610197575f80fd5b8063585da6281461008757806363fb0b96146100a8578063690d8320146100c757806389a3f136146100e6575f80fd5b3661008357005b5f80fd5b348015610092575f80fd5b506100a66100a1366004610e6b565b6101b6565b005b3480156100b3575f80fd5b506100a66100c2366004610ed2565b61046b565b3480156100d2575f80fd5b506100a66100e1366004610f4e565b610689565b3480156100f1575f80fd5b506100a6610100366004610f4e565b610716565b348015610110575f80fd5b505f546101309073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b348015610164575f80fd5b506100a6610173366004610f70565b6108f0565b348015610183575f80fd5b506100a6610192366004610e6b565b6109fe565b3480156101a2575f80fd5b506100a66101b1366004610f4e565b610b18565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610225576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808061023484860186611134565b9250925092505f5b83518110156102d1576102c97f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061029c5761029c61125b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610c079092919063ffffffff16565b60010161023c565b505f5b825181101561033c576103347f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85848151811061029c5761029c61125b565b6001016102d4565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906103d1907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9085906004016112aa565b5f604051808303815f875af11580156103ec573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104319190810190611366565b504715610462576104627f000000000000000000000000000000000000000000000000000000000000000047610cd8565b50505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146104f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5f5b8381101561058b576105837f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8787858181106105515761055161125b565b90506020020160208101906105669190610f4e565b73ffffffffffffffffffffffffffffffffffffffff169190610c07565b6001016104f2565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610622907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869086906004016114ef565b5f604051808303815f875af115801561063d573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106829190810190611366565b5050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104e7565b6107138147610d73565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104e7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610820573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610844919061157e565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b1580156108cc575f80fd5b505af11580156108de573d5f803e3d5ffd5b505050506108ec8247610d73565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461095f576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906109d5908690869086906004016115df565b5f604051808303815f87803b1580156109ec575f80fd5b505af1158015610462573d5f803e3d5ffd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a6d576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c790610ae5908790879087908790600401611604565b5f604051808303815f87803b158015610afc575f80fd5b505af1158015610b0e573d5f803e3d5ffd5b5050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104e7565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610cd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c454400000000000000000000000000000000000060448201526064016104e7565b50505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610d2e576040519150601f19603f3d011682016040523d82523d5f602084013e610d33565b606091505b5050905080610d6e576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f805f805f85875af1905080610d6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064016104e7565b5f8083601f840112610df5575f80fd5b50813567ffffffffffffffff811115610e0c575f80fd5b6020830191508360208260051b8501011115610e26575f80fd5b9250929050565b5f8083601f840112610e3d575f80fd5b50813567ffffffffffffffff811115610e54575f80fd5b602083019150836020828501011115610e26575f80fd5b5f805f8060408587031215610e7e575f80fd5b843567ffffffffffffffff80821115610e95575f80fd5b610ea188838901610de5565b90965094506020870135915080821115610eb9575f80fd5b50610ec687828801610e2d565b95989497509550505050565b5f805f8060408587031215610ee5575f80fd5b843567ffffffffffffffff80821115610efc575f80fd5b610f0888838901610de5565b90965094506020870135915080821115610f20575f80fd5b50610ec687828801610de5565b73ffffffffffffffffffffffffffffffffffffffff81168114610713575f80fd5b5f60208284031215610f5e575f80fd5b8135610f6981610f2d565b9392505050565b5f805f60408486031215610f82575f80fd5b833567ffffffffffffffff80821115610f99575f80fd5b9085019060408288031215610fac575f80fd5b90935060208501359080821115610fc1575f80fd5b50610fce86828701610e2d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561104f5761104f610fdb565b604052919050565b5f67ffffffffffffffff82111561107057611070610fdb565b5060051b60200190565b5f82601f830112611089575f80fd5b8135602061109e61109983611057565b611008565b8083825260208201915060208460051b8701019350868411156110bf575f80fd5b602086015b848110156110e45780356110d781610f2d565b83529183019183016110c4565b509695505050505050565b5f67ffffffffffffffff82111561110857611108610fdb565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f805f60608486031215611146575f80fd5b833567ffffffffffffffff8082111561115d575f80fd5b6111698783880161107a565b945060209150818601358181111561117f575f80fd5b61118b8882890161107a565b945050604080870135828111156111a0575f80fd5b8701601f810189136111b0575f80fd5b80356111be61109982611057565b81815260059190911b8201850190858101908b8311156111dc575f80fd5b8684015b83811015611249578035878111156111f6575f80fd5b8501603f81018e13611206575f80fd5b88810135611216611099826110ef565b8181528f89838501011115611229575f80fd5b818984018c8301375f9181018b01919091528452509187019187016111e0565b50809750505050505050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156112a257818101518382015260200161128a565b50505f910152565b5f60408201848352602060408185015281855180845260608601915060608160051b87010193508287015f5b82811015611358577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261131b81888a01898501611288565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016969096018501955092840192908401906001016112d6565b509398975050505050505050565b5f6020808385031215611377575f80fd5b825167ffffffffffffffff8082111561138e575f80fd5b818501915085601f8301126113a1575f80fd5b81516113af61109982611057565b81815260059190911b830184019084810190888311156113cd575f80fd5b8585015b8381101561143b578051858111156113e7575f80fd5b8601603f81018b136113f7575f80fd5b878101516040611409611099836110ef565b8281528d8284860101111561141c575f80fd5b61142b838c8301848701611288565b86525050509186019186016113d1565b5098975050505050505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126114c2575f80fd5b830160208101925035905067ffffffffffffffff8111156114e1575f80fd5b803603821315610e26575f80fd5b5f604082018583526020604060208501528185835260608501905060608660051b8601019250865f5b87811015611570577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018352611551828a61148f565b61155c878284611448565b965050509183019190830190600101611518565b509298975050505050505050565b5f6020828403121561158e575f80fd5b5051919050565b5f6115a0828361148f565b604085526115b2604086018284611448565b9150506115c2602084018461148f565b85830360208701526115d5838284611448565b9695505050505050565b604081525f6115f16040830186611595565b82810360208401526115d5818587611448565b604080825281018490525f6060600586901b8301810190830187835b888110156116a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18b3603018112611680575f80fd5b61168c858c8301611595565b9450506020928301929190910190600101611620565b50505082810360208401526116b8818587611448565b97965050505050505056fea26469706673582212202f686986933d08b89451b04b2cc3e29ac7fed0a452cbe5fc26fb71a94cb1806a64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"a\x01\0`@R4\x80\x15b\0\0\x12W`\0\x80\xFD[P`@Qb\0\x19\xBA8\x03\x80b\0\x19\xBA\x839\x81\x01`@\x81\x90Rb\0\x005\x91b\0\x01+V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x81\x16`\xC0R\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\xD5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xFB\x91\x90b\0\x01\x93V[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xBA\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01(W`\0\x80\xFD[PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x01BW`\0\x80\xFD[\x84Qb\0\x01O\x81b\0\x01\x12V[` \x86\x01Q\x90\x94Pb\0\x01b\x81b\0\x01\x12V[`@\x86\x01Q\x90\x93Pb\0\x01u\x81b\0\x01\x12V[``\x86\x01Q\x90\x92Pb\0\x01\x88\x81b\0\x01\x12V[\x93\x96\x92\x95P\x90\x93PPV[`\0` \x82\x84\x03\x12\x15b\0\x01\xA6W`\0\x80\xFD[\x81Qb\0\x01\xB3\x81b\0\x01\x12V[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x17\x87b\0\x023`\09`\0\x81\x81a\x07\xE5\x01Ra\x08\x97\x01R`\0\x81\x81a\x01\xDB\x01R\x81\x81a\x02\xF2\x01R\x81\x81a\x04R\x01R\x81\x81a\t\xC2\x01Ra\n\xD5\x01R`\0\x81\x81a\t.\x01Ra\nA\x01R`\0\x81\x81a\x02Y\x01R\x81\x81a\x03\x8A\x01R\x81\x81a\x05\x16\x01Ra\x05\xE0\x01Ra\x17\x87`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x7FW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0NW\x80c\x8D\xA5\xCB[\x14a\x01\rW\x80c\xD0\xF2\xD8\xAC\x14a\x01cW\x80c\xE5\x13^\xC6\x14a\x01\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xA3W`\0\x80\xFD[\x80cX]\xA6(\x14a\0\x8BW\x80cc\xFB\x0B\x96\x14a\0\xADW\x80ci\r\x83 \x14a\0\xCDW\x80c\x89\xA3\xF16\x14a\0\xEDW`\0\x80\xFD[6a\0\x86W\0[`\0\x80\xFD[4\x80\x15a\0\x97W`\0\x80\xFD[Pa\0\xABa\0\xA66`\x04a\x0E\xB0V[a\x01\xC3V[\0[4\x80\x15a\0\xB9W`\0\x80\xFD[Pa\0\xABa\0\xC86`\x04a\x0F\x1CV[a\x04\x80V[4\x80\x15a\0\xD9W`\0\x80\xFD[Pa\0\xABa\0\xE86`\x04a\x0F\x9EV[a\x06\xA5V[4\x80\x15a\0\xF9W`\0\x80\xFD[Pa\0\xABa\x01\x086`\x04a\x0F\x9EV[a\x073V[4\x80\x15a\x01\x19W`\0\x80\xFD[P`\0Ta\x01:\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01oW`\0\x80\xFD[Pa\0\xABa\x01~6`\x04a\x0F\xC2V[a\t\x16V[4\x80\x15a\x01\x8FW`\0\x80\xFD[Pa\0\xABa\x01\x9E6`\x04a\x0E\xB0V[a\n)V[4\x80\x15a\x01\xAFW`\0\x80\xFD[Pa\0\xABa\x01\xBE6`\x04a\x0F\x9EV[a\x0BHV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x022W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02B\x84\x86\x01\x86a\x11\x93V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x02\xE0Wa\x02\xD8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0C9\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02KV[P`\0[\x82Q\x81\x10\x15a\x03LWa\x03D\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[`\x01\x01a\x02\xE4V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x03\xE1\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x13\x1CV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04F\x91\x90\x81\x01\x90a\x13\xDAV[PG\x15a\x04wWa\x04w\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\r\x0EV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a\x05\xA2Wa\x05\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x05hWa\x05ha\x12\xC9V[\x90P` \x02\x01` \x81\x01\x90a\x05}\x91\x90a\x0F\x9EV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C9V[`\x01\x01a\x05\tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x069\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x15tV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x06\x9E\x91\x90\x81\x01\x90a\x13\xDAV[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07&W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[a\x070\x81Ga\r\xADV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\xB4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08e\x91\x90a\x16\x05V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\t\x04W=`\0\x80>=`\0\xFD[PPPPa\t\x12\x82Ga\r\xADV[PPV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x85W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\t\xFB\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x16iV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x15W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04wW=`\0\x80>=`\0\xFD[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\x98W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x0B\x10\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16\x8FV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B*W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B>W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\xC9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\r\x08W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\rhW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\rmV[``\x91P[PP\x90P\x80a\r\xA8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\r\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ELW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E\x80W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x98W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0E\xC6W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xDEW`\0\x80\xFD[a\x0E\xEA\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0F\x03W`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0EnV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0F2W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0FJW`\0\x80\xFD[a\x0FV\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0FoW`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0E\"V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x070W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xB0W`\0\x80\xFD[\x815a\x0F\xBB\x81a\x0F|V[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0F\xD7W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\xEFW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x10\x03W`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x10\x19W`\0\x80\xFD[Pa\x10&\x86\x82\x87\x01a\x0EnV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10\xA9Wa\x10\xA9a\x103V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10\xCBWa\x10\xCBa\x103V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x10\xE6W`\0\x80\xFD[\x815` a\x10\xFBa\x10\xF6\x83a\x10\xB1V[a\x10bV[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x11\x1DW`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x11BW\x805a\x115\x81a\x0F|V[\x83R\x91\x83\x01\x91\x83\x01a\x11\"V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11gWa\x11ga\x103V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\xA8W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xC0W`\0\x80\xFD[a\x11\xCC\x87\x83\x88\x01a\x10\xD5V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\xE3W`\0\x80\xFD[a\x11\xEF\x88\x82\x89\x01a\x10\xD5V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x12\x05W`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x12\x16W`\0\x80\xFD[\x805a\x12$a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x12CW`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12\xB7W\x805\x87\x81\x11\x15a\x12_W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12qW`\0\x80\x81\xFD[\x88\x81\x015a\x12\x81a\x10\xF6\x82a\x11MV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12\x96W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x12GV[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x13\x13W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\xFBV[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x13\xCCW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13\x8F\x81\x88\x8A\x01\x89\x85\x01a\x12\xF8V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x13JV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x13\xEDW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\x05W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x14\x19W`\0\x80\xFD[\x81Qa\x14'a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x14FW`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14\xBAW\x80Q\x85\x81\x11\x15a\x14bW`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x14tW`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x14\x86a\x10\xF6\x83a\x11MV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14\x9BW`\0\x80\x81\xFD[a\x14\xAA\x83\x8C\x83\x01\x84\x87\x01a\x12\xF8V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x14JV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x15EW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15eW`\0\x80\xFD[\x806\x03\x82\x13\x15a\x0EgW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x15\xF7W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15\xD8\x82\x8Aa\x15\x10V[a\x15\xE3\x87\x82\x84a\x14\xC7V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15\x9FV[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x16\x17W`\0\x80\xFD[PQ\x91\x90PV[`\0a\x16*\x82\x83a\x15\x10V[`@\x85Ra\x16<`@\x86\x01\x82\x84a\x14\xC7V[\x91PPa\x16L` \x84\x01\x84a\x15\x10V[\x85\x83\x03` \x87\x01Ra\x16_\x83\x82\x84a\x14\xC7V[\x96\x95PPPPPPV[`@\x81R`\0a\x16|`@\x83\x01\x86a\x16\x1EV[\x82\x81\x03` \x84\x01Ra\x16_\x81\x85\x87a\x14\xC7V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x17/W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x17\rW\x82\x83\xFD[a\x17\x19\x86\x8D\x83\x01a\x16\x1EV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x16\xADV[PPPP\x82\x81\x03` \x84\x01Ra\x17F\x81\x85\x87a\x14\xC7V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 V@\xB0U~\xC4U SV\x7F5s\x11[\x9C\xEB]J\xC2\x86\xAC\nG\x0E\x1E\x07\xDF\x15\x8E(\xE8dsolcC\0\x08\x18\x003", + b"a\x01\0`@R4\x80\x15b\0\0\x11W_\x80\xFD[P`@Qb\0\x19\x1C8\x03\x80b\0\x19\x1C\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01&V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x81\x17\x82U`@Q\x84\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3P`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\xA0R\x83\x81\x16`\xC0R\x81\x16`\x80\x81\x90R`@\x80Qc\x12\xA9)?`\xE2\x1B\x81R\x90QcJ\xA4\xA4\xFC\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15b\0\0\xD1W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\0\xF7\x91\x90b\0\x01\x8BV[`\x01`\x01`\xA0\x1B\x03\x16`\xE0RPb\0\x01\xB0\x92PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01#W_\x80\xFD[PV[_\x80_\x80`\x80\x85\x87\x03\x12\x15b\0\x01:W_\x80\xFD[\x84Qb\0\x01G\x81b\0\x01\x0EV[` \x86\x01Q\x90\x94Pb\0\x01Z\x81b\0\x01\x0EV[`@\x86\x01Q\x90\x93Pb\0\x01m\x81b\0\x01\x0EV[``\x86\x01Q\x90\x92Pb\0\x01\x80\x81b\0\x01\x0EV[\x93\x96\x92\x95P\x90\x93PPV[_` \x82\x84\x03\x12\x15b\0\x01\x9CW_\x80\xFD[\x81Qb\0\x01\xA9\x81b\0\x01\x0EV[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa\x16\xF9b\0\x02#_9_\x81\x81a\x07\xC6\x01Ra\x08v\x01R_\x81\x81a\x01\xCE\x01R\x81\x81a\x02\xE2\x01R\x81\x81a\x04=\x01R\x81\x81a\t\x9C\x01Ra\n\xAA\x01R_\x81\x81a\t\x08\x01Ra\n\x16\x01R_\x81\x81a\x02J\x01R\x81\x81a\x03z\x01R\x81\x81a\x04\xFF\x01Ra\x05\xC9\x01Ra\x16\xF9_\xF3\xFE`\x80`@R`\x046\x10a\0|W_5`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0LW\x80c\x8D\xA5\xCB[\x14a\x01\x05W\x80c\xD0\xF2\xD8\xAC\x14a\x01YW\x80c\xE5\x13^\xC6\x14a\x01xW\x80c\xF2\xFD\xE3\x8B\x14a\x01\x97W_\x80\xFD[\x80cX]\xA6(\x14a\0\x87W\x80cc\xFB\x0B\x96\x14a\0\xA8W\x80ci\r\x83 \x14a\0\xC7W\x80c\x89\xA3\xF16\x14a\0\xE6W_\x80\xFD[6a\0\x83W\0[_\x80\xFD[4\x80\x15a\0\x92W_\x80\xFD[Pa\0\xA6a\0\xA16`\x04a\x0EkV[a\x01\xB6V[\0[4\x80\x15a\0\xB3W_\x80\xFD[Pa\0\xA6a\0\xC26`\x04a\x0E\xD2V[a\x04kV[4\x80\x15a\0\xD2W_\x80\xFD[Pa\0\xA6a\0\xE16`\x04a\x0FNV[a\x06\x89V[4\x80\x15a\0\xF1W_\x80\xFD[Pa\0\xA6a\x01\x006`\x04a\x0FNV[a\x07\x16V[4\x80\x15a\x01\x10W_\x80\xFD[P_Ta\x010\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01dW_\x80\xFD[Pa\0\xA6a\x01s6`\x04a\x0FpV[a\x08\xF0V[4\x80\x15a\x01\x83W_\x80\xFD[Pa\0\xA6a\x01\x926`\x04a\x0EkV[a\t\xFEV[4\x80\x15a\x01\xA2W_\x80\xFD[Pa\0\xA6a\x01\xB16`\x04a\x0FNV[a\x0B\x18V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x02%W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x024\x84\x86\x01\x86a\x114V[\x92P\x92P\x92P_[\x83Q\x81\x10\x15a\x02\xD1Wa\x02\xC9\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x02\x9CWa\x02\x9Ca\x12[V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0C\x07\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x041\x91\x90\x81\x01\x90a\x13fV[PG\x15a\x04bWa\x04b\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\x0C\xD8V[PPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_[\x83\x81\x10\x15a\x05\x8BWa\x05\x83\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x05QWa\x05Qa\x12[V[\x90P` \x02\x01` \x81\x01\x90a\x05f\x91\x90a\x0FNV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C\x07V[`\x01\x01a\x04\xF2V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x06\"\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x14\xEFV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x06=W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x06\x82\x91\x90\x81\x01\x90a\x13fV[PPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[a\x07\x13\x81Ga\rsV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\x96W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08 W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08D\x91\x90a\x15~V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x08\xCCW_\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xDEW=_\x80>=_\xFD[PPPPa\x08\xEC\x82Ga\rsV[PPV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t_W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\t\xD5\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x15\xDFV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\t\xECW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04bW=_\x80>=_\xFD[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\nmW`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\n\xE5\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16\x04V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\n\xFCW_\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\x0EW=_\x80>=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\x98W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0C\xD2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\r.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\r3V[``\x91P[PP\x90P\x80a\rnW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\rnW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[_\x80\x83`\x1F\x84\x01\x12a\r\xF5W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x0CW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0E&W_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x0E=W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ETW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0E&W_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0E~W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\x95W_\x80\xFD[a\x0E\xA1\x88\x83\x89\x01a\r\xE5V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0E\xB9W_\x80\xFD[Pa\x0E\xC6\x87\x82\x88\x01a\x0E-V[\x95\x98\x94\x97P\x95PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0E\xE5W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xFCW_\x80\xFD[a\x0F\x08\x88\x83\x89\x01a\r\xE5V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0F W_\x80\xFD[Pa\x0E\xC6\x87\x82\x88\x01a\r\xE5V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07\x13W_\x80\xFD[_` \x82\x84\x03\x12\x15a\x0F^W_\x80\xFD[\x815a\x0Fi\x81a\x0F-V[\x93\x92PPPV[_\x80_`@\x84\x86\x03\x12\x15a\x0F\x82W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\x99W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x0F\xACW_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x0F\xC1W_\x80\xFD[Pa\x0F\xCE\x86\x82\x87\x01a\x0E-V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10OWa\x10Oa\x0F\xDBV[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10pWa\x10pa\x0F\xDBV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x10\x89W_\x80\xFD[\x815` a\x10\x9Ea\x10\x99\x83a\x10WV[a\x10\x08V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x10\xBFW_\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x10\xE4W\x805a\x10\xD7\x81a\x0F-V[\x83R\x91\x83\x01\x91\x83\x01a\x10\xC4V[P\x96\x95PPPPPPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11\x08Wa\x11\x08a\x0F\xDBV[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x80_``\x84\x86\x03\x12\x15a\x11FW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11]W_\x80\xFD[a\x11i\x87\x83\x88\x01a\x10zV[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\x7FW_\x80\xFD[a\x11\x8B\x88\x82\x89\x01a\x10zV[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x11\xA0W_\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x11\xB0W_\x80\xFD[\x805a\x11\xBEa\x10\x99\x82a\x10WV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x11\xDCW_\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12IW\x805\x87\x81\x11\x15a\x11\xF6W_\x80\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12\x06W_\x80\xFD[\x88\x81\x015a\x12\x16a\x10\x99\x82a\x10\xEFV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12)W_\x80\xFD[\x81\x89\x84\x01\x8C\x83\x017_\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x11\xE0V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x12\xA2W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\x8AV[PP_\x91\x01RV[_`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01_[\x82\x81\x10\x15a\x13XW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13\x1B\x81\x88\x8A\x01\x89\x85\x01a\x12\x88V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x12\xD6V[P\x93\x98\x97PPPPPPPPV[_` \x80\x83\x85\x03\x12\x15a\x13wW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\x8EW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x13\xA1W_\x80\xFD[\x81Qa\x13\xAFa\x10\x99\x82a\x10WV[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x13\xCDW_\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14;W\x80Q\x85\x81\x11\x15a\x13\xE7W_\x80\xFD[\x86\x01`?\x81\x01\x8B\x13a\x13\xF7W_\x80\xFD[\x87\x81\x01Q`@a\x14\ta\x10\x99\x83a\x10\xEFV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14\x1CW_\x80\xFD[a\x14+\x83\x8C\x83\x01\x84\x87\x01a\x12\x88V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x13\xD1V[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x14\xC2W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\xE1W_\x80\xFD[\x806\x03\x82\x13\x15a\x0E&W_\x80\xFD[_`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86_[\x87\x81\x10\x15a\x15pW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15Q\x82\x8Aa\x14\x8FV[a\x15\\\x87\x82\x84a\x14HV[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15\x18V[P\x92\x98\x97PPPPPPPPV[_` \x82\x84\x03\x12\x15a\x15\x8EW_\x80\xFD[PQ\x91\x90PV[_a\x15\xA0\x82\x83a\x14\x8FV[`@\x85Ra\x15\xB2`@\x86\x01\x82\x84a\x14HV[\x91PPa\x15\xC2` \x84\x01\x84a\x14\x8FV[\x85\x83\x03` \x87\x01Ra\x15\xD5\x83\x82\x84a\x14HV[\x96\x95PPPPPPV[`@\x81R_a\x15\xF1`@\x83\x01\x86a\x15\x95V[\x82\x81\x03` \x84\x01Ra\x15\xD5\x81\x85\x87a\x14HV[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x16\xA2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x16\x80W_\x80\xFD[a\x16\x8C\x85\x8C\x83\x01a\x15\x95V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x16 V[PPP\x82\x81\x03` \x84\x01Ra\x16\xB8\x81\x85\x87a\x14HV[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 /hi\x86\x93=\x08\xB8\x94Q\xB0K,\xC3\xE2\x9A\xC7\xFE\xD0\xA4R\xCB\xE5\xFC&\xFBq\xA9L\xB1\x80jdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x60806040526004361061007f5760003560e01c80638da5cb5b1161004e5780638da5cb5b1461010d578063d0f2d8ac14610163578063e5135ec614610183578063f2fde38b146101a357600080fd5b8063585da6281461008b57806363fb0b96146100ad578063690d8320146100cd57806389a3f136146100ed57600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a6366004610eb0565b6101c3565b005b3480156100b957600080fd5b506100ab6100c8366004610f1c565b610480565b3480156100d957600080fd5b506100ab6100e8366004610f9e565b6106a5565b3480156100f957600080fd5b506100ab610108366004610f9e565b610733565b34801561011957600080fd5b5060005461013a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34801561016f57600080fd5b506100ab61017e366004610fc2565b610916565b34801561018f57600080fd5b506100ab61019e366004610eb0565b610a29565b3480156101af57600080fd5b506100ab6101be366004610f9e565b610b48565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610232576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808061024284860186611193565b92509250925060005b83518110156102e0576102d87f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8684815181106102ab576102ab6112c9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610c399092919063ffffffff16565b60010161024b565b5060005b825181101561034c576103447f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8584815181106102ab576102ab6112c9565b6001016102e4565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906103e1907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90859060040161131c565b6000604051808303816000875af1158015610400573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261044691908101906113da565b504715610477576104777f000000000000000000000000000000000000000000000000000000000000000047610d0e565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b838110156105a25761059a7f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff878785818110610568576105686112c9565b905060200201602081019061057d9190610f9e565b73ffffffffffffffffffffffffffffffffffffffff169190610c39565b600101610509565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610639907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9086908690600401611574565b6000604051808303816000875af1158015610658573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261069e91908101906113da565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6107308147610dad565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610841573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108659190611605565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050506109128247610dad565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610985576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906109fb90869086908690600401611669565b600060405180830381600087803b158015610a1557600080fd5b505af1158015610477573d6000803e3d6000fd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a98576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c790610b1090879087908790879060040161168f565b600060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104fd565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60006040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c454400000000000000000000000000000000000060448201526064016104fd565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610d68576040519150601f19603f3d011682016040523d82523d6000602084013e610d6d565b606091505b5050905080610da8576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600080600080600085875af1905080610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064016104fd565b60008083601f840112610e3457600080fd5b50813567ffffffffffffffff811115610e4c57600080fd5b6020830191508360208260051b8501011115610e6757600080fd5b9250929050565b60008083601f840112610e8057600080fd5b50813567ffffffffffffffff811115610e9857600080fd5b602083019150836020828501011115610e6757600080fd5b60008060008060408587031215610ec657600080fd5b843567ffffffffffffffff80821115610ede57600080fd5b610eea88838901610e22565b90965094506020870135915080821115610f0357600080fd5b50610f1087828801610e6e565b95989497509550505050565b60008060008060408587031215610f3257600080fd5b843567ffffffffffffffff80821115610f4a57600080fd5b610f5688838901610e22565b90965094506020870135915080821115610f6f57600080fd5b50610f1087828801610e22565b73ffffffffffffffffffffffffffffffffffffffff8116811461073057600080fd5b600060208284031215610fb057600080fd5b8135610fbb81610f7c565b9392505050565b600080600060408486031215610fd757600080fd5b833567ffffffffffffffff80821115610fef57600080fd5b908501906040828803121561100357600080fd5b9093506020850135908082111561101957600080fd5b5061102686828701610e6e565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156110a9576110a9611033565b604052919050565b600067ffffffffffffffff8211156110cb576110cb611033565b5060051b60200190565b600082601f8301126110e657600080fd5b813560206110fb6110f6836110b1565b611062565b8083825260208201915060208460051b87010193508684111561111d57600080fd5b602086015b8481101561114257803561113581610f7c565b8352918301918301611122565b509695505050505050565b600067ffffffffffffffff82111561116757611167611033565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806000606084860312156111a857600080fd5b833567ffffffffffffffff808211156111c057600080fd5b6111cc878388016110d5565b94506020915081860135818111156111e357600080fd5b6111ef888289016110d5565b9450506040808701358281111561120557600080fd5b8701601f8101891361121657600080fd5b80356112246110f6826110b1565b81815260059190911b8201850190858101908b83111561124357600080fd5b8684015b838110156112b75780358781111561125f5760008081fd5b8501603f81018e136112715760008081fd5b888101356112816110f68261114d565b8181528f898385010111156112965760008081fd5b818984018c83013760009181018b0191909152845250918701918701611247565b50809750505050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156113135781810151838201526020016112fb565b50506000910152565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b828110156113cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261138f81888a018985016112f8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169690960185019550928401929084019060010161134a565b509398975050505050505050565b600060208083850312156113ed57600080fd5b825167ffffffffffffffff8082111561140557600080fd5b818501915085601f83011261141957600080fd5b81516114276110f6826110b1565b81815260059190911b8301840190848101908883111561144657600080fd5b8585015b838110156114ba578051858111156114625760008081fd5b8601603f81018b136114745760008081fd5b8781015160406114866110f68361114d565b8281528d8284860101111561149b5760008081fd5b6114aa838c83018487016112f8565b865250505091860191860161144a565b5098975050505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261154557600080fd5b830160208101925035905067ffffffffffffffff81111561156557600080fd5b803603821315610e6757600080fd5b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b878110156115f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08786030183526115d8828a611510565b6115e38782846114c7565b96505050918301919083019060010161159f565b509298975050505050505050565b60006020828403121561161757600080fd5b5051919050565b600061162a8283611510565b6040855261163c6040860182846114c7565b91505061164c6020840184611510565b858303602087015261165f8382846114c7565b9695505050505050565b60408152600061167c604083018661161e565b828103602084015261165f8185876114c7565b6040808252810184905260006060600586901b830181019083018783805b8981101561172f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c360301811261170d578283fd5b611719868d830161161e565b95505060209384019392909201916001016116ad565b5050505082810360208401526117468185876114c7565b97965050505050505056fea26469706673582212205640b0557ec4552053567f3573115b9ceb5d4ac286ac0a470e1e07df158e28e864736f6c63430008180033 + ///0x60806040526004361061007c575f3560e01c80638da5cb5b1161004c5780638da5cb5b14610105578063d0f2d8ac14610159578063e5135ec614610178578063f2fde38b14610197575f80fd5b8063585da6281461008757806363fb0b96146100a8578063690d8320146100c757806389a3f136146100e6575f80fd5b3661008357005b5f80fd5b348015610092575f80fd5b506100a66100a1366004610e6b565b6101b6565b005b3480156100b3575f80fd5b506100a66100c2366004610ed2565b61046b565b3480156100d2575f80fd5b506100a66100e1366004610f4e565b610689565b3480156100f1575f80fd5b506100a6610100366004610f4e565b610716565b348015610110575f80fd5b505f546101309073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b348015610164575f80fd5b506100a6610173366004610f70565b6108f0565b348015610183575f80fd5b506100a6610192366004610e6b565b6109fe565b3480156101a2575f80fd5b506100a66101b1366004610f4e565b610b18565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610225576040517f933fe52f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808061023484860186611134565b9250925092505f5b83518110156102d1576102c97f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86848151811061029c5761029c61125b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610c079092919063ffffffff16565b60010161023c565b505f5b825181101561033c576103347f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85848151811061029c5761029c61125b565b6001016102d4565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc906103d1907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9085906004016112aa565b5f604051808303815f875af11580156103ec573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104319190810190611366565b504715610462576104627f000000000000000000000000000000000000000000000000000000000000000047610cd8565b50505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146104f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5f5b8381101561058b576105837f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8787858181106105515761055161125b565b90506020020160208101906105669190610f4e565b73ffffffffffffffffffffffffffffffffffffffff169190610c07565b6001016104f2565b506040517f5ae401dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ae401dc90610622907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90869086906004016114ef565b5f604051808303815f875af115801561063d573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106829190810190611366565b5050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104e7565b6107138147610d73565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104e7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610820573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610844919061157e565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d906024015f604051808303815f87803b1580156108cc575f80fd5b505af11580156108de573d5f803e3d5ffd5b505050506108ec8247610d73565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461095f576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f0d33588400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690630d335884906109d5908690869086906004016115df565b5f604051808303815f87803b1580156109ec575f80fd5b505af1158015610462573d5f803e3d5ffd5b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610a6d576040517f8c6e5d7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f13fb72c700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906313fb72c790610ae5908790879087908790600401611604565b5f604051808303815f87803b158015610afc575f80fd5b505af1158015610b0e573d5f803e3d5ffd5b5050505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016104e7565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505080610cd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f415050524f56455f4641494c454400000000000000000000000000000000000060448201526064016104e7565b50505050565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114610d2e576040519150601f19603f3d011682016040523d82523d5f602084013e610d33565b606091505b5050905080610d6e576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f805f805f85875af1905080610d6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064016104e7565b5f8083601f840112610df5575f80fd5b50813567ffffffffffffffff811115610e0c575f80fd5b6020830191508360208260051b8501011115610e26575f80fd5b9250929050565b5f8083601f840112610e3d575f80fd5b50813567ffffffffffffffff811115610e54575f80fd5b602083019150836020828501011115610e26575f80fd5b5f805f8060408587031215610e7e575f80fd5b843567ffffffffffffffff80821115610e95575f80fd5b610ea188838901610de5565b90965094506020870135915080821115610eb9575f80fd5b50610ec687828801610e2d565b95989497509550505050565b5f805f8060408587031215610ee5575f80fd5b843567ffffffffffffffff80821115610efc575f80fd5b610f0888838901610de5565b90965094506020870135915080821115610f20575f80fd5b50610ec687828801610de5565b73ffffffffffffffffffffffffffffffffffffffff81168114610713575f80fd5b5f60208284031215610f5e575f80fd5b8135610f6981610f2d565b9392505050565b5f805f60408486031215610f82575f80fd5b833567ffffffffffffffff80821115610f99575f80fd5b9085019060408288031215610fac575f80fd5b90935060208501359080821115610fc1575f80fd5b50610fce86828701610e2d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561104f5761104f610fdb565b604052919050565b5f67ffffffffffffffff82111561107057611070610fdb565b5060051b60200190565b5f82601f830112611089575f80fd5b8135602061109e61109983611057565b611008565b8083825260208201915060208460051b8701019350868411156110bf575f80fd5b602086015b848110156110e45780356110d781610f2d565b83529183019183016110c4565b509695505050505050565b5f67ffffffffffffffff82111561110857611108610fdb565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f805f60608486031215611146575f80fd5b833567ffffffffffffffff8082111561115d575f80fd5b6111698783880161107a565b945060209150818601358181111561117f575f80fd5b61118b8882890161107a565b945050604080870135828111156111a0575f80fd5b8701601f810189136111b0575f80fd5b80356111be61109982611057565b81815260059190911b8201850190858101908b8311156111dc575f80fd5b8684015b83811015611249578035878111156111f6575f80fd5b8501603f81018e13611206575f80fd5b88810135611216611099826110ef565b8181528f89838501011115611229575f80fd5b818984018c8301375f9181018b01919091528452509187019187016111e0565b50809750505050505050509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156112a257818101518382015260200161128a565b50505f910152565b5f60408201848352602060408185015281855180845260608601915060608160051b87010193508287015f5b82811015611358577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184528151805180885261131b81888a01898501611288565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016969096018501955092840192908401906001016112d6565b509398975050505050505050565b5f6020808385031215611377575f80fd5b825167ffffffffffffffff8082111561138e575f80fd5b818501915085601f8301126113a1575f80fd5b81516113af61109982611057565b81815260059190911b830184019084810190888311156113cd575f80fd5b8585015b8381101561143b578051858111156113e7575f80fd5b8601603f81018b136113f7575f80fd5b878101516040611409611099836110ef565b8281528d8284860101111561141c575f80fd5b61142b838c8301848701611288565b86525050509186019186016113d1565b5098975050505050505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126114c2575f80fd5b830160208101925035905067ffffffffffffffff8111156114e1575f80fd5b803603821315610e26575f80fd5b5f604082018583526020604060208501528185835260608501905060608660051b8601019250865f5b87811015611570577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0878603018352611551828a61148f565b61155c878284611448565b965050509183019190830190600101611518565b509298975050505050505050565b5f6020828403121561158e575f80fd5b5051919050565b5f6115a0828361148f565b604085526115b2604086018284611448565b9150506115c2602084018461148f565b85830360208701526115d5838284611448565b9695505050505050565b604081525f6115f16040830186611595565b82810360208401526115d5818587611448565b604080825281018490525f6060600586901b8301810190830187835b888110156116a2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa086850301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18b3603018112611680575f80fd5b61168c858c8301611595565b9450506020928301929190910190600101611620565b50505082810360208401526116b8818587611448565b97965050505050505056fea26469706673582212202f686986933d08b89451b04b2cc3e29ac7fed0a452cbe5fc26fb71a94cb1806a64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x046\x10a\0\x7FW`\x005`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0NW\x80c\x8D\xA5\xCB[\x14a\x01\rW\x80c\xD0\xF2\xD8\xAC\x14a\x01cW\x80c\xE5\x13^\xC6\x14a\x01\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xA3W`\0\x80\xFD[\x80cX]\xA6(\x14a\0\x8BW\x80cc\xFB\x0B\x96\x14a\0\xADW\x80ci\r\x83 \x14a\0\xCDW\x80c\x89\xA3\xF16\x14a\0\xEDW`\0\x80\xFD[6a\0\x86W\0[`\0\x80\xFD[4\x80\x15a\0\x97W`\0\x80\xFD[Pa\0\xABa\0\xA66`\x04a\x0E\xB0V[a\x01\xC3V[\0[4\x80\x15a\0\xB9W`\0\x80\xFD[Pa\0\xABa\0\xC86`\x04a\x0F\x1CV[a\x04\x80V[4\x80\x15a\0\xD9W`\0\x80\xFD[Pa\0\xABa\0\xE86`\x04a\x0F\x9EV[a\x06\xA5V[4\x80\x15a\0\xF9W`\0\x80\xFD[Pa\0\xABa\x01\x086`\x04a\x0F\x9EV[a\x073V[4\x80\x15a\x01\x19W`\0\x80\xFD[P`\0Ta\x01:\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01oW`\0\x80\xFD[Pa\0\xABa\x01~6`\x04a\x0F\xC2V[a\t\x16V[4\x80\x15a\x01\x8FW`\0\x80\xFD[Pa\0\xABa\x01\x9E6`\x04a\x0E\xB0V[a\n)V[4\x80\x15a\x01\xAFW`\0\x80\xFD[Pa\0\xABa\x01\xBE6`\x04a\x0F\x9EV[a\x0BHV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x022W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x80a\x02B\x84\x86\x01\x86a\x11\x93V[\x92P\x92P\x92P`\0[\x83Q\x81\x10\x15a\x02\xE0Wa\x02\xD8\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0C9\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02KV[P`\0[\x82Q\x81\x10\x15a\x03LWa\x03D\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x84\x81Q\x81\x10a\x02\xABWa\x02\xABa\x12\xC9V[`\x01\x01a\x02\xE4V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x03\xE1\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x85\x90`\x04\x01a\x13\x1CV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x04\0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x04F\x91\x90\x81\x01\x90a\x13\xDAV[PG\x15a\x04wWa\x04w\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\r\x0EV[PPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x05\x06W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0[\x83\x81\x10\x15a\x05\xA2Wa\x05\x9A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x05hWa\x05ha\x12\xC9V[\x90P` \x02\x01` \x81\x01\x90a\x05}\x91\x90a\x0F\x9EV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C9V[`\x01\x01a\x05\tV[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x069\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x15tV[`\0`@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x06XW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x06\x9E\x91\x90\x81\x01\x90a\x13\xDAV[PPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07&W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[a\x070\x81Ga\r\xADV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\xB4W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R`\0\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08AW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08e\x91\x90a\x16\x05V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\xF0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\t\x04W=`\0\x80>=`\0\xFD[PPPPa\t\x12\x82Ga\r\xADV[PPV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\x85W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\t\xFB\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x16iV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\n\x15W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x04wW=`\0\x80>=`\0\xFD[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\x98W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\x0B\x10\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16\x8FV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0B*W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0B>W=`\0\x80>=`\0\xFD[PPPPPPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\xC9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` `\0`D\x83`\0\x89Z\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\r\x08W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[PPPPV[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\rhW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\rmV[``\x91P[PP\x90P\x80a\r\xA8W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\r\xA8W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xFDV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E4W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ELW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a\x0E\x80W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x98W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0EgW`\0\x80\xFD[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0E\xC6W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xDEW`\0\x80\xFD[a\x0E\xEA\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0F\x03W`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0EnV[\x95\x98\x94\x97P\x95PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x0F2W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0FJW`\0\x80\xFD[a\x0FV\x88\x83\x89\x01a\x0E\"V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0FoW`\0\x80\xFD[Pa\x0F\x10\x87\x82\x88\x01a\x0E\"V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x070W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a\x0F\xB0W`\0\x80\xFD[\x815a\x0F\xBB\x81a\x0F|V[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0F\xD7W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\xEFW`\0\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x10\x03W`\0\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x10\x19W`\0\x80\xFD[Pa\x10&\x86\x82\x87\x01a\x0EnV[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10\xA9Wa\x10\xA9a\x103V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10\xCBWa\x10\xCBa\x103V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a\x10\xE6W`\0\x80\xFD[\x815` a\x10\xFBa\x10\xF6\x83a\x10\xB1V[a\x10bV[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x11\x1DW`\0\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x11BW\x805a\x115\x81a\x0F|V[\x83R\x91\x83\x01\x91\x83\x01a\x11\"V[P\x96\x95PPPPPPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11gWa\x11ga\x103V[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x11\xA8W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11\xC0W`\0\x80\xFD[a\x11\xCC\x87\x83\x88\x01a\x10\xD5V[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\xE3W`\0\x80\xFD[a\x11\xEF\x88\x82\x89\x01a\x10\xD5V[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x12\x05W`\0\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x12\x16W`\0\x80\xFD[\x805a\x12$a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x12CW`\0\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12\xB7W\x805\x87\x81\x11\x15a\x12_W`\0\x80\x81\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12qW`\0\x80\x81\xFD[\x88\x81\x015a\x12\x81a\x10\xF6\x82a\x11MV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12\x96W`\0\x80\x81\xFD[\x81\x89\x84\x01\x8C\x83\x017`\0\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x12GV[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x13\x13W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\xFBV[PP`\0\x91\x01RV[`\0`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01`\0[\x82\x81\x10\x15a\x13\xCCW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13\x8F\x81\x88\x8A\x01\x89\x85\x01a\x12\xF8V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x13JV[P\x93\x98\x97PPPPPPPPV[`\0` \x80\x83\x85\x03\x12\x15a\x13\xEDW`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x14\x05W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x14\x19W`\0\x80\xFD[\x81Qa\x14'a\x10\xF6\x82a\x10\xB1V[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x14FW`\0\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14\xBAW\x80Q\x85\x81\x11\x15a\x14bW`\0\x80\x81\xFD[\x86\x01`?\x81\x01\x8B\x13a\x14tW`\0\x80\x81\xFD[\x87\x81\x01Q`@a\x14\x86a\x10\xF6\x83a\x11MV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14\x9BW`\0\x80\x81\xFD[a\x14\xAA\x83\x8C\x83\x01\x84\x87\x01a\x12\xF8V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x14JV[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P`\0` \x82\x84\x01\x01R`\0` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x15EW`\0\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15eW`\0\x80\xFD[\x806\x03\x82\x13\x15a\x0EgW`\0\x80\xFD[`\0`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86`\0[\x87\x81\x10\x15a\x15\xF7W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15\xD8\x82\x8Aa\x15\x10V[a\x15\xE3\x87\x82\x84a\x14\xC7V[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15\x9FV[P\x92\x98\x97PPPPPPPPV[`\0` \x82\x84\x03\x12\x15a\x16\x17W`\0\x80\xFD[PQ\x91\x90PV[`\0a\x16*\x82\x83a\x15\x10V[`@\x85Ra\x16<`@\x86\x01\x82\x84a\x14\xC7V[\x91PPa\x16L` \x84\x01\x84a\x15\x10V[\x85\x83\x03` \x87\x01Ra\x16_\x83\x82\x84a\x14\xC7V[\x96\x95PPPPPPV[`@\x81R`\0a\x16|`@\x83\x01\x86a\x16\x1EV[\x82\x81\x03` \x84\x01Ra\x16_\x81\x85\x87a\x14\xC7V[`@\x80\x82R\x81\x01\x84\x90R`\0```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83\x80[\x89\x81\x10\x15a\x17/W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x84R\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8C6\x03\x01\x81\x12a\x17\rW\x82\x83\xFD[a\x17\x19\x86\x8D\x83\x01a\x16\x1EV[\x95PP` \x93\x84\x01\x93\x92\x90\x92\x01\x91`\x01\x01a\x16\xADV[PPPP\x82\x81\x03` \x84\x01Ra\x17F\x81\x85\x87a\x14\xC7V[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 V@\xB0U~\xC4U SV\x7F5s\x11[\x9C\xEB]J\xC2\x86\xAC\nG\x0E\x1E\x07\xDF\x15\x8E(\xE8dsolcC\0\x08\x18\x003", + b"`\x80`@R`\x046\x10a\0|W_5`\xE0\x1C\x80c\x8D\xA5\xCB[\x11a\0LW\x80c\x8D\xA5\xCB[\x14a\x01\x05W\x80c\xD0\xF2\xD8\xAC\x14a\x01YW\x80c\xE5\x13^\xC6\x14a\x01xW\x80c\xF2\xFD\xE3\x8B\x14a\x01\x97W_\x80\xFD[\x80cX]\xA6(\x14a\0\x87W\x80cc\xFB\x0B\x96\x14a\0\xA8W\x80ci\r\x83 \x14a\0\xC7W\x80c\x89\xA3\xF16\x14a\0\xE6W_\x80\xFD[6a\0\x83W\0[_\x80\xFD[4\x80\x15a\0\x92W_\x80\xFD[Pa\0\xA6a\0\xA16`\x04a\x0EkV[a\x01\xB6V[\0[4\x80\x15a\0\xB3W_\x80\xFD[Pa\0\xA6a\0\xC26`\x04a\x0E\xD2V[a\x04kV[4\x80\x15a\0\xD2W_\x80\xFD[Pa\0\xA6a\0\xE16`\x04a\x0FNV[a\x06\x89V[4\x80\x15a\0\xF1W_\x80\xFD[Pa\0\xA6a\x01\x006`\x04a\x0FNV[a\x07\x16V[4\x80\x15a\x01\x10W_\x80\xFD[P_Ta\x010\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01dW_\x80\xFD[Pa\0\xA6a\x01s6`\x04a\x0FpV[a\x08\xF0V[4\x80\x15a\x01\x83W_\x80\xFD[Pa\0\xA6a\x01\x926`\x04a\x0EkV[a\t\xFEV[4\x80\x15a\x01\xA2W_\x80\xFD[Pa\0\xA6a\x01\xB16`\x04a\x0FNV[a\x0B\x18V[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x02%W`@Q\x7F\x93?\xE5/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x024\x84\x86\x01\x86a\x114V[\x92P\x92P\x92P_[\x83Q\x81\x10\x15a\x02\xD1Wa\x02\xC9\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x84\x81Q\x81\x10a\x02\x9CWa\x02\x9Ca\x12[V[` \x02` \x01\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x0C\x07\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[`\x01\x01a\x02=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x041\x91\x90\x81\x01\x90a\x13fV[PG\x15a\x04bWa\x04b\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Ga\x0C\xD8V[PPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x04\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[_[\x83\x81\x10\x15a\x05\x8BWa\x05\x83\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x87\x85\x81\x81\x10a\x05QWa\x05Qa\x12[V[\x90P` \x02\x01` \x81\x01\x90a\x05f\x91\x90a\x0FNV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x91\x90a\x0C\x07V[`\x01\x01a\x04\xF2V[P`@Q\x7FZ\xE4\x01\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90cZ\xE4\x01\xDC\x90a\x06\"\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x86\x90\x86\x90`\x04\x01a\x14\xEFV[_`@Q\x80\x83\x03\x81_\x87Z\xF1\x15\x80\x15a\x06=W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x06\x82\x91\x90\x81\x01\x90a\x13fV[PPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[a\x07\x13\x81Ga\rsV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\x96W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[`@Q\x7Fp\xA0\x821\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R0`\x04\x82\x01R_\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08 W=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08D\x91\x90a\x15~V[`@Q\x7F.\x1A}M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x81\x01\x82\x90R\x90\x91P\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c.\x1A}M\x90`$\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x08\xCCW_\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xDEW=_\x80>=_\xFD[PPPPa\x08\xEC\x82Ga\rsV[PPV[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t_W`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\r3X\x84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\r3X\x84\x90a\t\xD5\x90\x86\x90\x86\x90\x86\x90`\x04\x01a\x15\xDFV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\t\xECW_\x80\xFD[PZ\xF1\x15\x80\x15a\x04bW=_\x80>=_\xFD[3s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\nmW`@Q\x7F\x8Cn]q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x13\xFBr\xC7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x90c\x13\xFBr\xC7\x90a\n\xE5\x90\x87\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x16\x04V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\n\xFCW_\x80\xFD[PZ\xF1\x15\x80\x15a\x0B\x0EW=_\x80>=_\xFD[PPPPPPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x0B\x98W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`@Q\x7F\t^\xA7\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`\x04\x82\x01R\x82`$\x82\x01R` _`D\x83_\x89Z\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x0C\xD2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FAPPROVE_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[PPPPV[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\r.W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\r3V[``\x91P[PP\x90P\x80a\rnW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\rnW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x04\xE7V[_\x80\x83`\x1F\x84\x01\x12a\r\xF5W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0E\x0CW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x0E&W_\x80\xFD[\x92P\x92\x90PV[_\x80\x83`\x1F\x84\x01\x12a\x0E=W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0ETW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x0E&W_\x80\xFD[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0E~W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\x95W_\x80\xFD[a\x0E\xA1\x88\x83\x89\x01a\r\xE5V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0E\xB9W_\x80\xFD[Pa\x0E\xC6\x87\x82\x88\x01a\x0E-V[\x95\x98\x94\x97P\x95PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a\x0E\xE5W_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0E\xFCW_\x80\xFD[a\x0F\x08\x88\x83\x89\x01a\r\xE5V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x0F W_\x80\xFD[Pa\x0E\xC6\x87\x82\x88\x01a\r\xE5V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x07\x13W_\x80\xFD[_` \x82\x84\x03\x12\x15a\x0F^W_\x80\xFD[\x815a\x0Fi\x81a\x0F-V[\x93\x92PPPV[_\x80_`@\x84\x86\x03\x12\x15a\x0F\x82W_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0F\x99W_\x80\xFD[\x90\x85\x01\x90`@\x82\x88\x03\x12\x15a\x0F\xACW_\x80\xFD[\x90\x93P` \x85\x015\x90\x80\x82\x11\x15a\x0F\xC1W_\x80\xFD[Pa\x0F\xCE\x86\x82\x87\x01a\x0E-V[\x94\x97\x90\x96P\x93\x94PPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x10OWa\x10Oa\x0F\xDBV[`@R\x91\x90PV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x10pWa\x10pa\x0F\xDBV[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a\x10\x89W_\x80\xFD[\x815` a\x10\x9Ea\x10\x99\x83a\x10WV[a\x10\x08V[\x80\x83\x82R` \x82\x01\x91P` \x84`\x05\x1B\x87\x01\x01\x93P\x86\x84\x11\x15a\x10\xBFW_\x80\xFD[` \x86\x01[\x84\x81\x10\x15a\x10\xE4W\x805a\x10\xD7\x81a\x0F-V[\x83R\x91\x83\x01\x91\x83\x01a\x10\xC4V[P\x96\x95PPPPPPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a\x11\x08Wa\x11\x08a\x0F\xDBV[P`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16` \x01\x90V[_\x80_``\x84\x86\x03\x12\x15a\x11FW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x11]W_\x80\xFD[a\x11i\x87\x83\x88\x01a\x10zV[\x94P` \x91P\x81\x86\x015\x81\x81\x11\x15a\x11\x7FW_\x80\xFD[a\x11\x8B\x88\x82\x89\x01a\x10zV[\x94PP`@\x80\x87\x015\x82\x81\x11\x15a\x11\xA0W_\x80\xFD[\x87\x01`\x1F\x81\x01\x89\x13a\x11\xB0W_\x80\xFD[\x805a\x11\xBEa\x10\x99\x82a\x10WV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x85\x01\x90\x85\x81\x01\x90\x8B\x83\x11\x15a\x11\xDCW_\x80\xFD[\x86\x84\x01[\x83\x81\x10\x15a\x12IW\x805\x87\x81\x11\x15a\x11\xF6W_\x80\xFD[\x85\x01`?\x81\x01\x8E\x13a\x12\x06W_\x80\xFD[\x88\x81\x015a\x12\x16a\x10\x99\x82a\x10\xEFV[\x81\x81R\x8F\x89\x83\x85\x01\x01\x11\x15a\x12)W_\x80\xFD[\x81\x89\x84\x01\x8C\x83\x017_\x91\x81\x01\x8B\x01\x91\x90\x91R\x84RP\x91\x87\x01\x91\x87\x01a\x11\xE0V[P\x80\x97PPPPPPPP\x92P\x92P\x92V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a\x12\xA2W\x81\x81\x01Q\x83\x82\x01R` \x01a\x12\x8AV[PP_\x91\x01RV[_`@\x82\x01\x84\x83R` `@\x81\x85\x01R\x81\x85Q\x80\x84R``\x86\x01\x91P``\x81`\x05\x1B\x87\x01\x01\x93P\x82\x87\x01_[\x82\x81\x10\x15a\x13XW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x84R\x81Q\x80Q\x80\x88Ra\x13\x1B\x81\x88\x8A\x01\x89\x85\x01a\x12\x88V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x96\x90\x96\x01\x85\x01\x95P\x92\x84\x01\x92\x90\x84\x01\x90`\x01\x01a\x12\xD6V[P\x93\x98\x97PPPPPPPPV[_` \x80\x83\x85\x03\x12\x15a\x13wW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x13\x8EW_\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x13\xA1W_\x80\xFD[\x81Qa\x13\xAFa\x10\x99\x82a\x10WV[\x81\x81R`\x05\x91\x90\x91\x1B\x83\x01\x84\x01\x90\x84\x81\x01\x90\x88\x83\x11\x15a\x13\xCDW_\x80\xFD[\x85\x85\x01[\x83\x81\x10\x15a\x14;W\x80Q\x85\x81\x11\x15a\x13\xE7W_\x80\xFD[\x86\x01`?\x81\x01\x8B\x13a\x13\xF7W_\x80\xFD[\x87\x81\x01Q`@a\x14\ta\x10\x99\x83a\x10\xEFV[\x82\x81R\x8D\x82\x84\x86\x01\x01\x11\x15a\x14\x1CW_\x80\xFD[a\x14+\x83\x8C\x83\x01\x84\x87\x01a\x12\x88V[\x86RPPP\x91\x86\x01\x91\x86\x01a\x13\xD1V[P\x98\x97PPPPPPPPV[\x81\x83R\x81\x81` \x85\x017P_` \x82\x84\x01\x01R_` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x84\x01\x01\x90P\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a\x14\xC2W_\x80\xFD[\x83\x01` \x81\x01\x92P5\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14\xE1W_\x80\xFD[\x806\x03\x82\x13\x15a\x0E&W_\x80\xFD[_`@\x82\x01\x85\x83R` `@` \x85\x01R\x81\x85\x83R``\x85\x01\x90P``\x86`\x05\x1B\x86\x01\x01\x92P\x86_[\x87\x81\x10\x15a\x15pW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x87\x86\x03\x01\x83Ra\x15Q\x82\x8Aa\x14\x8FV[a\x15\\\x87\x82\x84a\x14HV[\x96PPP\x91\x83\x01\x91\x90\x83\x01\x90`\x01\x01a\x15\x18V[P\x92\x98\x97PPPPPPPPV[_` \x82\x84\x03\x12\x15a\x15\x8EW_\x80\xFD[PQ\x91\x90PV[_a\x15\xA0\x82\x83a\x14\x8FV[`@\x85Ra\x15\xB2`@\x86\x01\x82\x84a\x14HV[\x91PPa\x15\xC2` \x84\x01\x84a\x14\x8FV[\x85\x83\x03` \x87\x01Ra\x15\xD5\x83\x82\x84a\x14HV[\x96\x95PPPPPPV[`@\x81R_a\x15\xF1`@\x83\x01\x86a\x15\x95V[\x82\x81\x03` \x84\x01Ra\x15\xD5\x81\x85\x87a\x14HV[`@\x80\x82R\x81\x01\x84\x90R_```\x05\x86\x90\x1B\x83\x01\x81\x01\x90\x83\x01\x87\x83[\x88\x81\x10\x15a\x16\xA2W\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x86\x85\x03\x01\x83R\x815\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x8B6\x03\x01\x81\x12a\x16\x80W_\x80\xFD[a\x16\x8C\x85\x8C\x83\x01a\x15\x95V[\x94PP` \x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x16 V[PPP\x82\x81\x03` \x84\x01Ra\x16\xB8\x81\x85\x87a\x14HV[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 /hi\x86\x93=\x08\xB8\x94Q\xB0K,\xC3\xE2\x9A\xC7\xFE\xD0\xA4R\xCB\xE5\xFC&\xFBq\xA9L\xB1\x80jdsolcC\0\x08\x18\x003", ); /**```solidity struct InputToken { address token; uint256 amount; uint256 maxAmount; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, - pub maxAmount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub maxAmount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -410,8 +424,8 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -628,17 +642,28 @@ struct InputToken { address token; uint256 amount; uint256 maxAmount; } /**```solidity struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 deadline; address additionalValidationContract; bytes additionalValidationData; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OrderInfo { + #[allow(missing_docs)] pub reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, - pub nonce: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub nonce: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub additionalValidationContract: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub additionalValidationData: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -654,8 +679,8 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, alloy::sol_types::private::Bytes, ); @@ -924,14 +949,22 @@ struct OrderInfo { address reactor; address swapper; uint256 nonce; uint256 dead /**```solidity struct OutputToken { address token; uint256 amount; address recipient; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct OutputToken { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -943,7 +976,7 @@ struct OutputToken { address token; uint256 amount; address recipient; } #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -1157,18 +1190,28 @@ struct OutputToken { address token; uint256 amount; address recipient; } /**```solidity struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; bytes sig; bytes32 hash; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ResolvedOrder { + #[allow(missing_docs)] pub info: ::RustType, + #[allow(missing_docs)] pub input: ::RustType, + #[allow(missing_docs)] pub outputs: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub hash: alloy::sol_types::private::FixedBytes<32>, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1445,13 +1488,20 @@ struct ResolvedOrder { OrderInfo info; InputToken input; OutputToken[] outputs; /**```solidity struct SignedOrder { bytes order; bytes sig; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignedOrder { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1657,10 +1707,15 @@ struct SignedOrder { bytes order; bytes sig; } ```solidity error CallerNotWhitelisted(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct CallerNotWhitelisted {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1716,10 +1771,15 @@ error CallerNotWhitelisted(); ```solidity error MsgSenderNotReactor(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct MsgSenderNotReactor {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1775,10 +1835,15 @@ error MsgSenderNotReactor(); ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1834,7 +1899,12 @@ error NativeTransferFailed(); ```solidity event OwnershipTransferred(address indexed user, address indexed newOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct OwnershipTransferred { #[allow(missing_docs)] @@ -1842,7 +1912,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1904,6 +1979,21 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1952,12 +2042,16 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity constructor(address _whitelistedCaller, address _reactor, address _owner, address _swapRouter02); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _whitelistedCaller: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _reactor: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _swapRouter02: alloy::sol_types::private::Address, } const _: () = { @@ -2053,17 +2147,24 @@ constructor(address _whitelistedCaller, address _reactor, address _owner, addres ```solidity function execute(SignedOrder memory order, bytes memory callbackData) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`execute((bytes,bytes),bytes)`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2181,19 +2282,26 @@ function execute(SignedOrder memory order, bytes memory callbackData) external; ```solidity function executeBatch(SignedOrder[] memory orders, bytes memory callbackData) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[],bytes)`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2318,21 +2426,28 @@ function executeBatch(SignedOrder[] memory orders, bytes memory callbackData) ex ```solidity function multicall(address[] memory tokensToApprove, bytes[] memory multicallData) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct multicallCall { + #[allow(missing_docs)] pub tokensToApprove: alloy::sol_types::private::Vec< alloy::sol_types::private::Address, >, + #[allow(missing_docs)] pub multicallData: alloy::sol_types::private::Vec< alloy::sol_types::private::Bytes, >, } ///Container type for the return parameters of the [`multicall(address[],bytes[])`](multicallCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct multicallReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2455,16 +2570,22 @@ function multicall(address[] memory tokensToApprove, bytes[] memory multicallDat ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2568,19 +2689,26 @@ function owner() external view returns (address); ```solidity function reactorCallback(ResolvedOrder[] memory, bytes memory callbackData) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)`](reactorCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct reactorCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2707,16 +2835,22 @@ function reactorCallback(ResolvedOrder[] memory, bytes memory callbackData) exte ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2828,16 +2962,22 @@ function transferOwnership(address newOwner) external; ```solidity function unwrapWETH(address recipient) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unwrapWETHCall { + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`unwrapWETH(address)`](unwrapWETHCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct unwrapWETHReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2945,16 +3085,22 @@ function unwrapWETH(address recipient) external; ```solidity function withdrawETH(address recipient) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawETHCall { + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`withdrawETH(address)`](withdrawETHCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawETHReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -3060,13 +3206,21 @@ function withdrawETH(address recipient) external; }; ///Container for all the [`SwapRouter02Executor`](self) function calls. pub enum SwapRouter02ExecutorCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] multicall(multicallCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] reactorCallback(reactorCallbackCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), + #[allow(missing_docs)] unwrapWETH(unwrapWETHCall), + #[allow(missing_docs)] withdrawETH(withdrawETHCall), } #[automatically_derived] @@ -3127,7 +3281,7 @@ function withdrawETH(address recipient) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3250,7 +3404,7 @@ function withdrawETH(address recipient) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3339,8 +3493,11 @@ function withdrawETH(address recipient) external; } ///Container for all the [`SwapRouter02Executor`](self) custom errors. pub enum SwapRouter02ExecutorErrors { + #[allow(missing_docs)] CallerNotWhitelisted(CallerNotWhitelisted), + #[allow(missing_docs)] MsgSenderNotReactor(MsgSenderNotReactor), + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), } #[automatically_derived] @@ -3385,7 +3542,7 @@ function withdrawETH(address recipient) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3443,7 +3600,7 @@ function withdrawETH(address recipient) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3491,6 +3648,7 @@ function withdrawETH(address recipient) external; } ///Container for all the [`SwapRouter02Executor`](self) events. pub enum SwapRouter02ExecutorEvents { + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/uint16arraylibrary.rs b/crates/bindings-uniswapx/src/uint16arraylibrary.rs index 45910eb..8d3c505 100644 --- a/crates/bindings-uniswapx/src/uint16arraylibrary.rs +++ b/crates/bindings-uniswapx/src/uint16arraylibrary.rs @@ -9,29 +9,35 @@ interface Uint16ArrayLibrary {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod Uint16ArrayLibrary { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122055ebf86f55f9e61b825564650c84a493cfe2e761edcda7b913ec71c56b5ee4d864736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208ce3892a583a2bd65d3fb3b57ce2cfff55a6b4f033c72de8ff277ee762c76f3264736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 U\xEB\xF8oU\xF9\xE6\x1B\x82Ude\x0C\x84\xA4\x93\xCF\xE2\xE7a\xED\xCD\xA7\xB9\x13\xECq\xC5k^\xE4\xD8dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x8C\xE3\x89*X:+\xD6]?\xB3\xB5|\xE2\xCF\xFFU\xA6\xB4\xF03\xC7-\xE8\xFF'~\xE7b\xC7o2dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122055ebf86f55f9e61b825564650c84a493cfe2e761edcda7b913ec71c56b5ee4d864736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212208ce3892a583a2bd65d3fb3b57ce2cfff55a6b4f033c72de8ff277ee762c76f3264736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 U\xEB\xF8oU\xF9\xE6\x1B\x82Ude\x0C\x84\xA4\x93\xCF\xE2\xE7a\xED\xCD\xA7\xB9\x13\xECq\xC5k^\xE4\xD8dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x8C\xE3\x89*X:+\xD6]?\xB3\xB5|\xE2\xCF\xFFU\xA6\xB4\xF03\xC7-\xE8\xFF'~\xE7b\xC7o2dsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`Uint16ArrayLibrary`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/v2dutchorderlib.rs b/crates/bindings-uniswapx/src/v2dutchorderlib.rs index 63dabc2..035b57d 100644 --- a/crates/bindings-uniswapx/src/v2dutchorderlib.rs +++ b/crates/bindings-uniswapx/src/v2dutchorderlib.rs @@ -9,29 +9,35 @@ interface V2DutchOrderLib {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod V2DutchOrderLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206cf6da8f394d53af91521d7e4891950fc2ce501ad001d471d779209e8470c50464736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d63f61f7da1e83a93c1af7cf3182eee5a650072629ca1ae5e33ad7305f4940964736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 l\xF6\xDA\x8F9MS\xAF\x91R\x1D~H\x91\x95\x0F\xC2\xCEP\x1A\xD0\x01\xD4q\xD7y \x9E\x84p\xC5\x04dsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x9Dc\xF6\x1F}\xA1\xE8:\x93\xC1\xAF|\xF3\x18.\xEEZe\0rb\x9C\xA1\xAE^3\xADs\x05\xF4\x94\tdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206cf6da8f394d53af91521d7e4891950fc2ce501ad001d471d779209e8470c50464736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212209d63f61f7da1e83a93c1af7cf3182eee5a650072629ca1ae5e33ad7305f4940964736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 l\xF6\xDA\x8F9MS\xAF\x91R\x1D~H\x91\x95\x0F\xC2\xCEP\x1A\xD0\x01\xD4q\xD7y \x9E\x84p\xC5\x04dsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 \x9Dc\xF6\x1F}\xA1\xE8:\x93\xC1\xAF|\xF3\x18.\xEEZe\0rb\x9C\xA1\xAE^3\xADs\x05\xF4\x94\tdsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`V2DutchOrderLib`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/v2dutchorderreactor.rs b/crates/bindings-uniswapx/src/v2dutchorderreactor.rs index 270e0c1..ca4b859 100644 --- a/crates/bindings-uniswapx/src/v2dutchorderreactor.rs +++ b/crates/bindings-uniswapx/src/v2dutchorderreactor.rs @@ -404,40 +404,53 @@ interface V2DutchOrderReactor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod V2DutchOrderReactor { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60a06040523480156200001157600080fd5b50604051620035e8380380620035e88339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b6080516134cf620001196000396000818160e00152611a5301526134cf6000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046124e4565b6101eb565b005b6100b96100c9366004612592565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96101393660046125d4565b6104c5565b34801561014a57600080fd5b506100b9610159366004612672565b610683565b6100b961016c366004612696565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612672565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56126fa565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016128fd565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff811115610388576103886126cb565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666126fa565b905060200281019061047891906129c3565b6109f6565b82828151811061048f5761048f6126fa565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e96126cb565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666126fa565b8282815181106105d9576105d96126fa565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016128fd565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696126fa565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612a01565b810190610a7c9190612e40565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b089190612a01565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e6126fa565b60200260200101519050610ba181611468565b610bab8133611958565b610bb58133611a51565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf6126fa565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c166126fa565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d5d9092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca96126fa565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611da4565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061338d60208301396040518060c00160405280608d815260200161340d608d9139604051602001610e9193929190612f3d565b60405160208183030381529060405280519060200120610eb48360000151611e3e565b6020808501516040808701518051938101519101516060880151929392610eda90611ed8565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612f80565b9150915060008360a00151604081518110610fc257610fc26126fa565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612fa4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001613034565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a6126fa565b602002602001015190506000836080015160a001518381518110611240576112406126fa565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686611f76565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611392576113926126cb565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e6126fa565b60200260200101518686611ff3565b83828151811061143f5761143f6126fa565b6020908102919091010152600101611401565b50509392505050565b61067d84848484426120c3565b60015473ffffffffffffffffffffffffffffffffffffffff166114885750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906114df90859060040161305a565b600060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611542919081019061306d565b604083015151815191925090600061155a828461316c565b67ffffffffffffffff811115611572576115726126cb565b6040519080825280602002602001820160405280156115db57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115905790505b50905060005b8381101561162c57856040015181815181106115ff576115ff6126fa565b6020026020010151828281518110611619576116196126fa565b60209081029190910101526001016115e1565b5060008060005b8481101561194757600087828151811061164f5761164f6126fa565b6020026020010151905060005b8281101561170d57888181518110611676576116766126fa565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117055781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161165c565b506000805b888110156117ce5760008b604001518281518110611732576117326126fa565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036117c55785156117af576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117be908461316c565b9250600196505b50600101611712565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361184757841561182e576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b01510151611840908261316c565b9050600193505b8060000361189c5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6118aa81600561271061216f565b8260200151111561191d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611932576119326126fa565b60209081029190910101525050600101611633565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146119a9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611a25908490869060040161317f565b60006040518083038186803b158015611a3d57600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611b11846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b611b1b85856121ab565b856000015160200151866080015160405180608001604052806052815260200161338d605291396040518060c00160405280608d815260200161340d608d91396040518060600160405280602e81526020016133df602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611cc2949392916020016131ae565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611d2f9695949392600401613237565b600060405180830381600087803b158015611d4957600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d825761035f8282611da4565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846121f2565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dfe576040519150601f19603f3d011682016040523d82523d6000602084013e611e03565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d815260200161340d608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ef857611ef86126cb565b6040519080825280601f01601f191660200182016040528015611f22576020820181803683370190505b50905060005b8351811015611f67576000611f55858381518110611f4857611f486126fa565b60200260200101516122dd565b60208381028501015250600101611f28565b50805160209091012092915050565b6000838503611f86575083611feb565b828211611fbf576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611fcd575082611feb565b428310611fdb575083611feb565b611fe88383428888612354565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612052576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612068856020015186604001518686611f76565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b6120ce84848361236f565b6121685781612109576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561216557600082828151811061212e5761212e6126fa565b6020026020010151905061215785612710612149919061316c565b6020830151906127106123ba565b602090910152600101612111565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026121a457600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b600060405180608001604052806052815260200161338d60529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600061236386868686866123fe565b90505b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416158061239357508282115b80611feb575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123ef57600080fd5b50910281810615159190040190565b600084841061240e575080612366565b600061241a87866132f2565b9050600061242888886132f2565b905060008585121561245a5761244a8383612443888a613305565b919061216f565b6124539061332c565b905061246c565b61246983836124438989613305565b90505b6124768187613364565b9998505050505050505050565b60006040828403121561249557600080fd5b50919050565b60008083601f8401126124ad57600080fd5b50813567ffffffffffffffff8111156124c557600080fd5b6020830191508360208285010111156124dd57600080fd5b9250929050565b6000806000604084860312156124f957600080fd5b833567ffffffffffffffff8082111561251157600080fd5b61251d87838801612483565b9450602086013591508082111561253357600080fd5b506125408682870161249b565b9497909650939450505050565b60008083601f84011261255f57600080fd5b50813567ffffffffffffffff81111561257757600080fd5b6020830191508360208260051b85010111156124dd57600080fd5b600080602083850312156125a557600080fd5b823567ffffffffffffffff8111156125bc57600080fd5b6125c88582860161254d565b90969095509350505050565b600080600080604085870312156125ea57600080fd5b843567ffffffffffffffff8082111561260257600080fd5b61260e8883890161254d565b9096509450602087013591508082111561262757600080fd5b506126348782880161249b565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b803561266d81612640565b919050565b60006020828403121561268457600080fd5b813561268f81612640565b9392505050565b6000602082840312156126a857600080fd5b813567ffffffffffffffff8111156126bf57600080fd5b611feb84828501612483565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561274457818101518382015260200161272c565b50506000910152565b60008151808452612765816020860160208601612729565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156127f7578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016127ac565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526128766101a085018261274d565b905060208301516128b46020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128cc8282612797565b915050606083015184820360a08601526128e6828261274d565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612960868351612802565b95509382019390820190600101612926565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126129f757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a3657600080fd5b83018035915067ffffffffffffffff821115612a5157600080fd5b6020019150368190038213156124dd57600080fd5b60405160c0810167ffffffffffffffff81118282101715612a8957612a896126cb565b60405290565b6040516060810167ffffffffffffffff81118282101715612a8957612a896126cb565b6040516080810167ffffffffffffffff81118282101715612a8957612a896126cb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b1c57612b1c6126cb565b604052919050565b600082601f830112612b3557600080fd5b813567ffffffffffffffff811115612b4f57612b4f6126cb565b612b8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ad5565b818152846020838601011115612b9557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612bc457600080fd5b612bcc612a66565b90508135612bd981612640565b81526020820135612be981612640565b8060208301525060408201356040820152606082013560608201526080820135612c1281612640565b608082015260a082013567ffffffffffffffff811115612c3157600080fd5b612c3d84828501612b24565b60a08301525092915050565b600060608284031215612c5b57600080fd5b612c63612a8f565b90508135612c7081612640565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612ca857612ca86126cb565b5060051b60200190565b600082601f830112612cc357600080fd5b81356020612cd8612cd383612c8e565b612ad5565b82815260079290921b84018101918181019086841115612cf757600080fd5b8286015b84811015612d5c5760808189031215612d145760008081fd5b612d1c612ab2565b8135612d2781612640565b8152818501358582015260408083013590820152606080830135612d4a81612640565b90820152835291830191608001612cfb565b509695505050505050565b600060c08284031215612d7957600080fd5b612d81612a66565b905081358152602080830135818301526040830135612d9f81612640565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612dd457600080fd5b8301601f81018513612de557600080fd5b8035612df3612cd382612c8e565b81815260059190911b82018301908381019087831115612e1257600080fd5b928401925b82841015612e3057833582529284019290840190612e17565b60a0860152509295945050505050565b600060208284031215612e5257600080fd5b813567ffffffffffffffff80821115612e6a57600080fd5b908301906101008286031215612e7f57600080fd5b612e87612a66565b823582811115612e9657600080fd5b612ea287828601612bb2565b825250612eb160208401612662565b6020820152612ec38660408501612c49565b604082015260a083013582811115612eda57600080fd5b612ee687828601612cb2565b60608301525060c083013582811115612efe57600080fd5b612f0a87828601612d67565b60808301525060e083013582811115612f2257600080fd5b612f2e87828601612b24565b60a08301525095945050505050565b60008451612f4f818460208901612729565b845190830190612f63818360208901612729565b8451910190612f76818360208801612729565b0195945050505050565b60008060408385031215612f9357600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612d5c5783518252928401926001929092019190840190613014565b8281526000825161304c816020850160208701612729565b919091016020019392505050565b60208152600061268f6020830184612802565b6000602080838503121561308057600080fd5b825167ffffffffffffffff81111561309757600080fd5b8301601f810185136130a857600080fd5b80516130b6612cd382612c8e565b818152606091820283018401918482019190888411156130d557600080fd5b938501935b838510156131315780858a0312156130f25760008081fd5b6130fa612a8f565b855161310581612640565b8152858701518782015260408087015161311e81612640565b90820152835293840193918501916130da565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156121ec576121ec61313d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611feb6040830184612802565b7f563244757463684f72646572207769746e6573732900000000000000000000008152600085516131e6816015850160208a01612729565b8551908301906131fd816015840160208a01612729565b8551910190613213816015840160208901612729565b8451910190613229816015840160208801612729565b016015019695505050505050565b6000610140613267838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526132a86080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526132dd8184018661274d565b9050828103610120840152612476818561274d565b818103818111156121ec576121ec61313d565b81810360008312801583831316838312821617156133255761332561313d565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361335d5761335d61313d565b5060000390565b80820182811260008312801582168215821617156133845761338461313d565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212201b7d41a288872094e2643d8efd2d7d2fa97b6432325500b0029b8b9a405d2e4464736f6c63430008180033 + ///0x60a060405234801562000010575f80fd5b50604051620034fe380380620034fe8339810160408190526200003391620000b5565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f29050565b6001600160a01b0381168114620000b2575f80fd5b50565b5f8060408385031215620000c7575f80fd5b8251620000d4816200009d565b6020840151909250620000e7816200009d565b809150509250929050565b6080516133ed620001115f395f818160da01526119f901526133ed5ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af36600461245f565b6101e0565b005b6100b46100c4366004612504565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004612543565b6104af565b348015610143575f80fd5b506100b46101523660046125db565b610665565b6100b46101653660046125fd565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db3660046125db565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b761265c565b60200260200101819052506102cb81610b46565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b90849087908790600401612857565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b95565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff8111156103745761037461262f565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c576104678585838181106104505761045061265c565b9050602002810190610462919061291a565b6109d2565b8282815181106104795761047961265c565b6020908102919091010152600101610433565b5061049681610b46565b61049f81610b95565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d261262f565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae8787838181106104505761045061265c565b8282815181106105c0576105c061265c565b6020908102919091010152600101610591565b506105dd81610b46565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d90849088908890600401612857565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b95565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f815181106108475761084761265c565b602002602001018190525061085b81610b46565b61086481610b95565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a8380612956565b810190610a579190612d7d565b90505f610a6382610ce0565b9050610a6f8183610f10565b610a7882611109565b6040805160a081018252835181526080840151805160209182015193860151929391840192610aa992909190611265565b81526080840151805160209182015160608701519290930192610acd929190611333565b8152602001858060200190610ae29190612956565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001829052608083015160408101518151606090920151929550610b3f92869290611418565b5050919050565b80515f5b8181101561034c575f838281518110610b6557610b6561265c565b60200260200101519050610b7881611425565b610b828133611902565b610b8c81336119f7565b50600101610b4a565b80515f5b81811015610ccf575f838281518110610bb457610bb461265c565b602002602001015190505f81604001515190505f5b81811015610c31575f83604001518281518110610be857610be861265c565b60200260200101519050610c2881604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611cfc9092919063ffffffff16565b50600101610bc9565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c7957610c7961265c565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610cbd91815260200190565b60405180910390a45050600101610b99565b5047156104ab576104ab3347611d43565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c8201525f9060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181526080830190915260528083529091906132ab60208301396040518060c00160405280608d815260200161332b608d9139604051602001610e5f93929190612e72565b60405160208183030381529060405280519060200120610e81835f0151611dd9565b6020808501516040808701518051938101519101516060880151929392610ea790611e72565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f57576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808260a00151806020019051810190610f719190612eb4565b915091505f8360a00151604081518110610f8d57610f8d61265c565b602001015160f81c60f81b60f81c90505f6001868660800151604051602001610fb69190612ed6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ff29291602001612f64565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa15801561106b573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161415806110ca575073ffffffffffffffffffffffffffffffffffffffff8116155b15611101576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b608080820151015115611172578060400151602001518160800151608001511115611160576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111b9576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8160600151518110156104ab575f826060015182815181106111df576111df61265c565b602002602001015190505f836080015160a0015183815181106112045761120461265c565b60200260200101519050805f1461125b578160200151811015611253576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111bb565b61129c60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b8360400151846020015111156112de576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6112f3856020015186604001518686611f0d565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff8111156113515761135161262f565b6040519080825280602002602001820160405280156113b957816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161136f5790505b5091505f5b8181101561140f576113ea8682815181106113db576113db61265c565b60200260200101518686611f89565b8382815181106113fc576113fc61265c565b60209081029190910101526001016113be565b50509392505050565b61065f8484848442612056565b60015473ffffffffffffffffffffffffffffffffffffffff166114455750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061149b908590600401612f89565b5f60405180830381865afa1580156114b5573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114fa9190810190612f9b565b6040830151518151919250905f6115118284613091565b67ffffffffffffffff8111156115295761152961262f565b60405190808252806020026020018201604052801561159157816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115475790505b5090505f5b838110156115e157856040015181815181106115b4576115b461265c565b60200260200101518282815181106115ce576115ce61265c565b6020908102919091010152600101611596565b505f805f5b848110156118f1575f8782815181106116015761160161265c565b602002602001015190505f5b828110156116bc578881815181106116275761162761265c565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036116b45781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b60010161160d565b505f805b88811015611779575f8b6040015182815181106116df576116df61265c565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff160361177057851561175a576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117699084613091565b9250600196505b506001016116c0565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117f25784156117d9576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117eb9082613091565b9050600193505b805f036118465781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b611854816005612710612100565b826020015111156118c7578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a01815181106118dc576118dc61265c565b602090810291909101015250506001016115e6565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611953576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119cf90849086906004016130a4565b5f6040518083038186803b1580156119e5575f80fd5b505afa158015611101573d5f803e3d5ffd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611ab6846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b611ac0858561213a565b855f01516020015186608001516040518060800160405280605281526020016132ab605291396040518060c00160405280608d815260200161332b608d91396040518060600160405280602e81526020016132fd602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611c66949392916020016130d2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cd3969594939260040161315a565b5f604051808303815f87803b158015611cea575f80fd5b505af1158015611101573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611d215761034c8282611d43565b61034c73ffffffffffffffffffffffffffffffffffffffff8416338484612180565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611d99576040519150601f19603f3d011682016040523d82523d5f602084013e611d9e565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060c00160405280608d815260200161332b608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610ef398939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115611e9157611e9161262f565b6040519080825280601f01601f191660200182016040528015611ebb576020820181803683370190505b5090505f5b8351811015611efe575f611eec858381518110611edf57611edf61265c565b6020026020010151612267565b60208381028501015250600101611ec0565b50805160209091012092915050565b5f838503611f1c575083611f81565b828211611f55576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611f63575082611f81565b428310611f71575083611f81565b611f7e83834288886122dd565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611fe7576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ffc856020015186604001518686611f0d565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b6120618484836122f7565b6120f9578161209c576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b81518110156120f6575f8282815181106120bf576120bf61265c565b602002602001015190506120e8856127106120da9190613091565b602083015190612710612341565b6020909101526001016120a3565b50505b5050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612133575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806120f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5f6040518060800160405280605281526020016132ab60529139805160209182012083518483015160408087015160608801519151610ef3969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f6122eb8686868686612383565b90505b95945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416158061231a57508282115b80611f81575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612374575f80fd5b50910281810615159190040190565b5f8484106123925750806122ee565b5f61239d8786613214565b90505f6123aa8888613214565b90505f858512156123db576123cb83836123c4888a613227565b9190612100565b6123d49061324d565b90506123ed565b6123ea83836123c48989613227565b90505b6123f78187613283565b9998505050505050505050565b5f60408284031215612414575f80fd5b50919050565b5f8083601f84011261242a575f80fd5b50813567ffffffffffffffff811115612441575f80fd5b602083019150836020828501011115612458575f80fd5b9250929050565b5f805f60408486031215612471575f80fd5b833567ffffffffffffffff80821115612488575f80fd5b61249487838801612404565b945060208601359150808211156124a9575f80fd5b506124b68682870161241a565b9497909650939450505050565b5f8083601f8401126124d3575f80fd5b50813567ffffffffffffffff8111156124ea575f80fd5b6020830191508360208260051b8501011115612458575f80fd5b5f8060208385031215612515575f80fd5b823567ffffffffffffffff81111561252b575f80fd5b612537858286016124c3565b90969095509350505050565b5f805f8060408587031215612556575f80fd5b843567ffffffffffffffff8082111561256d575f80fd5b612579888389016124c3565b90965094506020870135915080821115612591575f80fd5b5061259e8782880161241a565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b80356125d6816125aa565b919050565b5f602082840312156125eb575f80fd5b81356125f6816125aa565b9392505050565b5f6020828403121561260d575f80fd5b813567ffffffffffffffff811115612623575f80fd5b611f8184828501612404565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156126a357818101518382015260200161268b565b50505f910152565b5f81518084526126c2816020860160208601612689565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b83811015612752578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612707565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d06101a08501826126ab565b9050602083015161280e6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282682826126f4565b915050606083015184820360a086015261284082826126ab565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b838110156128ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128b886835161275d565b9550938201939082019060010161287e565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261294c575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612989575f80fd5b83018035915067ffffffffffffffff8211156129a3575f80fd5b602001915036819003821315612458575f80fd5b60405160c0810167ffffffffffffffff811182821017156129da576129da61262f565b60405290565b6040516060810167ffffffffffffffff811182821017156129da576129da61262f565b6040516080810167ffffffffffffffff811182821017156129da576129da61262f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a6d57612a6d61262f565b604052919050565b5f82601f830112612a84575f80fd5b813567ffffffffffffffff811115612a9e57612a9e61262f565b612acf60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a26565b818152846020838601011115612ae3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215612b0f575f80fd5b612b176129b7565b90508135612b24816125aa565b81526020820135612b34816125aa565b8060208301525060408201356040820152606082013560608201526080820135612b5d816125aa565b608082015260a082013567ffffffffffffffff811115612b7b575f80fd5b612b8784828501612a75565b60a08301525092915050565b5f60608284031215612ba3575f80fd5b612bab6129e0565b90508135612bb8816125aa565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612bef57612bef61262f565b5060051b60200190565b5f82601f830112612c08575f80fd5b81356020612c1d612c1883612bd6565b612a26565b82815260079290921b84018101918181019086841115612c3b575f80fd5b8286015b84811015612c9e5760808189031215612c56575f80fd5b612c5e612a03565b8135612c69816125aa565b8152818501358582015260408083013590820152606080830135612c8c816125aa565b90820152835291830191608001612c3f565b509695505050505050565b5f60c08284031215612cb9575f80fd5b612cc16129b7565b905081358152602080830135818301526040830135612cdf816125aa565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d13575f80fd5b8301601f81018513612d23575f80fd5b8035612d31612c1882612bd6565b81815260059190911b82018301908381019087831115612d4f575f80fd5b928401925b82841015612d6d57833582529284019290840190612d54565b60a0860152509295945050505050565b5f60208284031215612d8d575f80fd5b813567ffffffffffffffff80821115612da4575f80fd5b908301906101008286031215612db8575f80fd5b612dc06129b7565b823582811115612dce575f80fd5b612dda87828601612aff565b825250612de9602084016125cb565b6020820152612dfb8660408501612b93565b604082015260a083013582811115612e11575f80fd5b612e1d87828601612bf9565b60608301525060c083013582811115612e34575f80fd5b612e4087828601612ca9565b60808301525060e083013582811115612e57575f80fd5b612e6387828601612a75565b60a08301525095945050505050565b5f8451612e83818460208901612689565b845190830190612e97818360208901612689565b8451910190612eaa818360208801612689565b0195945050505050565b5f8060408385031215612ec5575f80fd5b505080516020909101519092909150565b5f602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c0808601528181518084526101008701915084830193505f92505b80831015612c9e5783518252928401926001929092019190840190612f44565b8281525f8251612f7b816020850160208701612689565b919091016020019392505050565b602081525f6125f6602083018461275d565b5f6020808385031215612fac575f80fd5b825167ffffffffffffffff811115612fc2575f80fd5b8301601f81018513612fd2575f80fd5b8051612fe0612c1882612bd6565b81815260609182028301840191848201919088841115612ffe575f80fd5b938501935b838510156130585780858a031215613019575f80fd5b6130216129e0565b855161302c816125aa565b81528587015187820152604080870151613045816125aa565b9082015283529384019391850191613003565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561217a5761217a613064565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611f81604083018461275d565b7f563244757463684f72646572207769746e65737329000000000000000000000081525f8551613109816015850160208a01612689565b855190830190613120816015840160208a01612689565b8551910190613136816015840160208901612689565b845191019061314c816015840160208801612689565b016015019695505050505050565b5f610140613189838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131ca6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526131ff818401866126ab565b90508281036101208401526123f781856126ab565b8181038181111561217a5761217a613064565b8181035f83128015838313168383128216171561324657613246613064565b5092915050565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361327d5761327d613064565b505f0390565b8082018281125f8312801582168215821617156132a2576132a2613064565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220102b8a41af3e3ee0b3f412e829dc602991bc894dd17ff58ec5883953c3db934f64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xA0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\x005\xE88\x03\x80b\x005\xE8\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\0\xB8V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF7\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB5W`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\0\xCCW`\0\x80\xFD[\x82Qb\0\0\xD9\x81b\0\0\x9FV[` \x84\x01Q\x90\x92Pb\0\0\xEC\x81b\0\0\x9FV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa4\xCFb\0\x01\x19`\09`\0\x81\x81`\xE0\x01Ra\x1AS\x01Ra4\xCF`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$\xE4V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a%\x92V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%\xD4V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a&rV[a\x06\x83V[a\0\xB9a\x01l6`\x04a&\x96V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a&rV[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&\xFAV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xBEV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\xC3V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BmV[a\x04\xB5\x81a\x0B\xBEV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xBEV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&\xFAV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BmV[a\x08\x86\x81a\x0B\xBEV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a*\x01V[\x81\x01\x90a\n|\x91\x90a.@V[\x90P`\0a\n\x89\x82a\r\x11V[\x90Pa\n\x95\x81\x83a\x0FCV[a\n\x9E\x82a\x11BV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xCF\x92\x90\x91\x90a\x12\xA2V[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xF3\x92\x91\x90a\x13tV[\x81R` \x01\x85\x80` \x01\x90a\x0B\x08\x91\x90a*\x01V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0Bf\x92\x86\x92\x90a\x14[V[PP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x8EWa\x0B\x8Ea&\xFAV[` \x02` \x01\x01Q\x90Pa\x0B\xA1\x81a\x14hV[a\x0B\xAB\x813a\x19XV[a\x0B\xB5\x813a\x1AQV[P`\x01\x01a\x0BrV[\x80Q`\0[\x81\x81\x10\x15a\r\0W`\0\x83\x82\x81Q\x81\x10a\x0B\xDFWa\x0B\xDFa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C`W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x16Wa\x0C\x16a&\xFAV[` \x02` \x01\x01Q\x90Pa\x0CW\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D]\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xF6V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\xA9Wa\x0C\xA9a&\xFAV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xEE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xC3V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1D\xA4V[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\0\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a3\x8D` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q` \x01a\x0E\x91\x93\x92\x91\x90a/=V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\xB4\x83`\0\x01Qa\x1E>V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xDA\x90a\x1E\xD8V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0F\x8AW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0F\xA5\x91\x90a/\x80V[\x91P\x91P`\0\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\xC2Wa\x0F\xC2a&\xFAV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P`\0`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xEC\x91\x90a/\xA4V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10(\x92\x91` \x01a04V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10\xA4W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x11\x03WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11:W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11\xABW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11\x99W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xF2W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0[\x81``\x01QQ\x81\x10\x15a\x04\xC1W`\0\x82``\x01Q\x82\x81Q\x81\x10a\x12\x1AWa\x12\x1Aa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12@Wa\x12@a&\xFAV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12\x98W\x81` \x01Q\x81\x10\x15a\x12\x90W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xF5V[a\x12\xDC`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x13\x1EW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x134\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x92Wa\x13\x92a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB0W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x14RWa\x14-\x86\x82\x81Q\x81\x10a\x14\x1EWa\x14\x1Ea&\xFAV[` \x02` \x01\x01Q\x86\x86a\x1F\xF3V[\x83\x82\x81Q\x81\x10a\x14?Wa\x14?a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x01V[PP\x93\x92PPPV[a\x06}\x84\x84\x84\x84Ba \xC3V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14\x88WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\xDF\x90\x85\x90`\x04\x01a0ZV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xFCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a0mV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x15Z\x82\x84a1lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15rWa\x15ra&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\xDBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15\x90W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x16,W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xFFWa\x15\xFFa&\xFAV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x19Wa\x16\x19a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\xE1V[P`\0\x80`\0[\x84\x81\x10\x15a\x19GW`\0\x87\x82\x81Q\x81\x10a\x16OWa\x16Oa&\xFAV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\rW\x88\x81\x81Q\x81\x10a\x16vWa\x16va&\xFAV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x05W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x16\\V[P`\0\x80[\x88\x81\x10\x15a\x17\xCEW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x172Wa\x172a&\xFAV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xC5W\x85\x15a\x17\xAFW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17\xBE\x90\x84a1lV[\x92P`\x01\x96P[P`\x01\x01a\x17\x12V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18GW\x84\x15a\x18.W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18@\x90\x82a1lV[\x90P`\x01\x93P[\x80`\0\x03a\x18\x9CW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18\xAA\x81`\x05a'\x10a!oV[\x82` \x01Q\x11\x15a\x19\x1DW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x192Wa\x192a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x163V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19\xA9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A%\x90\x84\x90\x86\x90`\x04\x01a1\x7FV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A=W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x11\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1B\x1B\x85\x85a!\xABV[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a3\xDF`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xC2\x94\x93\x92\x91` \x01a1\xAEV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1D/\x96\x95\x94\x93\x92`\x04\x01a27V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1DIW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D\x82Wa\x03_\x82\x82a\x1D\xA4V[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xF2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1E\x03V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0F&\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xF8Wa\x1E\xF8a&\xCBV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1F\"W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1FgW`\0a\x1FU\x85\x83\x81Q\x81\x10a\x1FHWa\x1FHa&\xFAV[` \x02` \x01\x01Qa\"\xDDV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1F(V[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x83\x85\x03a\x1F\x86WP\x83a\x1F\xEBV[\x82\x82\x11a\x1F\xBFW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1F\xCDWP\x82a\x1F\xEBV[B\x83\x10a\x1F\xDBWP\x83a\x1F\xEBV[a\x1F\xE8\x83\x83B\x88\x88a#TV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a RW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a h\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a \xCE\x84\x84\x83a#oV[a!hW\x81a!\tW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a!eW`\0\x82\x82\x81Q\x81\x10a!.Wa!.a&\xFAV[` \x02` \x01\x01Q\x90Pa!W\x85a'\x10a!I\x91\x90a1lV[` \x83\x01Q\x90a'\x10a#\xBAV[` \x90\x91\x01R`\x01\x01a!\x11V[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xA4W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a!hW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0F&\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0a#c\x86\x86\x86\x86\x86a#\xFEV[\x90P[\x95\x94PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x93WP\x82\x82\x11[\x80a\x1F\xEBWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xEFW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a$\x0EWP\x80a#fV[`\0a$\x1A\x87\x86a2\xF2V[\x90P`\0a$(\x88\x88a2\xF2V[\x90P`\0\x85\x85\x12\x15a$ZWa$J\x83\x83a$C\x88\x8Aa3\x05V[\x91\x90a!oV[a$S\x90a3,V[\x90Pa$lV[a$i\x83\x83a$C\x89\x89a3\x05V[\x90P[a$v\x81\x87a3dV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a$\x95W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\xADW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xC5W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$\xF9W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%\x11W`\0\x80\xFD[a%\x1D\x87\x83\x88\x01a$\x83V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a%3W`\0\x80\xFD[Pa%@\x86\x82\x87\x01a$\x9BV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a%_W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%wW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\xA5W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xBCW`\0\x80\xFD[a%\xC8\x85\x82\x86\x01a%MV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%\xEAW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a&\x02W`\0\x80\xFD[a&\x0E\x88\x83\x89\x01a%MV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a&'W`\0\x80\xFD[Pa&4\x87\x82\x88\x01a$\x9BV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a&m\x81a&@V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a&\x84W`\0\x80\xFD[\x815a&\x8F\x81a&@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a&\xA8W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\xBFW`\0\x80\xFD[a\x1F\xEB\x84\x82\x85\x01a$\x83V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a'DW\x81\x81\x01Q\x83\x82\x01R` \x01a',V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra'e\x81` \x86\x01` \x86\x01a')V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'\xF7W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\xACV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra(va\x01\xA0\x85\x01\x82a'MV[\x90P` \x83\x01Qa(\xB4` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(\xCC\x82\x82a'\x97V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(\xE6\x82\x82a'MV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a)rW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra)`\x86\x83Qa(\x02V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a)&V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)\xF7W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a*6W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*QW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$\xDDW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a+\x1CWa+\x1Ca&\xCBV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a+5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+OWa+Oa&\xCBV[a+\x80` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*\xD5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a+\x95W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+\xC4W`\0\x80\xFD[a+\xCCa*fV[\x90P\x815a+\xD9\x81a&@V[\x81R` \x82\x015a+\xE9\x81a&@V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a,\x12\x81a&@V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,1W`\0\x80\xFD[a,=\x84\x82\x85\x01a+$V[`\xA0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a,[W`\0\x80\xFD[a,ca*\x8FV[\x90P\x815a,p\x81a&@V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xA8Wa,\xA8a&\xCBV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,\xC3W`\0\x80\xFD[\x815` a,\xD8a,\xD3\x83a,\x8EV[a*\xD5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\xF7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a-\\W`\x80\x81\x89\x03\x12\x15a-\x14W`\0\x80\x81\xFD[a-\x1Ca*\xB2V[\x815a-'\x81a&@V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a-J\x81a&@V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,\xFBV[P\x96\x95PPPPPPV[`\0`\xC0\x82\x84\x03\x12\x15a-yW`\0\x80\xFD[a-\x81a*fV[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a-\x9F\x81a&@V[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\xD4W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-\xE5W`\0\x80\xFD[\x805a-\xF3a,\xD3\x82a,\x8EV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a.\x12W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a.0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a.\x17V[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.RW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a.jW`\0\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a.\x7FW`\0\x80\xFD[a.\x87a*fV[\x825\x82\x81\x11\x15a.\x96W`\0\x80\xFD[a.\xA2\x87\x82\x86\x01a+\xB2V[\x82RPa.\xB1` \x84\x01a&bV[` \x82\x01Ra.\xC3\x86`@\x85\x01a,IV[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\xDAW`\0\x80\xFD[a.\xE6\x87\x82\x86\x01a,\xB2V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.\xFEW`\0\x80\xFD[a/\n\x87\x82\x86\x01a-gV[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a/\"W`\0\x80\xFD[a/.\x87\x82\x86\x01a+$V[`\xA0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa/O\x81\x84` \x89\x01a')V[\x84Q\x90\x83\x01\x90a/c\x81\x83` \x89\x01a')V[\x84Q\x91\x01\x90a/v\x81\x83` \x88\x01a')V[\x01\x95\x94PPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a/\x93W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a-\\W\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a0\x14V[\x82\x81R`\0\x82Qa0L\x81` \x85\x01` \x87\x01a')V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R`\0a&\x8F` \x83\x01\x84a(\x02V[`\0` \x80\x83\x85\x03\x12\x15a0\x80W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\x97W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a0\xA8W`\0\x80\xFD[\x80Qa0\xB6a,\xD3\x82a,\x8EV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a0\xD5W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a11W\x80\x85\x8A\x03\x12\x15a0\xF2W`\0\x80\x81\xFD[a0\xFAa*\x8FV[\x85Qa1\x05\x81a&@V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa1\x1E\x81a&@V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\xDAV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a!\xECWa!\xECa1=V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1F\xEB`@\x83\x01\x84a(\x02V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x85Qa1\xE6\x81`\x15\x85\x01` \x8A\x01a')V[\x85Q\x90\x83\x01\x90a1\xFD\x81`\x15\x84\x01` \x8A\x01a')V[\x85Q\x91\x01\x90a2\x13\x81`\x15\x84\x01` \x89\x01a')V[\x84Q\x91\x01\x90a2)\x81`\x15\x84\x01` \x88\x01a')V[\x01`\x15\x01\x96\x95PPPPPPV[`\0a\x01@a2g\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra2\xA8`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra2\xDD\x81\x84\x01\x86a'MV[\x90P\x82\x81\x03a\x01 \x84\x01Ra$v\x81\x85a'MV[\x81\x81\x03\x81\x81\x11\x15a!\xECWa!\xECa1=V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a3%Wa3%a1=V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a3]Wa3]a1=V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a3\x84Wa3\x84a1=V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x1B}A\xA2\x88\x87 \x94\xE2d=\x8E\xFD-}/\xA9{d22U\0\xB0\x02\x9B\x8B\x9A@].DdsolcC\0\x08\x18\x003", + b"`\xA0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\x004\xFE8\x03\x80b\x004\xFE\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\0\xB5V[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80RPb\0\0\xF2\x90PV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\0\xB2W_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\0\xC7W_\x80\xFD[\x82Qb\0\0\xD4\x81b\0\0\x9DV[` \x84\x01Q\x90\x92Pb\0\0\xE7\x81b\0\0\x9DV[\x80\x91PP\x92P\x92\x90PV[`\x80Qa3\xEDb\0\x01\x11_9_\x81\x81`\xDA\x01Ra\x19\xF9\x01Ra3\xED_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a$_V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a%\x04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a%CV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%\xDBV[a\x06eV[a\0\xB4a\x01e6`\x04a%\xFDV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%\xDBV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a&\\V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x95V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a)\x1AV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0BFV[a\x04\x9F\x81a\x0B\x95V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x95V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga&\\V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0BFV[a\x08d\x81a\x0B\x95V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a)VV[\x81\x01\x90a\nW\x91\x90a-}V[\x90P_a\nc\x82a\x0C\xE0V[\x90Pa\no\x81\x83a\x0F\x10V[a\nx\x82a\x11\tV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xA9\x92\x90\x91\x90a\x12eV[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xCD\x92\x91\x90a\x133V[\x81R` \x01\x85\x80` \x01\x90a\n\xE2\x91\x90a)VV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0B?\x92\x86\x92\x90a\x14\x18V[PP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea&\\V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x14%V[a\x0B\x82\x813a\x19\x02V[a\x0B\x8C\x813a\x19\xF7V[P`\x01\x01a\x0BJV[\x80Q_[\x81\x81\x10\x15a\x0C\xCFW_\x83\x82\x81Q\x81\x10a\x0B\xB4Wa\x0B\xB4a&\\V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C1W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xE8Wa\x0B\xE8a&\\V[` \x02` \x01\x01Q\x90Pa\x0C(\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xFC\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xC9V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CyWa\x0Cya&\\V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xBD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x99V[PG\x15a\x04\xABWa\x04\xAB3Ga\x1DCV[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R_\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a2\xAB` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q` \x01a\x0E_\x93\x92\x91\x90a.rV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\x81\x83_\x01Qa\x1D\xD9V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xA7\x90a\x1ErV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0FWW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0Fq\x91\x90a.\xB4V[\x91P\x91P_\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\x8DWa\x0F\x8Da&\\V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P_`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xB6\x91\x90a.\xD6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\xF2\x92\x91` \x01a/dV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 _\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10kW=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x10\xCAWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11\x01W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11rW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xB9W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x81``\x01QQ\x81\x10\x15a\x04\xABW_\x82``\x01Q\x82\x81Q\x81\x10a\x11\xDFWa\x11\xDFa&\\V[` \x02` \x01\x01Q\x90P_\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12\x04Wa\x12\x04a&\\V[` \x02` \x01\x01Q\x90P\x80_\x14a\x12[W\x81` \x01Q\x81\x10\x15a\x12SW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xBBV[a\x12\x9C`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x12\xDEW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x12\xF3\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13QWa\x13Qa&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xB9W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13oW\x90P[P\x91P_[\x81\x81\x10\x15a\x14\x0FWa\x13\xEA\x86\x82\x81Q\x81\x10a\x13\xDBWa\x13\xDBa&\\V[` \x02` \x01\x01Q\x86\x86a\x1F\x89V[\x83\x82\x81Q\x81\x10a\x13\xFCWa\x13\xFCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBEV[PP\x93\x92PPPV[a\x06_\x84\x84\x84\x84Ba VV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14EWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\x9B\x90\x85\x90`\x04\x01a/\x89V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xB5W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xFA\x91\x90\x81\x01\x90a/\x9BV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\x11\x82\x84a0\x91V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15)Wa\x15)a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\x91W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15GW\x90P[P\x90P_[\x83\x81\x10\x15a\x15\xE1W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xB4Wa\x15\xB4a&\\V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xCEWa\x15\xCEa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\x96V[P_\x80_[\x84\x81\x10\x15a\x18\xF1W_\x87\x82\x81Q\x81\x10a\x16\x01Wa\x16\x01a&\\V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16\xBCW\x88\x81\x81Q\x81\x10a\x16'Wa\x16'a&\\V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\xB4W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\rV[P_\x80[\x88\x81\x10\x15a\x17yW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xDFWa\x16\xDFa&\\V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17pW\x85\x15a\x17ZW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17i\x90\x84a0\x91V[\x92P`\x01\x96P[P`\x01\x01a\x16\xC0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xF2W\x84\x15a\x17\xD9W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xEB\x90\x82a0\x91V[\x90P`\x01\x93P[\x80_\x03a\x18FW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x18T\x81`\x05a'\x10a!\0V[\x82` \x01Q\x11\x15a\x18\xC7W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xDCWa\x18\xDCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xE6V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19SW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xCF\x90\x84\x90\x86\x90`\x04\x01a0\xA4V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xE5W_\x80\xFD[PZ\xFA\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xB6\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1A\xC0\x85\x85a!:V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\xFD`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1Cf\x94\x93\x92\x91` \x01a0\xD2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xD3\x96\x95\x94\x93\x92`\x04\x01a1ZV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xEAW_\x80\xFD[PZ\xF1\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D!Wa\x03L\x82\x82a\x1DCV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\x80V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\x99W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\x9EV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0E\xF3\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\x91Wa\x1E\x91a&/V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xBBW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xFEW_a\x1E\xEC\x85\x83\x81Q\x81\x10a\x1E\xDFWa\x1E\xDFa&\\V[` \x02` \x01\x01Qa\"gV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xC0V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x83\x85\x03a\x1F\x1CWP\x83a\x1F\x81V[\x82\x82\x11a\x1FUW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1FcWP\x82a\x1F\x81V[B\x83\x10a\x1FqWP\x83a\x1F\x81V[a\x1F~\x83\x83B\x88\x88a\"\xDDV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1F\xE7W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xFC\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a a\x84\x84\x83a\"\xF7V[a \xF9W\x81a \x9CW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a \xF6W_\x82\x82\x81Q\x81\x10a \xBFWa \xBFa&\\V[` \x02` \x01\x01Q\x90Pa \xE8\x85a'\x10a \xDA\x91\x90a0\x91V[` \x83\x01Q\x90a'\x10a#AV[` \x90\x91\x01R`\x01\x01a \xA3V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!3W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a \xF9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0E\xF3\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_a\"\xEB\x86\x86\x86\x86\x86a#\x83V[\x90P[\x95\x94PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x1AWP\x82\x82\x11[\x80a\x1F\x81WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#tW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a#\x92WP\x80a\"\xEEV[_a#\x9D\x87\x86a2\x14V[\x90P_a#\xAA\x88\x88a2\x14V[\x90P_\x85\x85\x12\x15a#\xDBWa#\xCB\x83\x83a#\xC4\x88\x8Aa2'V[\x91\x90a!\0V[a#\xD4\x90a2MV[\x90Pa#\xEDV[a#\xEA\x83\x83a#\xC4\x89\x89a2'V[\x90P[a#\xF7\x81\x87a2\x83V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a$\x14W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a$*W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$AW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$XW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a$qW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\x88W_\x80\xFD[a$\x94\x87\x83\x88\x01a$\x04V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\xA9W_\x80\xFD[Pa$\xB6\x86\x82\x87\x01a$\x1AV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$\xD3W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xEAW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$XW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a%\x15W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%+W_\x80\xFD[a%7\x85\x82\x86\x01a$\xC3V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a%VW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%mW_\x80\xFD[a%y\x88\x83\x89\x01a$\xC3V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x91W_\x80\xFD[Pa%\x9E\x87\x82\x88\x01a$\x1AV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a%\xD6\x81a%\xAAV[\x91\x90PV[_` \x82\x84\x03\x12\x15a%\xEBW_\x80\xFD[\x815a%\xF6\x81a%\xAAV[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a&\rW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&#W_\x80\xFD[a\x1F\x81\x84\x82\x85\x01a$\x04V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&\xC2\x81` \x86\x01` \x86\x01a&\x89V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a'RW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x07V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD0a\x01\xA0\x85\x01\x82a&\xABV[\x90P` \x83\x01Qa(\x0E` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(&\x82\x82a&\xF4V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(@\x82\x82a&\xABV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(\xCAW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xB8\x86\x83Qa']V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(~V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)LW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x89W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xA3W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$XW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*mWa*ma&/V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a*\x84W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\x9EWa*\x9Ea&/V[a*\xCF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*&V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xE3W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a+\x0FW_\x80\xFD[a+\x17a)\xB7V[\x90P\x815a+$\x81a%\xAAV[\x81R` \x82\x015a+4\x81a%\xAAV[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a+]\x81a%\xAAV[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+{W_\x80\xFD[a+\x87\x84\x82\x85\x01a*uV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+\xA3W_\x80\xFD[a+\xABa)\xE0V[\x90P\x815a+\xB8\x81a%\xAAV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+\xEFWa+\xEFa&/V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a,\x08W_\x80\xFD[\x815` a,\x1Da,\x18\x83a+\xD6V[a*&V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,;W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\x9EW`\x80\x81\x89\x03\x12\x15a,VW_\x80\xFD[a,^a*\x03V[\x815a,i\x81a%\xAAV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x8C\x81a%\xAAV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,?V[P\x96\x95PPPPPPV[_`\xC0\x82\x84\x03\x12\x15a,\xB9W_\x80\xFD[a,\xC1a)\xB7V[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a,\xDF\x81a%\xAAV[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\x13W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-#W_\x80\xFD[\x805a-1a,\x18\x82a+\xD6V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a-OW_\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a-mW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a-TV[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-\x8DW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-\xA4W_\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a-\xB8W_\x80\xFD[a-\xC0a)\xB7V[\x825\x82\x81\x11\x15a-\xCEW_\x80\xFD[a-\xDA\x87\x82\x86\x01a*\xFFV[\x82RPa-\xE9` \x84\x01a%\xCBV[` \x82\x01Ra-\xFB\x86`@\x85\x01a+\x93V[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\x11W_\x80\xFD[a.\x1D\x87\x82\x86\x01a+\xF9V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.4W_\x80\xFD[a.@\x87\x82\x86\x01a,\xA9V[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a.WW_\x80\xFD[a.c\x87\x82\x86\x01a*uV[`\xA0\x83\x01RP\x95\x94PPPPPV[_\x84Qa.\x83\x81\x84` \x89\x01a&\x89V[\x84Q\x90\x83\x01\x90a.\x97\x81\x83` \x89\x01a&\x89V[\x84Q\x91\x01\x90a.\xAA\x81\x83` \x88\x01a&\x89V[\x01\x95\x94PPPPPV[_\x80`@\x83\x85\x03\x12\x15a.\xC5W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[_` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a,\x9EW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a/DV[\x82\x81R_\x82Qa/{\x81` \x85\x01` \x87\x01a&\x89V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R_a%\xF6` \x83\x01\x84a']V[_` \x80\x83\x85\x03\x12\x15a/\xACW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/\xC2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD2W_\x80\xFD[\x80Qa/\xE0a,\x18\x82a+\xD6V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/\xFEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a0XW\x80\x85\x8A\x03\x12\x15a0\x19W_\x80\xFD[a0!a)\xE0V[\x85Qa0,\x81a%\xAAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa0E\x81a%\xAAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\x03V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a!zWa!za0dV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1F\x81`@\x83\x01\x84a']V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_\x85Qa1\t\x81`\x15\x85\x01` \x8A\x01a&\x89V[\x85Q\x90\x83\x01\x90a1 \x81`\x15\x84\x01` \x8A\x01a&\x89V[\x85Q\x91\x01\x90a16\x81`\x15\x84\x01` \x89\x01a&\x89V[\x84Q\x91\x01\x90a1L\x81`\x15\x84\x01` \x88\x01a&\x89V[\x01`\x15\x01\x96\x95PPPPPPV[_a\x01@a1\x89\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\xCA`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1\xFF\x81\x84\x01\x86a&\xABV[\x90P\x82\x81\x03a\x01 \x84\x01Ra#\xF7\x81\x85a&\xABV[\x81\x81\x03\x81\x81\x11\x15a!zWa!za0dV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a2FWa2Fa0dV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a2}Wa2}a0dV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a2\xA2Wa2\xA2a0dV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x10+\x8AA\xAF>>\xE0\xB3\xF4\x12\xE8)\xDC`)\x91\xBC\x89M\xD1\x7F\xF5\x8E\xC5\x889S\xC3\xDB\x93OdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b43660046124e4565b6101eb565b005b6100b96100c9366004612592565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b96101393660046125d4565b6104c5565b34801561014a57600080fd5b506100b9610159366004612672565b610683565b6100b961016c366004612696565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e6366004612672565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c56126fa565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610319908490879087906004016128fd565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff811115610388576103886126cb565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d858583818110610466576104666126fa565b905060200281019061047891906129c3565b6109f6565b82828151811061048f5761048f6126fa565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e96126cb565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c7878783818110610466576104666126fa565b8282815181106105d9576105d96126fa565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da62890610636908490889088906004016128fd565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b81600081518110610869576108696126fa565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f8380612a01565b810190610a7c9190612e40565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b089190612a01565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e6126fa565b60200260200101519050610ba181611468565b610bab8133611958565b610bb58133611a51565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf6126fa565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c166126fa565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611d5d9092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca96126fa565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611da4565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061338d60208301396040518060c00160405280608d815260200161340d608d9139604051602001610e9193929190612f3d565b60405160208183030381529060405280519060200120610eb48360000151611e3e565b6020808501516040808701518051938101519101516060880151929392610eda90611ed8565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612f80565b9150915060008360a00151604081518110610fc257610fc26126fa565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612fa4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001613034565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a6126fa565b602002602001015190506000836080015160a001518381518110611240576112406126fa565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686611f76565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff811115611392576113926126cb565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e6126fa565b60200260200101518686611ff3565b83828151811061143f5761143f6126fa565b6020908102919091010152600101611401565b50509392505050565b61067d84848484426120c3565b60015473ffffffffffffffffffffffffffffffffffffffff166114885750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906114df90859060040161305a565b600060405180830381865afa1580156114fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611542919081019061306d565b604083015151815191925090600061155a828461316c565b67ffffffffffffffff811115611572576115726126cb565b6040519080825280602002602001820160405280156115db57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115905790505b50905060005b8381101561162c57856040015181815181106115ff576115ff6126fa565b6020026020010151828281518110611619576116196126fa565b60209081029190910101526001016115e1565b5060008060005b8481101561194757600087828151811061164f5761164f6126fa565b6020026020010151905060005b8281101561170d57888181518110611676576116766126fa565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117055781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b60010161165c565b506000805b888110156117ce5760008b604001518281518110611732576117326126fa565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16036117c55785156117af576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117be908461316c565b9250600196505b50600101611712565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361184757841561182e576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b01510151611840908261316c565b9050600193505b8060000361189c5781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6118aa81600561271061216f565b8260200151111561191d578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611932576119326126fa565b60209081029190910101525050600101611633565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff1630146119a9576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611a25908490869060040161317f565b60006040518083038186803b158015611a3d57600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611b11846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b611b1b85856121ab565b856000015160200151866080015160405180608001604052806052815260200161338d605291396040518060c00160405280608d815260200161340d608d91396040518060600160405280602e81526020016133df602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611cc2949392916020016131ae565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611d2f9695949392600401613237565b600060405180830381600087803b158015611d4957600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611d825761035f8282611da4565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846121f2565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611dfe576040519150601f19603f3d011682016040523d82523d6000602084013e611e03565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d815260200161340d608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611ef857611ef86126cb565b6040519080825280601f01601f191660200182016040528015611f22576020820181803683370190505b50905060005b8351811015611f67576000611f55858381518110611f4857611f486126fa565b60200260200101516122dd565b60208381028501015250600101611f28565b50805160209091012092915050565b6000838503611f86575083611feb565b828211611fbf576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611fcd575082611feb565b428310611fdb575083611feb565b611fe88383428888612354565b90505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612052576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612068856020015186604001518686611f76565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b6120ce84848361236f565b6121685781612109576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561216557600082828151811061212e5761212e6126fa565b6020026020010151905061215785612710612149919061316c565b6020830151906127106123ba565b602090910152600101612111565b50505b5050505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026121a457600080fd5b5091020490565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b600060405180608001604052806052815260200161338d60529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b600061236386868686866123fe565b90505b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416158061239357508282115b80611feb575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026123ef57600080fd5b50910281810615159190040190565b600084841061240e575080612366565b600061241a87866132f2565b9050600061242888886132f2565b905060008585121561245a5761244a8383612443888a613305565b919061216f565b6124539061332c565b905061246c565b61246983836124438989613305565b90505b6124768187613364565b9998505050505050505050565b60006040828403121561249557600080fd5b50919050565b60008083601f8401126124ad57600080fd5b50813567ffffffffffffffff8111156124c557600080fd5b6020830191508360208285010111156124dd57600080fd5b9250929050565b6000806000604084860312156124f957600080fd5b833567ffffffffffffffff8082111561251157600080fd5b61251d87838801612483565b9450602086013591508082111561253357600080fd5b506125408682870161249b565b9497909650939450505050565b60008083601f84011261255f57600080fd5b50813567ffffffffffffffff81111561257757600080fd5b6020830191508360208260051b85010111156124dd57600080fd5b600080602083850312156125a557600080fd5b823567ffffffffffffffff8111156125bc57600080fd5b6125c88582860161254d565b90969095509350505050565b600080600080604085870312156125ea57600080fd5b843567ffffffffffffffff8082111561260257600080fd5b61260e8883890161254d565b9096509450602087013591508082111561262757600080fd5b506126348782880161249b565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b803561266d81612640565b919050565b60006020828403121561268457600080fd5b813561268f81612640565b9392505050565b6000602082840312156126a857600080fd5b813567ffffffffffffffff8111156126bf57600080fd5b611feb84828501612483565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b8381101561274457818101518382015260200161272c565b50506000910152565b60008151808452612765816020860160208601612729565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b838110156127f7578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a01526040918201511690880152606090960195908201906001016127ac565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526128766101a085018261274d565b905060208301516128b46020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128cc8282612797565b915050606083015184820360a08601526128e6828261274d565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b83811015612972577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018552612960868351612802565b95509382019390820190600101612926565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126129f757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a3657600080fd5b83018035915067ffffffffffffffff821115612a5157600080fd5b6020019150368190038213156124dd57600080fd5b60405160c0810167ffffffffffffffff81118282101715612a8957612a896126cb565b60405290565b6040516060810167ffffffffffffffff81118282101715612a8957612a896126cb565b6040516080810167ffffffffffffffff81118282101715612a8957612a896126cb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b1c57612b1c6126cb565b604052919050565b600082601f830112612b3557600080fd5b813567ffffffffffffffff811115612b4f57612b4f6126cb565b612b8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ad5565b818152846020838601011115612b9557600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612bc457600080fd5b612bcc612a66565b90508135612bd981612640565b81526020820135612be981612640565b8060208301525060408201356040820152606082013560608201526080820135612c1281612640565b608082015260a082013567ffffffffffffffff811115612c3157600080fd5b612c3d84828501612b24565b60a08301525092915050565b600060608284031215612c5b57600080fd5b612c63612a8f565b90508135612c7081612640565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612ca857612ca86126cb565b5060051b60200190565b600082601f830112612cc357600080fd5b81356020612cd8612cd383612c8e565b612ad5565b82815260079290921b84018101918181019086841115612cf757600080fd5b8286015b84811015612d5c5760808189031215612d145760008081fd5b612d1c612ab2565b8135612d2781612640565b8152818501358582015260408083013590820152606080830135612d4a81612640565b90820152835291830191608001612cfb565b509695505050505050565b600060c08284031215612d7957600080fd5b612d81612a66565b905081358152602080830135818301526040830135612d9f81612640565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612dd457600080fd5b8301601f81018513612de557600080fd5b8035612df3612cd382612c8e565b81815260059190911b82018301908381019087831115612e1257600080fd5b928401925b82841015612e3057833582529284019290840190612e17565b60a0860152509295945050505050565b600060208284031215612e5257600080fd5b813567ffffffffffffffff80821115612e6a57600080fd5b908301906101008286031215612e7f57600080fd5b612e87612a66565b823582811115612e9657600080fd5b612ea287828601612bb2565b825250612eb160208401612662565b6020820152612ec38660408501612c49565b604082015260a083013582811115612eda57600080fd5b612ee687828601612cb2565b60608301525060c083013582811115612efe57600080fd5b612f0a87828601612d67565b60808301525060e083013582811115612f2257600080fd5b612f2e87828601612b24565b60a08301525095945050505050565b60008451612f4f818460208901612729565b845190830190612f63818360208901612729565b8451910190612f76818360208801612729565b0195945050505050565b60008060408385031215612f9357600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612d5c5783518252928401926001929092019190840190613014565b8281526000825161304c816020850160208701612729565b919091016020019392505050565b60208152600061268f6020830184612802565b6000602080838503121561308057600080fd5b825167ffffffffffffffff81111561309757600080fd5b8301601f810185136130a857600080fd5b80516130b6612cd382612c8e565b818152606091820283018401918482019190888411156130d557600080fd5b938501935b838510156131315780858a0312156130f25760008081fd5b6130fa612a8f565b855161310581612640565b8152858701518782015260408087015161311e81612640565b90820152835293840193918501916130da565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156121ec576121ec61313d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611feb6040830184612802565b7f563244757463684f72646572207769746e6573732900000000000000000000008152600085516131e6816015850160208a01612729565b8551908301906131fd816015840160208a01612729565b8551910190613213816015840160208901612729565b8451910190613229816015840160208801612729565b016015019695505050505050565b6000610140613267838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526132a86080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526132dd8184018661274d565b9050828103610120840152612476818561274d565b818103818111156121ec576121ec61313d565b81810360008312801583831316838312821617156133255761332561313d565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361335d5761335d61313d565b5060000390565b80820182811260008312801582168215821617156133845761338461313d565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a26469706673582212201b7d41a288872094e2643d8efd2d7d2fa97b6432325500b0029b8b9a405d2e4464736f6c63430008180033 + ///0x608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af36600461245f565b6101e0565b005b6100b46100c4366004612504565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004612543565b6104af565b348015610143575f80fd5b506100b46101523660046125db565b610665565b6100b46101653660046125fd565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db3660046125db565b610872565b6101e8610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a5846109d2565b815f815181106102b7576102b761265c565b60200260200101819052506102cb81610b46565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b90849087908790600401612857565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610b95565b5061034c6001600255565b505050565b610359610961565b805f8167ffffffffffffffff8111156103745761037461262f565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c576104678585838181106104505761045061265c565b9050602002810190610462919061291a565b6109d2565b8282815181106104795761047961265c565b6020908102919091010152600101610433565b5061049681610b46565b61049f81610b95565b50506104ab6001600255565b5050565b6104b7610961565b825f8167ffffffffffffffff8111156104d2576104d261262f565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae8787838181106104505761045061265c565b8282815181106105c0576105c061265c565b6020908102919091010152600101610591565b506105dd81610b46565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d90849088908890600401612857565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610b95565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610778610961565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e579050509050610835826109d2565b815f815181106108475761084761265c565b602002602001018190525061085b81610b46565b61086481610b95565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a4a8380612956565b810190610a579190612d7d565b90505f610a6382610ce0565b9050610a6f8183610f10565b610a7882611109565b6040805160a081018252835181526080840151805160209182015193860151929391840192610aa992909190611265565b81526080840151805160209182015160608701519290930192610acd929190611333565b8152602001858060200190610ae29190612956565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001829052608083015160408101518151606090920151929550610b3f92869290611418565b5050919050565b80515f5b8181101561034c575f838281518110610b6557610b6561265c565b60200260200101519050610b7881611425565b610b828133611902565b610b8c81336119f7565b50600101610b4a565b80515f5b81811015610ccf575f838281518110610bb457610bb461265c565b602002602001015190505f81604001515190505f5b81811015610c31575f83604001518281518110610be857610be861265c565b60200260200101519050610c2881604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611cfc9092919063ffffffff16565b50600101610bc9565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610c7957610c7961265c565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610cbd91815260200190565b60405180910390a45050600101610b99565b5047156104ab576104ab3347611d43565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c8201525f9060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181526080830190915260528083529091906132ab60208301396040518060c00160405280608d815260200161332b608d9139604051602001610e5f93929190612e72565b60405160208183030381529060405280519060200120610e81835f0151611dd9565b6020808501516040808701518051938101519101516060880151929392610ea790611e72565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f57576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f808260a00151806020019051810190610f719190612eb4565b915091505f8360a00151604081518110610f8d57610f8d61265c565b602001015160f81c60f81b60f81c90505f6001868660800151604051602001610fb69190612ed6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ff29291602001612f64565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa15801561106b573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff161415806110ca575073ffffffffffffffffffffffffffffffffffffffff8116155b15611101576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b608080820151015115611172578060400151602001518160800151608001511115611160576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111b9576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8160600151518110156104ab575f826060015182815181106111df576111df61265c565b602002602001015190505f836080015160a0015183815181106112045761120461265c565b60200260200101519050805f1461125b578160200151811015611253576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111bb565b61129c60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b8360400151846020015111156112de576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6112f3856020015186604001518686611f0d565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff8111156113515761135161262f565b6040519080825280602002602001820160405280156113b957816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161136f5790505b5091505f5b8181101561140f576113ea8682815181106113db576113db61265c565b60200260200101518686611f89565b8382815181106113fc576113fc61265c565b60209081029190910101526001016113be565b50509392505050565b61065f8484848442612056565b60015473ffffffffffffffffffffffffffffffffffffffff166114455750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf039061149b908590600401612f89565b5f60405180830381865afa1580156114b5573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526114fa9190810190612f9b565b6040830151518151919250905f6115118284613091565b67ffffffffffffffff8111156115295761152961262f565b60405190808252806020026020018201604052801561159157816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816115475790505b5090505f5b838110156115e157856040015181815181106115b4576115b461265c565b60200260200101518282815181106115ce576115ce61265c565b6020908102919091010152600101611596565b505f805f5b848110156118f1575f8782815181106116015761160161265c565b602002602001015190505f5b828110156116bc578881815181106116275761162761265c565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036116b45781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b60010161160d565b505f805b88811015611779575f8b6040015182815181106116df576116df61265c565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff160361177057851561175a576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516117699084613091565b9250600196505b506001016116c0565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036117f25784156117d9576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516117eb9082613091565b9050600193505b805f036118465781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b611854816005612710612100565b826020015111156118c7578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a01815181106118dc576118dc61265c565b602090810291909101015250506001016115e6565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611953576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b906119cf90849086906004016130a4565b5f6040518083038186803b1580156119e5575f80fd5b505afa158015611101573d5f803e3d5ffd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611ab6846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b611ac0858561213a565b855f01516020015186608001516040518060800160405280605281526020016132ab605291396040518060c00160405280608d815260200161332b608d91396040518060600160405280602e81526020016132fd602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611c66949392916020016130d2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611cd3969594939260040161315a565b5f604051808303815f87803b158015611cea575f80fd5b505af1158015611101573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611d215761034c8282611d43565b61034c73ffffffffffffffffffffffffffffffffffffffff8416338484612180565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611d99576040519150601f19603f3d011682016040523d82523d5f602084013e611d9e565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060c00160405280608d815260200161332b608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610ef398939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f80825160200267ffffffffffffffff811115611e9157611e9161262f565b6040519080825280601f01601f191660200182016040528015611ebb576020820181803683370190505b5090505f5b8351811015611efe575f611eec858381518110611edf57611edf61265c565b6020026020010151612267565b60208381028501015250600101611ec0565b50805160209091012092915050565b5f838503611f1c575083611f81565b828211611f55576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428211611f63575082611f81565b428310611f71575083611f81565b611f7e83834288886122dd565b90505b949350505050565b604080516060810182525f8082526020820181905291810191909152836040015184602001511015611fe7576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ffc856020015186604001518686611f0d565b90506040518060600160405280865f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b6120618484836122f7565b6120f9578161209c576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b81518110156120f6575f8282815181106120bf576120bf61265c565b602002602001015190506120e8856127106120da9190613091565b602083015190612710612341565b6020909101526001016120a3565b50505b5050505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612133575f80fd5b5091020490565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8316825283810151810151908201525b92915050565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806120f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b5f6040518060800160405280605281526020016132ab60529139805160209182012083518483015160408087015160608801519151610ef3969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b5f6122eb8686868686612383565b90505b95945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416158061231a57508282115b80611f81575073ffffffffffffffffffffffffffffffffffffffff84163314949350505050565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612374575f80fd5b50910281810615159190040190565b5f8484106123925750806122ee565b5f61239d8786613214565b90505f6123aa8888613214565b90505f858512156123db576123cb83836123c4888a613227565b9190612100565b6123d49061324d565b90506123ed565b6123ea83836123c48989613227565b90505b6123f78187613283565b9998505050505050505050565b5f60408284031215612414575f80fd5b50919050565b5f8083601f84011261242a575f80fd5b50813567ffffffffffffffff811115612441575f80fd5b602083019150836020828501011115612458575f80fd5b9250929050565b5f805f60408486031215612471575f80fd5b833567ffffffffffffffff80821115612488575f80fd5b61249487838801612404565b945060208601359150808211156124a9575f80fd5b506124b68682870161241a565b9497909650939450505050565b5f8083601f8401126124d3575f80fd5b50813567ffffffffffffffff8111156124ea575f80fd5b6020830191508360208260051b8501011115612458575f80fd5b5f8060208385031215612515575f80fd5b823567ffffffffffffffff81111561252b575f80fd5b612537858286016124c3565b90969095509350505050565b5f805f8060408587031215612556575f80fd5b843567ffffffffffffffff8082111561256d575f80fd5b612579888389016124c3565b90965094506020870135915080821115612591575f80fd5b5061259e8782880161241a565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b80356125d6816125aa565b919050565b5f602082840312156125eb575f80fd5b81356125f6816125aa565b9392505050565b5f6020828403121561260d575f80fd5b813567ffffffffffffffff811115612623575f80fd5b611f8184828501612404565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156126a357818101518382015260200161268b565b50505f910152565b5f81518084526126c2816020860160208601612689565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b83811015612752578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612707565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127d06101a08501826126ab565b9050602083015161280e6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261282682826126f4565b915050606083015184820360a086015261284082826126ab565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b838110156128ca577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128b886835161275d565b9550938201939082019060010161287e565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261294c575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612989575f80fd5b83018035915067ffffffffffffffff8211156129a3575f80fd5b602001915036819003821315612458575f80fd5b60405160c0810167ffffffffffffffff811182821017156129da576129da61262f565b60405290565b6040516060810167ffffffffffffffff811182821017156129da576129da61262f565b6040516080810167ffffffffffffffff811182821017156129da576129da61262f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a6d57612a6d61262f565b604052919050565b5f82601f830112612a84575f80fd5b813567ffffffffffffffff811115612a9e57612a9e61262f565b612acf60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a26565b818152846020838601011115612ae3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215612b0f575f80fd5b612b176129b7565b90508135612b24816125aa565b81526020820135612b34816125aa565b8060208301525060408201356040820152606082013560608201526080820135612b5d816125aa565b608082015260a082013567ffffffffffffffff811115612b7b575f80fd5b612b8784828501612a75565b60a08301525092915050565b5f60608284031215612ba3575f80fd5b612bab6129e0565b90508135612bb8816125aa565b80825250602082013560208201526040820135604082015292915050565b5f67ffffffffffffffff821115612bef57612bef61262f565b5060051b60200190565b5f82601f830112612c08575f80fd5b81356020612c1d612c1883612bd6565b612a26565b82815260079290921b84018101918181019086841115612c3b575f80fd5b8286015b84811015612c9e5760808189031215612c56575f80fd5b612c5e612a03565b8135612c69816125aa565b8152818501358582015260408083013590820152606080830135612c8c816125aa565b90820152835291830191608001612c3f565b509695505050505050565b5f60c08284031215612cb9575f80fd5b612cc16129b7565b905081358152602080830135818301526040830135612cdf816125aa565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d13575f80fd5b8301601f81018513612d23575f80fd5b8035612d31612c1882612bd6565b81815260059190911b82018301908381019087831115612d4f575f80fd5b928401925b82841015612d6d57833582529284019290840190612d54565b60a0860152509295945050505050565b5f60208284031215612d8d575f80fd5b813567ffffffffffffffff80821115612da4575f80fd5b908301906101008286031215612db8575f80fd5b612dc06129b7565b823582811115612dce575f80fd5b612dda87828601612aff565b825250612de9602084016125cb565b6020820152612dfb8660408501612b93565b604082015260a083013582811115612e11575f80fd5b612e1d87828601612bf9565b60608301525060c083013582811115612e34575f80fd5b612e4087828601612ca9565b60808301525060e083013582811115612e57575f80fd5b612e6387828601612a75565b60a08301525095945050505050565b5f8451612e83818460208901612689565b845190830190612e97818360208901612689565b8451910190612eaa818360208801612689565b0195945050505050565b5f8060408385031215612ec5575f80fd5b505080516020909101519092909150565b5f602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c0808601528181518084526101008701915084830193505f92505b80831015612c9e5783518252928401926001929092019190840190612f44565b8281525f8251612f7b816020850160208701612689565b919091016020019392505050565b602081525f6125f6602083018461275d565b5f6020808385031215612fac575f80fd5b825167ffffffffffffffff811115612fc2575f80fd5b8301601f81018513612fd2575f80fd5b8051612fe0612c1882612bd6565b81815260609182028301840191848201919088841115612ffe575f80fd5b938501935b838510156130585780858a031215613019575f80fd5b6130216129e0565b855161302c816125aa565b81528587015187820152604080870151613045816125aa565b9082015283529384019391850191613003565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561217a5761217a613064565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f611f81604083018461275d565b7f563244757463684f72646572207769746e65737329000000000000000000000081525f8551613109816015850160208a01612689565b855190830190613120816015840160208a01612689565b8551910190613136816015840160208901612689565b845191019061314c816015840160208801612689565b016015019695505050505050565b5f610140613189838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526131ca6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526131ff818401866126ab565b90508281036101208401526123f781856126ab565b8181038181111561217a5761217a613064565b8181035f83128015838313168383128216171561324657613246613064565b5092915050565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361327d5761327d613064565b505f0390565b8082018281125f8312801582168215821617156132a2576132a2613064565b50509291505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220102b8a41af3e3ee0b3f412e829dc602991bc894dd17ff58ec5883953c3db934f64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a$\xE4V[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a%\x92V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a%\xD4V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a&rV[a\x06\x83V[a\0\xB9a\x01l6`\x04a&\x96V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a&rV[a\x08\x94V[a\x01\xF3a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\t\xF6V[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a&\xFAV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0B\xBEV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\t\x85V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a)\xC3V[a\t\xF6V[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0BmV[a\x04\xB5\x81a\x0B\xBEV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\t\x85V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa&\xFAV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0BmV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(\xFDV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0B\xBEV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\t\x85V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\t\xF6V[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia&\xFAV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0BmV[a\x08\x86\x81a\x0B\xBEV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xF0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\no\x83\x80a*\x01V[\x81\x01\x90a\n|\x91\x90a.@V[\x90P`\0a\n\x89\x82a\r\x11V[\x90Pa\n\x95\x81\x83a\x0FCV[a\n\x9E\x82a\x11BV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xCF\x92\x90\x91\x90a\x12\xA2V[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xF3\x92\x91\x90a\x13tV[\x81R` \x01\x85\x80` \x01\x90a\x0B\x08\x91\x90a*\x01V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0Bf\x92\x86\x92\x90a\x14[V[PP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0B\x8EWa\x0B\x8Ea&\xFAV[` \x02` \x01\x01Q\x90Pa\x0B\xA1\x81a\x14hV[a\x0B\xAB\x813a\x19XV[a\x0B\xB5\x813a\x1AQV[P`\x01\x01a\x0BrV[\x80Q`\0[\x81\x81\x10\x15a\r\0W`\0\x83\x82\x81Q\x81\x10a\x0B\xDFWa\x0B\xDFa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\x0C`W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x16Wa\x0C\x16a&\xFAV[` \x02` \x01\x01Q\x90Pa\x0CW\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1D]\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xF6V[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0C\xA9Wa\x0C\xA9a&\xFAV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\x0C\xEE\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\xC3V[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1D\xA4V[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\0\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a3\x8D` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q` \x01a\x0E\x91\x93\x92\x91\x90a/=V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\xB4\x83`\0\x01Qa\x1E>V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xDA\x90a\x1E\xD8V[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0F\x8AW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0F\xA5\x91\x90a/\x80V[\x91P\x91P`\0\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\xC2Wa\x0F\xC2a&\xFAV[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P`\0`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xEC\x91\x90a/\xA4V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10(\x92\x91` \x01a04V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10\xA4W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x11\x03WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11:W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11\xABW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11\x99W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xF2W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0[\x81``\x01QQ\x81\x10\x15a\x04\xC1W`\0\x82``\x01Q\x82\x81Q\x81\x10a\x12\x1AWa\x12\x1Aa&\xFAV[` \x02` \x01\x01Q\x90P`\0\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12@Wa\x12@a&\xFAV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12\x98W\x81` \x01Q\x81\x10\x15a\x12\x90W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xF5V[a\x12\xDC`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x13\x1EW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\x134\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13\x92Wa\x13\x92a&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xFBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13\xB0W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x14RWa\x14-\x86\x82\x81Q\x81\x10a\x14\x1EWa\x14\x1Ea&\xFAV[` \x02` \x01\x01Q\x86\x86a\x1F\xF3V[\x83\x82\x81Q\x81\x10a\x14?Wa\x14?a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\x01V[PP\x93\x92PPPV[a\x06}\x84\x84\x84\x84Ba \xC3V[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14\x88WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\xDF\x90\x85\x90`\x04\x01a0ZV[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xFCW=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15B\x91\x90\x81\x01\x90a0mV[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x15Z\x82\x84a1lV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15rWa\x15ra&\xCBV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\xDBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15\x90W\x90P[P\x90P`\0[\x83\x81\x10\x15a\x16,W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xFFWa\x15\xFFa&\xFAV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x19Wa\x16\x19a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\xE1V[P`\0\x80`\0[\x84\x81\x10\x15a\x19GW`\0\x87\x82\x81Q\x81\x10a\x16OWa\x16Oa&\xFAV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\rW\x88\x81\x81Q\x81\x10a\x16vWa\x16va&\xFAV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x05W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x16\\V[P`\0\x80[\x88\x81\x10\x15a\x17\xCEW`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x172Wa\x172a&\xFAV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xC5W\x85\x15a\x17\xAFW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17\xBE\x90\x84a1lV[\x92P`\x01\x96P[P`\x01\x01a\x17\x12V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18GW\x84\x15a\x18.W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18@\x90\x82a1lV[\x90P`\x01\x93P[\x80`\0\x03a\x18\x9CW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x18\xAA\x81`\x05a'\x10a!oV[\x82` \x01Q\x11\x15a\x19\x1DW\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x192Wa\x192a&\xFAV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x163V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19\xA9W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A%\x90\x84\x90\x86\x90`\x04\x01a1\x7FV[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A=W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x11\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1B\x1B\x85\x85a!\xABV[\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a3\xDF`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1C\xC2\x94\x93\x92\x91` \x01a1\xAEV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1D/\x96\x95\x94\x93\x92`\x04\x01a27V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1DIW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x11:W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D\x82Wa\x03_\x82\x82a\x1D\xA4V[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\xF2V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1D\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1E\x03V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a4\r`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0F&\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\xF8Wa\x1E\xF8a&\xCBV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1F\"W` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\0[\x83Q\x81\x10\x15a\x1FgW`\0a\x1FU\x85\x83\x81Q\x81\x10a\x1FHWa\x1FHa&\xFAV[` \x02` \x01\x01Qa\"\xDDV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1F(V[P\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x83\x85\x03a\x1F\x86WP\x83a\x1F\xEBV[\x82\x82\x11a\x1F\xBFW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1F\xCDWP\x82a\x1F\xEBV[B\x83\x10a\x1F\xDBWP\x83a\x1F\xEBV[a\x1F\xE8\x83\x83B\x88\x88a#TV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a RW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a h\x85` \x01Q\x86`@\x01Q\x86\x86a\x1FvV[\x90P`@Q\x80``\x01`@R\x80\x86`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a \xCE\x84\x84\x83a#oV[a!hW\x81a!\tW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a!eW`\0\x82\x82\x81Q\x81\x10a!.Wa!.a&\xFAV[` \x02` \x01\x01Q\x90Pa!W\x85a'\x10a!I\x91\x90a1lV[` \x83\x01Q\x90a'\x10a#\xBAV[` \x90\x91\x01R`\x01\x01a!\x11V[PP[PPPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!\xA4W`\0\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a!hW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a3\x8D`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0F&\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[`\0a#c\x86\x86\x86\x86\x86a#\xFEV[\x90P[\x95\x94PPPPPV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x93WP\x82\x82\x11[\x80a\x1F\xEBWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#\xEFW`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0\x84\x84\x10a$\x0EWP\x80a#fV[`\0a$\x1A\x87\x86a2\xF2V[\x90P`\0a$(\x88\x88a2\xF2V[\x90P`\0\x85\x85\x12\x15a$ZWa$J\x83\x83a$C\x88\x8Aa3\x05V[\x91\x90a!oV[a$S\x90a3,V[\x90Pa$lV[a$i\x83\x83a$C\x89\x89a3\x05V[\x90P[a$v\x81\x87a3dV[\x99\x98PPPPPPPPPV[`\0`@\x82\x84\x03\x12\x15a$\x95W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a$\xADW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xC5W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a$\xF9W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%\x11W`\0\x80\xFD[a%\x1D\x87\x83\x88\x01a$\x83V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a%3W`\0\x80\xFD[Pa%@\x86\x82\x87\x01a$\x9BV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a%_W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%wW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$\xDDW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a%\xA5W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%\xBCW`\0\x80\xFD[a%\xC8\x85\x82\x86\x01a%MV[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a%\xEAW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a&\x02W`\0\x80\xFD[a&\x0E\x88\x83\x89\x01a%MV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a&'W`\0\x80\xFD[Pa&4\x87\x82\x88\x01a$\x9BV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a&m\x81a&@V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a&\x84W`\0\x80\xFD[\x815a&\x8F\x81a&@V[\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a&\xA8W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\xBFW`\0\x80\xFD[a\x1F\xEB\x84\x82\x85\x01a$\x83V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a'DW\x81\x81\x01Q\x83\x82\x01R` \x01a',V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra'e\x81` \x86\x01` \x86\x01a')V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a'\xF7W\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\xACV[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra(va\x01\xA0\x85\x01\x82a'MV[\x90P` \x83\x01Qa(\xB4` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(\xCC\x82\x82a'\x97V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(\xE6\x82\x82a'MV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a)rW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra)`\x86\x83Qa(\x02V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a)&V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)\xF7W`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a*6W`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a*QW`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$\xDDW`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*\x89Wa*\x89a&\xCBV[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a+\x1CWa+\x1Ca&\xCBV[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a+5W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+OWa+Oa&\xCBV[a+\x80` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*\xD5V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a+\x95W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a+\xC4W`\0\x80\xFD[a+\xCCa*fV[\x90P\x815a+\xD9\x81a&@V[\x81R` \x82\x015a+\xE9\x81a&@V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a,\x12\x81a&@V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a,1W`\0\x80\xFD[a,=\x84\x82\x85\x01a+$V[`\xA0\x83\x01RP\x92\x91PPV[`\0``\x82\x84\x03\x12\x15a,[W`\0\x80\xFD[a,ca*\x8FV[\x90P\x815a,p\x81a&@V[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xA8Wa,\xA8a&\xCBV[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a,\xC3W`\0\x80\xFD[\x815` a,\xD8a,\xD3\x83a,\x8EV[a*\xD5V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,\xF7W`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a-\\W`\x80\x81\x89\x03\x12\x15a-\x14W`\0\x80\x81\xFD[a-\x1Ca*\xB2V[\x815a-'\x81a&@V[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a-J\x81a&@V[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,\xFBV[P\x96\x95PPPPPPV[`\0`\xC0\x82\x84\x03\x12\x15a-yW`\0\x80\xFD[a-\x81a*fV[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a-\x9F\x81a&@V[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\xD4W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-\xE5W`\0\x80\xFD[\x805a-\xF3a,\xD3\x82a,\x8EV[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a.\x12W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a.0W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a.\x17V[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a.RW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a.jW`\0\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a.\x7FW`\0\x80\xFD[a.\x87a*fV[\x825\x82\x81\x11\x15a.\x96W`\0\x80\xFD[a.\xA2\x87\x82\x86\x01a+\xB2V[\x82RPa.\xB1` \x84\x01a&bV[` \x82\x01Ra.\xC3\x86`@\x85\x01a,IV[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\xDAW`\0\x80\xFD[a.\xE6\x87\x82\x86\x01a,\xB2V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.\xFEW`\0\x80\xFD[a/\n\x87\x82\x86\x01a-gV[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a/\"W`\0\x80\xFD[a/.\x87\x82\x86\x01a+$V[`\xA0\x83\x01RP\x95\x94PPPPPV[`\0\x84Qa/O\x81\x84` \x89\x01a')V[\x84Q\x90\x83\x01\x90a/c\x81\x83` \x89\x01a')V[\x84Q\x91\x01\x90a/v\x81\x83` \x88\x01a')V[\x01\x95\x94PPPPPV[`\0\x80`@\x83\x85\x03\x12\x15a/\x93W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a-\\W\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a0\x14V[\x82\x81R`\0\x82Qa0L\x81` \x85\x01` \x87\x01a')V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R`\0a&\x8F` \x83\x01\x84a(\x02V[`\0` \x80\x83\x85\x03\x12\x15a0\x80W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\x97W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a0\xA8W`\0\x80\xFD[\x80Qa0\xB6a,\xD3\x82a,\x8EV[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a0\xD5W`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a11W\x80\x85\x8A\x03\x12\x15a0\xF2W`\0\x80\x81\xFD[a0\xFAa*\x8FV[\x85Qa1\x05\x81a&@V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa1\x1E\x81a&@V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\xDAV[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a!\xECWa!\xECa1=V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a\x1F\xEB`@\x83\x01\x84a(\x02V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x85Qa1\xE6\x81`\x15\x85\x01` \x8A\x01a')V[\x85Q\x90\x83\x01\x90a1\xFD\x81`\x15\x84\x01` \x8A\x01a')V[\x85Q\x91\x01\x90a2\x13\x81`\x15\x84\x01` \x89\x01a')V[\x84Q\x91\x01\x90a2)\x81`\x15\x84\x01` \x88\x01a')V[\x01`\x15\x01\x96\x95PPPPPPV[`\0a\x01@a2g\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra2\xA8`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra2\xDD\x81\x84\x01\x86a'MV[\x90P\x82\x81\x03a\x01 \x84\x01Ra$v\x81\x85a'MV[\x81\x81\x03\x81\x81\x11\x15a!\xECWa!\xECa1=V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a3%Wa3%a1=V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a3]Wa3]a1=V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a3\x84Wa3\x84a1=V[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x1B}A\xA2\x88\x87 \x94\xE2d=\x8E\xFD-}/\xA9{d22U\0\xB0\x02\x9B\x8B\x9A@].DdsolcC\0\x08\x18\x003", + b"`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a$_V[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a%\x04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a%CV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a%\xDBV[a\x06eV[a\0\xB4a\x01e6`\x04a%\xFDV[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a%\xDBV[a\x08rV[a\x01\xE8a\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\t\xD2V[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a&\\V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0B\x95V[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\taV[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a)\x1AV[a\t\xD2V[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0BFV[a\x04\x9F\x81a\x0B\x95V[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\taV[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa&\\V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0BFV[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a(WV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0B\x95V[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\taV[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\t\xD2V[\x81_\x81Q\x81\x10a\x08GWa\x08Ga&\\V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0BFV[a\x08d\x81a\x0B\x95V[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\x02\x80T\x03a\t\xCCW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\nJ\x83\x80a)VV[\x81\x01\x90a\nW\x91\x90a-}V[\x90P_a\nc\x82a\x0C\xE0V[\x90Pa\no\x81\x83a\x0F\x10V[a\nx\x82a\x11\tV[`@\x80Q`\xA0\x81\x01\x82R\x83Q\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q\x93\x86\x01Q\x92\x93\x91\x84\x01\x92a\n\xA9\x92\x90\x91\x90a\x12eV[\x81R`\x80\x84\x01Q\x80Q` \x91\x82\x01Q``\x87\x01Q\x92\x90\x93\x01\x92a\n\xCD\x92\x91\x90a\x133V[\x81R` \x01\x85\x80` \x01\x90a\n\xE2\x91\x90a)VV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x01\x82\x90R`\x80\x83\x01Q`@\x81\x01Q\x81Q``\x90\x92\x01Q\x92\x95Pa\x0B?\x92\x86\x92\x90a\x14\x18V[PP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0BeWa\x0Bea&\\V[` \x02` \x01\x01Q\x90Pa\x0Bx\x81a\x14%V[a\x0B\x82\x813a\x19\x02V[a\x0B\x8C\x813a\x19\xF7V[P`\x01\x01a\x0BJV[\x80Q_[\x81\x81\x10\x15a\x0C\xCFW_\x83\x82\x81Q\x81\x10a\x0B\xB4Wa\x0B\xB4a&\\V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C1W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0B\xE8Wa\x0B\xE8a&\\V[` \x02` \x01\x01Q\x90Pa\x0C(\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1C\xFC\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0B\xC9V[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\x0CyWa\x0Cya&\\V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\x0C\xBD\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0B\x99V[PG\x15a\x04\xABWa\x04\xAB3Ga\x1DCV[`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R_\x90`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\x80\x83\x01\x90\x91R`R\x80\x83R\x90\x91\x90a2\xAB` \x83\x019`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q` \x01a\x0E_\x93\x92\x91\x90a.rV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x0E\x81\x83_\x01Qa\x1D\xD9V[` \x80\x85\x01Q`@\x80\x87\x01Q\x80Q\x93\x81\x01Q\x91\x01Q``\x88\x01Q\x92\x93\x92a\x0E\xA7\x90a\x1ErV[`@\x80Q` \x81\x01\x98\x90\x98R\x87\x01\x95\x90\x95Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16``\x87\x01R\x92\x90\x91\x16`\x80\x85\x01R`\xA0\x84\x01R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\x80\x81\x01Q` \x01Q\x81Q``\x01Q\x10\x15a\x0FWW`@Q\x7Fw:a\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x82`\xA0\x01Q\x80` \x01\x90Q\x81\x01\x90a\x0Fq\x91\x90a.\xB4V[\x91P\x91P_\x83`\xA0\x01Q`@\x81Q\x81\x10a\x0F\x8DWa\x0F\x8Da&\\V[` \x01\x01Q`\xF8\x1C`\xF8\x1B`\xF8\x1C\x90P_`\x01\x86\x86`\x80\x01Q`@Q` \x01a\x0F\xB6\x91\x90a.\xD6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x0F\xF2\x92\x91` \x01a/dV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 _\x84R\x90\x83\x01\x80\x83RR`\xFF\x85\x16\x90\x82\x01R``\x81\x01\x86\x90R`\x80\x81\x01\x85\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x10kW=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x85` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a\x10\xCAWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a\x11\x01W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPV[`\x80\x80\x82\x01Q\x01Q\x15a\x11rW\x80`@\x01Q` \x01Q\x81`\x80\x01Q`\x80\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x80\x82\x01Q\x01Q`@\x82\x01Q` \x01R[\x80``\x01QQ\x81`\x80\x01Q`\xA0\x01QQ\x14a\x11\xB9W`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_[\x81``\x01QQ\x81\x10\x15a\x04\xABW_\x82``\x01Q\x82\x81Q\x81\x10a\x11\xDFWa\x11\xDFa&\\V[` \x02` \x01\x01Q\x90P_\x83`\x80\x01Q`\xA0\x01Q\x83\x81Q\x81\x10a\x12\x04Wa\x12\x04a&\\V[` \x02` \x01\x01Q\x90P\x80_\x14a\x12[W\x81` \x01Q\x81\x10\x15a\x12SW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xBBV[a\x12\x9C`@Q\x80``\x01`@R\x80_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01_\x81R` \x01_\x81RP\x90V[\x83`@\x01Q\x84` \x01Q\x11\x15a\x12\xDEW`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x12\xF3\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[`@\x80Q``\x81\x01\x82R\x87Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x81\x01\x92\x90\x92R\x95\x86\x01Q\x95\x81\x01\x95\x90\x95RP\x92\x93\x92PPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x13QWa\x13Qa&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x13\xB9W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x13oW\x90P[P\x91P_[\x81\x81\x10\x15a\x14\x0FWa\x13\xEA\x86\x82\x81Q\x81\x10a\x13\xDBWa\x13\xDBa&\\V[` \x02` \x01\x01Q\x86\x86a\x1F\x89V[\x83\x82\x81Q\x81\x10a\x13\xFCWa\x13\xFCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x13\xBEV[PP\x93\x92PPPV[a\x06_\x84\x84\x84\x84Ba VV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x14EWPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R_\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x14\x9B\x90\x85\x90`\x04\x01a/\x89V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\xB5W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x14\xFA\x91\x90\x81\x01\x90a/\x9BV[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\x11\x82\x84a0\x91V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15)Wa\x15)a&/V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x15\x91W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x15GW\x90P[P\x90P_[\x83\x81\x10\x15a\x15\xE1W\x85`@\x01Q\x81\x81Q\x81\x10a\x15\xB4Wa\x15\xB4a&\\V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x15\xCEWa\x15\xCEa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x15\x96V[P_\x80_[\x84\x81\x10\x15a\x18\xF1W_\x87\x82\x81Q\x81\x10a\x16\x01Wa\x16\x01a&\\V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x16\xBCW\x88\x81\x81Q\x81\x10a\x16'Wa\x16'a&\\V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x16\xB4W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\rV[P_\x80[\x88\x81\x10\x15a\x17yW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x16\xDFWa\x16\xDFa&\\V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17pW\x85\x15a\x17ZW`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x17i\x90\x84a0\x91V[\x92P`\x01\x96P[P`\x01\x01a\x16\xC0V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x17\xF2W\x84\x15a\x17\xD9W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x17\xEB\x90\x82a0\x91V[\x90P`\x01\x93P[\x80_\x03a\x18FW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x18T\x81`\x05a'\x10a!\0V[\x82` \x01Q\x11\x15a\x18\xC7W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x18\xDCWa\x18\xDCa&\\V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x15\xE6V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x19SW`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x19\xCF\x90\x84\x90\x86\x90`\x04\x01a0\xA4V[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x19\xE5W_\x80\xFD[PZ\xFA\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1A\xB6\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[a\x1A\xC0\x85\x85a!:V[\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919`@Q\x80``\x01`@R\x80`.\x81R` \x01a2\xFD`.\x919`@Q\x7FV2DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Faddress baseInputToken,\0\0\0\0\0\0\0\0\0`M\x82\x01R\x7Fuint256 baseInputStartAmount,\0\0\0`d\x82\x01R\x7Fuint256 baseInputEndAmount,\0\0\0\0\0`\x81\x82\x01R\x7FDutchOutput[] baseOutputs)\0\0\0\0\0\0`\x9C\x82\x01R`\xB6\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1Cf\x94\x93\x92\x91` \x01a0\xD2V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1C\xD3\x96\x95\x94\x93\x92`\x04\x01a1ZV[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x1C\xEAW_\x80\xFD[PZ\xF1\x15\x80\x15a\x11\x01W=_\x80>=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1D!Wa\x03L\x82\x82a\x1DCV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a!\x80V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1D\x99W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\x9EV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01a3+`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x0E\xF3\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1E\x91Wa\x1E\x91a&/V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\x1E\xBBW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P_[\x83Q\x81\x10\x15a\x1E\xFEW_a\x1E\xEC\x85\x83\x81Q\x81\x10a\x1E\xDFWa\x1E\xDFa&\\V[` \x02` \x01\x01Qa\"gV[` \x83\x81\x02\x85\x01\x01RP`\x01\x01a\x1E\xC0V[P\x80Q` \x90\x91\x01 \x92\x91PPV[_\x83\x85\x03a\x1F\x1CWP\x83a\x1F\x81V[\x82\x82\x11a\x1FUW`@Q\x7FC\x134S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[B\x82\x11a\x1FcWP\x82a\x1F\x81V[B\x83\x10a\x1FqWP\x83a\x1F\x81V[a\x1F~\x83\x83B\x88\x88a\"\xDDV[\x90P[\x94\x93PPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R\x83`@\x01Q\x84` \x01Q\x10\x15a\x1F\xE7W`@Q\x7F|\x1F\x81\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xFC\x85` \x01Q\x86`@\x01Q\x86\x86a\x1F\rV[\x90P`@Q\x80``\x01`@R\x80\x86_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x86``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x91PP\x93\x92PPPV[a a\x84\x84\x83a\"\xF7V[a \xF9W\x81a \x9CW`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a \xF6W_\x82\x82\x81Q\x81\x10a \xBFWa \xBFa&\\V[` \x02` \x01\x01Q\x90Pa \xE8\x85a'\x10a \xDA\x91\x90a0\x91V[` \x83\x01Q\x90a'\x10a#AV[` \x90\x91\x01R`\x01\x01a \xA3V[PP[PPPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a!3W_\x80\xFD[P\x91\x02\x04\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x82R\x83\x81\x01Q\x81\x01Q\x90\x82\x01R[\x92\x91PPV[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a \xF9W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_`@Q\x80`\x80\x01`@R\x80`R\x81R` \x01a2\xAB`R\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q\x91Qa\x0E\xF3\x96\x91\x92\x91\x01\x94\x85Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16` \x86\x01R`@\x85\x01\x92\x90\x92R``\x84\x01R\x16`\x80\x82\x01R`\xA0\x01\x90V[_a\"\xEB\x86\x86\x86\x86\x86a#\x83V[\x90P[\x95\x94PPPPPV[_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a#\x1AWP\x82\x82\x11[\x80a\x1F\x81WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x94\x93PPPPV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a#tW_\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[_\x84\x84\x10a#\x92WP\x80a\"\xEEV[_a#\x9D\x87\x86a2\x14V[\x90P_a#\xAA\x88\x88a2\x14V[\x90P_\x85\x85\x12\x15a#\xDBWa#\xCB\x83\x83a#\xC4\x88\x8Aa2'V[\x91\x90a!\0V[a#\xD4\x90a2MV[\x90Pa#\xEDV[a#\xEA\x83\x83a#\xC4\x89\x89a2'V[\x90P[a#\xF7\x81\x87a2\x83V[\x99\x98PPPPPPPPPV[_`@\x82\x84\x03\x12\x15a$\x14W_\x80\xFD[P\x91\x90PV[_\x80\x83`\x1F\x84\x01\x12a$*W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$AW_\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a$XW_\x80\xFD[\x92P\x92\x90PV[_\x80_`@\x84\x86\x03\x12\x15a$qW_\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\x88W_\x80\xFD[a$\x94\x87\x83\x88\x01a$\x04V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a$\xA9W_\x80\xFD[Pa$\xB6\x86\x82\x87\x01a$\x1AV[\x94\x97\x90\x96P\x93\x94PPPPV[_\x80\x83`\x1F\x84\x01\x12a$\xD3W_\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xEAW_\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a$XW_\x80\xFD[_\x80` \x83\x85\x03\x12\x15a%\x15W_\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a%+W_\x80\xFD[a%7\x85\x82\x86\x01a$\xC3V[\x90\x96\x90\x95P\x93PPPPV[_\x80_\x80`@\x85\x87\x03\x12\x15a%VW_\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a%mW_\x80\xFD[a%y\x88\x83\x89\x01a$\xC3V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a%\x91W_\x80\xFD[Pa%\x9E\x87\x82\x88\x01a$\x1AV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08oW_\x80\xFD[\x805a%\xD6\x81a%\xAAV[\x91\x90PV[_` \x82\x84\x03\x12\x15a%\xEBW_\x80\xFD[\x815a%\xF6\x81a%\xAAV[\x93\x92PPPV[_` \x82\x84\x03\x12\x15a&\rW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&#W_\x80\xFD[a\x1F\x81\x84\x82\x85\x01a$\x04V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`A`\x04R`$_\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`2`\x04R`$_\xFD[_[\x83\x81\x10\x15a&\xA3W\x81\x81\x01Q\x83\x82\x01R` \x01a&\x8BV[PP_\x91\x01RV[_\x81Q\x80\x84Ra&\xC2\x81` \x86\x01` \x86\x01a&\x89V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[_\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01_[\x83\x81\x10\x15a'RW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a'\x07V[P\x94\x95\x94PPPPPV[_\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra'\xD0a\x01\xA0\x85\x01\x82a&\xABV[\x90P` \x83\x01Qa(\x0E` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra(&\x82\x82a&\xF4V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra(@\x82\x82a&\xABV[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[_`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01_[\x83\x81\x10\x15a(\xCAW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra(\xB8\x86\x83Qa']V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a(~V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017_\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[_\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a)LW_\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[_\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a)\x89W_\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a)\xA3W_\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a$XW_\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@R\x90V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x80\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a)\xDAWa)\xDAa&/V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a*mWa*ma&/V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a*\x84W_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a*\x9EWa*\x9Ea&/V[a*\xCF` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a*&V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a*\xE3W_\x80\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[_`\xC0\x82\x84\x03\x12\x15a+\x0FW_\x80\xFD[a+\x17a)\xB7V[\x90P\x815a+$\x81a%\xAAV[\x81R` \x82\x015a+4\x81a%\xAAV[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a+]\x81a%\xAAV[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a+{W_\x80\xFD[a+\x87\x84\x82\x85\x01a*uV[`\xA0\x83\x01RP\x92\x91PPV[_``\x82\x84\x03\x12\x15a+\xA3W_\x80\xFD[a+\xABa)\xE0V[\x90P\x815a+\xB8\x81a%\xAAV[\x80\x82RP` \x82\x015` \x82\x01R`@\x82\x015`@\x82\x01R\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a+\xEFWa+\xEFa&/V[P`\x05\x1B` \x01\x90V[_\x82`\x1F\x83\x01\x12a,\x08W_\x80\xFD[\x815` a,\x1Da,\x18\x83a+\xD6V[a*&V[\x82\x81R`\x07\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a,;W_\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a,\x9EW`\x80\x81\x89\x03\x12\x15a,VW_\x80\xFD[a,^a*\x03V[\x815a,i\x81a%\xAAV[\x81R\x81\x85\x015\x85\x82\x01R`@\x80\x83\x015\x90\x82\x01R``\x80\x83\x015a,\x8C\x81a%\xAAV[\x90\x82\x01R\x83R\x91\x83\x01\x91`\x80\x01a,?V[P\x96\x95PPPPPPV[_`\xC0\x82\x84\x03\x12\x15a,\xB9W_\x80\xFD[a,\xC1a)\xB7V[\x90P\x815\x81R` \x80\x83\x015\x81\x83\x01R`@\x83\x015a,\xDF\x81a%\xAAV[\x80`@\x84\x01RP``\x83\x015``\x83\x01R`\x80\x83\x015`\x80\x83\x01R`\xA0\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a-\x13W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-#W_\x80\xFD[\x805a-1a,\x18\x82a+\xD6V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a-OW_\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a-mW\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a-TV[`\xA0\x86\x01RP\x92\x95\x94PPPPPV[_` \x82\x84\x03\x12\x15a-\x8DW_\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a-\xA4W_\x80\xFD[\x90\x83\x01\x90a\x01\0\x82\x86\x03\x12\x15a-\xB8W_\x80\xFD[a-\xC0a)\xB7V[\x825\x82\x81\x11\x15a-\xCEW_\x80\xFD[a-\xDA\x87\x82\x86\x01a*\xFFV[\x82RPa-\xE9` \x84\x01a%\xCBV[` \x82\x01Ra-\xFB\x86`@\x85\x01a+\x93V[`@\x82\x01R`\xA0\x83\x015\x82\x81\x11\x15a.\x11W_\x80\xFD[a.\x1D\x87\x82\x86\x01a+\xF9V[``\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a.4W_\x80\xFD[a.@\x87\x82\x86\x01a,\xA9V[`\x80\x83\x01RP`\xE0\x83\x015\x82\x81\x11\x15a.WW_\x80\xFD[a.c\x87\x82\x86\x01a*uV[`\xA0\x83\x01RP\x95\x94PPPPPV[_\x84Qa.\x83\x81\x84` \x89\x01a&\x89V[\x84Q\x90\x83\x01\x90a.\x97\x81\x83` \x89\x01a&\x89V[\x84Q\x91\x01\x90a.\xAA\x81\x83` \x88\x01a&\x89V[\x01\x95\x94PPPPPV[_\x80`@\x83\x85\x03\x12\x15a.\xC5W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[_` \x80\x83R`\xE0\x83\x01\x84Q\x82\x85\x01R\x81\x85\x01Q`@\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`@\x86\x01Q\x16``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x85\x01R`\xA0\x85\x01Q`\xC0\x80\x86\x01R\x81\x81Q\x80\x84Ra\x01\0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a,\x9EW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90a/DV[\x82\x81R_\x82Qa/{\x81` \x85\x01` \x87\x01a&\x89V[\x91\x90\x91\x01` \x01\x93\x92PPPV[` \x81R_a%\xF6` \x83\x01\x84a']V[_` \x80\x83\x85\x03\x12\x15a/\xACW_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a/\xC2W_\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD2W_\x80\xFD[\x80Qa/\xE0a,\x18\x82a+\xD6V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a/\xFEW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a0XW\x80\x85\x8A\x03\x12\x15a0\x19W_\x80\xFD[a0!a)\xE0V[\x85Qa0,\x81a%\xAAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa0E\x81a%\xAAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a0\x03V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a!zWa!za0dV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a\x1F\x81`@\x83\x01\x84a']V[\x7FV2DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_\x85Qa1\t\x81`\x15\x85\x01` \x8A\x01a&\x89V[\x85Q\x90\x83\x01\x90a1 \x81`\x15\x84\x01` \x8A\x01a&\x89V[\x85Q\x91\x01\x90a16\x81`\x15\x84\x01` \x89\x01a&\x89V[\x84Q\x91\x01\x90a1L\x81`\x15\x84\x01` \x88\x01a&\x89V[\x01`\x15\x01\x96\x95PPPPPPV[_a\x01@a1\x89\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra1\xCA`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra1\xFF\x81\x84\x01\x86a&\xABV[\x90P\x82\x81\x03a\x01 \x84\x01Ra#\xF7\x81\x85a&\xABV[\x81\x81\x03\x81\x81\x11\x15a!zWa!za0dV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15a2FWa2Fa0dV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03a2}Wa2}a0dV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15a2\xA2Wa2\xA2a0dV[PP\x92\x91PPV\xFEDutchOutput(address token,uint256 startAmount,uint256 endAmount,address recipient)TokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \x10+\x8AA\xAF>>\xE0\xB3\xF4\x12\xE8)\xDC`)\x91\xBC\x89M\xD1\x7F\xF5\x8E\xC5\x889S\xC3\xDB\x93OdsolcC\0\x08\x18\x003", ); /**```solidity struct SignedOrder { bytes order; bytes sig; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignedOrder { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -643,10 +656,15 @@ struct SignedOrder { bytes order; bytes sig; } ```solidity error DeadlineBeforeEndTime(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DeadlineBeforeEndTime {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -702,12 +720,18 @@ error DeadlineBeforeEndTime(); ```solidity error DuplicateFeeOutput(address duplicateToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DuplicateFeeOutput { + #[allow(missing_docs)] pub duplicateToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -767,10 +791,15 @@ error DuplicateFeeOutput(address duplicateToken); ```solidity error EndTimeBeforeStartTime(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct EndTimeBeforeStartTime {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -826,14 +855,22 @@ error EndTimeBeforeStartTime(); ```solidity error FeeTooLarge(address token, uint256 amount, address recipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct FeeTooLarge { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -845,7 +882,7 @@ error FeeTooLarge(address token, uint256 amount, address recipient); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -911,10 +948,15 @@ error FeeTooLarge(address token, uint256 amount, address recipient); ```solidity error IncorrectAmounts(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IncorrectAmounts {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -970,10 +1012,15 @@ error IncorrectAmounts(); ```solidity error InputAndOutputFees(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputFees {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1029,10 +1076,15 @@ error InputAndOutputFees(); ```solidity error InvalidCosignature(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidCosignature {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1088,10 +1140,15 @@ error InvalidCosignature(); ```solidity error InvalidCosignerInput(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidCosignerInput {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1147,10 +1204,15 @@ error InvalidCosignerInput(); ```solidity error InvalidCosignerOutput(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidCosignerOutput {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1206,12 +1268,18 @@ error InvalidCosignerOutput(); ```solidity error InvalidFeeToken(address feeToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidFeeToken { + #[allow(missing_docs)] pub feeToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1271,10 +1339,15 @@ error InvalidFeeToken(address feeToken); ```solidity error InvalidReactor(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidReactor {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1330,10 +1403,15 @@ error InvalidReactor(); ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1389,10 +1467,15 @@ error NativeTransferFailed(); ```solidity error NoExclusiveOverride(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NoExclusiveOverride {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1448,7 +1531,12 @@ error NoExclusiveOverride(); ```solidity event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Fill { #[allow(missing_docs)] @@ -1458,9 +1546,14 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub nonce: alloy::sol_types::private::U256, + pub nonce: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1525,6 +1618,21 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1703,7 +1836,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ProtocolFeeControllerSet { #[allow(missing_docs)] @@ -1711,7 +1849,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle #[allow(missing_docs)] pub newFeeController: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1772,6 +1915,21 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -1823,10 +1981,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle ```solidity constructor(address _permit2, address _protocolFeeOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _permit2: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _protocolFeeOwner: alloy::sol_types::private::Address, } const _: () = { @@ -1903,16 +2063,22 @@ constructor(address _permit2, address _protocolFeeOwner); ```solidity function execute(SignedOrder memory order) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2018,18 +2184,24 @@ function execute(SignedOrder memory order) external payable; ```solidity function executeBatch(SignedOrder[] memory orders) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2143,19 +2315,26 @@ function executeBatch(SignedOrder[] memory orders) external payable; ```solidity function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2284,17 +2463,24 @@ function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory call ```solidity function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2416,16 +2602,22 @@ function executeWithCallback(SignedOrder memory order, bytes memory callbackData ```solidity function feeController() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerCall {} ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2529,16 +2721,22 @@ function feeController() external view returns (address); ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2642,16 +2840,22 @@ function owner() external view returns (address); ```solidity function permit2() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Call {} ///Container type for the return parameters of the [`permit2()`](permit2Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Return { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2755,16 +2959,22 @@ function permit2() external view returns (address); ```solidity function setProtocolFeeController(address _newFeeController) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerCall { + #[allow(missing_docs)] pub _newFeeController: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2876,16 +3086,22 @@ function setProtocolFeeController(address _newFeeController) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2995,14 +3211,23 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`V2DutchOrderReactor`](self) function calls. pub enum V2DutchOrderReactorCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] executeBatchWithCallback(executeBatchWithCallbackCall), + #[allow(missing_docs)] executeWithCallback(executeWithCallbackCall), + #[allow(missing_docs)] feeController(feeControllerCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] permit2(permit2Call), + #[allow(missing_docs)] setProtocolFeeController(setProtocolFeeControllerCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -3065,7 +3290,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3201,7 +3426,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3300,18 +3525,31 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`V2DutchOrderReactor`](self) custom errors. pub enum V2DutchOrderReactorErrors { + #[allow(missing_docs)] DeadlineBeforeEndTime(DeadlineBeforeEndTime), + #[allow(missing_docs)] DuplicateFeeOutput(DuplicateFeeOutput), + #[allow(missing_docs)] EndTimeBeforeStartTime(EndTimeBeforeStartTime), + #[allow(missing_docs)] FeeTooLarge(FeeTooLarge), + #[allow(missing_docs)] IncorrectAmounts(IncorrectAmounts), + #[allow(missing_docs)] InputAndOutputFees(InputAndOutputFees), + #[allow(missing_docs)] InvalidCosignature(InvalidCosignature), + #[allow(missing_docs)] InvalidCosignerInput(InvalidCosignerInput), + #[allow(missing_docs)] InvalidCosignerOutput(InvalidCosignerOutput), + #[allow(missing_docs)] InvalidFeeToken(InvalidFeeToken), + #[allow(missing_docs)] InvalidReactor(InvalidReactor), + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), + #[allow(missing_docs)] NoExclusiveOverride(NoExclusiveOverride), } #[automatically_derived] @@ -3396,7 +3634,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3584,7 +3822,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3740,8 +3978,11 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`V2DutchOrderReactor`](self) events. pub enum V2DutchOrderReactorEvents { + #[allow(missing_docs)] Fill(Fill), + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), + #[allow(missing_docs)] ProtocolFeeControllerSet(ProtocolFeeControllerSet), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/v3dutchorderlib.rs b/crates/bindings-uniswapx/src/v3dutchorderlib.rs index 4ab4856..03c29ee 100644 --- a/crates/bindings-uniswapx/src/v3dutchorderlib.rs +++ b/crates/bindings-uniswapx/src/v3dutchorderlib.rs @@ -9,29 +9,35 @@ interface V3DutchOrderLib {} ```json [] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod V3DutchOrderLib { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208af5a7eaf8aa6ba3ce825e90ec76f247e17fa03ddc057b8cb5897ebce11babed64736f6c63430008180033 + ///0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122035072bf7c56adf0d78b5012affab8f8043fb71d458c55a99a9a6342718b7316e64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x8A\xF5\xA7\xEA\xF8\xAAk\xA3\xCE\x82^\x90\xECv\xF2G\xE1\x7F\xA0=\xDC\x05{\x8C\xB5\x89~\xBC\xE1\x1B\xAB\xEDdsolcC\0\x08\x18\x003", + b"`U`2`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`&WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 5\x07+\xF7\xC5j\xDF\rx\xB5\x01*\xFF\xAB\x8F\x80C\xFBq\xD4X\xC5Z\x99\xA9\xA64'\x18\xB71ndsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208af5a7eaf8aa6ba3ce825e90ec76f247e17fa03ddc057b8cb5897ebce11babed64736f6c63430008180033 + ///0x730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122035072bf7c56adf0d78b5012affab8f8043fb71d458c55a99a9a6342718b7316e64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x8A\xF5\xA7\xEA\xF8\xAAk\xA3\xCE\x82^\x90\xECv\xF2G\xE1\x7F\xA0=\xDC\x05{\x8C\xB5\x89~\xBC\xE1\x1B\xAB\xEDdsolcC\0\x08\x18\x003", + b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R_\x80\xFD\xFE\xA2dipfsX\"\x12 5\x07+\xF7\xC5j\xDF\rx\xB5\x01*\xFF\xAB\x8F\x80C\xFBq\xD4X\xC5Z\x99\xA9\xA64'\x18\xB71ndsolcC\0\x08\x18\x003", ); use alloy::contract as alloy_contract; /**Creates a new wrapper around an on-chain [`V3DutchOrderLib`](self) contract instance. diff --git a/crates/bindings-uniswapx/src/v3dutchorderreactor.rs b/crates/bindings-uniswapx/src/v3dutchorderreactor.rs index adf9fff..a9393c0 100644 --- a/crates/bindings-uniswapx/src/v3dutchorderreactor.rs +++ b/crates/bindings-uniswapx/src/v3dutchorderreactor.rs @@ -404,40 +404,53 @@ interface V3DutchOrderReactor { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod V3DutchOrderReactor { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60c06040523480156200001157600080fd5b50604051620046c4380380620046c483398101604081905262000034916200016a565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805261a4b0194601620000bf576001600160401b0362000985620000e060201b171660a052620000d8565b6001600160401b03620009fc6200014d60201b171660a0525b5050620001c3565b600060646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000122573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001489190620001a9565b905090565b4390565b6001600160a01b03811681146200016757600080fd5b50565b600080604083850312156200017e57600080fd5b82516200018b8162000151565b60208401519092506200019e8162000151565b809150509250929050565b600060208284031215620001bc57600080fd5b5051919050565b60805160a0516144d5620001ef6000396000610b2901526000818160e00152611b3201526144d56000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004613047565b6101eb565b005b6100b96100c93660046130f5565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004613137565b6104c5565b34801561014a57600080fd5b506100b96101593660046131d5565b610683565b6100b961016c3660046131f2565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046131d5565b610894565b6101f3610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b284610a71565b816000815181106102c5576102c5613256565b60200260200101819052506102d981610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401613459565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610c73565b5061035f6001600255565b505050565b61036c610a00565b8060008167ffffffffffffffff81111561038857610388613227565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466613256565b9050602002810190610478919061351f565b610a71565b82828151811061048f5761048f613256565b6020908102919091010152600101610449565b506104ac81610c22565b6104b581610c73565b50506104c16001600255565b5050565b6104cd610a00565b8260008167ffffffffffffffff8111156104e9576104e9613227565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466613256565b8282815181106105d9576105d9613256565b60209081029190910101526001016105aa565b506105f681610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401613459565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610c73565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae57905050905061085682610a71565b8160008151811061086957610869613256565b602002602001018190525061087d81610c22565b61088681610c73565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f7919061355d565b905090565b4390565b6002805403610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610aea8380613576565b810190610af79190613b44565b90506000610b0482610dc6565b9050610b1081836110ac565b610b1982611108565b610b228261126c565b6000610b507f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b90506040518060a0016040528084600001518152602001610b888560a00151600001518487606001516113799092919063ffffffff16565b815260a0850151516080860151602090920191610ba59185611444565b8152602001868060200190610bba9190613576565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602090810184905260a0850151908101518151604090920151929650610c1a928792908561152b565b505050919050565b805160005b8181101561035f576000838281518110610c4357610c43613256565b60200260200101519050610c568161153f565b610c608133611a2f565b610c6a8133611b30565b50600101610c27565b805160005b81811015610db5576000838281518110610c9457610c94613256565b602002602001015190506000816040015151905060005b81811015610d1557600083604001518281518110610ccb57610ccb613256565b60200260200101519050610d0c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611f329092919063ffffffff16565b50600101610cab565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610d5e57610d5e613256565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610da391815260200190565b60405180910390a45050600101610c78565b5047156104c1576104c13347611f79565b6040517f563344757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8201527f56334475746368496e7075742062617365496e7075742c00000000000000000060658201527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c820152600090609801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208301527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348301527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b83015290606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906144136020830139604051602001610fa990613c5c565b604051602081830303815290604052604051602001610fc790613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110069594939291602001613ea6565b604051602081830303815290604052805190602001206110298360000151612013565b8360200151846040015161104086606001516120ad565b61104d87608001516121fe565b60408051602081019790975286019490945273ffffffffffffffffffffffffffffffffffffffff9092166060850152608084015260a083015260c082015260e0015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110eb576040517fb08ce5b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516104c1906110fe838561229f565b8360c00151612314565b60a08101516060015115611174578060600151602001518160a00151606001511115611160576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160609081015190820151602001525b8060800151518160a001516080015151146111bb576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808101515160005b8181101561035f576000836080015182815181106111e4576111e4613256565b6020026020010151905060008460a0015160800151838151811061120a5761120a613256565b602002602001015190508060001461126257816020015181101561125a576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111c4565b600061128582604001514861243c90919063ffffffff16565b90508160600151608001516000146112e05760006112ab83606001516080015183612477565b90506112d58160008560600151606001518660600151602001516124b0909392919063ffffffff16565b606084015160200152505b60808201515160005b8181101561067d5760008460800151828151811061130957611309613256565b602002602001015190508060a0015160001461137057600061132f8260a0015186612477565b60808301516020840151919250611369919083907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6124d0565b6020830152505b506001016112e9565b6113b36040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001600081526020018660600151815260200161256281525090506000611404826125ee565b6040805160608082018352895173ffffffffffffffffffffffffffffffffffffffff16825260208201939093529790910151908701525093949350505050565b82516060908067ffffffffffffffff81111561146257611462613227565b6040519080825280602002602001820160405280156114cb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114805790505b50915060005b81811015611522576114fd8682815181106114ee576114ee613256565b602002602001015186866126fa565b83828151811061150f5761150f613256565b60209081029190910101526001016114d1565b50509392505050565b61153885858585856127e3565b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661155f5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906115b6908590600401613f11565b600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116199190810190613f24565b60408301515181519192509060006116318284614023565b67ffffffffffffffff81111561164957611649613227565b6040519080825280602002602001820160405280156116b257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116675790505b50905060005b8381101561170357856040015181815181106116d6576116d6613256565b60200260200101518282815181106116f0576116f0613256565b60209081029190910101526001016116b8565b5060008060005b84811015611a1e57600087828151811061172657611726613256565b6020026020010151905060005b828110156117e45788818151811061174d5761174d613256565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117dc5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b600101611733565b506000805b888110156118a55760008b60400151828151811061180957611809613256565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361189c578515611886576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118959084614023565b9250600196505b506001016117e9565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361191e578415611905576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516119179082614023565b9050600193505b806000036119735781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611981816005612710612885565b826020015111156119f4578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611a0957611a09613256565b6020908102919091010152505060010161170a565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a80576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611afc9084908690600401614036565b60006040518083038186803b158015611b1457600080fd5b505afa158015611b28573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611bf0846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051602001611cbd907f4e6f6e6c696e656172447574636844656361792800000000000000000000000081527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060148201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000602b82015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061441360208301396040518060600160405280602e81526020016143e5602e9139604051602001611d2790613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f563344757463684f72646572280000000000000000000000000000000000000060208401527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8401527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8401527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8401527f56334475746368496e7075742062617365496e7075742c00000000000000000060658401527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c840152815160788185030181526098840190925291611e579060b801613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e97969594939291602001614065565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611f049695949392600401614118565b600060405180830381600087803b158015611f1e57600080fd5b505af1158015611b28573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611f575761035f8282611f79565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846128c1565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611fd3576040519150601f19603f3d011682016040523d82523d6000602084013e611fd8565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001614413608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161108f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040516020016120be90613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b840152815160448185030181526064840190925261217e929091906084016141d3565b60405160208183030381529060405280519060200120826000015183602001516121ab85604001516129ac565b60608087015160808089015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff909716968801969096529186019390935284015260a083015260c082015260e00161108f565b600080825160200267ffffffffffffffff81111561221e5761221e613227565b6040519080825280601f01601f191660200182016040528015612248576020820181803683370190505b50835190915060005b8181101561228f57600061227d86838151811061227057612270613256565b6020026020010151612aaa565b60208381028601015250600101612251565b5050805160209091012092915050565b600081468460a001516040516020016122b89190614202565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526122f5939291602001614287565b6040516020818303038152906040528051906020012090505b92915050565b6000808280602001905181019061232b91906142b4565b9150915060008360408151811061234457612344613256565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156123a1573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415806123fc575073ffffffffffffffffffffffffffffffffffffffff8116155b15612433576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b60008183101561246a5761245861245384846142d8565b612c0e565b6124639060006142eb565b905061230e565b61246361245383856142d8565b600080821261248f576124638383633b9aca00612885565b6124a761249b83614312565b8490633b9aca00612cc4565b61246390614312565b60006124c7856124c086846142eb565b85856124d0565b95945050505050565b6000808412156125335760006124e585614312565b905085612512827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6142d8565b1015612521578291505061255a565b61252b8187614023565b91505061254f565b8385101561254257508161255a565b61254c84866142d8565b90505b6124c7818484612d08565b949350505050565b60008484106125725750806124c7565b600061257e87866142d8565b9050600061258c88886142d8565b90506000858512156125be576125ae83836125a7888a6142eb565b9190612885565b6125b790614312565b90506125d7565b6125d483836125cd89896142eb565b9190612cc4565b90505b6125e1818761434a565b9998505050505050505050565b60006010826000015160200151511115612634576040517f0e99676600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160600151826040015110158061264f575081516020015151155b1561266e57608082015160a0830151602084015161230e929091612d08565b600061268f8360400151846060015161268791906142d8565b61ffff612d19565b90506000806000806126a5876000015186612d31565b935093509350935060006126d08561ffff168561ffff168861ffff1686868d60c0015163ffffffff16565b608089015160a08a015160208b01519293506126ee929184916124d0565b98975050505050505050565b604080516060810182526000808252602082018190529181019190915260006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001866080015181526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001612ef381525090506000612787826125ee565b90506040518060600160405280876000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001876060015173ffffffffffffffffffffffffffffffffffffffff16815250925050509392505050565b6127ee848483612f47565b6115385781612829576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561243357600082828151811061284e5761284e613256565b60200260200101519050612877856127106128699190614023565b602083015190612710612cc4565b602090910152600101612831565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026128ba57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b6040517f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208201527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8201526000906064016040516020818303038152906040528051906020012082600001518360200151604051602001612a579190614372565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830194909452810191909152606081019190915260800161108f565b6000604051602001612abb90613d6e565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8401528151604481850301815260648401909252612b7b929091906084016141d3565b6040516020818303038152906040528051906020012082600001518360200151612ba885604001516129ac565b60608087015160808089015160a0808b015160408051602081019b909b5273ffffffffffffffffffffffffffffffffffffffff998a16908b01529489019690965290870193909352939093169184019190915260c083015260e08201526101000161108f565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401610700565b5090565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612cf957600080fd5b50910281810615159190040190565b600061255a612d178585612f93565b835b6000818310612d285781612d2a565b825b9392505050565b6000806000806000612d44876000015190565b905061ffff8616612d56826000612fa2565b61ffff1610612d9a576000612d6b8282612fa2565b60008960200151600081518110612d8457612d84613256565b6020026020010151945094509450945050612eea565b60006001886020015151612dae91906143a8565b905060015b8161ffff168161ffff1611612e7e578761ffff16612dde8261ffff1685612fa290919063ffffffff16565b61ffff1610612e6c57612e00612df56001836143a8565b849061ffff16612fa2565b612e0e8461ffff8416612fa2565b60208b0151612e1e6001856143a8565b61ffff1681518110612e3257612e32613256565b60200260200101518b602001518461ffff1681518110612e5457612e54613256565b60200260200101519650965096509650505050612eea565b80612e76816143c3565b915050612db3565b50612e8d8261ffff8316612fa2565b612e9b8361ffff8416612fa2565b89602001518361ffff1681518110612eb557612eb5613256565b60200260200101518a602001518461ffff1681518110612ed757612ed7613256565b6020026020010151955095509550955050505b92959194509250565b6000848410612f035750806124c7565b6000612f0f87866142d8565b90506000612f1d88886142d8565b9050600085851215612f38576125ae83836125cd888a6142eb565b6125d483836125a789896142eb565b600073ffffffffffffffffffffffffffffffffffffffff84161580612f6b57508282115b8061255a575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b6000818311612d285781612d2a565b600060108210612fde576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506010021c90565b600060408284031215612ff857600080fd5b50919050565b60008083601f84011261301057600080fd5b50813567ffffffffffffffff81111561302857600080fd5b60208301915083602082850101111561304057600080fd5b9250929050565b60008060006040848603121561305c57600080fd5b833567ffffffffffffffff8082111561307457600080fd5b61308087838801612fe6565b9450602086013591508082111561309657600080fd5b506130a386828701612ffe565b9497909650939450505050565b60008083601f8401126130c257600080fd5b50813567ffffffffffffffff8111156130da57600080fd5b6020830191508360208260051b850101111561304057600080fd5b6000806020838503121561310857600080fd5b823567ffffffffffffffff81111561311f57600080fd5b61312b858286016130b0565b90969095509350505050565b6000806000806040858703121561314d57600080fd5b843567ffffffffffffffff8082111561316557600080fd5b613171888389016130b0565b9096509450602087013591508082111561318a57600080fd5b5061319787828801612ffe565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356131d0816131a3565b919050565b6000602082840312156131e757600080fd5b8135612d2a816131a3565b60006020828403121561320457600080fd5b813567ffffffffffffffff81111561321b57600080fd5b61255a84828501612fe6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156132a0578181015183820152602001613288565b50506000910152565b600081518084526132c1816020860160208601613285565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015613353578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101613308565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526133d26101a08501826132a9565b905060208301516134106020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261342882826132f3565b915050606083015184820360a086015261344282826132a9565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156134ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526134bc86835161335e565b95509382019390820190600101613482565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261355357600080fd5b9190910192915050565b60006020828403121561356f57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135ab57600080fd5b83018035915067ffffffffffffffff8211156135c657600080fd5b60200191503681900382131561304057600080fd5b60405160c0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405290565b6040805190810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160a0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160e0810167ffffffffffffffff811182821017156135fe576135fe613227565b6040516060810167ffffffffffffffff811182821017156135fe576135fe613227565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156136d7576136d7613227565b604052919050565b600082601f8301126136f057600080fd5b813567ffffffffffffffff81111561370a5761370a613227565b61373b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613690565b81815284602083860101111561375057600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561377f57600080fd5b6137876135db565b90508135613794816131a3565b815260208201356137a4816131a3565b80602083015250604082013560408201526060820135606082015260808201356137cd816131a3565b608082015260a082013567ffffffffffffffff8111156137ec57600080fd5b6137f8848285016136df565b60a08301525092915050565b600067ffffffffffffffff82111561381e5761381e613227565b5060051b60200190565b60006040828403121561383a57600080fd5b613842613604565b90508135815260208083013567ffffffffffffffff81111561386357600080fd5b8301601f8101851361387457600080fd5b803561388761388282613804565b613690565b81815260059190911b820183019083810190878311156138a657600080fd5b928401925b828410156138c4578335825292840192908401906138ab565b8085870152505050505092915050565b600060a082840312156138e657600080fd5b6138ee613627565b905081356138fb816131a3565b815260208281013590820152604082013567ffffffffffffffff81111561392157600080fd5b61392d84828501613828565b604083015250606082013560608201526080820135608082015292915050565b600082601f83011261395e57600080fd5b8135602061396e61388283613804565b82815260059290921b8401810191818101908684111561398d57600080fd5b8286015b84811015613a6a57803567ffffffffffffffff808211156139b25760008081fd5b818901915060c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156139eb5760008081fd5b6139f36135db565b87840135613a00816131a3565b81526040848101358983015260608086013585811115613a205760008081fd5b613a2e8f8c838a0101613828565b838501525060809450848601359150613a46826131a3565b82015260a08481013593820193909352920135908201528352918301918301613991565b509695505050505050565b600060a08284031215613a8757600080fd5b613a8f613627565b905081358152602080830135613aa4816131a3565b8082840152506040830135604083015260608301356060830152608083013567ffffffffffffffff811115613ad857600080fd5b8301601f81018513613ae957600080fd5b8035613af761388282613804565b81815260059190911b82018301908381019087831115613b1657600080fd5b928401925b82841015613b3457833582529284019290840190613b1b565b6080860152509295945050505050565b600060208284031215613b5657600080fd5b813567ffffffffffffffff80821115613b6e57600080fd5b9083019060e08286031215613b8257600080fd5b613b8a61364a565b823582811115613b9957600080fd5b613ba58782860161376d565b825250613bb4602084016131c5565b602082015260408301356040820152606083013582811115613bd557600080fd5b613be1878286016138d4565b606083015250608083013582811115613bf957600080fd5b613c058782860161394d565b60808301525060a083013582811115613c1d57600080fd5b613c2987828601613a75565b60a08301525060c083013582811115613c4157600080fd5b613c4d878286016136df565b60c08301525095945050505050565b7f56334475746368496e707574280000000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600d8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601b8201527f4e6f6e6c696e656172447574636844656361792063757276652c000000000000602f8201527f75696e74323536206d6178416d6f756e742c000000000000000000000000000060498201527f75696e743235362061646a7573746d656e745065724777656942617365466565605b8201527f2900000000000000000000000000000000000000000000000000000000000000607b8201526000607c820161230e565b7f563344757463684f75747075742800000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600e8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601c8201527f4e6f6e6c696e656172447574636844656361792063757276652c00000000000060308201527f6164647265737320726563697069656e742c0000000000000000000000000000604a8201527f75696e74323536206d696e416d6f756e742c0000000000000000000000000000605c8201527f75696e743235362061646a7573746d656e745065724777656942617365466565606e8201527f2900000000000000000000000000000000000000000000000000000000000000608e8201526000608f820161230e565b60008651613eb8818460208b01613285565b865190830190613ecc818360208b01613285565b8651910190613edf818360208a01613285565b8551910190613ef2818360208901613285565b8451910190613f05818360208801613285565b01979650505050505050565b602081526000612d2a602083018461335e565b60006020808385031215613f3757600080fd5b825167ffffffffffffffff811115613f4e57600080fd5b8301601f81018513613f5f57600080fd5b8051613f6d61388282613804565b81815260609182028301840191848201919088841115613f8c57600080fd5b938501935b83851015613fe85780858a031215613fa95760008081fd5b613fb161366d565b8551613fbc816131a3565b81528587015187820152604080870151613fd5816131a3565b9082015283529384019391850191613f91565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561230e5761230e613ff4565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061255a604083018461335e565b7f563344757463684f72646572207769746e6573732900000000000000000000008152600060158851602061409f82848701838e01613285565b8951918501916140b481858501848e01613285565b89519201916140c881858501848d01613285565b88519201916140dc81858501848c01613285565b87519201916140f081858501848b01613285565b865192019161410481858501848a01613285565b919091019091019998505050505050505050565b6000610140614148838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526141896080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526141be818401866132a9565b90508281036101208401526125e181856132a9565b600083516141e5818460208801613285565b8351908301906141f9818360208801613285565b01949350505050565b6000602080835260c0830184518285015273ffffffffffffffffffffffffffffffffffffffff828601511660408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e0870191508483019350600092505b80831015613a6a5783518252928401926001929092019190840190614267565b838152826020820152600082516142a5816040850160208701613285565b91909101604001949350505050565b600080604083850312156142c757600080fd5b505080516020909101519092909150565b8181038181111561230e5761230e613ff4565b818103600083128015838313168383128216171561430b5761430b613ff4565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361434357614343613ff4565b5060000390565b808201828112600083128015821682158216171561436a5761436a613ff4565b505092915050565b815160009082906020808601845b8381101561439c57815185529382019390820190600101614380565b50929695505050505050565b61ffff82811682821603908082111561430b5761430b613ff4565b600061ffff8083168181036143da576143da613ff4565b600101939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220a83088cf8ce7734a1a4fd473e15da5dd40de922f9f237cdcd5a3258bdb21af8564736f6c63430008180033 + ///0x60c060405234801562000010575f80fd5b506040516200458f3803806200458f833981016040819052620000339162000164565b5f80546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805261a4b0194601620000bd576001600160401b0362000961620000de60201b171660a052620000d6565b6001600160401b03620009d56200014860201b171660a0525b5050620001b9565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001439190620001a1565b905090565b4390565b6001600160a01b038116811462000161575f80fd5b50565b5f806040838503121562000176575f80fd5b825162000183816200014c565b602084015190925062000196816200014c565b809150509250929050565b5f60208284031215620001b2575f80fd5b5051919050565b60805160a0516143ae620001e15f395f610aff01525f818160da0152611ace01526143ae5ff3fe608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af366004612f8f565b6101e0565b005b6100b46100c4366004613034565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004613073565b6104af565b348015610143575f80fd5b506100b461015236600461310b565b610665565b6100b4610165366004613126565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db36600461310b565b610872565b6101e86109d9565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a584610a4a565b815f815181106102b7576102b7613185565b60200260200101819052506102cb81610bf5565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b90849087908790600401613380565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610c44565b5061034c6001600255565b505050565b6103596109d9565b805f8167ffffffffffffffff81111561037457610374613158565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c5761046785858381811061045057610450613185565b90506020028101906104629190613443565b610a4a565b82828151811061047957610479613185565b6020908102919091010152600101610433565b5061049681610bf5565b61049f81610c44565b50506104ab6001600255565b5050565b6104b76109d9565b825f8167ffffffffffffffff8111156104d2576104d2613158565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae87878381811061045057610450613185565b8282815181106105c0576105c0613185565b6020908102919091010152600101610591565b506105dd81610bf5565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d90849088908890600401613380565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610c44565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b6107786109d9565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e57905050905061083582610a4a565b815f8151811061084757610847613185565b602002602001018190525061085b81610bf5565b61086481610c44565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d0919061347f565b905090565b4390565b6002805403610a44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610ac28380613496565b810190610acf9190613a42565b90505f610adb82610d8f565b9050610ae78183611073565b610af0826110cf565b610af98261122f565b5f610b267f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b90506040518060a00160405280845f01518152602001610b5c8560a001515f01518487606001516113349092919063ffffffff16565b815260a0850151516080860151602090920191610b7991856113f9565b8152602001868060200190610b8e9190613496565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810184905260a0850151908101518151604090920151929650610bed92879290856114de565b505050919050565b80515f5b8181101561034c575f838281518110610c1457610c14613185565b60200260200101519050610c27816114f2565b610c3181336119cf565b610c3b8133611acc565b50600101610bf9565b80515f5b81811015610d7e575f838281518110610c6357610c63613185565b602002602001015190505f81604001515190505f5b81811015610ce0575f83604001518281518110610c9757610c97613185565b60200260200101519050610cd781604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611ec69092919063ffffffff16565b50600101610c78565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610d2857610d28613185565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610d6c91815260200190565b60405180910390a45050600101610c48565b5047156104ab576104ab3347611f0d565b6040517f563344757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8201527f56334475746368496e7075742062617365496e7075742c00000000000000000060658201527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c8201525f90609801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208301527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348301527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b83015290606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906142ec6020830139604051602001610f7190613b51565b604051602081830303815290604052604051602001610f8f90613c62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fce9594939291602001613d99565b60405160208183030381529060405280519060200120610ff0835f0151611fa3565b83602001518460400151611007866060015161203c565b611014876080015161218b565b60408051602081019790975286019490945273ffffffffffffffffffffffffffffffffffffffff9092166060850152608084015260a083015260c082015260e0015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110b2576040517fb08ce5b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516104ab906110c58385612229565b8360c0015161229d565b60a0810151606001511561113b578060600151602001518160a00151606001511115611127576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160609081015190820151602001525b8060800151518160a00151608001515114611182576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080810151515f5b8181101561034c575f836080015182815181106111a9576111a9613185565b602002602001015190505f8460a001516080015183815181106111ce576111ce613185565b60200260200101519050805f1461122557816020015181101561121d576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b505060010161118a565b5f6112478260400151486123c090919063ffffffff16565b90508160600151608001515f1461129f575f61126b836060015160800151836123f9565b9050611294815f856060015160600151866060015160200151612431909392919063ffffffff16565b606084015160200152505b6080820151515f5b8181101561065f575f846080015182815181106112c6576112c6613185565b602002602001015190508060a001515f1461132b575f6112ea8260a00151866123f9565b60808301516020840151919250611324919083907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612450565b6020830152505b506001016112a7565b61136b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f6040518060e0016040528086604001518152602001866020015181526020018581526020018481526020015f8152602001866060015181526020016124e081525090505f6113b982612568565b6040805160608082018352895173ffffffffffffffffffffffffffffffffffffffff16825260208201939093529790910151908701525093949350505050565b82516060908067ffffffffffffffff81111561141757611417613158565b60405190808252806020026020018201604052801561147f57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114355790505b5091505f5b818110156114d5576114b08682815181106114a1576114a1613185565b6020026020010151868661266d565b8382815181106114c2576114c2613185565b6020908102919091010152600101611484565b50509392505050565b6114eb8585858585612752565b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff166115125750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611568908590600401613e03565b5f60405180830381865afa158015611582573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115c79190810190613e15565b6040830151518151919250905f6115de8284613f0b565b67ffffffffffffffff8111156115f6576115f6613158565b60405190808252806020026020018201604052801561165e57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116145790505b5090505f5b838110156116ae578560400151818151811061168157611681613185565b602002602001015182828151811061169b5761169b613185565b6020908102919091010152600101611663565b505f805f5b848110156119be575f8782815181106116ce576116ce613185565b602002602001015190505f5b82811015611789578881815181106116f4576116f4613185565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036117815781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6001016116da565b505f805b88811015611846575f8b6040015182815181106117ac576117ac613185565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff160361183d578515611827576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118369084613f0b565b9250600196505b5060010161178d565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036118bf5784156118a6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516118b89082613f0b565b9050600193505b805f036119135781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6119218160056127106127f2565b82602001511115611994578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a01815181106119a9576119a9613185565b602090810291909101015250506001016116b3565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a20576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611a9c9084908690600401613f1e565b5f6040518083038186803b158015611ab2575f80fd5b505afa158015611ac4573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611b8b846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff861682528087015181015190820152855f0151602001518660800151604051602001611c56907f4e6f6e6c696e656172447574636844656361792800000000000000000000000081527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060148201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000602b82015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906142ec60208301396040518060600160405280602e81526020016142be602e9139604051602001611cc090613b51565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f563344757463684f72646572280000000000000000000000000000000000000060208401527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8401527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8401527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8401527f56334475746368496e7075742062617365496e7075742c00000000000000000060658401527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c840152815160788185030181526098840190925291611df09060b801613c62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e30969594939291602001613f4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611e9d9695949392600401613ffe565b5f604051808303815f87803b158015611eb4575f80fd5b505af1158015611ac4573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611eeb5761034c8282611f0d565b61034c73ffffffffffffffffffffffffffffffffffffffff841633848461282c565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611f63576040519150601f19603f3d011682016040523d82523d5f602084013e611f68565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060c00160405280608d81526020016142ec608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161105698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f60405160200161204c90613b51565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b840152815160448185030181526064840190925261210c929091906084016140b8565b60405160208183030381529060405280519060200120825f015183602001516121388560400151612913565b60608087015160808089015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff909716968801969096529186019390935284015260a083015260c082015260e001611056565b5f80825160200267ffffffffffffffff8111156121aa576121aa613158565b6040519080825280601f01601f1916602001820160405280156121d4576020820181803683370190505b5083519091505f5b81811015612219575f6122078683815181106121fa576121fa613185565b6020026020010151612a0f565b602083810286010152506001016121dc565b5050805160209091012092915050565b5f81468460a0015160405160200161224191906140e6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261227e939291602001614169565b6040516020818303038152906040528051906020012090505b92915050565b5f80828060200190518101906122b39190614195565b915091505f836040815181106122cb576122cb613185565b01602090810151604080515f80825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa158015612325573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612380575073ffffffffffffffffffffffffffffffffffffffff8116155b156123b7576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b5f818310156123ec576123db6123d684846141b7565b612b71565b6123e5905f6141ca565b9050612297565b6123e56123d683856141b7565b5f808212612410576123e58383633b9aca006127f2565b61242861241c836141f0565b8490633b9aca00612c26565b6123e5906141f0565b5f6124478561244086846141ca565b8585612450565b95945050505050565b5f808412156124b1575f612463856141f0565b905085612490827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6141b7565b101561249f57829150506124d8565b6124a98187613f0b565b9150506124cd565b838510156124c05750816124d8565b6124ca84866141b7565b90505b612447818484612c68565b949350505050565b5f8484106124ef575080612447565b5f6124fa87866141b7565b90505f61250788886141b7565b90505f85851215612538576125288383612521888a6141ca565b91906127f2565b612531906141f0565b9050612551565b61254e838361254789896141ca565b9190612c26565b90505b61255b8187614226565b9998505050505050505050565b5f6010825f0151602001515111156125ac576040517f0e99676600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816060015182604001511015806125c7575081516020015151155b156125e657608082015160a08301516020840151612297929091612c68565b5f612606836040015184606001516125fe91906141b7565b61ffff612c78565b90505f805f80612619875f015186612c8f565b93509350935093505f6126438561ffff168561ffff168861ffff1686868d60c0015163ffffffff16565b608089015160a08a015160208b015192935061266192918491612450565b98975050505050505050565b604080516060810182525f80825260208201819052918101919091525f6040518060e001604052808660400151815260200186602001518152602001858152602001848152602001866080015181526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001612e4881525090505f6126f782612568565b90506040518060600160405280875f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001876060015173ffffffffffffffffffffffffffffffffffffffff16815250925050509392505050565b61275d848483612e98565b6114eb5781612798576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b81518110156123b7575f8282815181106127bb576127bb613185565b602002602001015190506127e4856127106127d69190613f0b565b602083015190612710612c26565b60209091015260010161279f565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612825575f80fd5b5091020490565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806114eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b6040517f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208201527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8201525f9060640160405160208183030381529060405280519060200120825f015183602001516040516020016129bc919061424d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120908301949094528101919091526060810191909152608001611056565b5f604051602001612a1f90613c62565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8401528151604481850301815260648401909252612adf929091906084016140b8565b60405160208183030381529060405280519060200120825f01518360200151612b0b8560400151612913565b60608087015160808089015160a0808b015160408051602081019b909b5273ffffffffffffffffffffffffffffffffffffffff998a16908b01529489019690965290870193909352939093169184019190915260c083015260e082015261010001611056565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612c22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e7432353600000000000000000000000000000000000000000000000060648201526084016106e1565b5090565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612c59575f80fd5b50910281810615159190040190565b5f6124d8612c768585612ee3565b835b5f818310612c865781612c88565b825b9392505050565b5f805f805f612c9e875f015190565b905061ffff8616612caf825f612ef1565b61ffff1610612cf0575f612cc38282612ef1565b5f89602001515f81518110612cda57612cda613185565b6020026020010151945094509450945050612e3f565b5f6001886020015151612d039190614282565b905060015b8161ffff168161ffff1611612dd3578761ffff16612d338261ffff1685612ef190919063ffffffff16565b61ffff1610612dc157612d55612d4a600183614282565b849061ffff16612ef1565b612d638461ffff8416612ef1565b60208b0151612d73600185614282565b61ffff1681518110612d8757612d87613185565b60200260200101518b602001518461ffff1681518110612da957612da9613185565b60200260200101519650965096509650505050612e3f565b80612dcb8161429d565b915050612d08565b50612de28261ffff8316612ef1565b612df08361ffff8416612ef1565b89602001518361ffff1681518110612e0a57612e0a613185565b60200260200101518a602001518461ffff1681518110612e2c57612e2c613185565b6020026020010151955095509550955050505b92959194509250565b5f848410612e57575080612447565b5f612e6287866141b7565b90505f612e6f88886141b7565b90505f85851215612e89576125288383612547888a6141ca565b61254e838361252189896141ca565b5f73ffffffffffffffffffffffffffffffffffffffff84161580612ebb57508282115b806124d8575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b5f818311612c865781612c88565b5f60108210612f2c576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506010021c90565b5f60408284031215612f44575f80fd5b50919050565b5f8083601f840112612f5a575f80fd5b50813567ffffffffffffffff811115612f71575f80fd5b602083019150836020828501011115612f88575f80fd5b9250929050565b5f805f60408486031215612fa1575f80fd5b833567ffffffffffffffff80821115612fb8575f80fd5b612fc487838801612f34565b94506020860135915080821115612fd9575f80fd5b50612fe686828701612f4a565b9497909650939450505050565b5f8083601f840112613003575f80fd5b50813567ffffffffffffffff81111561301a575f80fd5b6020830191508360208260051b8501011115612f88575f80fd5b5f8060208385031215613045575f80fd5b823567ffffffffffffffff81111561305b575f80fd5b61306785828601612ff3565b90969095509350505050565b5f805f8060408587031215613086575f80fd5b843567ffffffffffffffff8082111561309d575f80fd5b6130a988838901612ff3565b909650945060208701359150808211156130c1575f80fd5b506130ce87828801612f4a565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b8035613106816130da565b919050565b5f6020828403121561311b575f80fd5b8135612c88816130da565b5f60208284031215613136575f80fd5b813567ffffffffffffffff81111561314c575f80fd5b6124d884828501612f34565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156131cc5781810151838201526020016131b4565b50505f910152565b5f81518084526131eb8160208601602086016131b2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b8381101561327b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101613230565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526132f96101a08501826131d4565b905060208301516133376020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261334f828261321d565b915050606083015184820360a086015261336982826131d4565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b838110156133f3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526133e1868351613286565b955093820193908201906001016133a7565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613475575f80fd5b9190910192915050565b5f6020828403121561348f575f80fd5b5051919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126134c9575f80fd5b83018035915067ffffffffffffffff8211156134e3575f80fd5b602001915036819003821315612f88575f80fd5b60405160c0810167ffffffffffffffff8111828210171561351a5761351a613158565b60405290565b6040805190810167ffffffffffffffff8111828210171561351a5761351a613158565b60405160a0810167ffffffffffffffff8111828210171561351a5761351a613158565b60405160e0810167ffffffffffffffff8111828210171561351a5761351a613158565b6040516060810167ffffffffffffffff8111828210171561351a5761351a613158565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156135f3576135f3613158565b604052919050565b5f82601f83011261360a575f80fd5b813567ffffffffffffffff81111561362457613624613158565b61365560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016135ac565b818152846020838601011115613669575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215613695575f80fd5b61369d6134f7565b905081356136aa816130da565b815260208201356136ba816130da565b80602083015250604082013560408201526060820135606082015260808201356136e3816130da565b608082015260a082013567ffffffffffffffff811115613701575f80fd5b61370d848285016135fb565b60a08301525092915050565b5f67ffffffffffffffff82111561373257613732613158565b5060051b60200190565b5f6040828403121561374c575f80fd5b613754613520565b90508135815260208083013567ffffffffffffffff811115613774575f80fd5b8301601f81018513613784575f80fd5b803561379761379282613719565b6135ac565b81815260059190911b820183019083810190878311156137b5575f80fd5b928401925b828410156137d3578335825292840192908401906137ba565b8085870152505050505092915050565b5f60a082840312156137f3575f80fd5b6137fb613543565b90508135613808816130da565b815260208281013590820152604082013567ffffffffffffffff81111561382d575f80fd5b6138398482850161373c565b604083015250606082013560608201526080820135608082015292915050565b5f82601f830112613868575f80fd5b8135602061387861379283613719565b82815260059290921b84018101918181019086841115613896575f80fd5b8286015b8481101561396d57803567ffffffffffffffff808211156138b9575f80fd5b818901915060c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156138f0575f80fd5b6138f86134f7565b87840135613905816130da565b81526040848101358983015260608086013585811115613923575f80fd5b6139318f8c838a010161373c565b838501525060809450848601359150613949826130da565b82015260a0848101359382019390935292013590820152835291830191830161389a565b509695505050505050565b5f60a08284031215613988575f80fd5b613990613543565b9050813581526020808301356139a5816130da565b8082840152506040830135604083015260608301356060830152608083013567ffffffffffffffff8111156139d8575f80fd5b8301601f810185136139e8575f80fd5b80356139f661379282613719565b81815260059190911b82018301908381019087831115613a14575f80fd5b928401925b82841015613a3257833582529284019290840190613a19565b6080860152509295945050505050565b5f60208284031215613a52575f80fd5b813567ffffffffffffffff80821115613a69575f80fd5b9083019060e08286031215613a7c575f80fd5b613a84613566565b823582811115613a92575f80fd5b613a9e87828601613685565b825250613aad602084016130fb565b602082015260408301356040820152606083013582811115613acd575f80fd5b613ad9878286016137e3565b606083015250608083013582811115613af0575f80fd5b613afc87828601613859565b60808301525060a083013582811115613b13575f80fd5b613b1f87828601613978565b60a08301525060c083013582811115613b36575f80fd5b613b42878286016135fb565b60c08301525095945050505050565b7f56334475746368496e707574280000000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600d8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601b8201527f4e6f6e6c696e656172447574636844656361792063757276652c000000000000602f8201527f75696e74323536206d6178416d6f756e742c000000000000000000000000000060498201527f75696e743235362061646a7573746d656e745065724777656942617365466565605b8201527f2900000000000000000000000000000000000000000000000000000000000000607b8201525f607c8201612297565b7f563344757463684f75747075742800000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600e8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601c8201527f4e6f6e6c696e656172447574636844656361792063757276652c00000000000060308201527f6164647265737320726563697069656e742c0000000000000000000000000000604a8201527f75696e74323536206d696e416d6f756e742c0000000000000000000000000000605c8201527f75696e743235362061646a7573746d656e745065724777656942617365466565606e8201527f2900000000000000000000000000000000000000000000000000000000000000608e8201525f608f8201612297565b5f8651613daa818460208b016131b2565b865190830190613dbe818360208b016131b2565b8651910190613dd1818360208a016131b2565b8551910190613de48183602089016131b2565b8451910190613df78183602088016131b2565b01979650505050505050565b602081525f612c886020830184613286565b5f6020808385031215613e26575f80fd5b825167ffffffffffffffff811115613e3c575f80fd5b8301601f81018513613e4c575f80fd5b8051613e5a61379282613719565b81815260609182028301840191848201919088841115613e78575f80fd5b938501935b83851015613ed25780858a031215613e93575f80fd5b613e9b613589565b8551613ea6816130da565b81528587015187820152604080870151613ebf816130da565b9082015283529384019391850191613e7d565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561229757612297613ede565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6124d86040830184613286565b7f563344757463684f72646572207769746e65737329000000000000000000000081525f601588516020613f8582848701838e016131b2565b895191850191613f9a81858501848e016131b2565b8951920191613fae81858501848d016131b2565b8851920191613fc281858501848c016131b2565b8751920191613fd681858501848b016131b2565b8651920191613fea81858501848a016131b2565b919091019091019998505050505050505050565b5f61014061402d838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261406e6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526140a3818401866131d4565b905082810361012084015261255b81856131d4565b5f83516140c98184602088016131b2565b8351908301906140dd8183602088016131b2565b01949350505050565b5f602080835260c0830184518285015273ffffffffffffffffffffffffffffffffffffffff828601511660408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e08701915084830193505f92505b8083101561396d5783518252928401926001929092019190840190614149565b8381528260208201525f82516141868160408501602087016131b2565b91909101604001949350505050565b5f80604083850312156141a6575f80fd5b505080516020909101519092909150565b8181038181111561229757612297613ede565b8181035f8312801583831316838312821617156141e9576141e9613ede565b5092915050565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361422057614220613ede565b505f0390565b8082018281125f83128015821682158216171561424557614245613ede565b505092915050565b81515f9082906020808601845b838110156142765781518552938201939082019060010161425a565b50929695505050505050565b61ffff8281168282160390808211156141e9576141e9613ede565b5f61ffff8083168181036142b3576142b3613ede565b600101939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122076eb64bf241a3d263ec5a72de29639edadafd9dc347b19b4925bf5d973d562ef64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0F\xC48\x03\x80b\0F\xC4\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01jV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\xA4\xB0\x19F\x01b\0\0\xBFW`\x01`\x01`@\x1B\x03b\0\t\x85b\0\0\xE0` \x1B\x17\x16`\xA0Rb\0\0\xD8V[`\x01`\x01`@\x1B\x03b\0\t\xFCb\0\x01M` \x1B\x17\x16`\xA0R[PPb\0\x01\xC3V[`\0`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01H\x91\x90b\0\x01\xA9V[\x90P\x90V[C\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01gW`\0\x80\xFD[PV[`\0\x80`@\x83\x85\x03\x12\x15b\0\x01~W`\0\x80\xFD[\x82Qb\0\x01\x8B\x81b\0\x01QV[` \x84\x01Q\x90\x92Pb\0\x01\x9E\x81b\0\x01QV[\x80\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15b\0\x01\xBCW`\0\x80\xFD[PQ\x91\x90PV[`\x80Q`\xA0QaD\xD5b\0\x01\xEF`\09`\0a\x0B)\x01R`\0\x81\x81`\xE0\x01Ra\x1B2\x01RaD\xD5`\0\xF3\xFE`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a0GV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a0\xF5V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a17V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a1\xD5V[a\x06\x83V[a\0\xB9a\x01l6`\x04a1\xF2V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a1\xD5V[a\x08\x94V[a\x01\xF3a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\nqV[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a2VV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0CsV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\n\0V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a5\x1FV[a\nqV[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0C\"V[a\x04\xB5\x81a\x0CsV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\n\0V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0CsV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\nqV[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia2VV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0C\"V[a\x08\x86\x81a\x0CsV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF7\x91\x90a5]V[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nkW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xEA\x83\x80a5vV[\x81\x01\x90a\n\xF7\x91\x90a;DV[\x90P`\0a\x0B\x04\x82a\r\xC6V[\x90Pa\x0B\x10\x81\x83a\x10\xACV[a\x0B\x19\x82a\x11\x08V[a\x0B\"\x82a\x12lV[`\0a\x0BP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\x0B\x88\x85`\xA0\x01Q`\0\x01Q\x84\x87``\x01Qa\x13y\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0B\xA5\x91\x85a\x14DV[\x81R` \x01\x86\x80` \x01\x90a\x0B\xBA\x91\x90a5vV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0C\x1A\x92\x87\x92\x90\x85a\x15+V[PPP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0CCWa\x0CCa2VV[` \x02` \x01\x01Q\x90Pa\x0CV\x81a\x15?V[a\x0C`\x813a\x1A/V[a\x0Cj\x813a\x1B0V[P`\x01\x01a\x0C'V[\x80Q`\0[\x81\x81\x10\x15a\r\xB5W`\0\x83\x82\x81Q\x81\x10a\x0C\x94Wa\x0C\x94a2VV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\r\x15W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\xCBWa\x0C\xCBa2VV[` \x02` \x01\x01Q\x90Pa\r\x0C\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1F2\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0C\xABV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r^Wa\r^a2VV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\r\xA3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CxV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1FyV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R`\0\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q` \x01a\x0F\xA9\x90a<\\V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\xC7\x90a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10\x06\x95\x94\x93\x92\x91` \x01a>\xA6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x10)\x83`\0\x01Qa \x13V[\x83` \x01Q\x84`@\x01Qa\x10@\x86``\x01Qa \xADV[a\x10M\x87`\x80\x01Qa!\xFEV[`@\x80Q` \x81\x01\x97\x90\x97R\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16``\x85\x01R`\x80\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xEBW`@Q\x7F\xB0\x8C\xE5\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x04\xC1\x90a\x10\xFE\x83\x85a\"\x9FV[\x83`\xC0\x01Qa#\x14V[`\xA0\x81\x01Q``\x01Q\x15a\x11tW\x80``\x01Q` \x01Q\x81`\xA0\x01Q``\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q``\x90\x81\x01Q\x90\x82\x01Q` \x01R[\x80`\x80\x01QQ\x81`\xA0\x01Q`\x80\x01QQ\x14a\x11\xBBW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x81\x01QQ`\0[\x81\x81\x10\x15a\x03_W`\0\x83`\x80\x01Q\x82\x81Q\x81\x10a\x11\xE4Wa\x11\xE4a2VV[` \x02` \x01\x01Q\x90P`\0\x84`\xA0\x01Q`\x80\x01Q\x83\x81Q\x81\x10a\x12\nWa\x12\na2VV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12bW\x81` \x01Q\x81\x10\x15a\x12ZW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xC4V[`\0a\x12\x85\x82`@\x01QHa$<\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x81``\x01Q`\x80\x01Q`\0\x14a\x12\xE0W`\0a\x12\xAB\x83``\x01Q`\x80\x01Q\x83a$wV[\x90Pa\x12\xD5\x81`\0\x85``\x01Q``\x01Q\x86``\x01Q` \x01Qa$\xB0\x90\x93\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[``\x84\x01Q` \x01RP[`\x80\x82\x01QQ`\0[\x81\x81\x10\x15a\x06}W`\0\x84`\x80\x01Q\x82\x81Q\x81\x10a\x13\tWa\x13\ta2VV[` \x02` \x01\x01Q\x90P\x80`\xA0\x01Q`\0\x14a\x13pW`\0a\x13/\x82`\xA0\x01Q\x86a$wV[`\x80\x83\x01Q` \x84\x01Q\x91\x92Pa\x13i\x91\x90\x83\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa$\xD0V[` \x83\x01RP[P`\x01\x01a\x12\xE9V[a\x13\xB3`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01`\0\x81R` \x01\x86``\x01Q\x81R` \x01a%b\x81RP\x90P`\0a\x14\x04\x82a%\xEEV[`@\x80Q``\x80\x82\x01\x83R\x89Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x82\x01\x93\x90\x93R\x97\x90\x91\x01Q\x90\x87\x01RP\x93\x94\x93PPPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14bWa\x14ba2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x14\xCBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\x80W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x15\"Wa\x14\xFD\x86\x82\x81Q\x81\x10a\x14\xEEWa\x14\xEEa2VV[` \x02` \x01\x01Q\x86\x86a&\xFAV[\x83\x82\x81Q\x81\x10a\x15\x0FWa\x15\x0Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\xD1V[PP\x93\x92PPPV[a\x158\x85\x85\x85\x85\x85a'\xE3V[PPPPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15_WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x15\xB6\x90\x85\x90`\x04\x01a?\x11V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x16\x19\x91\x90\x81\x01\x90a?$V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x161\x82\x84a@#V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16IWa\x16Ia2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16\xB2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16gW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x17\x03W\x85`@\x01Q\x81\x81Q\x81\x10a\x16\xD6Wa\x16\xD6a2VV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\xF0Wa\x16\xF0a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16\xB8V[P`\0\x80`\0[\x84\x81\x10\x15a\x1A\x1EW`\0\x87\x82\x81Q\x81\x10a\x17&Wa\x17&a2VV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\xE4W\x88\x81\x81Q\x81\x10a\x17MWa\x17Ma2VV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xDCW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x173V[P`\0\x80[\x88\x81\x10\x15a\x18\xA5W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x18\tWa\x18\ta2VV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18\x9CW\x85\x15a\x18\x86W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x18\x95\x90\x84a@#V[\x92P`\x01\x96P[P`\x01\x01a\x17\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x19\x1EW\x84\x15a\x19\x05W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x19\x17\x90\x82a@#V[\x90P`\x01\x93P[\x80`\0\x03a\x19sW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x19\x81\x81`\x05a'\x10a(\x85V[\x82` \x01Q\x11\x15a\x19\xF4W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x1A\tWa\x1A\ta2VV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x17\nV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A\x80W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\xFC\x90\x84\x90\x86\x90`\x04\x01a@6V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1B\x14W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\xF0\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1C\xBD\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aC\xE5`.\x919`@Q` \x01a\x1D'\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1EW\x90`\xB8\x01a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x97\x96\x95\x94\x93\x92\x91` \x01a@eV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1F\x04\x96\x95\x94\x93\x92`\x04\x01aA\x18V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x1EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1FWWa\x03_\x82\x82a\x1FyV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(\xC1V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1F\xD3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xD8V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aD\x13`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x8F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q` \x01a \xBE\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!~\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa!\xAB\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10\x8FV[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x1EWa\"\x1Ea2'V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\"HW` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P`\0[\x81\x81\x10\x15a\"\x8FW`\0a\"}\x86\x83\x81Q\x81\x10a\"pWa\"pa2VV[` \x02` \x01\x01Qa*\xAAV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a\"QV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xA0\x01Q`@Q` \x01a\"\xB8\x91\x90aB\x02V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xF5\x93\x92\x91` \x01aB\x87V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a#+\x91\x90aB\xB4V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a#DWa#Da2VV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#\xA1W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\xFCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a$3W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x81\x83\x10\x15a$jWa$Xa$S\x84\x84aB\xD8V[a,\x0EV[a$c\x90`\0aB\xEBV[\x90Pa#\x0EV[a$ca$S\x83\x85aB\xD8V[`\0\x80\x82\x12a$\x8FWa$c\x83\x83c;\x9A\xCA\0a(\x85V[a$\xA7a$\x9B\x83aC\x12V[\x84\x90c;\x9A\xCA\0a,\xC4V[a$c\x90aC\x12V[`\0a$\xC7\x85a$\xC0\x86\x84aB\xEBV[\x85\x85a$\xD0V[\x95\x94PPPPPV[`\0\x80\x84\x12\x15a%3W`\0a$\xE5\x85aC\x12V[\x90P\x85a%\x12\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaB\xD8V[\x10\x15a%!W\x82\x91PPa%ZV[a%+\x81\x87a@#V[\x91PPa%OV[\x83\x85\x10\x15a%BWP\x81a%ZV[a%L\x84\x86aB\xD8V[\x90P[a$\xC7\x81\x84\x84a-\x08V[\x94\x93PPPPV[`\0\x84\x84\x10a%rWP\x80a$\xC7V[`\0a%~\x87\x86aB\xD8V[\x90P`\0a%\x8C\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a%\xBEWa%\xAE\x83\x83a%\xA7\x88\x8AaB\xEBV[\x91\x90a(\x85V[a%\xB7\x90aC\x12V[\x90Pa%\xD7V[a%\xD4\x83\x83a%\xCD\x89\x89aB\xEBV[\x91\x90a,\xC4V[\x90P[a%\xE1\x81\x87aCJV[\x99\x98PPPPPPPPPV[`\0`\x10\x82`\0\x01Q` \x01QQ\x11\x15a&4W`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a&OWP\x81Q` \x01QQ\x15[\x15a&nW`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa#\x0E\x92\x90\x91a-\x08V[`\0a&\x8F\x83`@\x01Q\x84``\x01Qa&\x87\x91\x90aB\xD8V[a\xFF\xFFa-\x19V[\x90P`\0\x80`\0\x80a&\xA5\x87`\0\x01Q\x86a-1V[\x93P\x93P\x93P\x93P`\0a&\xD0\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&\xEE\x92\x91\x84\x91a$\xD0V[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.\xF3\x81RP\x90P`\0a'\x87\x82a%\xEEV[\x90P`@Q\x80``\x01`@R\x80\x87`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a'\xEE\x84\x84\x83a/GV[a\x158W\x81a()W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a$3W`\0\x82\x82\x81Q\x81\x10a(NWa(Na2VV[` \x02` \x01\x01Q\x90Pa(w\x85a'\x10a(i\x91\x90a@#V[` \x83\x01Q\x90a'\x10a,\xC4V[` \x90\x91\x01R`\x01\x01a(1V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(\xBAW`\0\x80\xFD[P\x91\x02\x04\x90V[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x158W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R`\0\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Q`@Q` \x01a*W\x91\x90aCrV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10\x8FV[`\0`@Q` \x01a*\xBB\x90a=nV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra+{\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa+\xA8\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`\xA0\x80\x8B\x01Q`@\x80Q` \x81\x01\x9B\x90\x9BRs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\x8A\x16\x90\x8B\x01R\x94\x89\x01\x96\x90\x96R\x90\x87\x01\x93\x90\x93R\x93\x90\x93\x16\x91\x84\x01\x91\x90\x91R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01a\x10\x8FV[`\0\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xC0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FSafeCast: value doesn't fit in a`D\x82\x01R\x7Fn int256\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x07\0V[P\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a,\xF9W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0a%Za-\x17\x85\x85a/\x93V[\x83[`\0\x81\x83\x10a-(W\x81a-*V[\x82[\x93\x92PPPV[`\0\x80`\0\x80`\0a-D\x87`\0\x01Q\x90V[\x90Pa\xFF\xFF\x86\x16a-V\x82`\0a/\xA2V[a\xFF\xFF\x16\x10a-\x9AW`\0a-k\x82\x82a/\xA2V[`\0\x89` \x01Q`\0\x81Q\x81\x10a-\x84Wa-\x84a2VV[` \x02` \x01\x01Q\x94P\x94P\x94P\x94PPa.\xEAV[`\0`\x01\x88` \x01QQa-\xAE\x91\x90aC\xA8V[\x90P`\x01[\x81a\xFF\xFF\x16\x81a\xFF\xFF\x16\x11a.~W\x87a\xFF\xFF\x16a-\xDE\x82a\xFF\xFF\x16\x85a/\xA2\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[a\xFF\xFF\x16\x10a.lWa.\0a-\xF5`\x01\x83aC\xA8V[\x84\x90a\xFF\xFF\x16a/\xA2V[a.\x0E\x84a\xFF\xFF\x84\x16a/\xA2V[` \x8B\x01Qa.\x1E`\x01\x85aC\xA8V[a\xFF\xFF\x16\x81Q\x81\x10a.2Wa.2a2VV[` \x02` \x01\x01Q\x8B` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.TWa.Ta2VV[` \x02` \x01\x01Q\x96P\x96P\x96P\x96PPPPa.\xEAV[\x80a.v\x81aC\xC3V[\x91PPa-\xB3V[Pa.\x8D\x82a\xFF\xFF\x83\x16a/\xA2V[a.\x9B\x83a\xFF\xFF\x84\x16a/\xA2V[\x89` \x01Q\x83a\xFF\xFF\x16\x81Q\x81\x10a.\xB5Wa.\xB5a2VV[` \x02` \x01\x01Q\x8A` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.\xD7Wa.\xD7a2VV[` \x02` \x01\x01Q\x95P\x95P\x95P\x95PPP[\x92\x95\x91\x94P\x92PV[`\0\x84\x84\x10a/\x03WP\x80a$\xC7V[`\0a/\x0F\x87\x86aB\xD8V[\x90P`\0a/\x1D\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a/8Wa%\xAE\x83\x83a%\xCD\x88\x8AaB\xEBV[a%\xD4\x83\x83a%\xA7\x89\x89aB\xEBV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a/kWP\x82\x82\x11[\x80a%ZWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[`\0\x81\x83\x11a-(W\x81a-*V[`\0`\x10\x82\x10a/\xDEW`@Q\x7FN#\xD05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x10\x02\x1C\x90V[`\0`@\x82\x84\x03\x12\x15a/\xF8W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a0\x10W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0(W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\\W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a0tW`\0\x80\xFD[a0\x80\x87\x83\x88\x01a/\xE6V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a0\x96W`\0\x80\xFD[Pa0\xA3\x86\x82\x87\x01a/\xFEV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a0\xC2W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\xDAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a1\x08W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\x1FW`\0\x80\xFD[a1+\x85\x82\x86\x01a0\xB0V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a1MW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a1eW`\0\x80\xFD[a1q\x88\x83\x89\x01a0\xB0V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a1\x8AW`\0\x80\xFD[Pa1\x97\x87\x82\x88\x01a/\xFEV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a1\xD0\x81a1\xA3V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a1\xE7W`\0\x80\xFD[\x815a-*\x81a1\xA3V[`\0` \x82\x84\x03\x12\x15a2\x04W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a2\x1BW`\0\x80\xFD[a%Z\x84\x82\x85\x01a/\xE6V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a2\xA0W\x81\x81\x01Q\x83\x82\x01R` \x01a2\x88V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra2\xC1\x81` \x86\x01` \x86\x01a2\x85V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a3SW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a3\x08V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra3\xD2a\x01\xA0\x85\x01\x82a2\xA9V[\x90P` \x83\x01Qa4\x10` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra4(\x82\x82a2\xF3V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra4B\x82\x82a2\xA9V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a4\xCEW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra4\xBC\x86\x83Qa3^V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a4\x82V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a5SW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a5oW`\0\x80\xFD[PQ\x91\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a5\xABW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a5\xC6W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a0@W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@R\x90V[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a6\xD7Wa6\xD7a2'V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a6\xF0W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\nWa7\na2'V[a7;` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a6\x90V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a7PW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a7\x7FW`\0\x80\xFD[a7\x87a5\xDBV[\x90P\x815a7\x94\x81a1\xA3V[\x81R` \x82\x015a7\xA4\x81a1\xA3V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a7\xCD\x81a1\xA3V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\xECW`\0\x80\xFD[a7\xF8\x84\x82\x85\x01a6\xDFV[`\xA0\x83\x01RP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a8\x1EWa8\x1Ea2'V[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15a8:W`\0\x80\xFD[a8Ba6\x04V[\x90P\x815\x81R` \x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a8cW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a8tW`\0\x80\xFD[\x805a8\x87a8\x82\x82a8\x04V[a6\x90V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a8\xA6W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a8\xC4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a8\xABV[\x80\x85\x87\x01RPPPPP\x92\x91PPV[`\0`\xA0\x82\x84\x03\x12\x15a8\xE6W`\0\x80\xFD[a8\xEEa6'V[\x90P\x815a8\xFB\x81a1\xA3V[\x81R` \x82\x81\x015\x90\x82\x01R`@\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a9!W`\0\x80\xFD[a9-\x84\x82\x85\x01a8(V[`@\x83\x01RP``\x82\x015``\x82\x01R`\x80\x82\x015`\x80\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a9^W`\0\x80\xFD[\x815` a9na8\x82\x83a8\x04V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a9\x8DW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a:jW\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a9\xB2W`\0\x80\x81\xFD[\x81\x89\x01\x91P`\xC0\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x84\x8D\x03\x01\x12\x15a9\xEBW`\0\x80\x81\xFD[a9\xF3a5\xDBV[\x87\x84\x015a:\0\x81a1\xA3V[\x81R`@\x84\x81\x015\x89\x83\x01R``\x80\x86\x015\x85\x81\x11\x15a: W`\0\x80\x81\xFD[a:.\x8F\x8C\x83\x8A\x01\x01a8(V[\x83\x85\x01RP`\x80\x94P\x84\x86\x015\x91Pa:F\x82a1\xA3V[\x82\x01R`\xA0\x84\x81\x015\x93\x82\x01\x93\x90\x93R\x92\x015\x90\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a9\x91V[P\x96\x95PPPPPPV[`\0`\xA0\x82\x84\x03\x12\x15a:\x87W`\0\x80\xFD[a:\x8Fa6'V[\x90P\x815\x81R` \x80\x83\x015a:\xA4\x81a1\xA3V[\x80\x82\x84\x01RP`@\x83\x015`@\x83\x01R``\x83\x015``\x83\x01R`\x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a:\xD8W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a:\xE9W`\0\x80\xFD[\x805a:\xF7a8\x82\x82a8\x04V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a;\x16W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a;4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a;\x1BV[`\x80\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a;VW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a;nW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a;\x82W`\0\x80\xFD[a;\x8Aa6JV[\x825\x82\x81\x11\x15a;\x99W`\0\x80\xFD[a;\xA5\x87\x82\x86\x01a7mV[\x82RPa;\xB4` \x84\x01a1\xC5V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015\x82\x81\x11\x15a;\xD5W`\0\x80\xFD[a;\xE1\x87\x82\x86\x01a8\xD4V[``\x83\x01RP`\x80\x83\x015\x82\x81\x11\x15a;\xF9W`\0\x80\xFD[a<\x05\x87\x82\x86\x01a9MV[`\x80\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a<\x1DW`\0\x80\xFD[a<)\x87\x82\x86\x01a:uV[`\xA0\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a\xB8\x81\x84` \x8B\x01a2\x85V[\x86Q\x90\x83\x01\x90a>\xCC\x81\x83` \x8B\x01a2\x85V[\x86Q\x91\x01\x90a>\xDF\x81\x83` \x8A\x01a2\x85V[\x85Q\x91\x01\x90a>\xF2\x81\x83` \x89\x01a2\x85V[\x84Q\x91\x01\x90a?\x05\x81\x83` \x88\x01a2\x85V[\x01\x97\x96PPPPPPPV[` \x81R`\0a-*` \x83\x01\x84a3^V[`\0` \x80\x83\x85\x03\x12\x15a?7W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a?NW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a?_W`\0\x80\xFD[\x80Qa?ma8\x82\x82a8\x04V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a?\x8CW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a?\xE8W\x80\x85\x8A\x03\x12\x15a?\xA9W`\0\x80\x81\xFD[a?\xB1a6mV[\x85Qa?\xBC\x81a1\xA3V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa?\xD5\x81a1\xA3V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a?\x91V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a#\x0EWa#\x0Ea?\xF4V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a%Z`@\x83\x01\x84a3^V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x15\x88Q` a@\x9F\x82\x84\x87\x01\x83\x8E\x01a2\x85V[\x89Q\x91\x85\x01\x91a@\xB4\x81\x85\x85\x01\x84\x8E\x01a2\x85V[\x89Q\x92\x01\x91a@\xC8\x81\x85\x85\x01\x84\x8D\x01a2\x85V[\x88Q\x92\x01\x91a@\xDC\x81\x85\x85\x01\x84\x8C\x01a2\x85V[\x87Q\x92\x01\x91a@\xF0\x81\x85\x85\x01\x84\x8B\x01a2\x85V[\x86Q\x92\x01\x91aA\x04\x81\x85\x85\x01\x84\x8A\x01a2\x85V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[`\0a\x01@aAH\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01RaA\x89`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01RaA\xBE\x81\x84\x01\x86a2\xA9V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%\xE1\x81\x85a2\xA9V[`\0\x83QaA\xE5\x81\x84` \x88\x01a2\x85V[\x83Q\x90\x83\x01\x90aA\xF9\x81\x83` \x88\x01a2\x85V[\x01\x94\x93PPPPV[`\0` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a:jW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aBgV[\x83\x81R\x82` \x82\x01R`\0\x82QaB\xA5\x81`@\x85\x01` \x87\x01a2\x85V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15aB\xC7W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a#\x0EWa#\x0Ea?\xF4V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aC\x0BWaC\x0Ba?\xF4V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aCCWaCCa?\xF4V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aCjWaCja?\xF4V[PP\x92\x91PPV[\x81Q`\0\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aC\x9CW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aC\x80V[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aC\x0BWaC\x0Ba?\xF4V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x03aC\xDAWaC\xDAa?\xF4V[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xA80\x88\xCF\x8C\xE7sJ\x1AO\xD4s\xE1]\xA5\xDD@\xDE\x92/\x9F#|\xDC\xD5\xA3%\x8B\xDB!\xAF\x85dsolcC\0\x08\x18\x003", + b"`\xC0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Qb\0E\x8F8\x03\x80b\0E\x8F\x839\x81\x01`@\x81\x90Rb\0\x003\x91b\0\x01dV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x82U`@Q\x84\x92\x84\x92\x83\x92\x83\x92\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x82\x90\xA3PP`\x01`\x02UP`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\xA4\xB0\x19F\x01b\0\0\xBDW`\x01`\x01`@\x1B\x03b\0\tab\0\0\xDE` \x1B\x17\x16`\xA0Rb\0\0\xD6V[`\x01`\x01`@\x1B\x03b\0\t\xD5b\0\x01H` \x1B\x17\x16`\xA0R[PPb\0\x01\xB9V[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15b\0\x01\x1DW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90b\0\x01C\x91\x90b\0\x01\xA1V[\x90P\x90V[C\x90V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01aW_\x80\xFD[PV[_\x80`@\x83\x85\x03\x12\x15b\0\x01vW_\x80\xFD[\x82Qb\0\x01\x83\x81b\0\x01LV[` \x84\x01Q\x90\x92Pb\0\x01\x96\x81b\0\x01LV[\x80\x91PP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15b\0\x01\xB2W_\x80\xFD[PQ\x91\x90PV[`\x80Q`\xA0QaC\xAEb\0\x01\xE1_9_a\n\xFF\x01R_\x81\x81`\xDA\x01Ra\x1A\xCE\x01RaC\xAE_\xF3\xFE`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a/\x8FV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a0sV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a1\x0BV[a\x06eV[a\0\xB4a\x01e6`\x04a1&V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a1\x0BV[a\x08rV[a\x01\xE8a\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\nJV[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a1\x85V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0CDV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\t\xD9V[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a4CV[a\nJV[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\xF5V[a\x04\x9F\x81a\x0CDV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\t\xD9V[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0CDV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\nJV[\x81_\x81Q\x81\x10a\x08GWa\x08Ga1\x85V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\xF5V[a\x08d\x81a\x0CDV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xACW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xD0\x91\x90a4\x7FV[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xC2\x83\x80a4\x96V[\x81\x01\x90a\n\xCF\x91\x90a:BV[\x90P_a\n\xDB\x82a\r\x8FV[\x90Pa\n\xE7\x81\x83a\x10sV[a\n\xF0\x82a\x10\xCFV[a\n\xF9\x82a\x12/V[_a\x0B&\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\x0B\\\x85`\xA0\x01Q_\x01Q\x84\x87``\x01Qa\x134\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0By\x91\x85a\x13\xF9V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x8E\x91\x90a4\x96V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0B\xED\x92\x87\x92\x90\x85a\x14\xDEV[PPP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0C\x14Wa\x0C\x14a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C'\x81a\x14\xF2V[a\x0C1\x813a\x19\xCFV[a\x0C;\x813a\x1A\xCCV[P`\x01\x01a\x0B\xF9V[\x80Q_[\x81\x81\x10\x15a\r~W_\x83\x82\x81Q\x81\x10a\x0CcWa\x0Cca1\x85V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\xE0W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x97Wa\x0C\x97a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C\xD7\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1E\xC6\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0CxV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r(Wa\r(a1\x85V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\rl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CHV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1F\rV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R_\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q` \x01a\x0Fq\x90a;QV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\x8F\x90a\x03V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x82W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15\xC7\x91\x90\x81\x01\x90a>\x15V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\xDE\x82\x84a?\x0BV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\xF6Wa\x15\xF6a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16\x14W\x90P[P\x90P_[\x83\x81\x10\x15a\x16\xAEW\x85`@\x01Q\x81\x81Q\x81\x10a\x16\x81Wa\x16\x81a1\x85V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x9BWa\x16\x9Ba1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16cV[P_\x80_[\x84\x81\x10\x15a\x19\xBEW_\x87\x82\x81Q\x81\x10a\x16\xCEWa\x16\xCEa1\x85V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x17\x89W\x88\x81\x81Q\x81\x10a\x16\xF4Wa\x16\xF4a1\x85V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x81W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\xDAV[P_\x80[\x88\x81\x10\x15a\x18FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x17\xACWa\x17\xACa1\x85V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18=W\x85\x15a\x18'W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x186\x90\x84a?\x0BV[\x92P`\x01\x96P[P`\x01\x01a\x17\x8DV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18\xBFW\x84\x15a\x18\xA6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18\xB8\x90\x82a?\x0BV[\x90P`\x01\x93P[\x80_\x03a\x19\x13W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x19!\x81`\x05a'\x10a'\xF2V[\x82` \x01Q\x11\x15a\x19\x94W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x19\xA9Wa\x19\xA9a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x16\xB3V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\x9C\x90\x84\x90\x86\x90`\x04\x01a?\x1EV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A\xB2W_\x80\xFD[PZ\xFA\x15\x80\x15a\x1A\xC4W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x8B\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1CV\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aB\xBE`.\x919`@Q` \x01a\x1C\xC0\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1D\xF0\x90`\xB8\x01a=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1E\xEBWa\x03L\x82\x82a\x1F\rV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(,V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1FcW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1FhV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aB\xEC`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10V\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q` \x01a L\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!\x0C\x92\x90\x91\x90`\x84\x01a@\xB8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Qa!8\x85`@\x01Qa)\x13V[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10VV[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xAAWa!\xAAa1XV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a!\xD4W` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P_[\x81\x81\x10\x15a\"\x19W_a\"\x07\x86\x83\x81Q\x81\x10a!\xFAWa!\xFAa1\x85V[` \x02` \x01\x01Qa*\x0FV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a!\xDCV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xA0\x01Q`@Q` \x01a\"A\x91\x90a@\xE6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"~\x93\x92\x91` \x01aAiV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\"\xB3\x91\x90aA\x95V[\x91P\x91P_\x83`@\x81Q\x81\x10a\"\xCBWa\"\xCBa1\x85V[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#%W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\x80WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a#\xB7W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x81\x83\x10\x15a#\xECWa#\xDBa#\xD6\x84\x84aA\xB7V[a+qV[a#\xE5\x90_aA\xCAV[\x90Pa\"\x97V[a#\xE5a#\xD6\x83\x85aA\xB7V[_\x80\x82\x12a$\x10Wa#\xE5\x83\x83c;\x9A\xCA\0a'\xF2V[a$(a$\x1C\x83aA\xF0V[\x84\x90c;\x9A\xCA\0a,&V[a#\xE5\x90aA\xF0V[_a$G\x85a$@\x86\x84aA\xCAV[\x85\x85a$PV[\x95\x94PPPPPV[_\x80\x84\x12\x15a$\xB1W_a$c\x85aA\xF0V[\x90P\x85a$\x90\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaA\xB7V[\x10\x15a$\x9FW\x82\x91PPa$\xD8V[a$\xA9\x81\x87a?\x0BV[\x91PPa$\xCDV[\x83\x85\x10\x15a$\xC0WP\x81a$\xD8V[a$\xCA\x84\x86aA\xB7V[\x90P[a$G\x81\x84\x84a,hV[\x94\x93PPPPV[_\x84\x84\x10a$\xEFWP\x80a$GV[_a$\xFA\x87\x86aA\xB7V[\x90P_a%\x07\x88\x88aA\xB7V[\x90P_\x85\x85\x12\x15a%8Wa%(\x83\x83a%!\x88\x8AaA\xCAV[\x91\x90a'\xF2V[a%1\x90aA\xF0V[\x90Pa%QV[a%N\x83\x83a%G\x89\x89aA\xCAV[\x91\x90a,&V[\x90P[a%[\x81\x87aB&V[\x99\x98PPPPPPPPPV[_`\x10\x82_\x01Q` \x01QQ\x11\x15a%\xACW`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a%\xC7WP\x81Q` \x01QQ\x15[\x15a%\xE6W`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa\"\x97\x92\x90\x91a,hV[_a&\x06\x83`@\x01Q\x84``\x01Qa%\xFE\x91\x90aA\xB7V[a\xFF\xFFa,xV[\x90P_\x80_\x80a&\x19\x87_\x01Q\x86a,\x8FV[\x93P\x93P\x93P\x93P_a&C\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&a\x92\x91\x84\x91a$PV[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.H\x81RP\x90P_a&\xF7\x82a%hV[\x90P`@Q\x80``\x01`@R\x80\x87_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a']\x84\x84\x83a.\x98V[a\x14\xEBW\x81a'\x98W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a#\xB7W_\x82\x82\x81Q\x81\x10a'\xBBWa'\xBBa1\x85V[` \x02` \x01\x01Q\x90Pa'\xE4\x85a'\x10a'\xD6\x91\x90a?\x0BV[` \x83\x01Q\x90a'\x10a,&V[` \x90\x91\x01R`\x01\x01a'\x9FV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(%W_\x80\xFD[P\x91\x02\x04\x90V[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x14\xEBW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R_\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Q`@Q` \x01a)\xBC\x91\x90aBMV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10VV[_`@Q` \x01a*\x1F\x90a&W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a>LW_\x80\xFD[\x80Qa>Za7\x92\x82a7\x19V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a>xW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a>\xD2W\x80\x85\x8A\x03\x12\x15a>\x93W_\x80\xFD[a>\x9Ba5\x89V[\x85Qa>\xA6\x81a0\xDAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa>\xBF\x81a0\xDAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a>}V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\"\x97Wa\"\x97a>\xDEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a$\xD8`@\x83\x01\x84a2\x86V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_`\x15\x88Q` a?\x85\x82\x84\x87\x01\x83\x8E\x01a1\xB2V[\x89Q\x91\x85\x01\x91a?\x9A\x81\x85\x85\x01\x84\x8E\x01a1\xB2V[\x89Q\x92\x01\x91a?\xAE\x81\x85\x85\x01\x84\x8D\x01a1\xB2V[\x88Q\x92\x01\x91a?\xC2\x81\x85\x85\x01\x84\x8C\x01a1\xB2V[\x87Q\x92\x01\x91a?\xD6\x81\x85\x85\x01\x84\x8B\x01a1\xB2V[\x86Q\x92\x01\x91a?\xEA\x81\x85\x85\x01\x84\x8A\x01a1\xB2V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[_a\x01@a@-\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra@n`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra@\xA3\x81\x84\x01\x86a1\xD4V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%[\x81\x85a1\xD4V[_\x83Qa@\xC9\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xDD\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[_` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a9mW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aAIV[\x83\x81R\x82` \x82\x01R_\x82QaA\x86\x81`@\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[_\x80`@\x83\x85\x03\x12\x15aA\xA6W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a\"\x97Wa\"\x97a>\xDEV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aA\xE9WaA\xE9a>\xDEV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aB WaB a>\xDEV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aBEWaBEa>\xDEV[PP\x92\x91PPV[\x81Q_\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aBvW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aBZV[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aA\xE9WaA\xE9a>\xDEV[_a\xFF\xFF\x80\x83\x16\x81\x81\x03aB\xB3WaB\xB3a>\xDEV[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 v\xEBd\xBF$\x1A=&>\xC5\xA7-\xE2\x969\xED\xAD\xAF\xD9\xDC4{\x19\xB4\x92[\xF5\xD9s\xD5b\xEFdsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b4366004613047565b6101eb565b005b6100b96100c93660046130f5565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b9610139366004613137565b6104c5565b34801561014a57600080fd5b506100b96101593660046131d5565b610683565b6100b961016c3660046131f2565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046131d5565b610894565b6101f3610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b284610a71565b816000815181106102c5576102c5613256565b60200260200101819052506102d981610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401613459565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610c73565b5061035f6001600255565b505050565b61036c610a00565b8060008167ffffffffffffffff81111561038857610388613227565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466613256565b9050602002810190610478919061351f565b610a71565b82828151811061048f5761048f613256565b6020908102919091010152600101610449565b506104ac81610c22565b6104b581610c73565b50506104c16001600255565b5050565b6104cd610a00565b8260008167ffffffffffffffff8111156104e9576104e9613227565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466613256565b8282815181106105d9576105d9613256565b60209081029190910101526001016105aa565b506105f681610c22565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401613459565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610c73565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610a00565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae57905050905061085682610a71565b8160008151811061086957610869613256565b602002602001018190525061087d81610c22565b61088681610c73565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f7919061355d565b905090565b4390565b6002805403610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610aea8380613576565b810190610af79190613b44565b90506000610b0482610dc6565b9050610b1081836110ac565b610b1982611108565b610b228261126c565b6000610b507f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b90506040518060a0016040528084600001518152602001610b888560a00151600001518487606001516113799092919063ffffffff16565b815260a0850151516080860151602090920191610ba59185611444565b8152602001868060200190610bba9190613576565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602090810184905260a0850151908101518151604090920151929650610c1a928792908561152b565b505050919050565b805160005b8181101561035f576000838281518110610c4357610c43613256565b60200260200101519050610c568161153f565b610c608133611a2f565b610c6a8133611b30565b50600101610c27565b805160005b81811015610db5576000838281518110610c9457610c94613256565b602002602001015190506000816040015151905060005b81811015610d1557600083604001518281518110610ccb57610ccb613256565b60200260200101519050610d0c81604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611f329092919063ffffffff16565b50600101610cab565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610d5e57610d5e613256565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610da391815260200190565b60405180910390a45050600101610c78565b5047156104c1576104c13347611f79565b6040517f563344757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8201527f56334475746368496e7075742062617365496e7075742c00000000000000000060658201527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c820152600090609801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208301527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348301527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b83015290606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906144136020830139604051602001610fa990613c5c565b604051602081830303815290604052604051602001610fc790613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110069594939291602001613ea6565b604051602081830303815290604052805190602001206110298360000151612013565b8360200151846040015161104086606001516120ad565b61104d87608001516121fe565b60408051602081019790975286019490945273ffffffffffffffffffffffffffffffffffffffff9092166060850152608084015260a083015260c082015260e0015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110eb576040517fb08ce5b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516104c1906110fe838561229f565b8360c00151612314565b60a08101516060015115611174578060600151602001518160a00151606001511115611160576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160609081015190820151602001525b8060800151518160a001516080015151146111bb576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808101515160005b8181101561035f576000836080015182815181106111e4576111e4613256565b6020026020010151905060008460a0015160800151838151811061120a5761120a613256565b602002602001015190508060001461126257816020015181101561125a576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111c4565b600061128582604001514861243c90919063ffffffff16565b90508160600151608001516000146112e05760006112ab83606001516080015183612477565b90506112d58160008560600151606001518660600151602001516124b0909392919063ffffffff16565b606084015160200152505b60808201515160005b8181101561067d5760008460800151828151811061130957611309613256565b602002602001015190508060a0015160001461137057600061132f8260a0015186612477565b60808301516020840151919250611369919083907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6124d0565b6020830152505b506001016112e9565b6113b36040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b60006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001600081526020018660600151815260200161256281525090506000611404826125ee565b6040805160608082018352895173ffffffffffffffffffffffffffffffffffffffff16825260208201939093529790910151908701525093949350505050565b82516060908067ffffffffffffffff81111561146257611462613227565b6040519080825280602002602001820160405280156114cb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114805790505b50915060005b81811015611522576114fd8682815181106114ee576114ee613256565b602002602001015186866126fa565b83828151811061150f5761150f613256565b60209081029190910101526001016114d1565b50509392505050565b61153885858585856127e3565b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661155f5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf03906115b6908590600401613f11565b600060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116199190810190613f24565b60408301515181519192509060006116318284614023565b67ffffffffffffffff81111561164957611649613227565b6040519080825280602002602001820160405280156116b257816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116675790505b50905060005b8381101561170357856040015181815181106116d6576116d6613256565b60200260200101518282815181106116f0576116f0613256565b60209081029190910101526001016116b8565b5060008060005b84811015611a1e57600087828151811061172657611726613256565b6020026020010151905060005b828110156117e45788818151811061174d5761174d613256565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117dc5781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b600101611733565b506000805b888110156118a55760008b60400151828151811061180957611809613256565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361189c578515611886576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118959084614023565b9250600196505b506001016117e9565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff91821691160361191e578415611905576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516119179082614023565b9050600193505b806000036119735781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b611981816005612710612885565b826020015111156119f4578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a0181518110611a0957611a09613256565b6020908102919091010152505060010161170a565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a80576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611afc9084908690600401614036565b60006040518083038186803b158015611b1457600080fd5b505afa158015611b28573d6000803e3d6000fd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611bf0846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051602001611cbd907f4e6f6e6c696e656172447574636844656361792800000000000000000000000081527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060148201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000602b82015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d80835290919061441360208301396040518060600160405280602e81526020016143e5602e9139604051602001611d2790613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f563344757463684f72646572280000000000000000000000000000000000000060208401527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8401527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8401527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8401527f56334475746368496e7075742062617365496e7075742c00000000000000000060658401527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c840152815160788185030181526098840190925291611e579060b801613d6e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e97969594939291602001614065565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611f049695949392600401614118565b600060405180830381600087803b158015611f1e57600080fd5b505af1158015611b28573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611f575761035f8282611f79565b61035f73ffffffffffffffffffffffffffffffffffffffff84163384846128c1565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611fd3576040519150601f19603f3d011682016040523d82523d6000602084013e611fd8565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d8152602001614413608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161108f98939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b60006040516020016120be90613c5c565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b840152815160448185030181526064840190925261217e929091906084016141d3565b60405160208183030381529060405280519060200120826000015183602001516121ab85604001516129ac565b60608087015160808089015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff909716968801969096529186019390935284015260a083015260c082015260e00161108f565b600080825160200267ffffffffffffffff81111561221e5761221e613227565b6040519080825280601f01601f191660200182016040528015612248576020820181803683370190505b50835190915060005b8181101561228f57600061227d86838151811061227057612270613256565b6020026020010151612aaa565b60208381028601015250600101612251565b5050805160209091012092915050565b600081468460a001516040516020016122b89190614202565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526122f5939291602001614287565b6040516020818303038152906040528051906020012090505b92915050565b6000808280602001905181019061232b91906142b4565b9150915060008360408151811061234457612344613256565b0160209081015160408051600080825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa1580156123a1573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415806123fc575073ffffffffffffffffffffffffffffffffffffffff8116155b15612433576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b60008183101561246a5761245861245384846142d8565b612c0e565b6124639060006142eb565b905061230e565b61246361245383856142d8565b600080821261248f576124638383633b9aca00612885565b6124a761249b83614312565b8490633b9aca00612cc4565b61246390614312565b60006124c7856124c086846142eb565b85856124d0565b95945050505050565b6000808412156125335760006124e585614312565b905085612512827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6142d8565b1015612521578291505061255a565b61252b8187614023565b91505061254f565b8385101561254257508161255a565b61254c84866142d8565b90505b6124c7818484612d08565b949350505050565b60008484106125725750806124c7565b600061257e87866142d8565b9050600061258c88886142d8565b90506000858512156125be576125ae83836125a7888a6142eb565b9190612885565b6125b790614312565b90506125d7565b6125d483836125cd89896142eb565b9190612cc4565b90505b6125e1818761434a565b9998505050505050505050565b60006010826000015160200151511115612634576040517f0e99676600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160600151826040015110158061264f575081516020015151155b1561266e57608082015160a0830151602084015161230e929091612d08565b600061268f8360400151846060015161268791906142d8565b61ffff612d19565b90506000806000806126a5876000015186612d31565b935093509350935060006126d08561ffff168561ffff168861ffff1686868d60c0015163ffffffff16565b608089015160a08a015160208b01519293506126ee929184916124d0565b98975050505050505050565b604080516060810182526000808252602082018190529181019190915260006040518060e001604052808660400151815260200186602001518152602001858152602001848152602001866080015181526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001612ef381525090506000612787826125ee565b90506040518060600160405280876000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001876060015173ffffffffffffffffffffffffffffffffffffffff16815250925050509392505050565b6127ee848483612f47565b6115385781612829576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604085015160005b815181101561243357600082828151811061284e5761284e613256565b60200260200101519050612877856127106128699190614023565b602083015190612710612cc4565b602090910152600101612831565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04841183021582026128ba57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b6040517f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208201527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8201526000906064016040516020818303038152906040528051906020012082600001518360200151604051602001612a579190614372565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830194909452810191909152606081019190915260800161108f565b6000604051602001612abb90613d6e565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8401528151604481850301815260648401909252612b7b929091906084016141d3565b6040516020818303038152906040528051906020012082600001518360200151612ba885604001516129ac565b60608087015160808089015160a0808b015160408051602081019b909b5273ffffffffffffffffffffffffffffffffffffffff998a16908b01529489019690965290870193909352939093169184019190915260c083015260e08201526101000161108f565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e743235360000000000000000000000000000000000000000000000006064820152608401610700565b5090565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612cf957600080fd5b50910281810615159190040190565b600061255a612d178585612f93565b835b6000818310612d285781612d2a565b825b9392505050565b6000806000806000612d44876000015190565b905061ffff8616612d56826000612fa2565b61ffff1610612d9a576000612d6b8282612fa2565b60008960200151600081518110612d8457612d84613256565b6020026020010151945094509450945050612eea565b60006001886020015151612dae91906143a8565b905060015b8161ffff168161ffff1611612e7e578761ffff16612dde8261ffff1685612fa290919063ffffffff16565b61ffff1610612e6c57612e00612df56001836143a8565b849061ffff16612fa2565b612e0e8461ffff8416612fa2565b60208b0151612e1e6001856143a8565b61ffff1681518110612e3257612e32613256565b60200260200101518b602001518461ffff1681518110612e5457612e54613256565b60200260200101519650965096509650505050612eea565b80612e76816143c3565b915050612db3565b50612e8d8261ffff8316612fa2565b612e9b8361ffff8416612fa2565b89602001518361ffff1681518110612eb557612eb5613256565b60200260200101518a602001518461ffff1681518110612ed757612ed7613256565b6020026020010151955095509550955050505b92959194509250565b6000848410612f035750806124c7565b6000612f0f87866142d8565b90506000612f1d88886142d8565b9050600085851215612f38576125ae83836125cd888a6142eb565b6125d483836125a789896142eb565b600073ffffffffffffffffffffffffffffffffffffffff84161580612f6b57508282115b8061255a575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b6000818311612d285781612d2a565b600060108210612fde576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506010021c90565b600060408284031215612ff857600080fd5b50919050565b60008083601f84011261301057600080fd5b50813567ffffffffffffffff81111561302857600080fd5b60208301915083602082850101111561304057600080fd5b9250929050565b60008060006040848603121561305c57600080fd5b833567ffffffffffffffff8082111561307457600080fd5b61308087838801612fe6565b9450602086013591508082111561309657600080fd5b506130a386828701612ffe565b9497909650939450505050565b60008083601f8401126130c257600080fd5b50813567ffffffffffffffff8111156130da57600080fd5b6020830191508360208260051b850101111561304057600080fd5b6000806020838503121561310857600080fd5b823567ffffffffffffffff81111561311f57600080fd5b61312b858286016130b0565b90969095509350505050565b6000806000806040858703121561314d57600080fd5b843567ffffffffffffffff8082111561316557600080fd5b613171888389016130b0565b9096509450602087013591508082111561318a57600080fd5b5061319787828801612ffe565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356131d0816131a3565b919050565b6000602082840312156131e757600080fd5b8135612d2a816131a3565b60006020828403121561320457600080fd5b813567ffffffffffffffff81111561321b57600080fd5b61255a84828501612fe6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156132a0578181015183820152602001613288565b50506000910152565b600081518084526132c1816020860160208601613285565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015613353578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101613308565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526133d26101a08501826132a9565b905060208301516134106020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261342882826132f3565b915050606083015184820360a086015261344282826132a9565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156134ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526134bc86835161335e565b95509382019390820190600101613482565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261355357600080fd5b9190910192915050565b60006020828403121561356f57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135ab57600080fd5b83018035915067ffffffffffffffff8211156135c657600080fd5b60200191503681900382131561304057600080fd5b60405160c0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405290565b6040805190810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160a0810167ffffffffffffffff811182821017156135fe576135fe613227565b60405160e0810167ffffffffffffffff811182821017156135fe576135fe613227565b6040516060810167ffffffffffffffff811182821017156135fe576135fe613227565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156136d7576136d7613227565b604052919050565b600082601f8301126136f057600080fd5b813567ffffffffffffffff81111561370a5761370a613227565b61373b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613690565b81815284602083860101111561375057600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561377f57600080fd5b6137876135db565b90508135613794816131a3565b815260208201356137a4816131a3565b80602083015250604082013560408201526060820135606082015260808201356137cd816131a3565b608082015260a082013567ffffffffffffffff8111156137ec57600080fd5b6137f8848285016136df565b60a08301525092915050565b600067ffffffffffffffff82111561381e5761381e613227565b5060051b60200190565b60006040828403121561383a57600080fd5b613842613604565b90508135815260208083013567ffffffffffffffff81111561386357600080fd5b8301601f8101851361387457600080fd5b803561388761388282613804565b613690565b81815260059190911b820183019083810190878311156138a657600080fd5b928401925b828410156138c4578335825292840192908401906138ab565b8085870152505050505092915050565b600060a082840312156138e657600080fd5b6138ee613627565b905081356138fb816131a3565b815260208281013590820152604082013567ffffffffffffffff81111561392157600080fd5b61392d84828501613828565b604083015250606082013560608201526080820135608082015292915050565b600082601f83011261395e57600080fd5b8135602061396e61388283613804565b82815260059290921b8401810191818101908684111561398d57600080fd5b8286015b84811015613a6a57803567ffffffffffffffff808211156139b25760008081fd5b818901915060c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156139eb5760008081fd5b6139f36135db565b87840135613a00816131a3565b81526040848101358983015260608086013585811115613a205760008081fd5b613a2e8f8c838a0101613828565b838501525060809450848601359150613a46826131a3565b82015260a08481013593820193909352920135908201528352918301918301613991565b509695505050505050565b600060a08284031215613a8757600080fd5b613a8f613627565b905081358152602080830135613aa4816131a3565b8082840152506040830135604083015260608301356060830152608083013567ffffffffffffffff811115613ad857600080fd5b8301601f81018513613ae957600080fd5b8035613af761388282613804565b81815260059190911b82018301908381019087831115613b1657600080fd5b928401925b82841015613b3457833582529284019290840190613b1b565b6080860152509295945050505050565b600060208284031215613b5657600080fd5b813567ffffffffffffffff80821115613b6e57600080fd5b9083019060e08286031215613b8257600080fd5b613b8a61364a565b823582811115613b9957600080fd5b613ba58782860161376d565b825250613bb4602084016131c5565b602082015260408301356040820152606083013582811115613bd557600080fd5b613be1878286016138d4565b606083015250608083013582811115613bf957600080fd5b613c058782860161394d565b60808301525060a083013582811115613c1d57600080fd5b613c2987828601613a75565b60a08301525060c083013582811115613c4157600080fd5b613c4d878286016136df565b60c08301525095945050505050565b7f56334475746368496e707574280000000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600d8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601b8201527f4e6f6e6c696e656172447574636844656361792063757276652c000000000000602f8201527f75696e74323536206d6178416d6f756e742c000000000000000000000000000060498201527f75696e743235362061646a7573746d656e745065724777656942617365466565605b8201527f2900000000000000000000000000000000000000000000000000000000000000607b8201526000607c820161230e565b7f563344757463684f75747075742800000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600e8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601c8201527f4e6f6e6c696e656172447574636844656361792063757276652c00000000000060308201527f6164647265737320726563697069656e742c0000000000000000000000000000604a8201527f75696e74323536206d696e416d6f756e742c0000000000000000000000000000605c8201527f75696e743235362061646a7573746d656e745065724777656942617365466565606e8201527f2900000000000000000000000000000000000000000000000000000000000000608e8201526000608f820161230e565b60008651613eb8818460208b01613285565b865190830190613ecc818360208b01613285565b8651910190613edf818360208a01613285565b8551910190613ef2818360208901613285565b8451910190613f05818360208801613285565b01979650505050505050565b602081526000612d2a602083018461335e565b60006020808385031215613f3757600080fd5b825167ffffffffffffffff811115613f4e57600080fd5b8301601f81018513613f5f57600080fd5b8051613f6d61388282613804565b81815260609182028301840191848201919088841115613f8c57600080fd5b938501935b83851015613fe85780858a031215613fa95760008081fd5b613fb161366d565b8551613fbc816131a3565b81528587015187820152604080870151613fd5816131a3565b9082015283529384019391850191613f91565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561230e5761230e613ff4565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061255a604083018461335e565b7f563344757463684f72646572207769746e6573732900000000000000000000008152600060158851602061409f82848701838e01613285565b8951918501916140b481858501848e01613285565b89519201916140c881858501848d01613285565b88519201916140dc81858501848c01613285565b87519201916140f081858501848b01613285565b865192019161410481858501848a01613285565b919091019091019998505050505050505050565b6000610140614148838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b60208901516040840152604089015160608401526141896080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526141be818401866132a9565b90508281036101208401526125e181856132a9565b600083516141e5818460208801613285565b8351908301906141f9818360208801613285565b01949350505050565b6000602080835260c0830184518285015273ffffffffffffffffffffffffffffffffffffffff828601511660408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e0870191508483019350600092505b80831015613a6a5783518252928401926001929092019190840190614267565b838152826020820152600082516142a5816040850160208701613285565b91909101604001949350505050565b600080604083850312156142c757600080fd5b505080516020909101519092909150565b8181038181111561230e5761230e613ff4565b818103600083128015838313168383128216171561430b5761430b613ff4565b5092915050565b60007f8000000000000000000000000000000000000000000000000000000000000000820361434357614343613ff4565b5060000390565b808201828112600083128015821682158216171561436a5761436a613ff4565b505092915050565b815160009082906020808601845b8381101561439c57815185529382019390820190600101614380565b50929695505050505050565b61ffff82811682821603908082111561430b5761430b613ff4565b600061ffff8083168181036143da576143da613ff4565b600101939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a2646970667358221220a83088cf8ce7734a1a4fd473e15da5dd40de922f9f237cdcd5a3258bdb21af8564736f6c63430008180033 + ///0x608060405260043610610096575f3560e01c80632d771389116100665780636999b3771161004c5780636999b3771461016a5780638da5cb5b14610196578063f2fde38b146101c1575f80fd5b80632d771389146101385780633f62192e14610157575f80fd5b80630d335884146100a15780630d7a16c3146100b657806312261ee7146100c957806313fb72c714610125575f80fd5b3661009d57005b5f80fd5b6100b46100af366004612f8f565b6101e0565b005b6100b46100c4366004613034565b610351565b3480156100d4575f80fd5b506100fc7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b4610133366004613073565b6104af565b348015610143575f80fd5b506100b461015236600461310b565b610665565b6100b4610165366004613126565b610770565b348015610175575f80fd5b506001546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a1575f80fd5b505f546100fc9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101cc575f80fd5b506100b46101db36600461310b565b610872565b6101e86109d9565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816101fe5790505090506102a584610a4a565b815f815181106102b7576102b7613185565b60200260200101819052506102cb81610bf5565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061030b90849087908790600401613380565b5f604051808303815f87803b158015610322575f80fd5b505af1158015610334573d5f803e3d5ffd5b5050505061034181610c44565b5061034c6001600255565b505050565b6103596109d9565b805f8167ffffffffffffffff81111561037457610374613158565b60405190808252806020026020018201604052801561042e57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103925790505b5090505f5b8281101561048c5761046785858381811061045057610450613185565b90506020028101906104629190613443565b610a4a565b82828151811061047957610479613185565b6020908102919091010152600101610433565b5061049681610bf5565b61049f81610c44565b50506104ab6001600255565b5050565b6104b76109d9565b825f8167ffffffffffffffff8111156104d2576104d2613158565b60405190808252806020026020018201604052801561058c57816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816104f05790505b5090505f5b828110156105d3576105ae87878381811061045057610450613185565b8282815181106105c0576105c0613185565b6020908102919091010152600101610591565b506105dd81610bf5565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061061d90849088908890600401613380565b5f604051808303815f87803b158015610634575f80fd5b505af1158015610646573d5f803e3d5ffd5b5050505061065381610c44565b505061065f6001600255565b50505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b6107786109d9565b6040805160018082528183019092525f91816020015b60408051610160810182525f60a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161078e57905050905061083582610a4a565b815f8151811061084757610847613185565b602002602001018190525061085b81610bf5565b61086481610c44565b5061086f6001600255565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016106e1565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f606473ffffffffffffffffffffffffffffffffffffffff1663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d0919061347f565b905090565b4390565b6002805403610a44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106e1565b60028055565b60408051610160810182525f60a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610ac28380613496565b810190610acf9190613a42565b90505f610adb82610d8f565b9050610ae78183611073565b610af0826110cf565b610af98261122f565b5f610b267f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b90506040518060a00160405280845f01518152602001610b5c8560a001515f01518487606001516113349092919063ffffffff16565b815260a0850151516080860151602090920191610b7991856113f9565b8152602001868060200190610b8e9190613496565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810184905260a0850151908101518151604090920151929650610bed92879290856114de565b505050919050565b80515f5b8181101561034c575f838281518110610c1457610c14613185565b60200260200101519050610c27816114f2565b610c3181336119cf565b610c3b8133611acc565b50600101610bf9565b80515f5b81811015610d7e575f838281518110610c6357610c63613185565b602002602001015190505f81604001515190505f5b81811015610ce0575f83604001518281518110610c9757610c97613185565b60200260200101519050610cd781604001518260200151835f015173ffffffffffffffffffffffffffffffffffffffff16611ec69092919063ffffffff16565b50600101610c78565b50815f01516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610d2857610d28613185565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66855f015160400151604051610d6c91815260200190565b60405180910390a45050600101610c48565b5047156104ab576104ab3347611f0d565b6040517f563344757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8201527f56334475746368496e7075742062617365496e7075742c00000000000000000060658201527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c8201525f90609801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208301527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348301527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b83015290606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906142ec6020830139604051602001610f7190613b51565b604051602081830303815290604052604051602001610f8f90613c62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fce9594939291602001613d99565b60405160208183030381529060405280519060200120610ff0835f0151611fa3565b83602001518460400151611007866060015161203c565b611014876080015161218b565b60408051602081019790975286019490945273ffffffffffffffffffffffffffffffffffffffff9092166060850152608084015260a083015260c082015260e0015b604051602081830303815290604052805190602001209050919050565b8051606001514211156110b2576040517fb08ce5b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516104ab906110c58385612229565b8360c0015161229d565b60a0810151606001511561113b578060600151602001518160a00151606001511115611127576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160609081015190820151602001525b8060800151518160a00151608001515114611182576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080810151515f5b8181101561034c575f836080015182815181106111a9576111a9613185565b602002602001015190505f8460a001516080015183815181106111ce576111ce613185565b60200260200101519050805f1461122557816020015181101561121d576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b505060010161118a565b5f6112478260400151486123c090919063ffffffff16565b90508160600151608001515f1461129f575f61126b836060015160800151836123f9565b9050611294815f856060015160600151866060015160200151612431909392919063ffffffff16565b606084015160200152505b6080820151515f5b8181101561065f575f846080015182815181106112c6576112c6613185565b602002602001015190508060a001515f1461132b575f6112ea8260a00151866123f9565b60808301516020840151919250611324919083907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612450565b6020830152505b506001016112a7565b61136b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81525090565b5f6040518060e0016040528086604001518152602001866020015181526020018581526020018481526020015f8152602001866060015181526020016124e081525090505f6113b982612568565b6040805160608082018352895173ffffffffffffffffffffffffffffffffffffffff16825260208201939093529790910151908701525093949350505050565b82516060908067ffffffffffffffff81111561141757611417613158565b60405190808252806020026020018201604052801561147f57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816114355790505b5091505f5b818110156114d5576114b08682815181106114a1576114a1613185565b6020026020010151868661266d565b8382815181106114c2576114c2613185565b6020908102919091010152600101611484565b50509392505050565b6114eb8585858585612752565b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff166115125750565b6001546040517f8aa6cf030000000000000000000000000000000000000000000000000000000081525f9173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611568908590600401613e03565b5f60405180830381865afa158015611582573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115c79190810190613e15565b6040830151518151919250905f6115de8284613f0b565b67ffffffffffffffff8111156115f6576115f6613158565b60405190808252806020026020018201604052801561165e57816020015b604080516060810182525f80825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116145790505b5090505f5b838110156116ae578560400151818151811061168157611681613185565b602002602001015182828151811061169b5761169b613185565b6020908102919091010152600101611663565b505f805f5b848110156119be575f8782815181106116ce576116ce613185565b602002602001015190505f5b82811015611789578881815181106116f4576116f4613185565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff16825f015173ffffffffffffffffffffffffffffffffffffffff16036117815781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6001016116da565b505f805b88811015611846575f8b6040015182815181106117ac576117ac613185565b60200260200101519050835f015173ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff160361183d578515611827576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118369084613f0b565b9250600196505b5060010161178d565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036118bf5784156118a6576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516118b89082613f0b565b9050600193505b805f036119135781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016106e1565b6119218160056127106127f2565b82602001511115611994578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101929092529190911660448201526064016106e1565b8186848a01815181106119a9576119a9613185565b602090810291909101015250506001016116b3565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a20576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104ab578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611a9c9084908690600401613f1e565b5f6040518083038186803b158015611ab2575f80fd5b505afa158015611ac4573d5f803e3d5ffd5b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611b8b846040805160a0810182525f606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182525f808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff861682528087015181015190820152855f0151602001518660800151604051602001611c56907f4e6f6e6c696e656172447574636844656361792800000000000000000000000081527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060148201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000602b82015260440190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260c08301909152608d8083529091906142ec60208301396040518060600160405280602e81526020016142be602e9139604051602001611cc090613b51565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f563344757463684f72646572280000000000000000000000000000000000000060208401527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8401527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8401527f75696e74323536207374617274696e67426173654665652c0000000000000000604d8401527f56334475746368496e7075742062617365496e7075742c00000000000000000060658401527f563344757463684f75747075745b5d20626173654f7574707574732900000000607c840152815160788185030181526098840190925291611df09060b801613c62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e30969594939291602001613f4c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611e9d9695949392600401613ffe565b5f604051808303815f87803b158015611eb4575f80fd5b505af1158015611ac4573d5f803e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff8316611eeb5761034c8282611f0d565b61034c73ffffffffffffffffffffffffffffffffffffffff841633848461282c565b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114611f63576040519150601f19603f3d011682016040523d82523d5f602084013e611f68565b606091505b505090508061034c576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060c00160405280608d81526020016142ec608d913980516020918201208351848301516040808701516060880151608089015160a08a0151805190890120935161105698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b5f60405160200161204c90613b51565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b840152815160448185030181526064840190925261210c929091906084016140b8565b60405160208183030381529060405280519060200120825f015183602001516121388560400151612913565b60608087015160808089015160408051602081019990995273ffffffffffffffffffffffffffffffffffffffff909716968801969096529186019390935284015260a083015260c082015260e001611056565b5f80825160200267ffffffffffffffff8111156121aa576121aa613158565b6040519080825280601f01601f1916602001820160405280156121d4576020820181803683370190505b5083519091505f5b81811015612219575f6122078683815181106121fa576121fa613185565b6020026020010151612a0f565b602083810286010152506001016121dc565b5050805160209091012092915050565b5f81468460a0015160405160200161224191906140e6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261227e939291602001614169565b6040516020818303038152906040528051906020012090505b92915050565b5f80828060200190518101906122b39190614195565b915091505f836040815181106122cb576122cb613185565b01602090810151604080515f80825293810180835289905260f89290921c9082018190526060820186905260808201859052925060019060a0016020604051602081039080840390855afa158015612325573d5f803e3d5ffd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580612380575073ffffffffffffffffffffffffffffffffffffffff8116155b156123b7576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b5f818310156123ec576123db6123d684846141b7565b612b71565b6123e5905f6141ca565b9050612297565b6123e56123d683856141b7565b5f808212612410576123e58383633b9aca006127f2565b61242861241c836141f0565b8490633b9aca00612c26565b6123e5906141f0565b5f6124478561244086846141ca565b8585612450565b95945050505050565b5f808412156124b1575f612463856141f0565b905085612490827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6141b7565b101561249f57829150506124d8565b6124a98187613f0b565b9150506124cd565b838510156124c05750816124d8565b6124ca84866141b7565b90505b612447818484612c68565b949350505050565b5f8484106124ef575080612447565b5f6124fa87866141b7565b90505f61250788886141b7565b90505f85851215612538576125288383612521888a6141ca565b91906127f2565b612531906141f0565b9050612551565b61254e838361254789896141ca565b9190612c26565b90505b61255b8187614226565b9998505050505050505050565b5f6010825f0151602001515111156125ac576040517f0e99676600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816060015182604001511015806125c7575081516020015151155b156125e657608082015160a08301516020840151612297929091612c68565b5f612606836040015184606001516125fe91906141b7565b61ffff612c78565b90505f805f80612619875f015186612c8f565b93509350935093505f6126438561ffff168561ffff168861ffff1686868d60c0015163ffffffff16565b608089015160a08a015160208b015192935061266192918491612450565b98975050505050505050565b604080516060810182525f80825260208201819052918101919091525f6040518060e001604052808660400151815260200186602001518152602001858152602001848152602001866080015181526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152602001612e4881525090505f6126f782612568565b90506040518060600160405280875f015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001876060015173ffffffffffffffffffffffffffffffffffffffff16815250925050509392505050565b61275d848483612e98565b6114eb5781612798576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408501515f5b81518110156123b7575f8282815181106127bb576127bb613185565b602002602001015190506127e4856127106127d69190613f0b565b602083015190612710612c26565b60209091015260010161279f565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612825575f80fd5b5091020490565b5f6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f5114161716915050806114eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106e1565b6040517f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208201527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348201527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8201525f9060640160405160208183030381529060405280519060200120825f015183602001516040516020016129bc919061424d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120908301949094528101919091526060810191909152608001611056565b5f604051602001612a1f90613c62565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181528282527f4e6f6e6c696e656172447574636844656361792800000000000000000000000060208401527f75696e743235362072656c6174697665426c6f636b732c00000000000000000060348401527f696e743235365b5d2072656c6174697665416d6f756e74732900000000000000604b8401528151604481850301815260648401909252612adf929091906084016140b8565b60405160208183030381529060405280519060200120825f01518360200151612b0b8560400151612913565b60608087015160808089015160a0808b015160408051602081019b909b5273ffffffffffffffffffffffffffffffffffffffff998a16908b01529489019690965290870193909352939093169184019190915260c083015260e082015261010001611056565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115612c22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e7432353600000000000000000000000000000000000000000000000060648201526084016106e1565b5090565b5f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0484118302158202612c59575f80fd5b50910281810615159190040190565b5f6124d8612c768585612ee3565b835b5f818310612c865781612c88565b825b9392505050565b5f805f805f612c9e875f015190565b905061ffff8616612caf825f612ef1565b61ffff1610612cf0575f612cc38282612ef1565b5f89602001515f81518110612cda57612cda613185565b6020026020010151945094509450945050612e3f565b5f6001886020015151612d039190614282565b905060015b8161ffff168161ffff1611612dd3578761ffff16612d338261ffff1685612ef190919063ffffffff16565b61ffff1610612dc157612d55612d4a600183614282565b849061ffff16612ef1565b612d638461ffff8416612ef1565b60208b0151612d73600185614282565b61ffff1681518110612d8757612d87613185565b60200260200101518b602001518461ffff1681518110612da957612da9613185565b60200260200101519650965096509650505050612e3f565b80612dcb8161429d565b915050612d08565b50612de28261ffff8316612ef1565b612df08361ffff8416612ef1565b89602001518361ffff1681518110612e0a57612e0a613185565b60200260200101518a602001518461ffff1681518110612e2c57612e2c613185565b6020026020010151955095509550955050505b92959194509250565b5f848410612e57575080612447565b5f612e6287866141b7565b90505f612e6f88886141b7565b90505f85851215612e89576125288383612547888a6141ca565b61254e838361252189896141ca565b5f73ffffffffffffffffffffffffffffffffffffffff84161580612ebb57508282115b806124d8575073ffffffffffffffffffffffffffffffffffffffff8416331490509392505050565b5f818311612c865781612c88565b5f60108210612f2c576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506010021c90565b5f60408284031215612f44575f80fd5b50919050565b5f8083601f840112612f5a575f80fd5b50813567ffffffffffffffff811115612f71575f80fd5b602083019150836020828501011115612f88575f80fd5b9250929050565b5f805f60408486031215612fa1575f80fd5b833567ffffffffffffffff80821115612fb8575f80fd5b612fc487838801612f34565b94506020860135915080821115612fd9575f80fd5b50612fe686828701612f4a565b9497909650939450505050565b5f8083601f840112613003575f80fd5b50813567ffffffffffffffff81111561301a575f80fd5b6020830191508360208260051b8501011115612f88575f80fd5b5f8060208385031215613045575f80fd5b823567ffffffffffffffff81111561305b575f80fd5b61306785828601612ff3565b90969095509350505050565b5f805f8060408587031215613086575f80fd5b843567ffffffffffffffff8082111561309d575f80fd5b6130a988838901612ff3565b909650945060208701359150808211156130c1575f80fd5b506130ce87828801612f4a565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461086f575f80fd5b8035613106816130da565b919050565b5f6020828403121561311b575f80fd5b8135612c88816130da565b5f60208284031215613136575f80fd5b813567ffffffffffffffff81111561314c575f80fd5b6124d884828501612f34565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5b838110156131cc5781810151838201526020016131b4565b50505f910152565b5f81518084526131eb8160208601602086016131b2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b5f815180845260208085019450602084015f5b8381101561327b578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101613230565b509495945050505050565b5f815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526132f96101a08501826131d4565b905060208301516133376020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b506040830151848203608086015261334f828261321d565b915050606083015184820360a086015261336982826131d4565b915050608083015160c08501528091505092915050565b5f604082016040835280865180835260608501915060608160051b860101925060208089015f5b838110156133f3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526133e1868351613286565b955093820193908201906001016133a7565b5050858403818701528684528688828601375f848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613475575f80fd5b9190910192915050565b5f6020828403121561348f575f80fd5b5051919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126134c9575f80fd5b83018035915067ffffffffffffffff8211156134e3575f80fd5b602001915036819003821315612f88575f80fd5b60405160c0810167ffffffffffffffff8111828210171561351a5761351a613158565b60405290565b6040805190810167ffffffffffffffff8111828210171561351a5761351a613158565b60405160a0810167ffffffffffffffff8111828210171561351a5761351a613158565b60405160e0810167ffffffffffffffff8111828210171561351a5761351a613158565b6040516060810167ffffffffffffffff8111828210171561351a5761351a613158565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156135f3576135f3613158565b604052919050565b5f82601f83011261360a575f80fd5b813567ffffffffffffffff81111561362457613624613158565b61365560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016135ac565b818152846020838601011115613669575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c08284031215613695575f80fd5b61369d6134f7565b905081356136aa816130da565b815260208201356136ba816130da565b80602083015250604082013560408201526060820135606082015260808201356136e3816130da565b608082015260a082013567ffffffffffffffff811115613701575f80fd5b61370d848285016135fb565b60a08301525092915050565b5f67ffffffffffffffff82111561373257613732613158565b5060051b60200190565b5f6040828403121561374c575f80fd5b613754613520565b90508135815260208083013567ffffffffffffffff811115613774575f80fd5b8301601f81018513613784575f80fd5b803561379761379282613719565b6135ac565b81815260059190911b820183019083810190878311156137b5575f80fd5b928401925b828410156137d3578335825292840192908401906137ba565b8085870152505050505092915050565b5f60a082840312156137f3575f80fd5b6137fb613543565b90508135613808816130da565b815260208281013590820152604082013567ffffffffffffffff81111561382d575f80fd5b6138398482850161373c565b604083015250606082013560608201526080820135608082015292915050565b5f82601f830112613868575f80fd5b8135602061387861379283613719565b82815260059290921b84018101918181019086841115613896575f80fd5b8286015b8481101561396d57803567ffffffffffffffff808211156138b9575f80fd5b818901915060c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156138f0575f80fd5b6138f86134f7565b87840135613905816130da565b81526040848101358983015260608086013585811115613923575f80fd5b6139318f8c838a010161373c565b838501525060809450848601359150613949826130da565b82015260a0848101359382019390935292013590820152835291830191830161389a565b509695505050505050565b5f60a08284031215613988575f80fd5b613990613543565b9050813581526020808301356139a5816130da565b8082840152506040830135604083015260608301356060830152608083013567ffffffffffffffff8111156139d8575f80fd5b8301601f810185136139e8575f80fd5b80356139f661379282613719565b81815260059190911b82018301908381019087831115613a14575f80fd5b928401925b82841015613a3257833582529284019290840190613a19565b6080860152509295945050505050565b5f60208284031215613a52575f80fd5b813567ffffffffffffffff80821115613a69575f80fd5b9083019060e08286031215613a7c575f80fd5b613a84613566565b823582811115613a92575f80fd5b613a9e87828601613685565b825250613aad602084016130fb565b602082015260408301356040820152606083013582811115613acd575f80fd5b613ad9878286016137e3565b606083015250608083013582811115613af0575f80fd5b613afc87828601613859565b60808301525060a083013582811115613b13575f80fd5b613b1f87828601613978565b60a08301525060c083013582811115613b36575f80fd5b613b42878286016135fb565b60c08301525095945050505050565b7f56334475746368496e707574280000000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600d8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601b8201527f4e6f6e6c696e656172447574636844656361792063757276652c000000000000602f8201527f75696e74323536206d6178416d6f756e742c000000000000000000000000000060498201527f75696e743235362061646a7573746d656e745065724777656942617365466565605b8201527f2900000000000000000000000000000000000000000000000000000000000000607b8201525f607c8201612297565b7f563344757463684f75747075742800000000000000000000000000000000000081527f6164647265737320746f6b656e2c000000000000000000000000000000000000600e8201527f75696e74323536207374617274416d6f756e742c000000000000000000000000601c8201527f4e6f6e6c696e656172447574636844656361792063757276652c00000000000060308201527f6164647265737320726563697069656e742c0000000000000000000000000000604a8201527f75696e74323536206d696e416d6f756e742c0000000000000000000000000000605c8201527f75696e743235362061646a7573746d656e745065724777656942617365466565606e8201527f2900000000000000000000000000000000000000000000000000000000000000608e8201525f608f8201612297565b5f8651613daa818460208b016131b2565b865190830190613dbe818360208b016131b2565b8651910190613dd1818360208a016131b2565b8551910190613de48183602089016131b2565b8451910190613df78183602088016131b2565b01979650505050505050565b602081525f612c886020830184613286565b5f6020808385031215613e26575f80fd5b825167ffffffffffffffff811115613e3c575f80fd5b8301601f81018513613e4c575f80fd5b8051613e5a61379282613719565b81815260609182028301840191848201919088841115613e78575f80fd5b938501935b83851015613ed25780858a031215613e93575f80fd5b613e9b613589565b8551613ea6816130da565b81528587015187820152604080870151613ebf816130da565b9082015283529384019391850191613e7d565b50979650505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561229757612297613ede565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6124d86040830184613286565b7f563344757463684f72646572207769746e65737329000000000000000000000081525f601588516020613f8582848701838e016131b2565b895191850191613f9a81858501848e016131b2565b8951920191613fae81858501848d016131b2565b8851920191613fc281858501848c016131b2565b8751920191613fd681858501848b016131b2565b8651920191613fea81858501848a016131b2565b919091019091019998505050505050505050565b5f61014061402d838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261406e6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e0840152806101008401526140a3818401866131d4565b905082810361012084015261255b81856131d4565b5f83516140c98184602088016131b2565b8351908301906140dd8183602088016131b2565b01949350505050565b5f602080835260c0830184518285015273ffffffffffffffffffffffffffffffffffffffff828601511660408501526040850151606085015260608501516080850152608085015160a08086015281815180845260e08701915084830193505f92505b8083101561396d5783518252928401926001929092019190840190614149565b8381528260208201525f82516141868160408501602087016131b2565b91909101604001949350505050565b5f80604083850312156141a6575f80fd5b505080516020909101519092909150565b8181038181111561229757612297613ede565b8181035f8312801583831316838312821617156141e9576141e9613ede565b5092915050565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361422057614220613ede565b505f0390565b8082018281125f83128015821682158216171561424557614245613ede565b505092915050565b81515f9082906020808601845b838110156142765781518552938201939082019060010161425a565b50929695505050505050565b61ffff8281168282160390808211156141e9576141e9613ede565b5f61ffff8083168181036142b3576142b3613ede565b600101939250505056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122076eb64bf241a3d263ec5a72de29639edadafd9dc347b19b4925bf5d973d562ef64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x046\x10a\0\x9AW`\x005`\xE0\x1C\x80c-w\x13\x89\x11a\0iW\x80ci\x99\xB3w\x11a\0NW\x80ci\x99\xB3w\x14a\x01qW\x80c\x8D\xA5\xCB[\x14a\x01\x9EW\x80c\xF2\xFD\xE3\x8B\x14a\x01\xCBW`\0\x80\xFD[\x80c-w\x13\x89\x14a\x01>W\x80c?b\x19.\x14a\x01^W`\0\x80\xFD[\x80c\r3X\x84\x14a\0\xA6W\x80c\rz\x16\xC3\x14a\0\xBBW\x80c\x12&\x1E\xE7\x14a\0\xCEW\x80c\x13\xFBr\xC7\x14a\x01+W`\0\x80\xFD[6a\0\xA1W\0[`\0\x80\xFD[a\0\xB9a\0\xB46`\x04a0GV[a\x01\xEBV[\0[a\0\xB9a\0\xC96`\x04a0\xF5V[a\x03dV[4\x80\x15a\0\xDAW`\0\x80\xFD[Pa\x01\x02\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB9a\x0196`\x04a17V[a\x04\xC5V[4\x80\x15a\x01JW`\0\x80\xFD[Pa\0\xB9a\x01Y6`\x04a1\xD5V[a\x06\x83V[a\0\xB9a\x01l6`\x04a1\xF2V[a\x07\x8FV[4\x80\x15a\x01}W`\0\x80\xFD[P`\x01Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xAAW`\0\x80\xFD[P`\0Ta\x01\x02\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xD7W`\0\x80\xFD[Pa\0\xB9a\x01\xE66`\x04a1\xD5V[a\x08\x94V[a\x01\xF3a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x02\nW\x90PP\x90Pa\x02\xB2\x84a\nqV[\x81`\0\x81Q\x81\x10a\x02\xC5Wa\x02\xC5a2VV[` \x02` \x01\x01\x81\x90RPa\x02\xD9\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x19\x90\x84\x90\x87\x90\x87\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x033W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x03GW=`\0\x80>=`\0\xFD[PPPPa\x03T\x81a\x0CsV[Pa\x03_`\x01`\x02UV[PPPV[a\x03la\n\0V[\x80`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x88Wa\x03\x88a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\xA6W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x04\xA2Wa\x04}\x85\x85\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x90P` \x02\x81\x01\x90a\x04x\x91\x90a5\x1FV[a\nqV[\x82\x82\x81Q\x81\x10a\x04\x8FWa\x04\x8Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x04IV[Pa\x04\xAC\x81a\x0C\"V[a\x04\xB5\x81a\x0CsV[PPa\x04\xC1`\x01`\x02UV[PPV[a\x04\xCDa\n\0V[\x82`\0\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xE9Wa\x04\xE9a2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\xA4W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x05\x07W\x90P[P\x90P`\0[\x82\x81\x10\x15a\x05\xECWa\x05\xC7\x87\x87\x83\x81\x81\x10a\x04fWa\x04fa2VV[\x82\x82\x81Q\x81\x10a\x05\xD9Wa\x05\xD9a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\xAAV[Pa\x05\xF6\x81a\x0C\"V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x066\x90\x84\x90\x88\x90\x88\x90`\x04\x01a4YV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x06PW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x06dW=`\0\x80>=`\0\xFD[PPPPa\x06q\x81a\x0CsV[PPa\x06}`\x01`\x02UV[PPPPV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x07\tW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07\x97a\n\0V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\xAEW\x90PP\x90Pa\x08V\x82a\nqV[\x81`\0\x81Q\x81\x10a\x08iWa\x08ia2VV[` \x02` \x01\x01\x81\x90RPa\x08}\x81a\x0C\"V[a\x08\x86\x81a\x0CsV[Pa\x08\x91`\x01`\x02UV[PV[`\0Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\t\x15W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`\0\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[`\0`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xF7\x91\x90a5]V[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nkW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x07\0V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R`\0`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xEA\x83\x80a5vV[\x81\x01\x90a\n\xF7\x91\x90a;DV[\x90P`\0a\x0B\x04\x82a\r\xC6V[\x90Pa\x0B\x10\x81\x83a\x10\xACV[a\x0B\x19\x82a\x11\x08V[a\x0B\"\x82a\x12lV[`\0a\x0BP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84`\0\x01Q\x81R` \x01a\x0B\x88\x85`\xA0\x01Q`\0\x01Q\x84\x87``\x01Qa\x13y\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0B\xA5\x91\x85a\x14DV[\x81R` \x01\x86\x80` \x01\x90a\x0B\xBA\x91\x90a5vV[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0C\x1A\x92\x87\x92\x90\x85a\x15+V[PPP\x91\x90PV[\x80Q`\0[\x81\x81\x10\x15a\x03_W`\0\x83\x82\x81Q\x81\x10a\x0CCWa\x0CCa2VV[` \x02` \x01\x01Q\x90Pa\x0CV\x81a\x15?V[a\x0C`\x813a\x1A/V[a\x0Cj\x813a\x1B0V[P`\x01\x01a\x0C'V[\x80Q`\0[\x81\x81\x10\x15a\r\xB5W`\0\x83\x82\x81Q\x81\x10a\x0C\x94Wa\x0C\x94a2VV[` \x02` \x01\x01Q\x90P`\0\x81`@\x01QQ\x90P`\0[\x81\x81\x10\x15a\r\x15W`\0\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\xCBWa\x0C\xCBa2VV[` \x02` \x01\x01Q\x90Pa\r\x0C\x81`@\x01Q\x82` \x01Q\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1F2\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0C\xABV[P\x81`\0\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r^Wa\r^a2VV[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85`\0\x01Q`@\x01Q`@Qa\r\xA3\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CxV[PG\x15a\x04\xC1Wa\x04\xC13Ga\x1FyV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R`\0\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q` \x01a\x0F\xA9\x90a<\\V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\xC7\x90a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x10\x06\x95\x94\x93\x92\x91` \x01a>\xA6V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 a\x10)\x83`\0\x01Qa \x13V[\x83` \x01Q\x84`@\x01Qa\x10@\x86``\x01Qa \xADV[a\x10M\x87`\x80\x01Qa!\xFEV[`@\x80Q` \x81\x01\x97\x90\x97R\x86\x01\x94\x90\x94Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x16``\x85\x01R`\x80\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[\x80Q``\x01QB\x11\x15a\x10\xEBW`@Q\x7F\xB0\x8C\xE5\xB3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x04\xC1\x90a\x10\xFE\x83\x85a\"\x9FV[\x83`\xC0\x01Qa#\x14V[`\xA0\x81\x01Q``\x01Q\x15a\x11tW\x80``\x01Q` \x01Q\x81`\xA0\x01Q``\x01Q\x11\x15a\x11`W`@Q\x7F\xAC\x91C\xE7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xA0\x81\x01Q``\x90\x81\x01Q\x90\x82\x01Q` \x01R[\x80`\x80\x01QQ\x81`\xA0\x01Q`\x80\x01QQ\x14a\x11\xBBW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x80\x81\x01QQ`\0[\x81\x81\x10\x15a\x03_W`\0\x83`\x80\x01Q\x82\x81Q\x81\x10a\x11\xE4Wa\x11\xE4a2VV[` \x02` \x01\x01Q\x90P`\0\x84`\xA0\x01Q`\x80\x01Q\x83\x81Q\x81\x10a\x12\nWa\x12\na2VV[` \x02` \x01\x01Q\x90P\x80`\0\x14a\x12bW\x81` \x01Q\x81\x10\x15a\x12ZW`@Q\x7F\xA3\x05\xDF\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x82\x01\x81\x90R[PP`\x01\x01a\x11\xC4V[`\0a\x12\x85\x82`@\x01QHa$<\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90P\x81``\x01Q`\x80\x01Q`\0\x14a\x12\xE0W`\0a\x12\xAB\x83``\x01Q`\x80\x01Q\x83a$wV[\x90Pa\x12\xD5\x81`\0\x85``\x01Q``\x01Q\x86``\x01Q` \x01Qa$\xB0\x90\x93\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[``\x84\x01Q` \x01RP[`\x80\x82\x01QQ`\0[\x81\x81\x10\x15a\x06}W`\0\x84`\x80\x01Q\x82\x81Q\x81\x10a\x13\tWa\x13\ta2VV[` \x02` \x01\x01Q\x90P\x80`\xA0\x01Q`\0\x14a\x13pW`\0a\x13/\x82`\xA0\x01Q\x86a$wV[`\x80\x83\x01Q` \x84\x01Q\x91\x92Pa\x13i\x91\x90\x83\x90\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFa$\xD0V[` \x83\x01RP[P`\x01\x01a\x12\xE9V[a\x13\xB3`@Q\x80``\x01`@R\x80`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01`\0\x81R` \x01`\0\x81RP\x90V[`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01`\0\x81R` \x01\x86``\x01Q\x81R` \x01a%b\x81RP\x90P`\0a\x14\x04\x82a%\xEEV[`@\x80Q``\x80\x82\x01\x83R\x89Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x82\x01\x93\x90\x93R\x97\x90\x91\x01Q\x90\x87\x01RP\x93\x94\x93PPPPV[\x82Q``\x90\x80g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x14bWa\x14ba2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x14\xCBW\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x14\x80W\x90P[P\x91P`\0[\x81\x81\x10\x15a\x15\"Wa\x14\xFD\x86\x82\x81Q\x81\x10a\x14\xEEWa\x14\xEEa2VV[` \x02` \x01\x01Q\x86\x86a&\xFAV[\x83\x82\x81Q\x81\x10a\x15\x0FWa\x15\x0Fa2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x14\xD1V[PP\x93\x92PPPV[a\x158\x85\x85\x85\x85\x85a'\xE3V[PPPPPV[`\x01Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x15_WPV[`\x01T`@Q\x7F\x8A\xA6\xCF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\0\x91s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x90c\x8A\xA6\xCF\x03\x90a\x15\xB6\x90\x85\x90`\x04\x01a?\x11V[`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\xD3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x16\x19\x91\x90\x81\x01\x90a?$V[`@\x83\x01QQ\x81Q\x91\x92P\x90`\0a\x161\x82\x84a@#V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16IWa\x16Ia2'V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16\xB2W\x81` \x01[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16gW\x90P[P\x90P`\0[\x83\x81\x10\x15a\x17\x03W\x85`@\x01Q\x81\x81Q\x81\x10a\x16\xD6Wa\x16\xD6a2VV[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\xF0Wa\x16\xF0a2VV[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16\xB8V[P`\0\x80`\0[\x84\x81\x10\x15a\x1A\x1EW`\0\x87\x82\x81Q\x81\x10a\x17&Wa\x17&a2VV[` \x02` \x01\x01Q\x90P`\0[\x82\x81\x10\x15a\x17\xE4W\x88\x81\x81Q\x81\x10a\x17MWa\x17Ma2VV[` \x02` \x01\x01Q`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\xDCW\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[`\x01\x01a\x173V[P`\0\x80[\x88\x81\x10\x15a\x18\xA5W`\0\x8B`@\x01Q\x82\x81Q\x81\x10a\x18\tWa\x18\ta2VV[` \x02` \x01\x01Q\x90P\x83`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18\x9CW\x85\x15a\x18\x86W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x18\x95\x90\x84a@#V[\x92P`\x01\x96P[P`\x01\x01a\x17\xE9V[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x19\x1EW\x84\x15a\x19\x05W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x19\x17\x90\x82a@#V[\x90P`\x01\x93P[\x80`\0\x03a\x19sW\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x07\0V[a\x19\x81\x81`\x05a'\x10a(\x85V[\x82` \x01Q\x11\x15a\x19\xF4W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x07\0V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x1A\tWa\x1A\ta2VV[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x17\nV[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A\x80W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xC1W\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\xFC\x90\x84\x90\x86\x90`\x04\x01a@6V[`\0`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1B\x14W`\0\x80\xFD[PZ\xFA\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\xF0\x84`@\x80Q`\xA0\x81\x01\x82R`\0``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R`\0\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85`\0\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1C\xBD\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aD\x13` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aC\xE5`.\x919`@Q` \x01a\x1D'\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1EW\x90`\xB8\x01a=nV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x1E\x97\x96\x95\x94\x93\x92\x91` \x01a@eV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R``\x8A\x01Q\x7F\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\xE0\x89\x90\x1B\x16\x83Ra\x1F\x04\x96\x95\x94\x93\x92`\x04\x01aA\x18V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\x1EW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1B(W=`\0\x80>=`\0\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1FWWa\x03_\x82\x82a\x1FyV[a\x03_s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(\xC1V[`\0\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x1F\xD3W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x1F\xD8V[``\x91P[PP\x90P\x80a\x03_W`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aD\x13`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10\x8F\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[`\0`@Q` \x01a \xBE\x90a<\\V[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!~\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa!\xAB\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10\x8FV[`\0\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\"\x1EWa\"\x1Ea2'V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a\"HW` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P`\0[\x81\x81\x10\x15a\"\x8FW`\0a\"}\x86\x83\x81Q\x81\x10a\"pWa\"pa2VV[` \x02` \x01\x01Qa*\xAAV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a\"QV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[`\0\x81F\x84`\xA0\x01Q`@Q` \x01a\"\xB8\x91\x90aB\x02V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"\xF5\x93\x92\x91` \x01aB\x87V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a#+\x91\x90aB\xB4V[\x91P\x91P`\0\x83`@\x81Q\x81\x10a#DWa#Da2VV[\x01` \x90\x81\x01Q`@\x80Q`\0\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#\xA1W=`\0\x80>=`\0\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\xFCWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a$3W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[`\0\x81\x83\x10\x15a$jWa$Xa$S\x84\x84aB\xD8V[a,\x0EV[a$c\x90`\0aB\xEBV[\x90Pa#\x0EV[a$ca$S\x83\x85aB\xD8V[`\0\x80\x82\x12a$\x8FWa$c\x83\x83c;\x9A\xCA\0a(\x85V[a$\xA7a$\x9B\x83aC\x12V[\x84\x90c;\x9A\xCA\0a,\xC4V[a$c\x90aC\x12V[`\0a$\xC7\x85a$\xC0\x86\x84aB\xEBV[\x85\x85a$\xD0V[\x95\x94PPPPPV[`\0\x80\x84\x12\x15a%3W`\0a$\xE5\x85aC\x12V[\x90P\x85a%\x12\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaB\xD8V[\x10\x15a%!W\x82\x91PPa%ZV[a%+\x81\x87a@#V[\x91PPa%OV[\x83\x85\x10\x15a%BWP\x81a%ZV[a%L\x84\x86aB\xD8V[\x90P[a$\xC7\x81\x84\x84a-\x08V[\x94\x93PPPPV[`\0\x84\x84\x10a%rWP\x80a$\xC7V[`\0a%~\x87\x86aB\xD8V[\x90P`\0a%\x8C\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a%\xBEWa%\xAE\x83\x83a%\xA7\x88\x8AaB\xEBV[\x91\x90a(\x85V[a%\xB7\x90aC\x12V[\x90Pa%\xD7V[a%\xD4\x83\x83a%\xCD\x89\x89aB\xEBV[\x91\x90a,\xC4V[\x90P[a%\xE1\x81\x87aCJV[\x99\x98PPPPPPPPPV[`\0`\x10\x82`\0\x01Q` \x01QQ\x11\x15a&4W`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a&OWP\x81Q` \x01QQ\x15[\x15a&nW`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa#\x0E\x92\x90\x91a-\x08V[`\0a&\x8F\x83`@\x01Q\x84``\x01Qa&\x87\x91\x90aB\xD8V[a\xFF\xFFa-\x19V[\x90P`\0\x80`\0\x80a&\xA5\x87`\0\x01Q\x86a-1V[\x93P\x93P\x93P\x93P`\0a&\xD0\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&\xEE\x92\x91\x84\x91a$\xD0V[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R`\0\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R`\0`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.\xF3\x81RP\x90P`\0a'\x87\x82a%\xEEV[\x90P`@Q\x80``\x01`@R\x80\x87`\0\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a'\xEE\x84\x84\x83a/GV[a\x158W\x81a()W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q`\0[\x81Q\x81\x10\x15a$3W`\0\x82\x82\x81Q\x81\x10a(NWa(Na2VV[` \x02` \x01\x01Q\x90Pa(w\x85a'\x10a(i\x91\x90a@#V[` \x83\x01Q\x90a'\x10a,\xC4V[` \x90\x91\x01R`\x01\x01a(1V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(\xBAW`\0\x80\xFD[P\x91\x02\x04\x90V[`\0`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` `\0`d\x83`\0\x8AZ\xF1=\x15`\x1F=\x11`\x01`\0Q\x14\x16\x17\x16\x91PP\x80a\x158W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\0V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R`\0\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Q`@Q` \x01a*W\x91\x90aCrV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10\x8FV[`\0`@Q` \x01a*\xBB\x90a=nV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra+{\x92\x90\x91\x90`\x84\x01aA\xD3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82`\0\x01Q\x83` \x01Qa+\xA8\x85`@\x01Qa)\xACV[``\x80\x87\x01Q`\x80\x80\x89\x01Q`\xA0\x80\x8B\x01Q`@\x80Q` \x81\x01\x9B\x90\x9BRs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x99\x8A\x16\x90\x8B\x01R\x94\x89\x01\x96\x90\x96R\x90\x87\x01\x93\x90\x93R\x93\x90\x93\x16\x91\x84\x01\x91\x90\x91R`\xC0\x83\x01R`\xE0\x82\x01Ra\x01\0\x01a\x10\x8FV[`\0\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a,\xC0W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`(`$\x82\x01R\x7FSafeCast: value doesn't fit in a`D\x82\x01R\x7Fn int256\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x07\0V[P\x90V[`\0\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a,\xF9W`\0\x80\xFD[P\x91\x02\x81\x81\x06\x15\x15\x91\x90\x04\x01\x90V[`\0a%Za-\x17\x85\x85a/\x93V[\x83[`\0\x81\x83\x10a-(W\x81a-*V[\x82[\x93\x92PPPV[`\0\x80`\0\x80`\0a-D\x87`\0\x01Q\x90V[\x90Pa\xFF\xFF\x86\x16a-V\x82`\0a/\xA2V[a\xFF\xFF\x16\x10a-\x9AW`\0a-k\x82\x82a/\xA2V[`\0\x89` \x01Q`\0\x81Q\x81\x10a-\x84Wa-\x84a2VV[` \x02` \x01\x01Q\x94P\x94P\x94P\x94PPa.\xEAV[`\0`\x01\x88` \x01QQa-\xAE\x91\x90aC\xA8V[\x90P`\x01[\x81a\xFF\xFF\x16\x81a\xFF\xFF\x16\x11a.~W\x87a\xFF\xFF\x16a-\xDE\x82a\xFF\xFF\x16\x85a/\xA2\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[a\xFF\xFF\x16\x10a.lWa.\0a-\xF5`\x01\x83aC\xA8V[\x84\x90a\xFF\xFF\x16a/\xA2V[a.\x0E\x84a\xFF\xFF\x84\x16a/\xA2V[` \x8B\x01Qa.\x1E`\x01\x85aC\xA8V[a\xFF\xFF\x16\x81Q\x81\x10a.2Wa.2a2VV[` \x02` \x01\x01Q\x8B` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.TWa.Ta2VV[` \x02` \x01\x01Q\x96P\x96P\x96P\x96PPPPa.\xEAV[\x80a.v\x81aC\xC3V[\x91PPa-\xB3V[Pa.\x8D\x82a\xFF\xFF\x83\x16a/\xA2V[a.\x9B\x83a\xFF\xFF\x84\x16a/\xA2V[\x89` \x01Q\x83a\xFF\xFF\x16\x81Q\x81\x10a.\xB5Wa.\xB5a2VV[` \x02` \x01\x01Q\x8A` \x01Q\x84a\xFF\xFF\x16\x81Q\x81\x10a.\xD7Wa.\xD7a2VV[` \x02` \x01\x01Q\x95P\x95P\x95P\x95PPP[\x92\x95\x91\x94P\x92PV[`\0\x84\x84\x10a/\x03WP\x80a$\xC7V[`\0a/\x0F\x87\x86aB\xD8V[\x90P`\0a/\x1D\x88\x88aB\xD8V[\x90P`\0\x85\x85\x12\x15a/8Wa%\xAE\x83\x83a%\xCD\x88\x8AaB\xEBV[a%\xD4\x83\x83a%\xA7\x89\x89aB\xEBV[`\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x15\x80a/kWP\x82\x82\x11[\x80a%ZWPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x14\x90P\x93\x92PPPV[`\0\x81\x83\x11a-(W\x81a-*V[`\0`\x10\x82\x10a/\xDEW`@Q\x7FN#\xD05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P`\x10\x02\x1C\x90V[`\0`@\x82\x84\x03\x12\x15a/\xF8W`\0\x80\xFD[P\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a0\x10W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0(W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a0\\W`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a0tW`\0\x80\xFD[a0\x80\x87\x83\x88\x01a/\xE6V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a0\x96W`\0\x80\xFD[Pa0\xA3\x86\x82\x87\x01a/\xFEV[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80\x83`\x1F\x84\x01\x12a0\xC2W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a0\xDAW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a0@W`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a1\x08W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a1\x1FW`\0\x80\xFD[a1+\x85\x82\x86\x01a0\xB0V[\x90\x96\x90\x95P\x93PPPPV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a1MW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a1eW`\0\x80\xFD[a1q\x88\x83\x89\x01a0\xB0V[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a1\x8AW`\0\x80\xFD[Pa1\x97\x87\x82\x88\x01a/\xFEV[\x95\x98\x94\x97P\x95PPPPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x08\x91W`\0\x80\xFD[\x805a1\xD0\x81a1\xA3V[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a1\xE7W`\0\x80\xFD[\x815a-*\x81a1\xA3V[`\0` \x82\x84\x03\x12\x15a2\x04W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a2\x1BW`\0\x80\xFD[a%Z\x84\x82\x85\x01a/\xE6V[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`A`\x04R`$`\0\xFD[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a2\xA0W\x81\x81\x01Q\x83\x82\x01R` \x01a2\x88V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra2\xC1\x81` \x86\x01` \x86\x01a2\x85V[`\x1F\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\0\x81Q\x80\x84R` \x80\x85\x01\x94P` \x84\x01`\0[\x83\x81\x10\x15a3SW\x81Q\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16\x89R\x84\x82\x01Q\x85\x8A\x01R`@\x91\x82\x01Q\x16\x90\x88\x01R``\x90\x96\x01\x95\x90\x82\x01\x90`\x01\x01a3\x08V[P\x94\x95\x94PPPPPV[`\0\x81Q`\xE0\x84Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82Q\x16`\xE0\x86\x01R\x80` \x83\x01Q\x16a\x01\0\x86\x01R`@\x82\x01Qa\x01 \x86\x01R``\x82\x01Qa\x01@\x86\x01R\x80`\x80\x83\x01Q\x16a\x01`\x86\x01RP`\xA0\x81\x01Q\x90P`\xC0a\x01\x80\x85\x01Ra3\xD2a\x01\xA0\x85\x01\x82a2\xA9V[\x90P` \x83\x01Qa4\x10` \x86\x01\x82\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x80\x82\x01Q\x90\x83\x01R`@\x90\x81\x01Q\x91\x01RV[P`@\x83\x01Q\x84\x82\x03`\x80\x86\x01Ra4(\x82\x82a2\xF3V[\x91PP``\x83\x01Q\x84\x82\x03`\xA0\x86\x01Ra4B\x82\x82a2\xA9V[\x91PP`\x80\x83\x01Q`\xC0\x85\x01R\x80\x91PP\x92\x91PPV[`\0`@\x82\x01`@\x83R\x80\x86Q\x80\x83R``\x85\x01\x91P``\x81`\x05\x1B\x86\x01\x01\x92P` \x80\x89\x01`\0[\x83\x81\x10\x15a4\xCEW\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xA0\x88\x87\x03\x01\x85Ra4\xBC\x86\x83Qa3^V[\x95P\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01a4\x82V[PP\x85\x84\x03\x81\x87\x01R\x86\x84R\x86\x88\x82\x86\x017`\0\x84\x88\x01\x82\x01R`\x1F\x90\x96\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x90\x92\x01\x90\x94\x01\x96\x95PPPPPPV[`\0\x825\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xC1\x836\x03\x01\x81\x12a5SW`\0\x80\xFD[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a5oW`\0\x80\xFD[PQ\x91\x90PV[`\0\x80\x835\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE1\x846\x03\x01\x81\x12a5\xABW`\0\x80\xFD[\x83\x01\x805\x91Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a5\xC6W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a0@W`\0\x80\xFD[`@Q`\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@R\x90V[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xA0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q``\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a5\xFEWa5\xFEa2'V[`@Q`\x1F\x82\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a6\xD7Wa6\xD7a2'V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a6\xF0W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\nWa7\na2'V[a7;` \x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x84\x01\x16\x01a6\x90V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a7PW`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0`\xC0\x82\x84\x03\x12\x15a7\x7FW`\0\x80\xFD[a7\x87a5\xDBV[\x90P\x815a7\x94\x81a1\xA3V[\x81R` \x82\x015a7\xA4\x81a1\xA3V[\x80` \x83\x01RP`@\x82\x015`@\x82\x01R``\x82\x015``\x82\x01R`\x80\x82\x015a7\xCD\x81a1\xA3V[`\x80\x82\x01R`\xA0\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a7\xECW`\0\x80\xFD[a7\xF8\x84\x82\x85\x01a6\xDFV[`\xA0\x83\x01RP\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a8\x1EWa8\x1Ea2'V[P`\x05\x1B` \x01\x90V[`\0`@\x82\x84\x03\x12\x15a8:W`\0\x80\xFD[a8Ba6\x04V[\x90P\x815\x81R` \x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a8cW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a8tW`\0\x80\xFD[\x805a8\x87a8\x82\x82a8\x04V[a6\x90V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a8\xA6W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a8\xC4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a8\xABV[\x80\x85\x87\x01RPPPPP\x92\x91PPV[`\0`\xA0\x82\x84\x03\x12\x15a8\xE6W`\0\x80\xFD[a8\xEEa6'V[\x90P\x815a8\xFB\x81a1\xA3V[\x81R` \x82\x81\x015\x90\x82\x01R`@\x82\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a9!W`\0\x80\xFD[a9-\x84\x82\x85\x01a8(V[`@\x83\x01RP``\x82\x015``\x82\x01R`\x80\x82\x015`\x80\x82\x01R\x92\x91PPV[`\0\x82`\x1F\x83\x01\x12a9^W`\0\x80\xFD[\x815` a9na8\x82\x83a8\x04V[\x82\x81R`\x05\x92\x90\x92\x1B\x84\x01\x81\x01\x91\x81\x81\x01\x90\x86\x84\x11\x15a9\x8DW`\0\x80\xFD[\x82\x86\x01[\x84\x81\x10\x15a:jW\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a9\xB2W`\0\x80\x81\xFD[\x81\x89\x01\x91P`\xC0\x80\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x84\x8D\x03\x01\x12\x15a9\xEBW`\0\x80\x81\xFD[a9\xF3a5\xDBV[\x87\x84\x015a:\0\x81a1\xA3V[\x81R`@\x84\x81\x015\x89\x83\x01R``\x80\x86\x015\x85\x81\x11\x15a: W`\0\x80\x81\xFD[a:.\x8F\x8C\x83\x8A\x01\x01a8(V[\x83\x85\x01RP`\x80\x94P\x84\x86\x015\x91Pa:F\x82a1\xA3V[\x82\x01R`\xA0\x84\x81\x015\x93\x82\x01\x93\x90\x93R\x92\x015\x90\x82\x01R\x83R\x91\x83\x01\x91\x83\x01a9\x91V[P\x96\x95PPPPPPV[`\0`\xA0\x82\x84\x03\x12\x15a:\x87W`\0\x80\xFD[a:\x8Fa6'V[\x90P\x815\x81R` \x80\x83\x015a:\xA4\x81a1\xA3V[\x80\x82\x84\x01RP`@\x83\x015`@\x83\x01R``\x83\x015``\x83\x01R`\x80\x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a:\xD8W`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a:\xE9W`\0\x80\xFD[\x805a:\xF7a8\x82\x82a8\x04V[\x81\x81R`\x05\x91\x90\x91\x1B\x82\x01\x83\x01\x90\x83\x81\x01\x90\x87\x83\x11\x15a;\x16W`\0\x80\xFD[\x92\x84\x01\x92[\x82\x84\x10\x15a;4W\x835\x82R\x92\x84\x01\x92\x90\x84\x01\x90a;\x1BV[`\x80\x86\x01RP\x92\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a;VW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a;nW`\0\x80\xFD[\x90\x83\x01\x90`\xE0\x82\x86\x03\x12\x15a;\x82W`\0\x80\xFD[a;\x8Aa6JV[\x825\x82\x81\x11\x15a;\x99W`\0\x80\xFD[a;\xA5\x87\x82\x86\x01a7mV[\x82RPa;\xB4` \x84\x01a1\xC5V[` \x82\x01R`@\x83\x015`@\x82\x01R``\x83\x015\x82\x81\x11\x15a;\xD5W`\0\x80\xFD[a;\xE1\x87\x82\x86\x01a8\xD4V[``\x83\x01RP`\x80\x83\x015\x82\x81\x11\x15a;\xF9W`\0\x80\xFD[a<\x05\x87\x82\x86\x01a9MV[`\x80\x83\x01RP`\xA0\x83\x015\x82\x81\x11\x15a<\x1DW`\0\x80\xFD[a<)\x87\x82\x86\x01a:uV[`\xA0\x83\x01RP`\xC0\x83\x015\x82\x81\x11\x15a\xB8\x81\x84` \x8B\x01a2\x85V[\x86Q\x90\x83\x01\x90a>\xCC\x81\x83` \x8B\x01a2\x85V[\x86Q\x91\x01\x90a>\xDF\x81\x83` \x8A\x01a2\x85V[\x85Q\x91\x01\x90a>\xF2\x81\x83` \x89\x01a2\x85V[\x84Q\x91\x01\x90a?\x05\x81\x83` \x88\x01a2\x85V[\x01\x97\x96PPPPPPPV[` \x81R`\0a-*` \x83\x01\x84a3^V[`\0` \x80\x83\x85\x03\x12\x15a?7W`\0\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a?NW`\0\x80\xFD[\x83\x01`\x1F\x81\x01\x85\x13a?_W`\0\x80\xFD[\x80Qa?ma8\x82\x82a8\x04V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a?\x8CW`\0\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a?\xE8W\x80\x85\x8A\x03\x12\x15a?\xA9W`\0\x80\x81\xFD[a?\xB1a6mV[\x85Qa?\xBC\x81a1\xA3V[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa?\xD5\x81a1\xA3V[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a?\x91V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a#\x0EWa#\x0Ea?\xF4V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R`\0a%Z`@\x83\x01\x84a3^V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R`\0`\x15\x88Q` a@\x9F\x82\x84\x87\x01\x83\x8E\x01a2\x85V[\x89Q\x91\x85\x01\x91a@\xB4\x81\x85\x85\x01\x84\x8E\x01a2\x85V[\x89Q\x92\x01\x91a@\xC8\x81\x85\x85\x01\x84\x8D\x01a2\x85V[\x88Q\x92\x01\x91a@\xDC\x81\x85\x85\x01\x84\x8C\x01a2\x85V[\x87Q\x92\x01\x91a@\xF0\x81\x85\x85\x01\x84\x8B\x01a2\x85V[\x86Q\x92\x01\x91aA\x04\x81\x85\x85\x01\x84\x8A\x01a2\x85V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[`\0a\x01@aAH\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01RaA\x89`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01RaA\xBE\x81\x84\x01\x86a2\xA9V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%\xE1\x81\x85a2\xA9V[`\0\x83QaA\xE5\x81\x84` \x88\x01a2\x85V[\x83Q\x90\x83\x01\x90aA\xF9\x81\x83` \x88\x01a2\x85V[\x01\x94\x93PPPPV[`\0` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P`\0\x92P[\x80\x83\x10\x15a:jW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aBgV[\x83\x81R\x82` \x82\x01R`\0\x82QaB\xA5\x81`@\x85\x01` \x87\x01a2\x85V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[`\0\x80`@\x83\x85\x03\x12\x15aB\xC7W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a#\x0EWa#\x0Ea?\xF4V[\x81\x81\x03`\0\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aC\x0BWaC\x0Ba?\xF4V[P\x92\x91PPV[`\0\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aCCWaCCa?\xF4V[P`\0\x03\x90V[\x80\x82\x01\x82\x81\x12`\0\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aCjWaCja?\xF4V[PP\x92\x91PPV[\x81Q`\0\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aC\x9CW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aC\x80V[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aC\x0BWaC\x0Ba?\xF4V[`\0a\xFF\xFF\x80\x83\x16\x81\x81\x03aC\xDAWaC\xDAa?\xF4V[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 \xA80\x88\xCF\x8C\xE7sJ\x1AO\xD4s\xE1]\xA5\xDD@\xDE\x92/\x9F#|\xDC\xD5\xA3%\x8B\xDB!\xAF\x85dsolcC\0\x08\x18\x003", + b"`\x80`@R`\x046\x10a\0\x96W_5`\xE0\x1C\x80c-w\x13\x89\x11a\0fW\x80ci\x99\xB3w\x11a\0LW\x80ci\x99\xB3w\x14a\x01jW\x80c\x8D\xA5\xCB[\x14a\x01\x96W\x80c\xF2\xFD\xE3\x8B\x14a\x01\xC1W_\x80\xFD[\x80c-w\x13\x89\x14a\x018W\x80c?b\x19.\x14a\x01WW_\x80\xFD[\x80c\r3X\x84\x14a\0\xA1W\x80c\rz\x16\xC3\x14a\0\xB6W\x80c\x12&\x1E\xE7\x14a\0\xC9W\x80c\x13\xFBr\xC7\x14a\x01%W_\x80\xFD[6a\0\x9DW\0[_\x80\xFD[a\0\xB4a\0\xAF6`\x04a/\x8FV[a\x01\xE0V[\0[a\0\xB4a\0\xC46`\x04a04V[a\x03QV[4\x80\x15a\0\xD4W_\x80\xFD[Pa\0\xFC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\xB4a\x0136`\x04a0sV[a\x04\xAFV[4\x80\x15a\x01CW_\x80\xFD[Pa\0\xB4a\x01R6`\x04a1\x0BV[a\x06eV[a\0\xB4a\x01e6`\x04a1&V[a\x07pV[4\x80\x15a\x01uW_\x80\xFD[P`\x01Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xA1W_\x80\xFD[P_Ta\0\xFC\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81V[4\x80\x15a\x01\xCCW_\x80\xFD[Pa\0\xB4a\x01\xDB6`\x04a1\x0BV[a\x08rV[a\x01\xE8a\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x01\xFEW\x90PP\x90Pa\x02\xA5\x84a\nJV[\x81_\x81Q\x81\x10a\x02\xB7Wa\x02\xB7a1\x85V[` \x02` \x01\x01\x81\x90RPa\x02\xCB\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x03\x0B\x90\x84\x90\x87\x90\x87\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x03\"W_\x80\xFD[PZ\xF1\x15\x80\x15a\x034W=_\x80>=_\xFD[PPPPa\x03A\x81a\x0CDV[Pa\x03L`\x01`\x02UV[PPPV[a\x03Ya\t\xD9V[\x80_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03tWa\x03ta1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x04.W\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x03\x92W\x90P[P\x90P_[\x82\x81\x10\x15a\x04\x8CWa\x04g\x85\x85\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x90P` \x02\x81\x01\x90a\x04b\x91\x90a4CV[a\nJV[\x82\x82\x81Q\x81\x10a\x04yWa\x04ya1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x043V[Pa\x04\x96\x81a\x0B\xF5V[a\x04\x9F\x81a\x0CDV[PPa\x04\xAB`\x01`\x02UV[PPV[a\x04\xB7a\t\xD9V[\x82_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xD2Wa\x04\xD2a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x05\x8CW\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x04\xF0W\x90P[P\x90P_[\x82\x81\x10\x15a\x05\xD3Wa\x05\xAE\x87\x87\x83\x81\x81\x10a\x04PWa\x04Pa1\x85V[\x82\x82\x81Q\x81\x10a\x05\xC0Wa\x05\xC0a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x05\x91V[Pa\x05\xDD\x81a\x0B\xF5V[`@Q\x7FX]\xA6(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R3\x90cX]\xA6(\x90a\x06\x1D\x90\x84\x90\x88\x90\x88\x90`\x04\x01a3\x80V[_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x064W_\x80\xFD[PZ\xF1\x15\x80\x15a\x06FW=_\x80>=_\xFD[PPPPa\x06S\x81a\x0CDV[PPa\x06_`\x01`\x02UV[PPPPV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x06\xEAW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01\x80Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x81\x16\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x16\x81\x17\x90\x93U`@\x80Q\x91\x90\x92\x16\x80\x82R` \x82\x01\x93\x90\x93R\x7F\xB9\x04\xAE\x95)\xE3s\xE4\x8B\xC8-\xF42l\xCE\xAF\x1BLG+\xAB\xF3\x7F[}\xECF\xFE\xCCkS\xE0\x91\x01`@Q\x80\x91\x03\x90\xA1PPV[a\x07xa\t\xD9V[`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R_\x91\x81` \x01[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x80\x85\x01\x91\x90\x91R\x93\x83\x01\x81\x90R\x80\x83\x01R`\x80\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x07\x8EW\x90PP\x90Pa\x085\x82a\nJV[\x81_\x81Q\x81\x10a\x08GWa\x08Ga1\x85V[` \x02` \x01\x01\x81\x90RPa\x08[\x81a\x0B\xF5V[a\x08d\x81a\x0CDV[Pa\x08o`\x01`\x02UV[PV[_Ts\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163\x14a\x08\xF2W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0C`$\x82\x01R\x7FUNAUTHORIZED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[_\x80T\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x90\x81\x17\x82U`@Q\x90\x913\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PV[_`ds\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xACW=_\x80>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xD0\x91\x90a4\x7FV[\x90P\x90V[C\x90V[`\x02\x80T\x03a\nDW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06\xE1V[`\x02\x80UV[`@\x80Qa\x01`\x81\x01\x82R_`\xA0\x82\x01\x81\x81R`\xC0\x83\x01\x82\x90R`\xE0\x83\x01\x82\x90Ra\x01\0\x83\x01\x82\x90Ra\x01 \x83\x01\x82\x90R``a\x01@\x84\x01\x81\x90R\x90\x83R\x83Q\x80\x82\x01\x85R\x82\x81R` \x80\x82\x01\x84\x90R\x81\x86\x01\x84\x90R\x84\x01R\x92\x82\x01\x83\x90R\x82\x82\x01\x92\x90\x92R`\x80\x81\x01\x82\x90R\x90a\n\xC2\x83\x80a4\x96V[\x81\x01\x90a\n\xCF\x91\x90a:BV[\x90P_a\n\xDB\x82a\r\x8FV[\x90Pa\n\xE7\x81\x83a\x10sV[a\n\xF0\x82a\x10\xCFV[a\n\xF9\x82a\x12/V[_a\x0B&\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\xFF\xFF\xFF\xFF\x16V[\x90P`@Q\x80`\xA0\x01`@R\x80\x84_\x01Q\x81R` \x01a\x0B\\\x85`\xA0\x01Q_\x01Q\x84\x87``\x01Qa\x134\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x81R`\xA0\x85\x01QQ`\x80\x86\x01Q` \x90\x92\x01\x91a\x0By\x91\x85a\x13\xF9V[\x81R` \x01\x86\x80` \x01\x90a\x0B\x8E\x91\x90a4\x96V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847_\x92\x01\x91\x90\x91RPPP\x90\x82RP` \x90\x81\x01\x84\x90R`\xA0\x85\x01Q\x90\x81\x01Q\x81Q`@\x90\x92\x01Q\x92\x96Pa\x0B\xED\x92\x87\x92\x90\x85a\x14\xDEV[PPP\x91\x90PV[\x80Q_[\x81\x81\x10\x15a\x03LW_\x83\x82\x81Q\x81\x10a\x0C\x14Wa\x0C\x14a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C'\x81a\x14\xF2V[a\x0C1\x813a\x19\xCFV[a\x0C;\x813a\x1A\xCCV[P`\x01\x01a\x0B\xF9V[\x80Q_[\x81\x81\x10\x15a\r~W_\x83\x82\x81Q\x81\x10a\x0CcWa\x0Cca1\x85V[` \x02` \x01\x01Q\x90P_\x81`@\x01QQ\x90P_[\x81\x81\x10\x15a\x0C\xE0W_\x83`@\x01Q\x82\x81Q\x81\x10a\x0C\x97Wa\x0C\x97a1\x85V[` \x02` \x01\x01Q\x90Pa\x0C\xD7\x81`@\x01Q\x82` \x01Q\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x1E\xC6\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[P`\x01\x01a\x0CxV[P\x81_\x01Q` \x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x85\x81Q\x81\x10a\r(Wa\r(a1\x85V[` \x02` \x01\x01Q`\x80\x01Q\x7Fx\xAD~\xC0\xE9\xF8\x9Et\x01*\xFAXs\x8Bkf\x1C\x02L\xB0\xFD\x18^\xE2\xF6\x16\xC0\xA2\x89$\xBDf\x85_\x01Q`@\x01Q`@Qa\rl\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA4PP`\x01\x01a\x0CHV[PG\x15a\x04\xABWa\x04\xAB3Ga\x1F\rV[`@Q\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x82\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x82\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x82\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x82\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x82\x01R_\x90`\x98\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x83\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x83\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x83\x01R\x90`d\x01`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q` \x01a\x0Fq\x90a;QV[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Q` \x01a\x0F\x8F\x90a\x03V[_`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x82W=_\x80>=_\xFD[PPPP`@Q=_\x82>`\x1F=\x90\x81\x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x16\x82\x01`@Ra\x15\xC7\x91\x90\x81\x01\x90a>\x15V[`@\x83\x01QQ\x81Q\x91\x92P\x90_a\x15\xDE\x82\x84a?\x0BV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x15\xF6Wa\x15\xF6a1XV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x16^W\x81` \x01[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x92\x82\x01R\x82R\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x92\x01\x91\x01\x81a\x16\x14W\x90P[P\x90P_[\x83\x81\x10\x15a\x16\xAEW\x85`@\x01Q\x81\x81Q\x81\x10a\x16\x81Wa\x16\x81a1\x85V[` \x02` \x01\x01Q\x82\x82\x81Q\x81\x10a\x16\x9BWa\x16\x9Ba1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01R`\x01\x01a\x16cV[P_\x80_[\x84\x81\x10\x15a\x19\xBEW_\x87\x82\x81Q\x81\x10a\x16\xCEWa\x16\xCEa1\x85V[` \x02` \x01\x01Q\x90P_[\x82\x81\x10\x15a\x17\x89W\x88\x81\x81Q\x81\x10a\x16\xF4Wa\x16\xF4a1\x85V[` \x02` \x01\x01Q_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x17\x81W\x81Q`@Q\x7F\xFF\xF0\x83\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[`\x01\x01a\x16\xDAV[P_\x80[\x88\x81\x10\x15a\x18FW_\x8B`@\x01Q\x82\x81Q\x81\x10a\x17\xACWa\x17\xACa1\x85V[` \x02` \x01\x01Q\x90P\x83_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x03a\x18=W\x85\x15a\x18'W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x81\x01Qa\x186\x90\x84a?\x0BV[\x92P`\x01\x96P[P`\x01\x01a\x17\x8DV[P\x81Q` \x8B\x01QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x91\x82\x16\x91\x16\x03a\x18\xBFW\x84\x15a\x18\xA6W`@Q\x7F\xED\xC7\xE2\xE4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[` \x80\x8B\x01Q\x01Qa\x18\xB8\x90\x82a?\x0BV[\x90P`\x01\x93P[\x80_\x03a\x19\x13W\x81Q`@Q\x7F\xED\xDF\x07\xF5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16`\x04\x82\x01R`$\x01a\x06\xE1V[a\x19!\x81`\x05a'\x10a'\xF2V[\x82` \x01Q\x11\x15a\x19\x94W\x81Q` \x83\x01Q`@\x80\x85\x01Q\x90Q\x7F\x82\xE7VV\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x93\x84\x16`\x04\x82\x01R`$\x81\x01\x92\x90\x92R\x91\x90\x91\x16`D\x82\x01R`d\x01a\x06\xE1V[\x81\x86\x84\x8A\x01\x81Q\x81\x10a\x19\xA9Wa\x19\xA9a1\x85V[` \x90\x81\x02\x91\x90\x91\x01\x01RPP`\x01\x01a\x16\xB3V[PPP`@\x90\x94\x01\x93\x90\x93RPPPV[\x81QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x160\x14a\x1A W`@Q\x7FM\xDFJd\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81Q`\x80\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x15a\x04\xABW\x81Q`\x80\x01Q`@Q\x7Fn\x84\xBA+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x91\x16\x90cn\x84\xBA+\x90a\x1A\x9C\x90\x84\x90\x86\x90`\x04\x01a?\x1EV[_`@Q\x80\x83\x03\x81\x86\x80;\x15\x80\x15a\x1A\xB2W_\x80\xFD[PZ\xFA\x15\x80\x15a\x1A\xC4W=_\x80>=_\xFD[PPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16c\x13|)\xFEa\x1B\x8B\x84`@\x80Q`\xA0\x81\x01\x82R_``\x82\x01\x81\x81R`\x80\x83\x01\x82\x90R\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91RP`@\x80Q`\xA0\x81\x01\x82R` \x80\x84\x01\x80QQs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16``\x80\x85\x01\x91\x82R\x91Q\x85\x01Q`\x80\x85\x01R\x83R\x84Q\x84\x01Q\x91\x83\x01\x91\x90\x91R\x92Q\x90\x92\x01Q\x90\x82\x01R\x90V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x86\x16\x82R\x80\x87\x01Q\x81\x01Q\x90\x82\x01R\x85_\x01Q` \x01Q\x86`\x80\x01Q`@Q` \x01a\x1CV\x90\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0\x81R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`\x14\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`+\x82\x01R`D\x01\x90V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R`\xC0\x83\x01\x90\x91R`\x8D\x80\x83R\x90\x91\x90aB\xEC` \x83\x019`@Q\x80``\x01`@R\x80`.\x81R` \x01aB\xBE`.\x919`@Q` \x01a\x1C\xC0\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FV3DutchOrder(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7FOrderInfo info,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`-\x84\x01R\x7Faddress cosigner,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`<\x84\x01R\x7Fuint256 startingBaseFee,\0\0\0\0\0\0\0\0`M\x84\x01R\x7FV3DutchInput baseInput,\0\0\0\0\0\0\0\0\0`e\x84\x01R\x7FV3DutchOutput[] baseOutputs)\0\0\0\0`|\x84\x01R\x81Q`x\x81\x85\x03\x01\x81R`\x98\x84\x01\x90\x92R\x91a\x1D\xF0\x90`\xB8\x01a=_\xFD[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16a\x1E\xEBWa\x03L\x82\x82a\x1F\rV[a\x03Ls\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x163\x84\x84a(,V[_\x82s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82`@Q_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x1FcW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1FhV[``\x91P[PP\x90P\x80a\x03LW`@Q\x7F\xF4\xB3\xB1\xBC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`@Q\x80`\xC0\x01`@R\x80`\x8D\x81R` \x01aB\xEC`\x8D\x919\x80Q` \x91\x82\x01 \x83Q\x84\x83\x01Q`@\x80\x87\x01Q``\x88\x01Q`\x80\x89\x01Q`\xA0\x8A\x01Q\x80Q\x90\x89\x01 \x93Qa\x10V\x98\x93\x94\x92\x93\x91\x92\x91\x01\x96\x87Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x95\x86\x16` \x88\x01R\x93\x85\x16`@\x87\x01R``\x86\x01\x92\x90\x92R`\x80\x85\x01R\x90\x91\x16`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01\x90V[_`@Q` \x01a L\x90a;QV[`@\x80Q\x80\x83\x03\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01\x81R\x82\x82R\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x84\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x84\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x84\x01R\x81Q`D\x81\x85\x03\x01\x81R`d\x84\x01\x90\x92Ra!\x0C\x92\x90\x91\x90`\x84\x01a@\xB8V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Qa!8\x85`@\x01Qa)\x13V[``\x80\x87\x01Q`\x80\x80\x89\x01Q`@\x80Q` \x81\x01\x99\x90\x99Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x97\x16\x96\x88\x01\x96\x90\x96R\x91\x86\x01\x93\x90\x93R\x84\x01R`\xA0\x83\x01R`\xC0\x82\x01R`\xE0\x01a\x10VV[_\x80\x82Q` \x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a!\xAAWa!\xAAa1XV[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a!\xD4W` \x82\x01\x81\x806\x837\x01\x90P[P\x83Q\x90\x91P_[\x81\x81\x10\x15a\"\x19W_a\"\x07\x86\x83\x81Q\x81\x10a!\xFAWa!\xFAa1\x85V[` \x02` \x01\x01Qa*\x0FV[` \x83\x81\x02\x86\x01\x01RP`\x01\x01a!\xDCV[PP\x80Q` \x90\x91\x01 \x92\x91PPV[_\x81F\x84`\xA0\x01Q`@Q` \x01a\"A\x91\x90a@\xE6V[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"~\x93\x92\x91` \x01aAiV[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P[\x92\x91PPV[_\x80\x82\x80` \x01\x90Q\x81\x01\x90a\"\xB3\x91\x90aA\x95V[\x91P\x91P_\x83`@\x81Q\x81\x10a\"\xCBWa\"\xCBa1\x85V[\x01` \x90\x81\x01Q`@\x80Q_\x80\x82R\x93\x81\x01\x80\x83R\x89\x90R`\xF8\x92\x90\x92\x1C\x90\x82\x01\x81\x90R``\x82\x01\x86\x90R`\x80\x82\x01\x85\x90R\x92P`\x01\x90`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a#%W=_\x80>=_\xFD[PPP` `@Q\x03Q\x90P\x80s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14\x15\x80a#\x80WPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15[\x15a#\xB7W`@Q\x7F\xD7\x81[\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPV[_\x81\x83\x10\x15a#\xECWa#\xDBa#\xD6\x84\x84aA\xB7V[a+qV[a#\xE5\x90_aA\xCAV[\x90Pa\"\x97V[a#\xE5a#\xD6\x83\x85aA\xB7V[_\x80\x82\x12a$\x10Wa#\xE5\x83\x83c;\x9A\xCA\0a'\xF2V[a$(a$\x1C\x83aA\xF0V[\x84\x90c;\x9A\xCA\0a,&V[a#\xE5\x90aA\xF0V[_a$G\x85a$@\x86\x84aA\xCAV[\x85\x85a$PV[\x95\x94PPPPPV[_\x80\x84\x12\x15a$\xB1W_a$c\x85aA\xF0V[\x90P\x85a$\x90\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFaA\xB7V[\x10\x15a$\x9FW\x82\x91PPa$\xD8V[a$\xA9\x81\x87a?\x0BV[\x91PPa$\xCDV[\x83\x85\x10\x15a$\xC0WP\x81a$\xD8V[a$\xCA\x84\x86aA\xB7V[\x90P[a$G\x81\x84\x84a,hV[\x94\x93PPPPV[_\x84\x84\x10a$\xEFWP\x80a$GV[_a$\xFA\x87\x86aA\xB7V[\x90P_a%\x07\x88\x88aA\xB7V[\x90P_\x85\x85\x12\x15a%8Wa%(\x83\x83a%!\x88\x8AaA\xCAV[\x91\x90a'\xF2V[a%1\x90aA\xF0V[\x90Pa%QV[a%N\x83\x83a%G\x89\x89aA\xCAV[\x91\x90a,&V[\x90P[a%[\x81\x87aB&V[\x99\x98PPPPPPPPPV[_`\x10\x82_\x01Q` \x01QQ\x11\x15a%\xACW`@Q\x7F\x0E\x99gf\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81``\x01Q\x82`@\x01Q\x10\x15\x80a%\xC7WP\x81Q` \x01QQ\x15[\x15a%\xE6W`\x80\x82\x01Q`\xA0\x83\x01Q` \x84\x01Qa\"\x97\x92\x90\x91a,hV[_a&\x06\x83`@\x01Q\x84``\x01Qa%\xFE\x91\x90aA\xB7V[a\xFF\xFFa,xV[\x90P_\x80_\x80a&\x19\x87_\x01Q\x86a,\x8FV[\x93P\x93P\x93P\x93P_a&C\x85a\xFF\xFF\x16\x85a\xFF\xFF\x16\x88a\xFF\xFF\x16\x86\x86\x8D`\xC0\x01Qc\xFF\xFF\xFF\xFF\x16V[`\x80\x89\x01Q`\xA0\x8A\x01Q` \x8B\x01Q\x92\x93Pa&a\x92\x91\x84\x91a$PV[\x98\x97PPPPPPPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R_`@Q\x80`\xE0\x01`@R\x80\x86`@\x01Q\x81R` \x01\x86` \x01Q\x81R` \x01\x85\x81R` \x01\x84\x81R` \x01\x86`\x80\x01Q\x81R` \x01\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81R` \x01a.H\x81RP\x90P_a&\xF7\x82a%hV[\x90P`@Q\x80``\x01`@R\x80\x87_\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81R` \x01\x82\x81R` \x01\x87``\x01Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81RP\x92PPP\x93\x92PPPV[a']\x84\x84\x83a.\x98V[a\x14\xEBW\x81a'\x98W`@Q\x7F\xB9\xEC\x1E\x96\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x85\x01Q_[\x81Q\x81\x10\x15a#\xB7W_\x82\x82\x81Q\x81\x10a'\xBBWa'\xBBa1\x85V[` \x02` \x01\x01Q\x90Pa'\xE4\x85a'\x10a'\xD6\x91\x90a?\x0BV[` \x83\x01Q\x90a'\x10a,&V[` \x90\x91\x01R`\x01\x01a'\x9FV[_\x82\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x04\x84\x11\x83\x02\x15\x82\x02a(%W_\x80\xFD[P\x91\x02\x04\x90V[_`@Q\x7F#\xB8r\xDD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x85\x16`\x04\x82\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16`$\x82\x01R\x82`D\x82\x01R` _`d\x83_\x8AZ\xF1=\x15`\x1F=\x11`\x01_Q\x14\x16\x17\x16\x91PP\x80a\x14\xEBW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x14`$\x82\x01R\x7FTRANSFER_FROM_FAILED\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x06\xE1V[`@Q\x7FNonlinearDutchDecay(\0\0\0\0\0\0\0\0\0\0\0\0` \x82\x01R\x7Fuint256 relativeBlocks,\0\0\0\0\0\0\0\0\0`4\x82\x01R\x7Fint256[] relativeAmounts)\0\0\0\0\0\0\0`K\x82\x01R_\x90`d\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x82_\x01Q\x83` \x01Q`@Q` \x01a)\xBC\x91\x90aBMV[`@\x80Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x90\x83\x01\x94\x90\x94R\x81\x01\x91\x90\x91R``\x81\x01\x91\x90\x91R`\x80\x01a\x10VV[_`@Q` \x01a*\x1F\x90a&W_\x80\xFD[\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a>LW_\x80\xFD[\x80Qa>Za7\x92\x82a7\x19V[\x81\x81R``\x91\x82\x02\x83\x01\x84\x01\x91\x84\x82\x01\x91\x90\x88\x84\x11\x15a>xW_\x80\xFD[\x93\x85\x01\x93[\x83\x85\x10\x15a>\xD2W\x80\x85\x8A\x03\x12\x15a>\x93W_\x80\xFD[a>\x9Ba5\x89V[\x85Qa>\xA6\x81a0\xDAV[\x81R\x85\x87\x01Q\x87\x82\x01R`@\x80\x87\x01Qa>\xBF\x81a0\xDAV[\x90\x82\x01R\x83R\x93\x84\x01\x93\x91\x85\x01\x91a>}V[P\x97\x96PPPPPPPV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x80\x82\x01\x80\x82\x11\x15a\"\x97Wa\"\x97a>\xDEV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x16\x81R`@` \x82\x01R_a$\xD8`@\x83\x01\x84a2\x86V[\x7FV3DutchOrder witness)\0\0\0\0\0\0\0\0\0\0\0\x81R_`\x15\x88Q` a?\x85\x82\x84\x87\x01\x83\x8E\x01a1\xB2V[\x89Q\x91\x85\x01\x91a?\x9A\x81\x85\x85\x01\x84\x8E\x01a1\xB2V[\x89Q\x92\x01\x91a?\xAE\x81\x85\x85\x01\x84\x8D\x01a1\xB2V[\x88Q\x92\x01\x91a?\xC2\x81\x85\x85\x01\x84\x8C\x01a1\xB2V[\x87Q\x92\x01\x91a?\xD6\x81\x85\x85\x01\x84\x8B\x01a1\xB2V[\x86Q\x92\x01\x91a?\xEA\x81\x85\x85\x01\x84\x8A\x01a1\xB2V[\x91\x90\x91\x01\x90\x91\x01\x99\x98PPPPPPPPPV[_a\x01@a@-\x83\x8AQ\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[` \x89\x01Q`@\x84\x01R`@\x89\x01Q``\x84\x01Ra@n`\x80\x84\x01\x89\x80Qs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x82R` \x90\x81\x01Q\x91\x01RV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x87\x16`\xC0\x84\x01R\x85`\xE0\x84\x01R\x80a\x01\0\x84\x01Ra@\xA3\x81\x84\x01\x86a1\xD4V[\x90P\x82\x81\x03a\x01 \x84\x01Ra%[\x81\x85a1\xD4V[_\x83Qa@\xC9\x81\x84` \x88\x01a1\xB2V[\x83Q\x90\x83\x01\x90a@\xDD\x81\x83` \x88\x01a1\xB2V[\x01\x94\x93PPPPV[_` \x80\x83R`\xC0\x83\x01\x84Q\x82\x85\x01Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x86\x01Q\x16`@\x85\x01R`@\x85\x01Q``\x85\x01R``\x85\x01Q`\x80\x85\x01R`\x80\x85\x01Q`\xA0\x80\x86\x01R\x81\x81Q\x80\x84R`\xE0\x87\x01\x91P\x84\x83\x01\x93P_\x92P[\x80\x83\x10\x15a9mW\x83Q\x82R\x92\x84\x01\x92`\x01\x92\x90\x92\x01\x91\x90\x84\x01\x90aAIV[\x83\x81R\x82` \x82\x01R_\x82QaA\x86\x81`@\x85\x01` \x87\x01a1\xB2V[\x91\x90\x91\x01`@\x01\x94\x93PPPPV[_\x80`@\x83\x85\x03\x12\x15aA\xA6W_\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[\x81\x81\x03\x81\x81\x11\x15a\"\x97Wa\"\x97a>\xDEV[\x81\x81\x03_\x83\x12\x80\x15\x83\x83\x13\x16\x83\x83\x12\x82\x16\x17\x15aA\xE9WaA\xE9a>\xDEV[P\x92\x91PPV[_\x7F\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x03aB WaB a>\xDEV[P_\x03\x90V[\x80\x82\x01\x82\x81\x12_\x83\x12\x80\x15\x82\x16\x82\x15\x82\x16\x17\x15aBEWaBEa>\xDEV[PP\x92\x91PPV[\x81Q_\x90\x82\x90` \x80\x86\x01\x84[\x83\x81\x10\x15aBvW\x81Q\x85R\x93\x82\x01\x93\x90\x82\x01\x90`\x01\x01aBZV[P\x92\x96\x95PPPPPPV[a\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15aA\xE9WaA\xE9a>\xDEV[_a\xFF\xFF\x80\x83\x16\x81\x81\x03aB\xB3WaB\xB3a>\xDEV[`\x01\x01\x93\x92PPPV\xFETokenPermissions(address token,uint256 amount)OrderInfo(address reactor,address swapper,uint256 nonce,uint256 deadline,address additionalValidationContract,bytes additionalValidationData)\xA2dipfsX\"\x12 v\xEBd\xBF$\x1A=&>\xC5\xA7-\xE2\x969\xED\xAD\xAF\xD9\xDC4{\x19\xB4\x92[\xF5\xD9s\xD5b\xEFdsolcC\0\x08\x18\x003", ); /**```solidity struct SignedOrder { bytes order; bytes sig; } ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct SignedOrder { + #[allow(missing_docs)] pub order: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] pub sig: alloy::sol_types::private::Bytes, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -643,10 +656,15 @@ struct SignedOrder { bytes order; bytes sig; } ```solidity error DeadlineReached(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DeadlineReached {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -702,12 +720,18 @@ error DeadlineReached(); ```solidity error DuplicateFeeOutput(address duplicateToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct DuplicateFeeOutput { + #[allow(missing_docs)] pub duplicateToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -767,14 +791,22 @@ error DuplicateFeeOutput(address duplicateToken); ```solidity error FeeTooLarge(address token, uint256 amount, address recipient); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct FeeTooLarge { + #[allow(missing_docs)] pub token: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub recipient: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -786,7 +818,7 @@ error FeeTooLarge(address token, uint256 amount, address recipient); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, alloy::sol_types::private::Address, ); #[cfg(test)] @@ -852,10 +884,15 @@ error FeeTooLarge(address token, uint256 amount, address recipient); ```solidity error IndexOutOfBounds(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct IndexOutOfBounds {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -911,10 +948,15 @@ error IndexOutOfBounds(); ```solidity error InputAndOutputFees(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InputAndOutputFees {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -970,10 +1012,15 @@ error InputAndOutputFees(); ```solidity error InvalidCosignature(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidCosignature {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1029,10 +1076,15 @@ error InvalidCosignature(); ```solidity error InvalidCosignerInput(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidCosignerInput {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1088,10 +1140,15 @@ error InvalidCosignerInput(); ```solidity error InvalidCosignerOutput(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidCosignerOutput {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1147,10 +1204,15 @@ error InvalidCosignerOutput(); ```solidity error InvalidDecayCurve(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidDecayCurve {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1206,12 +1268,18 @@ error InvalidDecayCurve(); ```solidity error InvalidFeeToken(address feeToken); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidFeeToken { + #[allow(missing_docs)] pub feeToken: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1271,10 +1339,15 @@ error InvalidFeeToken(address feeToken); ```solidity error InvalidReactor(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct InvalidReactor {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1330,10 +1403,15 @@ error InvalidReactor(); ```solidity error NativeTransferFailed(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NativeTransferFailed {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1389,10 +1467,15 @@ error NativeTransferFailed(); ```solidity error NoExclusiveOverride(); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct NoExclusiveOverride {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[doc(hidden)] @@ -1448,7 +1531,12 @@ error NoExclusiveOverride(); ```solidity event Fill(bytes32 indexed orderHash, address indexed filler, address indexed swapper, uint256 nonce); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Fill { #[allow(missing_docs)] @@ -1458,9 +1546,14 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw #[allow(missing_docs)] pub swapper: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub nonce: alloy::sol_types::private::U256, + pub nonce: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1525,6 +1618,21 @@ event Fill(bytes32 indexed orderHash, address indexed filler, address indexed sw } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { () } @@ -1703,7 +1836,12 @@ event OwnershipTransferred(address indexed user, address indexed newOwner); ```solidity event ProtocolFeeControllerSet(address oldFeeController, address newFeeController); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct ProtocolFeeControllerSet { #[allow(missing_docs)] @@ -1711,7 +1849,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle #[allow(missing_docs)] pub newFeeController: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -1772,6 +1915,21 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::tokenize( @@ -1823,10 +1981,12 @@ event ProtocolFeeControllerSet(address oldFeeController, address newFeeControlle ```solidity constructor(address _permit2, address _protocolFeeOwner); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct constructorCall { + #[allow(missing_docs)] pub _permit2: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _protocolFeeOwner: alloy::sol_types::private::Address, } const _: () = { @@ -1903,16 +2063,22 @@ constructor(address _permit2, address _protocolFeeOwner); ```solidity function execute(SignedOrder memory order) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeCall { + #[allow(missing_docs)] pub order: ::RustType, } ///Container type for the return parameters of the [`execute((bytes,bytes))`](executeCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2018,18 +2184,24 @@ function execute(SignedOrder memory order) external payable; ```solidity function executeBatch(SignedOrder[] memory orders) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, } ///Container type for the return parameters of the [`executeBatch((bytes,bytes)[])`](executeBatchCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2143,19 +2315,26 @@ function executeBatch(SignedOrder[] memory orders) external payable; ```solidity function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackCall { + #[allow(missing_docs)] pub orders: alloy::sol_types::private::Vec< ::RustType, >, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeBatchWithCallback((bytes,bytes)[],bytes)`](executeBatchWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeBatchWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2284,17 +2463,24 @@ function executeBatchWithCallback(SignedOrder[] memory orders, bytes memory call ```solidity function executeWithCallback(SignedOrder memory order, bytes memory callbackData) external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackCall { + #[allow(missing_docs)] pub order: ::RustType, + #[allow(missing_docs)] pub callbackData: alloy::sol_types::private::Bytes, } ///Container type for the return parameters of the [`executeWithCallback((bytes,bytes),bytes)`](executeWithCallbackCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct executeWithCallbackReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2416,16 +2602,22 @@ function executeWithCallback(SignedOrder memory order, bytes memory callbackData ```solidity function feeController() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerCall {} ///Container type for the return parameters of the [`feeController()`](feeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct feeControllerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2529,16 +2721,22 @@ function feeController() external view returns (address); ```solidity function owner() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerCall {} ///Container type for the return parameters of the [`owner()`](ownerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct ownerReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2642,16 +2840,22 @@ function owner() external view returns (address); ```solidity function permit2() external view returns (address); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Call {} ///Container type for the return parameters of the [`permit2()`](permit2Call) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permit2Return { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2755,16 +2959,22 @@ function permit2() external view returns (address); ```solidity function setProtocolFeeController(address _newFeeController) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerCall { + #[allow(missing_docs)] pub _newFeeController: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`setProtocolFeeController(address)`](setProtocolFeeControllerCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct setProtocolFeeControllerReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2876,16 +3086,22 @@ function setProtocolFeeController(address _newFeeController) external; ```solidity function transferOwnership(address newOwner) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipCall { + #[allow(missing_docs)] pub newOwner: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferOwnershipReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2995,14 +3211,23 @@ function transferOwnership(address newOwner) external; }; ///Container for all the [`V3DutchOrderReactor`](self) function calls. pub enum V3DutchOrderReactorCalls { + #[allow(missing_docs)] execute(executeCall), + #[allow(missing_docs)] executeBatch(executeBatchCall), + #[allow(missing_docs)] executeBatchWithCallback(executeBatchWithCallbackCall), + #[allow(missing_docs)] executeWithCallback(executeWithCallbackCall), + #[allow(missing_docs)] feeController(feeControllerCall), + #[allow(missing_docs)] owner(ownerCall), + #[allow(missing_docs)] permit2(permit2Call), + #[allow(missing_docs)] setProtocolFeeController(setProtocolFeeControllerCall), + #[allow(missing_docs)] transferOwnership(transferOwnershipCall), } #[automatically_derived] @@ -3065,7 +3290,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3201,7 +3426,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3300,18 +3525,31 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`V3DutchOrderReactor`](self) custom errors. pub enum V3DutchOrderReactorErrors { + #[allow(missing_docs)] DeadlineReached(DeadlineReached), + #[allow(missing_docs)] DuplicateFeeOutput(DuplicateFeeOutput), + #[allow(missing_docs)] FeeTooLarge(FeeTooLarge), + #[allow(missing_docs)] IndexOutOfBounds(IndexOutOfBounds), + #[allow(missing_docs)] InputAndOutputFees(InputAndOutputFees), + #[allow(missing_docs)] InvalidCosignature(InvalidCosignature), + #[allow(missing_docs)] InvalidCosignerInput(InvalidCosignerInput), + #[allow(missing_docs)] InvalidCosignerOutput(InvalidCosignerOutput), + #[allow(missing_docs)] InvalidDecayCurve(InvalidDecayCurve), + #[allow(missing_docs)] InvalidFeeToken(InvalidFeeToken), + #[allow(missing_docs)] InvalidReactor(InvalidReactor), + #[allow(missing_docs)] NativeTransferFailed(NativeTransferFailed), + #[allow(missing_docs)] NoExclusiveOverride(NoExclusiveOverride), } #[automatically_derived] @@ -3396,7 +3634,7 @@ function transferOwnership(address newOwner) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -3584,7 +3822,7 @@ function transferOwnership(address newOwner) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3740,8 +3978,11 @@ function transferOwnership(address newOwner) external; } ///Container for all the [`V3DutchOrderReactor`](self) events. pub enum V3DutchOrderReactorEvents { + #[allow(missing_docs)] Fill(Fill), + #[allow(missing_docs)] OwnershipTransferred(OwnershipTransferred), + #[allow(missing_docs)] ProtocolFeeControllerSet(ProtocolFeeControllerSet), } #[automatically_derived] diff --git a/crates/bindings-uniswapx/src/weth.rs b/crates/bindings-uniswapx/src/weth.rs index 4bf64e3..5ca1998 100644 --- a/crates/bindings-uniswapx/src/weth.rs +++ b/crates/bindings-uniswapx/src/weth.rs @@ -391,35 +391,46 @@ interface WETH { } ] ```*/ -#[allow(non_camel_case_types, non_snake_case, clippy::style)] +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] pub mod WETH { use super::*; use alloy::sol_types as alloy_sol_types; /// The creation / init bytecode of the contract. /// /// ```text - ///0x60e06040523480156200001157600080fd5b506040518060400160405280600d81526020016c2bb930b83832b21022ba3432b960991b815250604051806040016040528060048152602001630ae8aa8960e31b81525060128260009081620000689190620001dd565b506001620000778382620001dd565b5060ff81166080524660a0526200008d6200009a565b60c0525062000327915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000ce9190620002a9565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200016157607f821691505b6020821081036200018257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001d8576000816000526020600020601f850160051c81016020861015620001b35750805b601f850160051c820191505b81811015620001d457828155600101620001bf565b5050505b505050565b81516001600160401b03811115620001f957620001f962000136565b62000211816200020a84546200014c565b8462000188565b602080601f831160018114620002495760008415620002305750858301515b600019600386901b1c1916600185901b178555620001d4565b600085815260208120601f198616915b828110156200027a5788860151825594840194600190910190840162000259565b5085821015620002995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808354620002b9816200014c565b60018281168015620002d45760018114620002ea576200031b565b60ff19841687528215158302870194506200031b565b8760005260208060002060005b85811015620003125781548a820152908401908201620002f7565b50505082870194505b50929695505050505050565b60805160a05160c051610f96620003576000396000610610015260006105db015260006101c60152610f966000f3fe6080604052600436106100e15760003560e01c806370a082311161007f578063a9059cbb11610059578063a9059cbb1461027e578063d0e30db01461029e578063d505accf146102a6578063dd62ed3e146102c657600080fd5b806370a082311461020f5780637ecebe001461023c57806395d89b411461026957600080fd5b806323b872dd116100bb57806323b872dd146101745780632e1a7d4d14610194578063313ce567146101b45780633644e515146101fa57600080fd5b806306fdde03146100f5578063095ea7b31461012057806318160ddd1461015057600080fd5b366100f0576100ee6102fe565b005b600080fd5b34801561010157600080fd5b5061010a61033f565b6040516101179190610c03565b60405180910390f35b34801561012c57600080fd5b5061014061013b366004610c99565b6103cd565b6040519015158152602001610117565b34801561015c57600080fd5b5061016660025481565b604051908152602001610117565b34801561018057600080fd5b5061014061018f366004610cc3565b610447565b3480156101a057600080fd5b506100ee6101af366004610cff565b61058b565b3480156101c057600080fd5b506101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610117565b34801561020657600080fd5b506101666105d7565b34801561021b57600080fd5b5061016661022a366004610d18565b60036020526000908152604090205481565b34801561024857600080fd5b50610166610257366004610d18565b60056020526000908152604090205481565b34801561027557600080fd5b5061010a610632565b34801561028a57600080fd5b50610140610299366004610c99565b61063f565b6100ee6102fe565b3480156102b257600080fd5b506100ee6102c1366004610d3a565b6106c4565b3480156102d257600080fd5b506101666102e1366004610dad565b600460209081526000928352604080842090915290825290205481565b61030833346109e8565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b6000805461034c90610de0565b80601f016020809104026020016040519081016040528092919081815260200182805461037890610de0565b80156103c55780601f1061039a576101008083540402835291602001916103c5565b820191906000526020600020905b8154815290600101906020018083116103a857829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104359086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104db576104a98382610e62565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff851660009081526003602052604081208054859290610510908490610e62565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105789087815260200190565b60405180910390a3506001949350505050565b6105953382610a61565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a26105d43382610aef565b50565b60007f0000000000000000000000000000000000000000000000000000000000000000461461060d57610608610b69565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461034c90610de0565b33600090815260036020526040812080548391908390610660908490610e62565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104359086815260200190565b42841015610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161073f6105d7565b73ffffffffffffffffffffffffffffffffffffffff8a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610891573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061090c57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e4552000000000000000000000000000000000000604482015260640161072a565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b80600260008282546109fa9190610e75565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054839290610a96908490610e62565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a55565b600080600080600085875af1905080610b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161072a565b505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610b9b9190610e88565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006020808352835180602085015260005b81811015610c3157858101830151858201604001528201610c15565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c9457600080fd5b919050565b60008060408385031215610cac57600080fd5b610cb583610c70565b946020939093013593505050565b600080600060608486031215610cd857600080fd5b610ce184610c70565b9250610cef60208501610c70565b9150604084013590509250925092565b600060208284031215610d1157600080fd5b5035919050565b600060208284031215610d2a57600080fd5b610d3382610c70565b9392505050565b600080600080600080600060e0888a031215610d5557600080fd5b610d5e88610c70565b9650610d6c60208901610c70565b95506040880135945060608801359350608088013560ff81168114610d9057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610dc057600080fd5b610dc983610c70565b9150610dd760208401610c70565b90509250929050565b600181811c90821680610df457607f821691505b602082108103610e2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561044157610441610e33565b8082018082111561044157610441610e33565b60008083548160018260011c91506001831680610ea657607f831692505b60208084108203610ede577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015610ef25760018114610f2557610f52565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610f52565b60008a81526020902060005b86811015610f4a5781548b820152908501908301610f31565b505084890196505b50949897505050505050505056fea264697066735822122041f3d9f7e8c5f845f976ad0a536b2c8f53dbbbdf694d76046e07adc9bc14b6bc64736f6c63430008180033 + ///0x60e060405234801562000010575f80fd5b506040518060400160405280600d81526020016c2bb930b83832b21022ba3432b960991b815250604051806040016040528060048152602001630ae8aa8960e31b8152506012825f9081620000669190620001d0565b506001620000758382620001d0565b5060ff81166080524660a0526200008b62000098565b60c0525062000316915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051620000ca91906200029c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200015b57607f821691505b6020821081036200017a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001cb57805f5260205f20601f840160051c81016020851015620001a75750805b601f840160051c820191505b81811015620001c8575f8155600101620001b3565b50505b505050565b81516001600160401b03811115620001ec57620001ec62000132565b6200020481620001fd845462000146565b8462000180565b602080601f8311600181146200023a575f8415620002225750858301515b5f19600386901b1c1916600185901b17855562000294565b5f85815260208120601f198616915b828110156200026a5788860151825594840194600190910190840162000249565b50858210156200028857878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f808354620002ab8162000146565b60018281168015620002c65760018114620002dc576200030a565b60ff19841687528215158302870194506200030a565b875f526020805f205f5b85811015620003015781548a820152908401908201620002e6565b50505082870194505b50929695505050505050565b60805160a05160c051610f4a620003415f395f6105f101525f6105bc01525f6101ba0152610f4a5ff3fe6080604052600436106100dc575f3560e01c806370a082311161007c578063a9059cbb11610057578063a9059cbb1461026c578063d0e30db01461028b578063d505accf14610293578063dd62ed3e146102b2575f80fd5b806370a08231146102025780637ecebe001461022d57806395d89b4114610258575f80fd5b806323b872dd116100b757806323b872dd1461016b5780632e1a7d4d1461018a578063313ce567146101a95780633644e515146101ee575f80fd5b806306fdde03146100ef578063095ea7b31461011957806318160ddd14610148575f80fd5b366100eb576100e96102e8565b005b5f80fd5b3480156100fa575f80fd5b50610103610329565b6040516101109190610bd3565b60405180910390f35b348015610124575f80fd5b50610138610133366004610c65565b6103b4565b6040519015158152602001610110565b348015610153575f80fd5b5061015d60025481565b604051908152602001610110565b348015610176575f80fd5b50610138610185366004610c8d565b61042d565b348015610195575f80fd5b506100e96101a4366004610cc6565b61056d565b3480156101b4575f80fd5b506101dc7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610110565b3480156101f9575f80fd5b5061015d6105b9565b34801561020d575f80fd5b5061015d61021c366004610cdd565b60036020525f908152604090205481565b348015610238575f80fd5b5061015d610247366004610cdd565b60056020525f908152604090205481565b348015610263575f80fd5b50610103610613565b348015610277575f80fd5b50610138610286366004610c65565b610620565b6100e96102e8565b34801561029e575f80fd5b506100e96102ad366004610cfd565b6106a3565b3480156102bd575f80fd5b5061015d6102cc366004610d6a565b600460209081525f928352604080842090915290825290205481565b6102f233346109c1565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b5f805461033590610d9b565b80601f016020809104026020016040519081016040528092919081815260200182805461036190610d9b565b80156103ac5780601f10610383576101008083540402835291602001916103ac565b820191905f5260205f20905b81548152906001019060200180831161038f57829003601f168201915b505050505081565b335f81815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061041b9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104bf5761048e8382610e19565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f90815260036020526040812080548592906104f3908490610e19565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061055a9087815260200190565b60405180910390a3506001949350505050565b6105773382610a38565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a26105b63382610ac4565b50565b5f7f000000000000000000000000000000000000000000000000000000000000000046146105ee576105e9610b3b565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461033590610d9b565b335f90815260036020526040812080548391908390610640908490610e19565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061041b9086815260200190565b42841015610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f600161071d6105b9565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561086b573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108e657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61094c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610709565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b8060025f8282546109d29190610e2c565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526003602052604081208054839290610a6c908490610e19565b90915550506002805482900390556040518181525f9073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a2c565b5f805f805f85875af1905080610b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610709565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051610b6b9190610e3f565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f602080835283518060208501525f5b81811015610bff57858101830151858201604001528201610be3565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c60575f80fd5b919050565b5f8060408385031215610c76575f80fd5b610c7f83610c3d565b946020939093013593505050565b5f805f60608486031215610c9f575f80fd5b610ca884610c3d565b9250610cb660208501610c3d565b9150604084013590509250925092565b5f60208284031215610cd6575f80fd5b5035919050565b5f60208284031215610ced575f80fd5b610cf682610c3d565b9392505050565b5f805f805f805f60e0888a031215610d13575f80fd5b610d1c88610c3d565b9650610d2a60208901610c3d565b95506040880135945060608801359350608088013560ff81168114610d4d575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610d7b575f80fd5b610d8483610c3d565b9150610d9260208401610c3d565b90509250929050565b600181811c90821680610daf57607f821691505b602082108103610de6577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561042757610427610dec565b8082018082111561042757610427610dec565b5f8083545f60018260011c91506001831680610e5c57607f831692505b60208084108203610e94577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015610ea85760018114610edb57610f06565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610f06565b5f8a8152602090205f5b86811015610efe5781548b820152908501908301610ee5565b505084890196505b50949897505050505050505056fea264697066735822122074a579a0371a67d14254c095a37a61e315efc77eaff2efdadf2e9923ae84ce7d64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Q\x80`@\x01`@R\x80`\r\x81R` \x01l+\xB90\xB882\xB2\x10\"\xBA42\xB9`\x99\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01c\n\xE8\xAA\x89`\xE3\x1B\x81RP`\x12\x82`\0\x90\x81b\0\0h\x91\x90b\0\x01\xDDV[P`\x01b\0\0w\x83\x82b\0\x01\xDDV[P`\xFF\x81\x16`\x80RF`\xA0Rb\0\0\x8Db\0\0\x9AV[`\xC0RPb\0\x03'\x91PPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qb\0\0\xCE\x91\x90b\0\x02\xA9V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x01aW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x01\x82WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01\xD8W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x01\xB3WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x01\xD4W\x82\x81U`\x01\x01b\0\x01\xBFV[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x01\xF9Wb\0\x01\xF9b\0\x016V[b\0\x02\x11\x81b\0\x02\n\x84Tb\0\x01LV[\x84b\0\x01\x88V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x02IW`\0\x84\x15b\0\x020WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x01\xD4V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x02zW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x02YV[P\x85\x82\x10\x15b\0\x02\x99W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\0\x80\x83Tb\0\x02\xB9\x81b\0\x01LV[`\x01\x82\x81\x16\x80\x15b\0\x02\xD4W`\x01\x81\x14b\0\x02\xEAWb\0\x03\x1BV[`\xFF\x19\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pb\0\x03\x1BV[\x87`\0R` \x80`\0 `\0[\x85\x81\x10\x15b\0\x03\x12W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01b\0\x02\xF7V[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[`\x80Q`\xA0Q`\xC0Qa\x0F\x96b\0\x03W`\09`\0a\x06\x10\x01R`\0a\x05\xDB\x01R`\0a\x01\xC6\x01Ra\x0F\x96`\0\xF3\xFE`\x80`@R`\x046\x10a\0\xE1W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0\x7FW\x80c\xA9\x05\x9C\xBB\x11a\0YW\x80c\xA9\x05\x9C\xBB\x14a\x02~W\x80c\xD0\xE3\r\xB0\x14a\x02\x9EW\x80c\xD5\x05\xAC\xCF\x14a\x02\xA6W\x80c\xDDb\xED>\x14a\x02\xC6W`\0\x80\xFD[\x80cp\xA0\x821\x14a\x02\x0FW\x80c~\xCE\xBE\0\x14a\x02=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\t\x0CWP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\trW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07*V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[\x80`\x02`\0\x82\x82Ta\t\xFA\x91\x90a\x0EuV[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01[`@Q\x80\x91\x03\x90\xA3PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x83\x92\x90a\n\x96\x90\x84\x90a\x0EbV[\x90\x91UPP`\x02\x80T\x82\x90\x03\x90U`@Q\x81\x81R`\0\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90` \x01a\nUV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x0BdW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07*V[PPPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\x0B\x9B\x91\x90a\x0E\x88V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\x0C1W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0C\x15V[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x94W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xACW`\0\x80\xFD[a\x0C\xB5\x83a\x0CpV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xD8W`\0\x80\xFD[a\x0C\xE1\x84a\x0CpV[\x92Pa\x0C\xEF` \x85\x01a\x0CpV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\r\x11W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\r*W`\0\x80\xFD[a\r3\x82a\x0CpV[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\rUW`\0\x80\xFD[a\r^\x88a\x0CpV[\x96Pa\rl` \x89\x01a\x0CpV[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\r\x90W`\0\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\r\xC0W`\0\x80\xFD[a\r\xC9\x83a\x0CpV[\x91Pa\r\xD7` \x84\x01a\x0CpV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\r\xF4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0E-W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x04AWa\x04Aa\x0E3V[\x80\x82\x01\x80\x82\x11\x15a\x04AWa\x04Aa\x0E3V[`\0\x80\x83T\x81`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0E\xA6W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0E\xDEW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\"`\x04R`$\x86\xFD[\x81\x80\x15a\x0E\xF2W`\x01\x81\x14a\x0F%Wa\x0FRV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\x0FRV[`\0\x8A\x81R` \x90 `\0[\x86\x81\x10\x15a\x0FJW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\x0F1V[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV\xFE\xA2dipfsX\"\x12 A\xF3\xD9\xF7\xE8\xC5\xF8E\xF9v\xAD\nSk,\x8FS\xDB\xBB\xDFiMv\x04n\x07\xAD\xC9\xBC\x14\xB6\xBCdsolcC\0\x08\x18\x003", + b"`\xE0`@R4\x80\x15b\0\0\x10W_\x80\xFD[P`@Q\x80`@\x01`@R\x80`\r\x81R` \x01l+\xB90\xB882\xB2\x10\"\xBA42\xB9`\x99\x1B\x81RP`@Q\x80`@\x01`@R\x80`\x04\x81R` \x01c\n\xE8\xAA\x89`\xE3\x1B\x81RP`\x12\x82_\x90\x81b\0\0f\x91\x90b\0\x01\xD0V[P`\x01b\0\0u\x83\x82b\0\x01\xD0V[P`\xFF\x81\x16`\x80RF`\xA0Rb\0\0\x8Bb\0\0\x98V[`\xC0RPb\0\x03\x16\x91PPV[_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F_`@Qb\0\0\xCA\x91\x90b\0\x02\x9CV[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x01[W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x01zWcNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x01\xCBW\x80_R` _ `\x1F\x84\x01`\x05\x1C\x81\x01` \x85\x10\x15b\0\x01\xA7WP\x80[`\x1F\x84\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x01\xC8W_\x81U`\x01\x01b\0\x01\xB3V[PP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x01\xECWb\0\x01\xECb\0\x012V[b\0\x02\x04\x81b\0\x01\xFD\x84Tb\0\x01FV[\x84b\0\x01\x80V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x02:W_\x84\x15b\0\x02\"WP\x85\x83\x01Q[_\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x02\x94V[_\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x02jW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x02IV[P\x85\x82\x10\x15b\0\x02\x88W\x87\x85\x01Q_\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PP`\x01\x84`\x01\x1B\x01\x85U[PPPPPPV[_\x80\x83Tb\0\x02\xAB\x81b\0\x01FV[`\x01\x82\x81\x16\x80\x15b\0\x02\xC6W`\x01\x81\x14b\0\x02\xDCWb\0\x03\nV[`\xFF\x19\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pb\0\x03\nV[\x87_R` \x80_ _[\x85\x81\x10\x15b\0\x03\x01W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01b\0\x02\xE6V[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[`\x80Q`\xA0Q`\xC0Qa\x0FJb\0\x03A_9_a\x05\xF1\x01R_a\x05\xBC\x01R_a\x01\xBA\x01Ra\x0FJ_\xF3\xFE`\x80`@R`\x046\x10a\0\xDCW_5`\xE0\x1C\x80cp\xA0\x821\x11a\0|W\x80c\xA9\x05\x9C\xBB\x11a\0WW\x80c\xA9\x05\x9C\xBB\x14a\x02lW\x80c\xD0\xE3\r\xB0\x14a\x02\x8BW\x80c\xD5\x05\xAC\xCF\x14a\x02\x93W\x80c\xDDb\xED>\x14a\x02\xB2W_\x80\xFD[\x80cp\xA0\x821\x14a\x02\x02W\x80c~\xCE\xBE\0\x14a\x02-W\x80c\x95\xD8\x9BA\x14a\x02XW_\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xB7W\x80c#\xB8r\xDD\x14a\x01kW\x80c.\x1A}M\x14a\x01\x8AW\x80c1<\xE5g\x14a\x01\xA9W\x80c6D\xE5\x15\x14a\x01\xEEW_\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\x19W\x80c\x18\x16\r\xDD\x14a\x01HW_\x80\xFD[6a\0\xEBWa\0\xE9a\x02\xE8V[\0[_\x80\xFD[4\x80\x15a\0\xFAW_\x80\xFD[Pa\x01\x03a\x03)V[`@Qa\x01\x10\x91\x90a\x0B\xD3V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01$W_\x80\xFD[Pa\x018a\x0136`\x04a\x0CeV[a\x03\xB4V[`@Q\x90\x15\x15\x81R` \x01a\x01\x10V[4\x80\x15a\x01SW_\x80\xFD[Pa\x01]`\x02T\x81V[`@Q\x90\x81R` \x01a\x01\x10V[4\x80\x15a\x01vW_\x80\xFD[Pa\x018a\x01\x856`\x04a\x0C\x8DV[a\x04-V[4\x80\x15a\x01\x95W_\x80\xFD[Pa\0\xE9a\x01\xA46`\x04a\x0C\xC6V[a\x05mV[4\x80\x15a\x01\xB4W_\x80\xFD[Pa\x01\xDC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x01\x10V[4\x80\x15a\x01\xF9W_\x80\xFD[Pa\x01]a\x05\xB9V[4\x80\x15a\x02\rW_\x80\xFD[Pa\x01]a\x02\x1C6`\x04a\x0C\xDDV[`\x03` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x028W_\x80\xFD[Pa\x01]a\x02G6`\x04a\x0C\xDDV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x02cW_\x80\xFD[Pa\x01\x03a\x06\x13V[4\x80\x15a\x02wW_\x80\xFD[Pa\x018a\x02\x866`\x04a\x0CeV[a\x06 V[a\0\xE9a\x02\xE8V[4\x80\x15a\x02\x9EW_\x80\xFD[Pa\0\xE9a\x02\xAD6`\x04a\x0C\xFDV[a\x06\xA3V[4\x80\x15a\x02\xBDW_\x80\xFD[Pa\x01]a\x02\xCC6`\x04a\rjV[`\x04` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x02\xF234a\t\xC1V[`@Q4\x81R3\x90\x7F\xE1\xFF\xFC\xC4\x92=\x04\xB5Y\xF4\xD2\x9A\x8B\xFCl\xDA\x04\xEB[\r=_\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\x08\xE6WP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\tLW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\tV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[\x80`\x02_\x82\x82Ta\t\xD2\x91\x90a\x0E,V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01[`@Q\x80\x91\x03\x90\xA3PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x90\x81R`\x03` R`@\x81 \x80T\x83\x92\x90a\nl\x90\x84\x90a\x0E\x19V[\x90\x91UPP`\x02\x80T\x82\x90\x03\x90U`@Q\x81\x81R_\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90` \x01a\n,V[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\x0B6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\tV[PPPV[_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F_`@Qa\x0Bk\x91\x90a\x0E?V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[_` \x80\x83R\x83Q\x80` \x85\x01R_[\x81\x81\x10\x15a\x0B\xFFW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0B\xE3V[P_`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C`W_\x80\xFD[\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x0CvW_\x80\xFD[a\x0C\x7F\x83a\x0C=V[\x94` \x93\x90\x93\x015\x93PPPV[_\x80_``\x84\x86\x03\x12\x15a\x0C\x9FW_\x80\xFD[a\x0C\xA8\x84a\x0C=V[\x92Pa\x0C\xB6` \x85\x01a\x0C=V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x0C\xD6W_\x80\xFD[P5\x91\x90PV[_` \x82\x84\x03\x12\x15a\x0C\xEDW_\x80\xFD[a\x0C\xF6\x82a\x0C=V[\x93\x92PPPV[_\x80_\x80_\x80_`\xE0\x88\x8A\x03\x12\x15a\r\x13W_\x80\xFD[a\r\x1C\x88a\x0C=V[\x96Pa\r*` \x89\x01a\x0C=V[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\rMW_\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[_\x80`@\x83\x85\x03\x12\x15a\r{W_\x80\xFD[a\r\x84\x83a\x0C=V[\x91Pa\r\x92` \x84\x01a\x0C=V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\r\xAFW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r\xE6W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x04'Wa\x04'a\r\xECV[\x80\x82\x01\x80\x82\x11\x15a\x04'Wa\x04'a\r\xECV[_\x80\x83T_`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0E\\W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0E\x94W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[\x81\x80\x15a\x0E\xA8W`\x01\x81\x14a\x0E\xDBWa\x0F\x06V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\x0F\x06V[_\x8A\x81R` \x90 _[\x86\x81\x10\x15a\x0E\xFEW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\x0E\xE5V[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV\xFE\xA2dipfsX\"\x12 t\xA5y\xA07\x1Ag\xD1BT\xC0\x95\xA3za\xE3\x15\xEF\xC7~\xAF\xF2\xEF\xDA\xDF.\x99#\xAE\x84\xCE}dsolcC\0\x08\x18\x003", ); /// The runtime bytecode of the contract, as deployed on the network. /// /// ```text - ///0x6080604052600436106100e15760003560e01c806370a082311161007f578063a9059cbb11610059578063a9059cbb1461027e578063d0e30db01461029e578063d505accf146102a6578063dd62ed3e146102c657600080fd5b806370a082311461020f5780637ecebe001461023c57806395d89b411461026957600080fd5b806323b872dd116100bb57806323b872dd146101745780632e1a7d4d14610194578063313ce567146101b45780633644e515146101fa57600080fd5b806306fdde03146100f5578063095ea7b31461012057806318160ddd1461015057600080fd5b366100f0576100ee6102fe565b005b600080fd5b34801561010157600080fd5b5061010a61033f565b6040516101179190610c03565b60405180910390f35b34801561012c57600080fd5b5061014061013b366004610c99565b6103cd565b6040519015158152602001610117565b34801561015c57600080fd5b5061016660025481565b604051908152602001610117565b34801561018057600080fd5b5061014061018f366004610cc3565b610447565b3480156101a057600080fd5b506100ee6101af366004610cff565b61058b565b3480156101c057600080fd5b506101e87f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610117565b34801561020657600080fd5b506101666105d7565b34801561021b57600080fd5b5061016661022a366004610d18565b60036020526000908152604090205481565b34801561024857600080fd5b50610166610257366004610d18565b60056020526000908152604090205481565b34801561027557600080fd5b5061010a610632565b34801561028a57600080fd5b50610140610299366004610c99565b61063f565b6100ee6102fe565b3480156102b257600080fd5b506100ee6102c1366004610d3a565b6106c4565b3480156102d257600080fd5b506101666102e1366004610dad565b600460209081526000928352604080842090915290825290205481565b61030833346109e8565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b6000805461034c90610de0565b80601f016020809104026020016040519081016040528092919081815260200182805461037890610de0565b80156103c55780601f1061039a576101008083540402835291602001916103c5565b820191906000526020600020905b8154815290600101906020018083116103a857829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104359086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104db576104a98382610e62565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff851660009081526003602052604081208054859290610510908490610e62565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105789087815260200190565b60405180910390a3506001949350505050565b6105953382610a61565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a26105d43382610aef565b50565b60007f0000000000000000000000000000000000000000000000000000000000000000461461060d57610608610b69565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461034c90610de0565b33600090815260036020526040812080548391908390610660908490610e62565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104359086815260200190565b42841015610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161073f6105d7565b73ffffffffffffffffffffffffffffffffffffffff8a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610891573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061090c57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e4552000000000000000000000000000000000000604482015260640161072a565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b80600260008282546109fa9190610e75565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054839290610a96908490610e62565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a55565b600080600080600085875af1905080610b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161072a565b505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051610b9b9190610e88565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60006020808352835180602085015260005b81811015610c3157858101830151858201604001528201610c15565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c9457600080fd5b919050565b60008060408385031215610cac57600080fd5b610cb583610c70565b946020939093013593505050565b600080600060608486031215610cd857600080fd5b610ce184610c70565b9250610cef60208501610c70565b9150604084013590509250925092565b600060208284031215610d1157600080fd5b5035919050565b600060208284031215610d2a57600080fd5b610d3382610c70565b9392505050565b600080600080600080600060e0888a031215610d5557600080fd5b610d5e88610c70565b9650610d6c60208901610c70565b95506040880135945060608801359350608088013560ff81168114610d9057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610dc057600080fd5b610dc983610c70565b9150610dd760208401610c70565b90509250929050565b600181811c90821680610df457607f821691505b602082108103610e2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561044157610441610e33565b8082018082111561044157610441610e33565b60008083548160018260011c91506001831680610ea657607f831692505b60208084108203610ede577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015610ef25760018114610f2557610f52565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610f52565b60008a81526020902060005b86811015610f4a5781548b820152908501908301610f31565b505084890196505b50949897505050505050505056fea264697066735822122041f3d9f7e8c5f845f976ad0a536b2c8f53dbbbdf694d76046e07adc9bc14b6bc64736f6c63430008180033 + ///0x6080604052600436106100dc575f3560e01c806370a082311161007c578063a9059cbb11610057578063a9059cbb1461026c578063d0e30db01461028b578063d505accf14610293578063dd62ed3e146102b2575f80fd5b806370a08231146102025780637ecebe001461022d57806395d89b4114610258575f80fd5b806323b872dd116100b757806323b872dd1461016b5780632e1a7d4d1461018a578063313ce567146101a95780633644e515146101ee575f80fd5b806306fdde03146100ef578063095ea7b31461011957806318160ddd14610148575f80fd5b366100eb576100e96102e8565b005b5f80fd5b3480156100fa575f80fd5b50610103610329565b6040516101109190610bd3565b60405180910390f35b348015610124575f80fd5b50610138610133366004610c65565b6103b4565b6040519015158152602001610110565b348015610153575f80fd5b5061015d60025481565b604051908152602001610110565b348015610176575f80fd5b50610138610185366004610c8d565b61042d565b348015610195575f80fd5b506100e96101a4366004610cc6565b61056d565b3480156101b4575f80fd5b506101dc7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610110565b3480156101f9575f80fd5b5061015d6105b9565b34801561020d575f80fd5b5061015d61021c366004610cdd565b60036020525f908152604090205481565b348015610238575f80fd5b5061015d610247366004610cdd565b60056020525f908152604090205481565b348015610263575f80fd5b50610103610613565b348015610277575f80fd5b50610138610286366004610c65565b610620565b6100e96102e8565b34801561029e575f80fd5b506100e96102ad366004610cfd565b6106a3565b3480156102bd575f80fd5b5061015d6102cc366004610d6a565b600460209081525f928352604080842090915290825290205481565b6102f233346109c1565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b5f805461033590610d9b565b80601f016020809104026020016040519081016040528092919081815260200182805461036190610d9b565b80156103ac5780601f10610383576101008083540402835291602001916103ac565b820191905f5260205f20905b81548152906001019060200180831161038f57829003601f168201915b505050505081565b335f81815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061041b9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104bf5761048e8382610e19565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f90815260036020526040812080548592906104f3908490610e19565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061055a9087815260200190565b60405180910390a3506001949350505050565b6105773382610a38565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a26105b63382610ac4565b50565b5f7f000000000000000000000000000000000000000000000000000000000000000046146105ee576105e9610b3b565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461033590610d9b565b335f90815260036020526040812080548391908390610640908490610e19565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061041b9086815260200190565b42841015610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f600161071d6105b9565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561086b573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108e657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61094c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610709565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b8060025f8282546109d29190610e2c565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526003602052604081208054839290610a6c908490610e19565b90915550506002805482900390556040518181525f9073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a2c565b5f805f805f85875af1905080610b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610709565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051610b6b9190610e3f565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f602080835283518060208501525f5b81811015610bff57858101830151858201604001528201610be3565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c60575f80fd5b919050565b5f8060408385031215610c76575f80fd5b610c7f83610c3d565b946020939093013593505050565b5f805f60608486031215610c9f575f80fd5b610ca884610c3d565b9250610cb660208501610c3d565b9150604084013590509250925092565b5f60208284031215610cd6575f80fd5b5035919050565b5f60208284031215610ced575f80fd5b610cf682610c3d565b9392505050565b5f805f805f805f60e0888a031215610d13575f80fd5b610d1c88610c3d565b9650610d2a60208901610c3d565b95506040880135945060608801359350608088013560ff81168114610d4d575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610d7b575f80fd5b610d8483610c3d565b9150610d9260208401610c3d565b90509250929050565b600181811c90821680610daf57607f821691505b602082108103610de6577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561042757610427610dec565b8082018082111561042757610427610dec565b5f8083545f60018260011c91506001831680610e5c57607f831692505b60208084108203610e94577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b818015610ea85760018114610edb57610f06565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952841515850289019650610f06565b5f8a8152602090205f5b86811015610efe5781548b820152908501908301610ee5565b505084890196505b50949897505050505050505056fea264697066735822122074a579a0371a67d14254c095a37a61e315efc77eaff2efdadf2e9923ae84ce7d64736f6c63430008180033 /// ``` #[rustfmt::skip] #[allow(clippy::all)] pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( - b"`\x80`@R`\x046\x10a\0\xE1W`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0\x7FW\x80c\xA9\x05\x9C\xBB\x11a\0YW\x80c\xA9\x05\x9C\xBB\x14a\x02~W\x80c\xD0\xE3\r\xB0\x14a\x02\x9EW\x80c\xD5\x05\xAC\xCF\x14a\x02\xA6W\x80c\xDDb\xED>\x14a\x02\xC6W`\0\x80\xFD[\x80cp\xA0\x821\x14a\x02\x0FW\x80c~\xCE\xBE\0\x14a\x02=`\0\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\t\x0CWP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\trW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07*V[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16`\0\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[\x80`\x02`\0\x82\x82Ta\t\xFA\x91\x90a\x0EuV[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\0\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01[`@Q\x80\x91\x03\x90\xA3PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16`\0\x90\x81R`\x03` R`@\x81 \x80T\x83\x92\x90a\n\x96\x90\x84\x90a\x0EbV[\x90\x91UPP`\x02\x80T\x82\x90\x03\x90U`@Q\x81\x81R`\0\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90` \x01a\nUV[`\0\x80`\0\x80`\0\x85\x87Z\xF1\x90P\x80a\x0BdW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07*V[PPPV[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\x0B\x9B\x91\x90a\x0E\x88V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\x0C1W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0C\x15V[P`\0`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C\x94W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xACW`\0\x80\xFD[a\x0C\xB5\x83a\x0CpV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0C\xD8W`\0\x80\xFD[a\x0C\xE1\x84a\x0CpV[\x92Pa\x0C\xEF` \x85\x01a\x0CpV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\r\x11W`\0\x80\xFD[P5\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\r*W`\0\x80\xFD[a\r3\x82a\x0CpV[\x93\x92PPPV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\rUW`\0\x80\xFD[a\r^\x88a\x0CpV[\x96Pa\rl` \x89\x01a\x0CpV[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\r\x90W`\0\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a\r\xC0W`\0\x80\xFD[a\r\xC9\x83a\x0CpV[\x91Pa\r\xD7` \x84\x01a\x0CpV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\r\xF4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0E-W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0R`\x11`\x04R`$`\0\xFD[\x81\x81\x03\x81\x81\x11\x15a\x04AWa\x04Aa\x0E3V[\x80\x82\x01\x80\x82\x11\x15a\x04AWa\x04Aa\x0E3V[`\0\x80\x83T\x81`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0E\xA6W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0E\xDEW\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86R`\"`\x04R`$\x86\xFD[\x81\x80\x15a\x0E\xF2W`\x01\x81\x14a\x0F%Wa\x0FRV[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\x0FRV[`\0\x8A\x81R` \x90 `\0[\x86\x81\x10\x15a\x0FJW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\x0F1V[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV\xFE\xA2dipfsX\"\x12 A\xF3\xD9\xF7\xE8\xC5\xF8E\xF9v\xAD\nSk,\x8FS\xDB\xBB\xDFiMv\x04n\x07\xAD\xC9\xBC\x14\xB6\xBCdsolcC\0\x08\x18\x003", + b"`\x80`@R`\x046\x10a\0\xDCW_5`\xE0\x1C\x80cp\xA0\x821\x11a\0|W\x80c\xA9\x05\x9C\xBB\x11a\0WW\x80c\xA9\x05\x9C\xBB\x14a\x02lW\x80c\xD0\xE3\r\xB0\x14a\x02\x8BW\x80c\xD5\x05\xAC\xCF\x14a\x02\x93W\x80c\xDDb\xED>\x14a\x02\xB2W_\x80\xFD[\x80cp\xA0\x821\x14a\x02\x02W\x80c~\xCE\xBE\0\x14a\x02-W\x80c\x95\xD8\x9BA\x14a\x02XW_\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xB7W\x80c#\xB8r\xDD\x14a\x01kW\x80c.\x1A}M\x14a\x01\x8AW\x80c1<\xE5g\x14a\x01\xA9W\x80c6D\xE5\x15\x14a\x01\xEEW_\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\x19W\x80c\x18\x16\r\xDD\x14a\x01HW_\x80\xFD[6a\0\xEBWa\0\xE9a\x02\xE8V[\0[_\x80\xFD[4\x80\x15a\0\xFAW_\x80\xFD[Pa\x01\x03a\x03)V[`@Qa\x01\x10\x91\x90a\x0B\xD3V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01$W_\x80\xFD[Pa\x018a\x0136`\x04a\x0CeV[a\x03\xB4V[`@Q\x90\x15\x15\x81R` \x01a\x01\x10V[4\x80\x15a\x01SW_\x80\xFD[Pa\x01]`\x02T\x81V[`@Q\x90\x81R` \x01a\x01\x10V[4\x80\x15a\x01vW_\x80\xFD[Pa\x018a\x01\x856`\x04a\x0C\x8DV[a\x04-V[4\x80\x15a\x01\x95W_\x80\xFD[Pa\0\xE9a\x01\xA46`\x04a\x0C\xC6V[a\x05mV[4\x80\x15a\x01\xB4W_\x80\xFD[Pa\x01\xDC\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\x01\x10V[4\x80\x15a\x01\xF9W_\x80\xFD[Pa\x01]a\x05\xB9V[4\x80\x15a\x02\rW_\x80\xFD[Pa\x01]a\x02\x1C6`\x04a\x0C\xDDV[`\x03` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x028W_\x80\xFD[Pa\x01]a\x02G6`\x04a\x0C\xDDV[`\x05` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x02cW_\x80\xFD[Pa\x01\x03a\x06\x13V[4\x80\x15a\x02wW_\x80\xFD[Pa\x018a\x02\x866`\x04a\x0CeV[a\x06 V[a\0\xE9a\x02\xE8V[4\x80\x15a\x02\x9EW_\x80\xFD[Pa\0\xE9a\x02\xAD6`\x04a\x0C\xFDV[a\x06\xA3V[4\x80\x15a\x02\xBDW_\x80\xFD[Pa\x01]a\x02\xCC6`\x04a\rjV[`\x04` \x90\x81R_\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x02\xF234a\t\xC1V[`@Q4\x81R3\x90\x7F\xE1\xFF\xFC\xC4\x92=\x04\xB5Y\xF4\xD2\x9A\x8B\xFCl\xDA\x04\xEB[\r=_\xFD[PP`@Q\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0\x01Q\x91PPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x15\x80\x15\x90a\x08\xE6WP\x87s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x81s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x14[a\tLW`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x0E`$\x82\x01R\x7FINVALID_SIGNER\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\tV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x8A\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x89\x90UQ\x88\x81R\x91\x92\x8A\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPV[\x80`\x02_\x82\x82Ta\t\xD2\x91\x90a\x0E,V[\x90\x91UPPs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x80T\x86\x01\x90UQ\x84\x81R\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x91\x01[`@Q\x80\x91\x03\x90\xA3PPV[s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16_\x90\x81R`\x03` R`@\x81 \x80T\x83\x92\x90a\nl\x90\x84\x90a\x0E\x19V[\x90\x91UPP`\x02\x80T\x82\x90\x03\x90U`@Q\x81\x81R_\x90s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x84\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90` \x01a\n,V[_\x80_\x80_\x85\x87Z\xF1\x90P\x80a\x0B6W`@Q\x7F\x08\xC3y\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R` `\x04\x82\x01R`\x13`$\x82\x01R\x7FETH_TRANSFER_FAILED\0\0\0\0\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x07\tV[PPPV[_\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F_`@Qa\x0Bk\x91\x90a\x0E?V[`@\x80Q\x91\x82\x90\x03\x82 ` \x83\x01\x93\x90\x93R\x81\x01\x91\x90\x91R\x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[_` \x80\x83R\x83Q\x80` \x85\x01R_[\x81\x81\x10\x15a\x0B\xFFW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x0B\xE3V[P_`@\x82\x86\x01\x01R`@\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xE0`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x0C`W_\x80\xFD[\x91\x90PV[_\x80`@\x83\x85\x03\x12\x15a\x0CvW_\x80\xFD[a\x0C\x7F\x83a\x0C=V[\x94` \x93\x90\x93\x015\x93PPPV[_\x80_``\x84\x86\x03\x12\x15a\x0C\x9FW_\x80\xFD[a\x0C\xA8\x84a\x0C=V[\x92Pa\x0C\xB6` \x85\x01a\x0C=V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[_` \x82\x84\x03\x12\x15a\x0C\xD6W_\x80\xFD[P5\x91\x90PV[_` \x82\x84\x03\x12\x15a\x0C\xEDW_\x80\xFD[a\x0C\xF6\x82a\x0C=V[\x93\x92PPPV[_\x80_\x80_\x80_`\xE0\x88\x8A\x03\x12\x15a\r\x13W_\x80\xFD[a\r\x1C\x88a\x0C=V[\x96Pa\r*` \x89\x01a\x0C=V[\x95P`@\x88\x015\x94P``\x88\x015\x93P`\x80\x88\x015`\xFF\x81\x16\x81\x14a\rMW_\x80\xFD[\x96\x99\x95\x98P\x93\x96\x92\x95\x94`\xA0\x84\x015\x94P`\xC0\x90\x93\x015\x92\x91PPV[_\x80`@\x83\x85\x03\x12\x15a\r{W_\x80\xFD[a\r\x84\x83a\x0C=V[\x91Pa\r\x92` \x84\x01a\x0C=V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\r\xAFW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r\xE6W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[P\x91\x90PV[\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x04'Wa\x04'a\r\xECV[\x80\x82\x01\x80\x82\x11\x15a\x04'Wa\x04'a\r\xECV[_\x80\x83T_`\x01\x82`\x01\x1C\x91P`\x01\x83\x16\x80a\x0E\\W`\x7F\x83\x16\x92P[` \x80\x84\x10\x82\x03a\x0E\x94W\x7FNH{q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_R`\"`\x04R`$_\xFD[\x81\x80\x15a\x0E\xA8W`\x01\x81\x14a\x0E\xDBWa\x0F\x06V[\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x86\x16\x89R\x84\x15\x15\x85\x02\x89\x01\x96Pa\x0F\x06V[_\x8A\x81R` \x90 _[\x86\x81\x10\x15a\x0E\xFEW\x81T\x8B\x82\x01R\x90\x85\x01\x90\x83\x01a\x0E\xE5V[PP\x84\x89\x01\x96P[P\x94\x98\x97PPPPPPPPV\xFE\xA2dipfsX\"\x12 t\xA5y\xA07\x1Ag\xD1BT\xC0\x95\xA3za\xE3\x15\xEF\xC7~\xAF\xF2\xEF\xDA\xDF.\x99#\xAE\x84\xCE}dsolcC\0\x08\x18\x003", ); /**Event with signature `Approval(address,address,uint256)` and selector `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925`. ```solidity event Approval(address indexed owner, address indexed spender, uint256 amount); ```*/ - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] #[derive(Clone)] pub struct Approval { #[allow(missing_docs)] @@ -427,9 +438,14 @@ event Approval(address indexed owner, address indexed spender, uint256 amount); #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, #[allow(missing_docs)] - pub amount: alloy::sol_types::private::U256, + pub amount: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; #[automatically_derived] @@ -492,6 +508,21 @@ event Approval(address indexed owner, address indexed spender, uint256 amount); } } #[inline] + fn check_signature( + topics: &::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( ::RustType, + ) -> alloy_sol_types::Result<()> { + if topics.0 != Self::SIGNATURE_HASH { + return Err( + alloy_sol_types::Error::invalid_event_signature_hash( + Self::SIGNATURE, + topics.0, + Self::SIGNATURE_HASH, + ), + ); + } + Ok(()) + } + #[inline] fn tokenize_body(&self) -> Self::DataToken<'_> { ( , } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1022,19 +1134,27 @@ function DOMAIN_SEPARATOR() external view returns (bytes32); ```solidity function allowance(address, address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub _1: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`allowance(address,address)`](allowanceCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct allowanceReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1078,7 +1198,9 @@ function allowance(address, address) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1154,19 +1276,27 @@ function allowance(address, address) external view returns (uint256); ```solidity function approve(address spender, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveCall { + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`approve(address,uint256)`](approveCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct approveReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1178,7 +1308,7 @@ function approve(address spender, uint256 amount) external returns (bool); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -1289,18 +1419,25 @@ function approve(address spender, uint256 amount) external returns (bool); ```solidity function balanceOf(address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`balanceOf(address)`](balanceOfCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct balanceOfReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1338,7 +1475,9 @@ function balanceOf(address) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1408,16 +1547,22 @@ function balanceOf(address) external view returns (uint256); ```solidity function decimals() external view returns (uint8); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsCall {} ///Container type for the return parameters of the [`decimals()`](decimalsCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct decimalsReturn { + #[allow(missing_docs)] pub _0: u8, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1521,14 +1666,19 @@ function decimals() external view returns (uint8); ```solidity function deposit() external payable; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositCall {} ///Container type for the return parameters of the [`deposit()`](depositCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct depositReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1632,16 +1782,22 @@ function deposit() external payable; ```solidity function name() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameCall {} ///Container type for the return parameters of the [`name()`](nameCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct nameReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1745,18 +1901,25 @@ function name() external view returns (string memory); ```solidity function nonces(address) external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct noncesCall { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::Address, } ///Container type for the return parameters of the [`nonces(address)`](noncesCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct noncesReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1794,7 +1957,9 @@ function nonces(address) external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -1864,22 +2029,34 @@ function nonces(address) external view returns (uint256); ```solidity function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitCall { + #[allow(missing_docs)] pub owner: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub spender: alloy::sol_types::private::Address, - pub value: alloy::sol_types::private::U256, - pub deadline: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub value: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] pub v: u8, + #[allow(missing_docs)] pub r: alloy::sol_types::private::FixedBytes<32>, + #[allow(missing_docs)] pub s: alloy::sol_types::private::FixedBytes<32>, } ///Container type for the return parameters of the [`permit(address,address,uint256,uint256,uint8,bytes32,bytes32)`](permitCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct permitReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -1897,8 +2074,8 @@ function permit(address owner, address spender, uint256 value, uint256 deadline, type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::primitives::aliases::U256, u8, alloy::sol_types::private::FixedBytes<32>, alloy::sol_types::private::FixedBytes<32>, @@ -2045,16 +2222,22 @@ function permit(address owner, address spender, uint256 value, uint256 deadline, ```solidity function symbol() external view returns (string memory); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolCall {} ///Container type for the return parameters of the [`symbol()`](symbolCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct symbolReturn { + #[allow(missing_docs)] pub _0: alloy::sol_types::private::String, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2158,16 +2341,22 @@ function symbol() external view returns (string memory); ```solidity function totalSupply() external view returns (uint256); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyCall {} ///Container type for the return parameters of the [`totalSupply()`](totalSupplyCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct totalSupplyReturn { - pub _0: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub _0: alloy::sol_types::private::primitives::aliases::U256, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2205,7 +2394,9 @@ function totalSupply() external view returns (uint256); #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -2271,19 +2462,27 @@ function totalSupply() external view returns (uint256); ```solidity function transfer(address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferCall { + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`transfer(address,uint256)`](transferCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2295,7 +2494,7 @@ function transfer(address to, uint256 amount) external returns (bool); #[doc(hidden)] type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2406,20 +2605,29 @@ function transfer(address to, uint256 amount) external returns (bool); ```solidity function transferFrom(address from, address to, uint256 amount) external returns (bool); ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromCall { + #[allow(missing_docs)] pub from: alloy::sol_types::private::Address, + #[allow(missing_docs)] pub to: alloy::sol_types::private::Address, - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`transferFrom(address,address,uint256)`](transferFromCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct transferFromReturn { + #[allow(missing_docs)] pub _0: bool, } - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { @@ -2433,7 +2641,7 @@ function transferFrom(address from, address to, uint256 amount) external returns type UnderlyingRustTuple<'a> = ( alloy::sol_types::private::Address, alloy::sol_types::private::Address, - alloy::sol_types::private::U256, + alloy::sol_types::private::primitives::aliases::U256, ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] @@ -2549,23 +2757,31 @@ function transferFrom(address from, address to, uint256 amount) external returns ```solidity function withdraw(uint256 amount) external; ```*/ - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawCall { - pub amount: alloy::sol_types::private::U256, + #[allow(missing_docs)] + pub amount: alloy::sol_types::private::primitives::aliases::U256, } ///Container type for the return parameters of the [`withdraw(uint256)`](withdrawCall) function. - #[allow(non_camel_case_types, non_snake_case)] + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] #[derive(Clone)] pub struct withdrawReturn {} - #[allow(non_camel_case_types, non_snake_case, clippy::style)] + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] const _: () = { use alloy::sol_types as alloy_sol_types; { #[doc(hidden)] type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,); #[doc(hidden)] - type UnderlyingRustTuple<'a> = (alloy::sol_types::private::U256,); + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + ); #[cfg(test)] #[allow(dead_code, unreachable_patterns)] fn _type_assertion( @@ -2664,19 +2880,33 @@ function withdraw(uint256 amount) external; }; ///Container for all the [`WETH`](self) function calls. pub enum WETHCalls { + #[allow(missing_docs)] DOMAIN_SEPARATOR(DOMAIN_SEPARATORCall), + #[allow(missing_docs)] allowance(allowanceCall), + #[allow(missing_docs)] approve(approveCall), + #[allow(missing_docs)] balanceOf(balanceOfCall), + #[allow(missing_docs)] decimals(decimalsCall), + #[allow(missing_docs)] deposit(depositCall), + #[allow(missing_docs)] name(nameCall), + #[allow(missing_docs)] nonces(noncesCall), + #[allow(missing_docs)] permit(permitCall), + #[allow(missing_docs)] symbol(symbolCall), + #[allow(missing_docs)] totalSupply(totalSupplyCall), + #[allow(missing_docs)] transfer(transferCall), + #[allow(missing_docs)] transferFrom(transferFromCall), + #[allow(missing_docs)] withdraw(withdrawCall), } #[automatically_derived] @@ -2747,7 +2977,7 @@ function withdraw(uint256 amount) external; Self::SELECTORS.binary_search(&selector).is_ok() } #[inline] - #[allow(unsafe_code, non_snake_case)] + #[allow(non_snake_case)] fn abi_decode_raw( selector: [u8; 4], data: &[u8], @@ -2948,7 +3178,7 @@ function withdraw(uint256 amount) external; ), ); }; - (unsafe { DECODE_SHIMS.get_unchecked(idx) })(data, validate) + DECODE_SHIMS[idx](data, validate) } #[inline] fn abi_encoded_size(&self) -> usize { @@ -3077,9 +3307,13 @@ function withdraw(uint256 amount) external; } ///Container for all the [`WETH`](self) events. pub enum WETHEvents { + #[allow(missing_docs)] Approval(Approval), + #[allow(missing_docs)] Deposit(Deposit), + #[allow(missing_docs)] Transfer(Transfer), + #[allow(missing_docs)] Withdrawal(Withdrawal), } #[automatically_derived] @@ -3499,7 +3733,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn approve( &self, spender: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&approveCall { spender, amount }) } @@ -3536,8 +3770,8 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, owner: alloy::sol_types::private::Address, spender: alloy::sol_types::private::Address, - value: alloy::sol_types::private::U256, - deadline: alloy::sol_types::private::U256, + value: alloy::sol_types::private::primitives::aliases::U256, + deadline: alloy::sol_types::private::primitives::aliases::U256, v: u8, r: alloy::sol_types::private::FixedBytes<32>, s: alloy::sol_types::private::FixedBytes<32>, @@ -3568,7 +3802,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ pub fn transfer( &self, to: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&transferCall { to, amount }) } @@ -3577,7 +3811,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ &self, from: alloy::sol_types::private::Address, to: alloy::sol_types::private::Address, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder( &transferFromCall { @@ -3590,7 +3824,7 @@ the bytecode concatenated with the constructor's ABI-encoded arguments.*/ ///Creates a new call builder for the [`withdraw`] function. pub fn withdraw( &self, - amount: alloy::sol_types::private::U256, + amount: alloy::sol_types::private::primitives::aliases::U256, ) -> alloy_contract::SolCallBuilder { self.call_builder(&withdrawCall { amount }) } From 89e440fff9708afd56f77aed7fc1809d487c6970 Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Tue, 18 Feb 2025 15:46:26 -0800 Subject: [PATCH 06/15] ur update --- src/collectors/uniswapx_route_collector.rs | 4 +- src/executors/protect_executor.rs | 4 +- src/main.rs | 9 ++-- src/strategies/dutchv3_strategy.rs | 8 ++- src/strategies/shared.rs | 60 +++++++--------------- src/strategies/uniswapx_strategy.rs | 12 ++--- 6 files changed, 35 insertions(+), 62 deletions(-) diff --git a/src/collectors/uniswapx_route_collector.rs b/src/collectors/uniswapx_route_collector.rs index 8876541..4c1f14c 100644 --- a/src/collectors/uniswapx_route_collector.rs +++ b/src/collectors/uniswapx_route_collector.rs @@ -194,9 +194,9 @@ impl UniswapXRouteCollector { amount: params.amount, recipient: params.recipient, slippage_tolerance: SLIPPAGE_TOLERANCE.to_string(), - enable_universal_router: false, + enable_universal_router: true, deadline: DEADLINE, - protocols: "v2,v3,mixed".to_string(), + protocols: "v2,v3,v4,mixed".to_string(), }; let query_string = serde_qs::to_string(&query).unwrap(); diff --git a/src/executors/protect_executor.rs b/src/executors/protect_executor.rs index 991d5a6..9c7f056 100644 --- a/src/executors/protect_executor.rs +++ b/src/executors/protect_executor.rs @@ -150,9 +150,7 @@ impl Executor for ProtectExecutor { // gas price at which we'd break even, meaning 100% of profit goes to validator let breakeven_gas_price = gas_bid_info.total_profit / U128::from(gas_usage); // gas price corresponding to bid percentage - bid_gas_price = breakeven_gas_price - * gas_bid_info.bid_percentage - / U128::from(100); + bid_gas_price = breakeven_gas_price * gas_bid_info.bid_percentage / U128::from(100); } else { bid_gas_price = self .client diff --git a/src/main.rs b/src/main.rs index 0973144..0c1af10 100644 --- a/src/main.rs +++ b/src/main.rs @@ -113,8 +113,11 @@ async fn main() -> Result<()> { // Set up ethers provider. let chain_id = args.chain_id; let provider = DynProvider::::new( - ProviderBuilder::new().network::().on_ws(WsConnect::new(args.wss.as_str())).await? - ); + ProviderBuilder::new() + .network::() + .on_ws(WsConnect::new(args.wss.as_str())) + .await?, + ); let mut key_store = Arc::new(KeyStore::new()); @@ -145,7 +148,7 @@ async fn main() -> Result<()> { } } else { let pk = args.private_key.clone().unwrap(); - let wallet: PrivateKeySigner = pk.parse().expect("can not parse private key"); + let wallet: PrivateKeySigner = pk.parse().expect("can not parse private key"); let address = wallet.address(); Arc::make_mut(&mut key_store) .add_key(hex::encode(address), pk) diff --git a/src/strategies/dutchv3_strategy.rs b/src/strategies/dutchv3_strategy.rs index 2c39a68..4dfdf12 100644 --- a/src/strategies/dutchv3_strategy.rs +++ b/src/strategies/dutchv3_strategy.rs @@ -260,11 +260,9 @@ impl UniswapXDutchV3Fill { self.processing_orders.len(), self.done_orders.len() ); - self.handle_fills() - .await - .unwrap_or_else(|e| { - error!("Error handling fills: {}", e); - }); + self.handle_fills().await.unwrap_or_else(|e| { + error!("Error handling fills: {}", e); + }); self.update_open_orders(); self.prune_done_orders(); diff --git a/src/strategies/shared.rs b/src/strategies/shared.rs index 53d04fd..125ae7f 100644 --- a/src/strategies/shared.rs +++ b/src/strategies/shared.rs @@ -1,18 +1,13 @@ use crate::collectors::uniswapx_route_collector::RoutedOrder; use alloy::{ - dyn_abi::{DynSolType, DynSolValue}, - network::{AnyNetwork, TransactionBuilder}, - primitives::{Address, U256}, - providers::{DynProvider, Provider}, - rpc::types::TransactionRequest, - serde::WithOtherFields, - sol, + dyn_abi::{DynSolType, DynSolValue}, hex, network::{AnyNetwork, TransactionBuilder}, primitives::{Address, U256}, providers::{DynProvider, Provider}, rpc::types::TransactionRequest, serde::WithOtherFields, sol }; use alloy_primitives::Bytes; use anyhow::Result; use async_trait::async_trait; use bindings_uniswapx::{ - basereactor::BaseReactor::SignedOrder, erc20::ERC20, swaprouter02executor::SwapRouter02Executor, + basereactor::BaseReactor::SignedOrder, erc20::ERC20, + universalrouterexecutor::UniversalRouterExecutor }; use std::sync::Arc; use std::{ @@ -21,7 +16,7 @@ use std::{ }; const REACTOR_ADDRESS: &str = "0x00000011F84B9aa48e5f8aA8B9897600006289Be"; -const SWAPROUTER_02_ADDRESS: &str = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"; +const PERMIT2_ADDRESS: &str = "0x000000000022D473030F116dDEE9F6B43aC78BA3"; pub const WETH_ADDRESS: &str = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; const ARBITRUM_GAS_PRECOMPILE: &str = "0x000000000000000000000000000000000000006C"; @@ -55,50 +50,28 @@ pub trait UniswapXStrategy { ]); let chain_id = client.get_chain_id().await?; let fill_contract = - SwapRouter02Executor::new(Address::from_str(executor_address)?, client.clone()); + UniversalRouterExecutor::new(Address::from_str(executor_address)?, client.clone()); let token_in = Address::from_str(&request.token_in)?; let token_out = Address::from_str(&request.token_out)?; - let swaprouter_02_approval = self - .get_tokens_to_approve( - client.clone(), - token_in, - executor_address, - SWAPROUTER_02_ADDRESS, - ) + let permit2_approval = self + .get_tokens_to_approve(client.clone(), token_in, executor_address, PERMIT2_ADDRESS) .await?; let reactor_approval = self .get_tokens_to_approve(client.clone(), token_out, executor_address, REACTOR_ADDRESS) .await?; - // Strip off function selector - let multicall_bytes = &route.method_parameters.calldata[10..]; - - // Decode multicall into [Uint256, bytes[]] (deadline, multicallData) - let decoded_multicall_bytes = multicall_type.abi_decode( - &Bytes::from_str(multicall_bytes).expect("Failed to decode multicall bytes"), - ); - - let decoded_multicall_bytes = match decoded_multicall_bytes { - Ok(data) => { - if let DynSolValue::Tuple(values) = data { - values[1].clone() - } else { - return Err(anyhow::anyhow!("Failed to decode multicall bytes")); - } - } - Err(e) => { - return Err(anyhow::anyhow!("Failed to decode multicall bytes: {}", e)); - } - }; + let execute_bytes = &route.method_parameters.calldata; + let encoded_execute_bytes = hex::decode(&execute_bytes[2..]).expect("Failed to decode hex"); + // abi encode as [tokens to approve to swap router 02, tokens to approve to reactor, multicall data] // [address[], address[], bytes[]] let calldata = DynSolValue::Tuple(vec![ DynSolValue::Array( - swaprouter_02_approval + permit2_approval .iter() .map(|a| DynSolValue::Address(a.clone())) .collect(), @@ -109,12 +82,12 @@ pub trait UniswapXStrategy { .map(|a| DynSolValue::Address(a.clone())) .collect(), ), - DynSolValue::Array(vec![decoded_multicall_bytes]), + DynSolValue::Array(vec![DynSolValue::Bytes(encoded_execute_bytes)]), ]); let encoded_calldata = calldata.abi_encode(); - let orders: Vec = signed_orders + let orders: Vec = signed_orders .into_iter() - .map(|order| SwapRouter02Executor::SignedOrder { + .map(|order| UniversalRouterExecutor::SignedOrder { order: order.order, sig: order.sig, }) @@ -177,7 +150,10 @@ pub trait UniswapXStrategy { /// Get the minimum gas price on Arbitrum /// https://docs.arbitrum.io/build-decentralized-apps/precompiles/reference#arbgasinfo - async fn get_arbitrum_min_gas_price(&self, client: Arc>) -> Result { + async fn get_arbitrum_min_gas_price( + &self, + client: Arc>, + ) -> Result { let precompile_address = ARBITRUM_GAS_PRECOMPILE.parse::

()?; let gas_precompile = GasPrecompileContract::new(precompile_address, client.clone()); let gas_info = gas_precompile.getMinimumGasPrice().call().await?._0; diff --git a/src/strategies/uniswapx_strategy.rs b/src/strategies/uniswapx_strategy.rs index df374ee..f2694b6 100644 --- a/src/strategies/uniswapx_strategy.rs +++ b/src/strategies/uniswapx_strategy.rs @@ -25,10 +25,10 @@ use artemis_core::types::Strategy; use async_trait::async_trait; use aws_sdk_cloudwatch::Client as CloudWatchClient; use bindings_uniswapx::basereactor::BaseReactor::SignedOrder; +use std::error::Error; use std::str::FromStr; use std::sync::Arc; use std::{collections::HashMap, fmt::Debug}; -use std::error::Error; use tokio::sync::mpsc::{Receiver, Sender}; use tracing::{error, info, warn}; use uniswapx_rs::order::{Order, OrderResolution, V2DutchOrder}; @@ -161,12 +161,10 @@ impl UniswapXUniswapFill { amount_out_required, profit ); - let signed_orders = self - .get_signed_orders(orders.clone()) - .unwrap_or_else(|e| { - error!("Error getting signed orders: {}", e); - vec![] - }); + let signed_orders = self.get_signed_orders(orders.clone()).unwrap_or_else(|e| { + error!("Error getting signed orders: {}", e); + vec![] + }); let fill_tx_request = self .build_fill( From aedc03833b21a943d8b1044f49d66ce723dce7ac Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Tue, 18 Feb 2025 15:49:09 -0800 Subject: [PATCH 07/15] cargo fmt --- src/collectors/block_collector.rs | 4 +--- src/strategies/shared.rs | 22 +++++++++------------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/collectors/block_collector.rs b/src/collectors/block_collector.rs index 2b99613..d8799b4 100644 --- a/src/collectors/block_collector.rs +++ b/src/collectors/block_collector.rs @@ -6,12 +6,10 @@ use alloy::{ use anyhow::Result; use artemis_core::types::{Collector, CollectorStream}; use async_trait::async_trait; -use std::{sync::Arc, time::Duration}; +use std::sync::Arc; use tokio_stream::StreamExt; use tracing::{error, info}; -const BLOCK_POLLING_INTERVAL: Duration = Duration::from_millis(250); - /// A collector that listens for new blocks, and generates a stream of /// [events](NewBlock) which contain the block number and hash. pub struct BlockCollector { diff --git a/src/strategies/shared.rs b/src/strategies/shared.rs index 125ae7f..7f07215 100644 --- a/src/strategies/shared.rs +++ b/src/strategies/shared.rs @@ -1,13 +1,20 @@ use crate::collectors::uniswapx_route_collector::RoutedOrder; use alloy::{ - dyn_abi::{DynSolType, DynSolValue}, hex, network::{AnyNetwork, TransactionBuilder}, primitives::{Address, U256}, providers::{DynProvider, Provider}, rpc::types::TransactionRequest, serde::WithOtherFields, sol + dyn_abi::DynSolValue, + hex, + network::{AnyNetwork, TransactionBuilder}, + primitives::{Address, U256}, + providers::{DynProvider, Provider}, + rpc::types::TransactionRequest, + serde::WithOtherFields, + sol, }; use alloy_primitives::Bytes; use anyhow::Result; use async_trait::async_trait; use bindings_uniswapx::{ basereactor::BaseReactor::SignedOrder, erc20::ERC20, - universalrouterexecutor::UniversalRouterExecutor + universalrouterexecutor::UniversalRouterExecutor, }; use std::sync::Arc; use std::{ @@ -38,16 +45,6 @@ pub trait UniswapXStrategy { signed_orders: Vec, RoutedOrder { request, route, .. }: &RoutedOrder, ) -> Result> { - let multicall_type: DynSolType = DynSolType::Tuple(vec![ - DynSolType::Uint(256), - DynSolType::Array(Box::new(DynSolType::Bytes)), - ]); - - let calldata_type: DynSolType = DynSolType::Tuple(vec![ - DynSolType::Array(Box::new(DynSolType::Address)), - DynSolType::Array(Box::new(DynSolType::Address)), - DynSolType::Array(Box::new(DynSolType::Bytes)), - ]); let chain_id = client.get_chain_id().await?; let fill_contract = UniversalRouterExecutor::new(Address::from_str(executor_address)?, client.clone()); @@ -66,7 +63,6 @@ pub trait UniswapXStrategy { let execute_bytes = &route.method_parameters.calldata; let encoded_execute_bytes = hex::decode(&execute_bytes[2..]).expect("Failed to decode hex"); - // abi encode as [tokens to approve to swap router 02, tokens to approve to reactor, multicall data] // [address[], address[], bytes[]] let calldata = DynSolValue::Tuple(vec![ From be488b81d91d284f0b56c24cf767b93f42b5f0db Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Tue, 18 Feb 2025 15:55:39 -0800 Subject: [PATCH 08/15] remove comment --- src/strategies/priority_strategy.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/strategies/priority_strategy.rs b/src/strategies/priority_strategy.rs index 348e563..eeafa5d 100644 --- a/src/strategies/priority_strategy.rs +++ b/src/strategies/priority_strategy.rs @@ -90,7 +90,7 @@ impl ExecutionMetadata { #[derive(Debug)] #[allow(dead_code)] pub struct UniswapXPriorityFill { - /// Ethers client. + /// Alloy DynProvider client. client: Arc>, // AWS Cloudwatch CLient for metrics propagation cloudwatch_client: Option>, @@ -491,8 +491,6 @@ impl UniswapXPriorityFill { quote, amount_out_required, order_hash: request.orders[0].hash.clone(), - // Conversion between alloy and ethers.rs types - // TODO: fully migrate to alloy target_block: target_block.map(|b| U64::from(b)), } }) From 260173726b38baea5388b5193357a14931182d26 Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Tue, 18 Feb 2025 15:58:32 -0800 Subject: [PATCH 09/15] add missing binding file --- .../bindings-uniswapx/src/iuniversalrouter.rs | 1100 +++++++++++++++++ 1 file changed, 1100 insertions(+) create mode 100644 crates/bindings-uniswapx/src/iuniversalrouter.rs diff --git a/crates/bindings-uniswapx/src/iuniversalrouter.rs b/crates/bindings-uniswapx/src/iuniversalrouter.rs new file mode 100644 index 0000000..6a5f92b --- /dev/null +++ b/crates/bindings-uniswapx/src/iuniversalrouter.rs @@ -0,0 +1,1100 @@ +/** + +Generated by the following Solidity interface... +```solidity +interface IUniversalRouter { + error ETHNotAccepted(); + error ExecutionFailed(uint256 commandIndex, bytes message); + error InvalidEthSender(); + error LengthMismatch(); + error TransactionDeadlinePassed(); + + function execute(bytes memory commands, bytes[] memory inputs, uint256 deadline) external payable; +} +``` + +...which was generated by the following JSON ABI: +```json +[ + { + "type": "function", + "name": "execute", + "inputs": [ + { + "name": "commands", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "inputs", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "deadline", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "error", + "name": "ETHNotAccepted", + "inputs": [] + }, + { + "type": "error", + "name": "ExecutionFailed", + "inputs": [ + { + "name": "commandIndex", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "message", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "type": "error", + "name": "InvalidEthSender", + "inputs": [] + }, + { + "type": "error", + "name": "LengthMismatch", + "inputs": [] + }, + { + "type": "error", + "name": "TransactionDeadlinePassed", + "inputs": [] + } +] +```*/ +#[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style, + clippy::empty_structs_with_brackets +)] +pub mod IUniversalRouter { + use super::*; + use alloy::sol_types as alloy_sol_types; + /// The creation / init bytecode of the contract. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /// The runtime bytecode of the contract, as deployed on the network. + /// + /// ```text + ///0x + /// ``` + #[rustfmt::skip] + #[allow(clippy::all)] + pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static( + b"", + ); + /**Custom error with signature `ETHNotAccepted()` and selector `0x1231ae40`. +```solidity +error ETHNotAccepted(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ETHNotAccepted {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ETHNotAccepted) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ETHNotAccepted { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ETHNotAccepted { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ETHNotAccepted()"; + const SELECTOR: [u8; 4] = [18u8, 49u8, 174u8, 64u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `ExecutionFailed(uint256,bytes)` and selector `0x2c4029e9`. +```solidity +error ExecutionFailed(uint256 commandIndex, bytes message); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct ExecutionFailed { + #[allow(missing_docs)] + pub commandIndex: alloy::sol_types::private::primitives::aliases::U256, + #[allow(missing_docs)] + pub message: alloy::sol_types::private::Bytes, + } + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Uint<256>, + alloy::sol_types::sol_data::Bytes, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::primitives::aliases::U256, + alloy::sol_types::private::Bytes, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: ExecutionFailed) -> Self { + (value.commandIndex, value.message) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for ExecutionFailed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commandIndex: tuple.0, + message: tuple.1, + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for ExecutionFailed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "ExecutionFailed(uint256,bytes)"; + const SELECTOR: [u8; 4] = [44u8, 64u8, 41u8, 233u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + as alloy_sol_types::SolType>::tokenize(&self.commandIndex), + ::tokenize( + &self.message, + ), + ) + } + } + }; + /**Custom error with signature `InvalidEthSender()` and selector `0x38bbd576`. +```solidity +error InvalidEthSender(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct InvalidEthSender {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: InvalidEthSender) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for InvalidEthSender { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for InvalidEthSender { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "InvalidEthSender()"; + const SELECTOR: [u8; 4] = [56u8, 187u8, 213u8, 118u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `LengthMismatch()` and selector `0xff633a38`. +```solidity +error LengthMismatch(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct LengthMismatch {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: LengthMismatch) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for LengthMismatch { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for LengthMismatch { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "LengthMismatch()"; + const SELECTOR: [u8; 4] = [255u8, 99u8, 58u8, 56u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Custom error with signature `TransactionDeadlinePassed()` and selector `0x5bf6f916`. +```solidity +error TransactionDeadlinePassed(); +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct TransactionDeadlinePassed {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From + for UnderlyingRustTuple<'_> { + fn from(value: TransactionDeadlinePassed) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> + for TransactionDeadlinePassed { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + #[automatically_derived] + impl alloy_sol_types::SolError for TransactionDeadlinePassed { + type Parameters<'a> = UnderlyingSolTuple<'a>; + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "TransactionDeadlinePassed()"; + const SELECTOR: [u8; 4] = [91u8, 246u8, 249u8, 22u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + () + } + } + }; + /**Function with signature `execute(bytes,bytes[],uint256)` and selector `0x3593564c`. +```solidity +function execute(bytes memory commands, bytes[] memory inputs, uint256 deadline) external payable; +```*/ + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct executeCall { + #[allow(missing_docs)] + pub commands: alloy::sol_types::private::Bytes, + #[allow(missing_docs)] + pub inputs: alloy::sol_types::private::Vec, + #[allow(missing_docs)] + pub deadline: alloy::sol_types::private::primitives::aliases::U256, + } + ///Container type for the return parameters of the [`execute(bytes,bytes[],uint256)`](executeCall) function. + #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)] + #[derive(Clone)] + pub struct executeReturn {} + #[allow( + non_camel_case_types, + non_snake_case, + clippy::pub_underscore_fields, + clippy::style + )] + const _: () = { + use alloy::sol_types as alloy_sol_types; + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Uint<256>, + ); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = ( + alloy::sol_types::private::Bytes, + alloy::sol_types::private::Vec, + alloy::sol_types::private::primitives::aliases::U256, + ); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeCall) -> Self { + (value.commands, value.inputs, value.deadline) + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeCall { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self { + commands: tuple.0, + inputs: tuple.1, + deadline: tuple.2, + } + } + } + } + { + #[doc(hidden)] + type UnderlyingSolTuple<'a> = (); + #[doc(hidden)] + type UnderlyingRustTuple<'a> = (); + #[cfg(test)] + #[allow(dead_code, unreachable_patterns)] + fn _type_assertion( + _t: alloy_sol_types::private::AssertTypeEq, + ) { + match _t { + alloy_sol_types::private::AssertTypeEq::< + ::RustType, + >(_) => {} + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From for UnderlyingRustTuple<'_> { + fn from(value: executeReturn) -> Self { + () + } + } + #[automatically_derived] + #[doc(hidden)] + impl ::core::convert::From> for executeReturn { + fn from(tuple: UnderlyingRustTuple<'_>) -> Self { + Self {} + } + } + } + #[automatically_derived] + impl alloy_sol_types::SolCall for executeCall { + type Parameters<'a> = ( + alloy::sol_types::sol_data::Bytes, + alloy::sol_types::sol_data::Array, + alloy::sol_types::sol_data::Uint<256>, + ); + type Token<'a> = as alloy_sol_types::SolType>::Token<'a>; + type Return = executeReturn; + type ReturnTuple<'a> = (); + type ReturnToken<'a> = as alloy_sol_types::SolType>::Token<'a>; + const SIGNATURE: &'static str = "execute(bytes,bytes[],uint256)"; + const SELECTOR: [u8; 4] = [53u8, 147u8, 86u8, 76u8]; + #[inline] + fn new<'a>( + tuple: as alloy_sol_types::SolType>::RustType, + ) -> Self { + tuple.into() + } + #[inline] + fn tokenize(&self) -> Self::Token<'_> { + ( + ::tokenize( + &self.commands, + ), + as alloy_sol_types::SolType>::tokenize(&self.inputs), + as alloy_sol_types::SolType>::tokenize(&self.deadline), + ) + } + #[inline] + fn abi_decode_returns( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + as alloy_sol_types::SolType>::abi_decode_sequence(data, validate) + .map(Into::into) + } + } + }; + ///Container for all the [`IUniversalRouter`](self) function calls. + pub enum IUniversalRouterCalls { + #[allow(missing_docs)] + execute(executeCall), + } + #[automatically_derived] + impl IUniversalRouterCalls { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[[53u8, 147u8, 86u8, 76u8]]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IUniversalRouterCalls { + const NAME: &'static str = "IUniversalRouterCalls"; + const MIN_DATA_LENGTH: usize = 160usize; + const COUNT: usize = 1usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::execute(_) => ::SELECTOR, + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn execute( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IUniversalRouterCalls::execute) + } + execute + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::execute(inner) => { + ::abi_encoded_size(inner) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::execute(inner) => { + ::abi_encode_raw(inner, out) + } + } + } + } + ///Container for all the [`IUniversalRouter`](self) custom errors. + pub enum IUniversalRouterErrors { + #[allow(missing_docs)] + ETHNotAccepted(ETHNotAccepted), + #[allow(missing_docs)] + ExecutionFailed(ExecutionFailed), + #[allow(missing_docs)] + InvalidEthSender(InvalidEthSender), + #[allow(missing_docs)] + LengthMismatch(LengthMismatch), + #[allow(missing_docs)] + TransactionDeadlinePassed(TransactionDeadlinePassed), + } + #[automatically_derived] + impl IUniversalRouterErrors { + /// All the selectors of this enum. + /// + /// Note that the selectors might not be in the same order as the variants. + /// No guarantees are made about the order of the selectors. + /// + /// Prefer using `SolInterface` methods instead. + pub const SELECTORS: &'static [[u8; 4usize]] = &[ + [18u8, 49u8, 174u8, 64u8], + [44u8, 64u8, 41u8, 233u8], + [56u8, 187u8, 213u8, 118u8], + [91u8, 246u8, 249u8, 22u8], + [255u8, 99u8, 58u8, 56u8], + ]; + } + #[automatically_derived] + impl alloy_sol_types::SolInterface for IUniversalRouterErrors { + const NAME: &'static str = "IUniversalRouterErrors"; + const MIN_DATA_LENGTH: usize = 0usize; + const COUNT: usize = 5usize; + #[inline] + fn selector(&self) -> [u8; 4] { + match self { + Self::ETHNotAccepted(_) => { + ::SELECTOR + } + Self::ExecutionFailed(_) => { + ::SELECTOR + } + Self::InvalidEthSender(_) => { + ::SELECTOR + } + Self::LengthMismatch(_) => { + ::SELECTOR + } + Self::TransactionDeadlinePassed(_) => { + ::SELECTOR + } + } + } + #[inline] + fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> { + Self::SELECTORS.get(i).copied() + } + #[inline] + fn valid_selector(selector: [u8; 4]) -> bool { + Self::SELECTORS.binary_search(&selector).is_ok() + } + #[inline] + #[allow(non_snake_case)] + fn abi_decode_raw( + selector: [u8; 4], + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + static DECODE_SHIMS: &[fn( + &[u8], + bool, + ) -> alloy_sol_types::Result] = &[ + { + fn ETHNotAccepted( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IUniversalRouterErrors::ETHNotAccepted) + } + ETHNotAccepted + }, + { + fn ExecutionFailed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IUniversalRouterErrors::ExecutionFailed) + } + ExecutionFailed + }, + { + fn InvalidEthSender( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IUniversalRouterErrors::InvalidEthSender) + } + InvalidEthSender + }, + { + fn TransactionDeadlinePassed( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IUniversalRouterErrors::TransactionDeadlinePassed) + } + TransactionDeadlinePassed + }, + { + fn LengthMismatch( + data: &[u8], + validate: bool, + ) -> alloy_sol_types::Result { + ::abi_decode_raw( + data, + validate, + ) + .map(IUniversalRouterErrors::LengthMismatch) + } + LengthMismatch + }, + ]; + let Ok(idx) = Self::SELECTORS.binary_search(&selector) else { + return Err( + alloy_sol_types::Error::unknown_selector( + ::NAME, + selector, + ), + ); + }; + DECODE_SHIMS[idx](data, validate) + } + #[inline] + fn abi_encoded_size(&self) -> usize { + match self { + Self::ETHNotAccepted(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::ExecutionFailed(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::InvalidEthSender(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::LengthMismatch(inner) => { + ::abi_encoded_size( + inner, + ) + } + Self::TransactionDeadlinePassed(inner) => { + ::abi_encoded_size( + inner, + ) + } + } + } + #[inline] + fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec) { + match self { + Self::ETHNotAccepted(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::ExecutionFailed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::InvalidEthSender(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::LengthMismatch(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + Self::TransactionDeadlinePassed(inner) => { + ::abi_encode_raw( + inner, + out, + ) + } + } + } + } + use alloy::contract as alloy_contract; + /**Creates a new wrapper around an on-chain [`IUniversalRouter`](self) contract instance. + +See the [wrapper's documentation](`IUniversalRouterInstance`) for more details.*/ + #[inline] + pub const fn new< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + address: alloy_sol_types::private::Address, + provider: P, + ) -> IUniversalRouterInstance { + IUniversalRouterInstance::::new(address, provider) + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub fn deploy< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >( + provider: P, + ) -> impl ::core::future::Future< + Output = alloy_contract::Result>, + > { + IUniversalRouterInstance::::deploy(provider) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + >(provider: P) -> alloy_contract::RawCallBuilder { + IUniversalRouterInstance::::deploy_builder(provider) + } + /**A [`IUniversalRouter`](self) instance. + +Contains type-safe methods for interacting with an on-chain instance of the +[`IUniversalRouter`](self) contract located at a given `address`, using a given +provider `P`. + +If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!) +documentation on how to provide it), the `deploy` and `deploy_builder` methods can +be used to deploy a new instance of the contract. + +See the [module-level documentation](self) for all the available methods.*/ + #[derive(Clone)] + pub struct IUniversalRouterInstance { + address: alloy_sol_types::private::Address, + provider: P, + _network_transport: ::core::marker::PhantomData<(N, T)>, + } + #[automatically_derived] + impl ::core::fmt::Debug for IUniversalRouterInstance { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple("IUniversalRouterInstance").field(&self.address).finish() + } + } + /// Instantiation and getters/setters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IUniversalRouterInstance { + /**Creates a new wrapper around an on-chain [`IUniversalRouter`](self) contract instance. + +See the [wrapper's documentation](`IUniversalRouterInstance`) for more details.*/ + #[inline] + pub const fn new( + address: alloy_sol_types::private::Address, + provider: P, + ) -> Self { + Self { + address, + provider, + _network_transport: ::core::marker::PhantomData, + } + } + /**Deploys this contract using the given `provider` and constructor arguments, if any. + +Returns a new instance of the contract, if the deployment was successful. + +For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/ + #[inline] + pub async fn deploy( + provider: P, + ) -> alloy_contract::Result> { + let call_builder = Self::deploy_builder(provider); + let contract_address = call_builder.deploy().await?; + Ok(Self::new(contract_address, call_builder.provider)) + } + /**Creates a `RawCallBuilder` for deploying this contract using the given `provider` +and constructor arguments, if any. + +This is a simple wrapper around creating a `RawCallBuilder` with the data set to +the bytecode concatenated with the constructor's ABI-encoded arguments.*/ + #[inline] + pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder { + alloy_contract::RawCallBuilder::new_raw_deploy( + provider, + ::core::clone::Clone::clone(&BYTECODE), + ) + } + /// Returns a reference to the address. + #[inline] + pub const fn address(&self) -> &alloy_sol_types::private::Address { + &self.address + } + /// Sets the address. + #[inline] + pub fn set_address(&mut self, address: alloy_sol_types::private::Address) { + self.address = address; + } + /// Sets the address and returns `self`. + pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self { + self.set_address(address); + self + } + /// Returns a reference to the provider. + #[inline] + pub const fn provider(&self) -> &P { + &self.provider + } + } + impl IUniversalRouterInstance { + /// Clones the provider and returns a new instance with the cloned provider. + #[inline] + pub fn with_cloned_provider(self) -> IUniversalRouterInstance { + IUniversalRouterInstance { + address: self.address, + provider: ::core::clone::Clone::clone(&self.provider), + _network_transport: ::core::marker::PhantomData, + } + } + } + /// Function calls. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IUniversalRouterInstance { + /// Creates a new call builder using this contract instance's provider and address. + /// + /// Note that the call can be any function call, not just those defined in this + /// contract. Prefer using the other methods for building type-safe contract calls. + pub fn call_builder( + &self, + call: &C, + ) -> alloy_contract::SolCallBuilder { + alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call) + } + ///Creates a new call builder for the [`execute`] function. + pub fn execute( + &self, + commands: alloy::sol_types::private::Bytes, + inputs: alloy::sol_types::private::Vec, + deadline: alloy::sol_types::private::primitives::aliases::U256, + ) -> alloy_contract::SolCallBuilder { + self.call_builder( + &executeCall { + commands, + inputs, + deadline, + }, + ) + } + } + /// Event filters. + #[automatically_derived] + impl< + T: alloy_contract::private::Transport + ::core::clone::Clone, + P: alloy_contract::private::Provider, + N: alloy_contract::private::Network, + > IUniversalRouterInstance { + /// Creates a new event filter using this contract instance's provider and address. + /// + /// Note that the type can be any event, not just those defined in this contract. + /// Prefer using the other methods for building type-safe event filters. + pub fn event_filter( + &self, + ) -> alloy_contract::Event { + alloy_contract::Event::new_sol(&self.provider, &self.address) + } + } +} From 7b5599b125d57da803e445178ada7e85202482af Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Thu, 20 Feb 2025 19:36:20 -0800 Subject: [PATCH 10/15] ethabi encode --- Cargo.lock | 67 ++++++++++++++- Cargo.toml | 1 + src/collectors/uniswapx_order_collector.rs | 6 +- src/executors/public_1559_executor.rs | 99 +++++++++++++++------- src/strategies/priority_strategy.rs | 7 +- src/strategies/shared.rs | 27 ++---- 6 files changed, 149 insertions(+), 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 66dc3d8..8c9ac88 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -2005,6 +2005,50 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror 1.0.69", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-rlp", + "impl-serde", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-rlp", + "impl-serde", + "primitive-types", + "uint", +] + [[package]] name = "fastrand" version = "2.3.0" @@ -2670,6 +2714,24 @@ dependencies = [ "parity-scale-codec", ] +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + [[package]] name = "impl-trait-for-tuples" version = "0.2.3" @@ -3254,6 +3316,8 @@ checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", + "impl-rlp", + "impl-serde", "uint", ] @@ -4589,6 +4653,7 @@ dependencies = [ "crossbeam-channel", "dashmap", "dotenv", + "ethabi", "futures", "mockito", "phyllo", diff --git a/Cargo.toml b/Cargo.toml index 2e279d9..d0ae7b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,3 +37,4 @@ aws-sdk-secretsmanager = "1.43.0" serde_json = "1.0.127" dashmap = "6.1.0" rand = "0.8.5" +ethabi = "18.0.0" diff --git a/src/collectors/uniswapx_order_collector.rs b/src/collectors/uniswapx_order_collector.rs index 823f1b8..9772219 100644 --- a/src/collectors/uniswapx_order_collector.rs +++ b/src/collectors/uniswapx_order_collector.rs @@ -11,7 +11,7 @@ use tokio::time::Duration; use tokio_stream::wrappers::IntervalStream; static UNISWAPX_API_URL: &str = "https://api.uniswap.org/v2"; -static POLL_INTERVAL_SECS: u64 = 1; +static POLL_INTERVAL_MS: u64 = 250; #[derive(Debug)] pub enum OrderTypeError { @@ -111,8 +111,8 @@ impl Collector for UniswapXOrderCollector { ); // stream that polls the UniswapX API every 5 seconds - let stream = IntervalStream::new(tokio::time::interval(Duration::from_secs( - POLL_INTERVAL_SECS, + let stream = IntervalStream::new(tokio::time::interval(Duration::from_millis( + POLL_INTERVAL_MS ))) .then(move |_| { let url = url.clone(); diff --git a/src/executors/public_1559_executor.rs b/src/executors/public_1559_executor.rs index 7a40926..8b64e85 100644 --- a/src/executors/public_1559_executor.rs +++ b/src/executors/public_1559_executor.rs @@ -1,14 +1,14 @@ -use std::sync::Arc; +use std::{str::FromStr, sync::Arc}; use tracing::{info, warn}; use alloy::{ eips::{BlockId, BlockNumberOrTag}, - network::{AnyNetwork, ReceiptResponse, TransactionBuilder}, - primitives::{utils::format_units, U256}, + network::{AnyNetwork, EthereumWallet, NetworkWallet, ReceiptResponse, TransactionBuilder, TxSignerSync}, + primitives::{Address, utils::format_units, U256}, providers::{DynProvider, Provider}, rpc::types::TransactionReceipt, serde::WithOtherFields, - signers::{local::PrivateKeySigner, Signer}, + signers::{local::PrivateKeySigner, Signer, SignerSync}, }; use anyhow::{Context, Result}; use artemis_core::types::Executor; @@ -24,6 +24,8 @@ use crate::{ strategies::{keystore::KeyStore, types::SubmitTxToMempoolWithExecutionMetadata}, }; +const GAS_LIMIT: u64 = 1_000_000; + /// An executor that sends transactions to the public mempool. pub struct Public1559Executor { client: Arc>, @@ -91,12 +93,14 @@ impl Executor for Public1559Executor { ) .expect("Failed to parse chain ID"); - let wallet: PrivateKeySigner = private_key + let wallet = + EthereumWallet::from(private_key .as_str() .parse::() .unwrap() - .with_chain_id(Some(chain_id)); - let address = wallet.address(); + .with_chain_id(Some(chain_id))); + let address = Address::from_str(&public_address).unwrap(); + action.execution.tx.set_from(address); @@ -107,8 +111,10 @@ impl Executor for Public1559Executor { _ => BlockId::Number(BlockNumberOrTag::Latest), }; - info!("{} - target_block: {:?}", order_hash, target_block); + info!("{} - target_block: {}", order_hash, target_block.as_u64().unwrap()); + // estimate_gas always fails because of target block being a future block + /* let gas_usage_result = self .client .estimate_gas(&action.execution.tx) @@ -151,19 +157,19 @@ impl Executor for Public1559Executor { } Err(anyhow::anyhow!("Order Past Deadline")) } - _ => Ok(1_000_000), + _ => Ok(GAS_LIMIT), } } else { warn!("{} - Unexpected error data: {:?}", order_hash, serde_value); - Ok(1_000_000) + Ok(GAS_LIMIT) } } else { warn!("{} - Failed to parse error data: {:?}", order_hash, err); - Ok(1_000_000) + Ok(GAS_LIMIT) } } else { warn!("{} - Error estimating gas: {:?}", order_hash, err); - Ok(1_000_000) + Ok(GAS_LIMIT) } }); @@ -183,8 +189,7 @@ impl Executor for Public1559Executor { return Err(e); } }; - - action.execution.tx.set_gas_limit(gas_usage); + */ let bid_priority_fee; let base_fee = self @@ -208,38 +213,68 @@ impl Executor for Public1559Executor { "{} - No bid priority fee, indicating quote < amount_out_required; skipping", order_hash ); + // Release the key before returning + match self.key_store.release_key(public_address.clone()).await { + Ok(_) => { + info!("{} - Released key: {}", order_hash, public_address); + } + Err(release_err) => { + warn!("{} - Failed to release key: {}", order_hash, release_err); + } + } + info!("{} - Quote < amount_out_required; skipping", order_hash); return Err(anyhow::anyhow!("Quote < amount_out_required")); } let mut tx_request = action.execution.tx.clone(); - tx_request.set_gas_limit(gas_usage); + tx_request.set_gas_limit(GAS_LIMIT); tx_request.set_max_fee_per_gas(base_fee); tx_request.set_max_priority_fee_per_gas(bid_priority_fee.unwrap().to()); - if tx_request.complete_1559().is_ok() { - info!("{} - built eip1559 tx", order_hash); - } else { - return Err(anyhow::anyhow!("Transaction is not EIP1559")); - } - let sender_client = self.sender_client.clone(); + // Retry up to 3 times to get the nonce. + let nonce = { + let mut attempts = 0; + loop { + match sender_client.get_transaction_count(address).await { + Ok(nonce) => break nonce, + Err(e) => { + if attempts < 2 { + attempts += 1; + } else { + return Err(anyhow::anyhow!( + "{} - Failed to get nonce after 3 attempts: {}", + order_hash, + e + )); + } + } + } + } + }; + tx_request.set_nonce(nonce); info!("{} - Executing tx from {:?}", order_hash, address); - let metric_future = build_metric_future( - self.cloudwatch_client.clone(), - DimensionValue::PriorityExecutor, - CwMetrics::TxSubmitted(chain_id_u64), - 1.0, - ); - if let Some(metric_future) = metric_future { - // do not block current thread by awaiting in the background - send_metric_with_order_hash!(&order_hash, metric_future); - } - let result = sender_client.send_transaction(tx_request).await; + let tx = tx_request.build(&wallet).await?; + let result = sender_client + .send_tx_envelope(tx) + .await; + + //let metric_future = build_metric_future( + // self.cloudwatch_client.clone(), + // DimensionValue::PriorityExecutor, + // CwMetrics::TxSubmitted(chain_id_u64), + // 1.0, + //); + //if let Some(metric_future) = metric_future { + // // do not block current thread by awaiting in the background + // send_metric_with_order_hash!(&order_hash, metric_future); + //} // Block on pending transaction getting confirmations let (receipt, status) = match result { Ok(tx) => { + info!("{} - Waiting for confirmations", order_hash); let receipt = tx .with_required_confirmations(1) .get_receipt() diff --git a/src/strategies/priority_strategy.rs b/src/strategies/priority_strategy.rs index eeafa5d..270a004 100644 --- a/src/strategies/priority_strategy.rs +++ b/src/strategies/priority_strategy.rs @@ -237,7 +237,7 @@ impl UniswapXPriorityFill { return vec![]; } let order_data = OrderData { - order: Order::PriorityOrder(order), + order: Order::PriorityOrder(order.clone()), hash: order_hash.clone(), signature: event.signature.clone(), resolved, @@ -247,9 +247,10 @@ impl UniswapXPriorityFill { .insert(order_hash.clone(), order_data.clone()); info!( - "{} - Sending incoming order immediately for routing and execution at block {}", + "{} - Sending incoming order immediately for routing and execution at block {}; target: {}", order_hash, - *self.last_block_number.read().await + *self.last_block_number.read().await, + order.cosignerData.auctionTargetBlock ); let order_batch = self.get_order_batch(&order_data); self.try_send_order_batch(order_batch, order_hash, order_data) diff --git a/src/strategies/shared.rs b/src/strategies/shared.rs index 754b336..b9b90d4 100644 --- a/src/strategies/shared.rs +++ b/src/strategies/shared.rs @@ -1,6 +1,5 @@ use crate::collectors::uniswapx_route_collector::RoutedOrder; use alloy::{ - dyn_abi::DynSolValue, hex, network::{AnyNetwork, TransactionBuilder}, primitives::{Address, U256}, @@ -16,9 +15,10 @@ use bindings_uniswapx::{ basereactor::BaseReactor::SignedOrder, erc20::ERC20, universalrouterexecutor::UniversalRouterExecutor, }; -use std::sync::Arc; +use ethabi::{ethereum_types::H160, Token}; use std::{ str::FromStr, + sync::Arc, time::{SystemTime, UNIX_EPOCH}, }; @@ -70,22 +70,11 @@ pub trait UniswapXStrategy { // abi encode as [tokens to approve to swap router 02, tokens to approve to reactor, multicall data] // [address[], address[], bytes[]] - let calldata = DynSolValue::Tuple(vec![ - DynSolValue::Array( - permit2_approval - .iter() - .map(|a| DynSolValue::Address(a.clone())) - .collect(), - ), - DynSolValue::Array( - reactor_approval - .iter() - .map(|a| DynSolValue::Address(a.clone())) - .collect(), - ), - DynSolValue::Array(vec![DynSolValue::Bytes(encoded_execute_bytes)]), + let encoded_calldata = ethabi::encode(&[ + Token::Array(permit2_approval), + Token::Array(reactor_approval), + Token::Bytes(encoded_execute_bytes), ]); - let encoded_calldata = calldata.abi_encode(); let orders: Vec = signed_orders .into_iter() .map(|order| UniversalRouterExecutor::SignedOrder { @@ -108,7 +97,7 @@ pub trait UniswapXStrategy { token: Address, from: &str, to: &str, - ) -> Result, anyhow::Error> { + ) -> Result, anyhow::Error> { if token == Address::ZERO { return Ok(vec![]); } @@ -122,7 +111,7 @@ pub trait UniswapXStrategy { .await .expect("Failed to get allowance"); if allowance._0 < U256::MAX / U256::from(2) { - Ok(vec![token]) + Ok(vec![Token::Address(H160(token.0 .0))]) } else { Ok(vec![]) } From 38ae9241c49fcc51b4b5f1fade0d7323a4efc528 Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Thu, 20 Feb 2025 19:36:50 -0800 Subject: [PATCH 11/15] cargo fmt --- src/collectors/uniswapx_order_collector.rs | 2 +- src/executors/public_1559_executor.rs | 31 +++++++++++++--------- src/strategies/shared.rs | 7 +---- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/collectors/uniswapx_order_collector.rs b/src/collectors/uniswapx_order_collector.rs index 9772219..475e723 100644 --- a/src/collectors/uniswapx_order_collector.rs +++ b/src/collectors/uniswapx_order_collector.rs @@ -112,7 +112,7 @@ impl Collector for UniswapXOrderCollector { // stream that polls the UniswapX API every 5 seconds let stream = IntervalStream::new(tokio::time::interval(Duration::from_millis( - POLL_INTERVAL_MS + POLL_INTERVAL_MS, ))) .then(move |_| { let url = url.clone(); diff --git a/src/executors/public_1559_executor.rs b/src/executors/public_1559_executor.rs index 8b64e85..c259128 100644 --- a/src/executors/public_1559_executor.rs +++ b/src/executors/public_1559_executor.rs @@ -3,8 +3,11 @@ use tracing::{info, warn}; use alloy::{ eips::{BlockId, BlockNumberOrTag}, - network::{AnyNetwork, EthereumWallet, NetworkWallet, ReceiptResponse, TransactionBuilder, TxSignerSync}, - primitives::{Address, utils::format_units, U256}, + network::{ + AnyNetwork, EthereumWallet, NetworkWallet, ReceiptResponse, TransactionBuilder, + TxSignerSync, + }, + primitives::{utils::format_units, Address, U256}, providers::{DynProvider, Provider}, rpc::types::TransactionReceipt, serde::WithOtherFields, @@ -93,15 +96,15 @@ impl Executor for Public1559Executor { ) .expect("Failed to parse chain ID"); - let wallet = - EthereumWallet::from(private_key - .as_str() - .parse::() - .unwrap() - .with_chain_id(Some(chain_id))); + let wallet = EthereumWallet::from( + private_key + .as_str() + .parse::() + .unwrap() + .with_chain_id(Some(chain_id)), + ); let address = Address::from_str(&public_address).unwrap(); - action.execution.tx.set_from(address); // early return on OrderAlready filled @@ -111,7 +114,11 @@ impl Executor for Public1559Executor { _ => BlockId::Number(BlockNumberOrTag::Latest), }; - info!("{} - target_block: {}", order_hash, target_block.as_u64().unwrap()); + info!( + "{} - target_block: {}", + order_hash, + target_block.as_u64().unwrap() + ); // estimate_gas always fails because of target block being a future block /* @@ -256,9 +263,7 @@ impl Executor for Public1559Executor { tx_request.set_nonce(nonce); info!("{} - Executing tx from {:?}", order_hash, address); let tx = tx_request.build(&wallet).await?; - let result = sender_client - .send_tx_envelope(tx) - .await; + let result = sender_client.send_tx_envelope(tx).await; //let metric_future = build_metric_future( // self.cloudwatch_client.clone(), diff --git a/src/strategies/shared.rs b/src/strategies/shared.rs index b9b90d4..ec2e306 100644 --- a/src/strategies/shared.rs +++ b/src/strategies/shared.rs @@ -53,12 +53,7 @@ pub trait UniswapXStrategy { let token_out = Address::from_str(&request.token_out)?; let permit2_approval = self - .get_tokens_to_approve( - client.clone(), - token_in, - executor_address, - PERMIT2_ADDRESS, - ) + .get_tokens_to_approve(client.clone(), token_in, executor_address, PERMIT2_ADDRESS) .await?; let reactor_approval = self From c06bfcfbc56c350581602e43c8910d0aba794037 Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Mon, 24 Feb 2025 09:15:01 -0500 Subject: [PATCH 12/15] wss recon --- Cargo.lock | 1 + Cargo.toml | 1 + src/main.rs | 29 ++++++++++++++++++++++++----- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8c9ac88..61d8454 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4647,6 +4647,7 @@ dependencies = [ "aws-config", "aws-sdk-cloudwatch", "aws-sdk-secretsmanager", + "backoff", "bindings-uniswapx", "clap", "crossbeam", diff --git a/Cargo.toml b/Cargo.toml index d0ae7b9..ccf2212 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,3 +38,4 @@ serde_json = "1.0.127" dashmap = "6.1.0" rand = "0.8.5" ethabi = "18.0.0" +backoff = "0.4.0" diff --git a/src/main.rs b/src/main.rs index 0c1af10..aeda621 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ use anyhow::Result; +use backoff::ExponentialBackoff; use clap::{ArgGroup, Parser}; use artemis_core::engine::Engine; @@ -8,16 +9,13 @@ use collectors::{ block_collector::BlockCollector, uniswapx_order_collector::UniswapXOrderCollector, uniswapx_route_collector::UniswapXRouteCollector, }; -//use ethers::utils::hex; -//use ethers::{ -// providers::{Http, Provider}, -// signers::{LocalWallet, Signer}, -//}; use alloy::{ hex, network::AnyNetwork, providers::{DynProvider, ProviderBuilder, WsConnect}, + pubsub::{ConnectionHandle, PubSubConnect}, signers::local::PrivateKeySigner, + transports::{impl_future, TransportResult}, }; use executors::queued_executor::QueuedExecutor; use std::collections::HashMap; @@ -89,6 +87,27 @@ pub struct Args { pub chain_id: u64, } +/// Retrying websocket connection using exponential backoff +#[derive(Clone, Debug)] +pub struct RetryWsConnect(WsConnect); + +impl PubSubConnect for RetryWsConnect { + fn is_local(&self) -> bool { + self.0.is_local() + } + + fn connect(&self) -> impl_future!(>) { + self.0.connect() + } + + async fn try_reconnect(&self) -> TransportResult { + backoff::future::retry(ExponentialBackoff::default(), || async { + Ok(self.0.try_reconnect().await?) + }) + .await + } +} + #[tokio::main] async fn main() -> Result<()> { // Set up tracing and parse args. From cc39a4985c7405033af1826f106d9dc0e65b5f14 Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Mon, 24 Feb 2025 10:50:38 -0500 Subject: [PATCH 13/15] cargo fix --- src/executors/public_1559_executor.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/executors/public_1559_executor.rs b/src/executors/public_1559_executor.rs index c259128..456e427 100644 --- a/src/executors/public_1559_executor.rs +++ b/src/executors/public_1559_executor.rs @@ -4,14 +4,13 @@ use tracing::{info, warn}; use alloy::{ eips::{BlockId, BlockNumberOrTag}, network::{ - AnyNetwork, EthereumWallet, NetworkWallet, ReceiptResponse, TransactionBuilder, - TxSignerSync, + AnyNetwork, EthereumWallet, ReceiptResponse, TransactionBuilder, }, primitives::{utils::format_units, Address, U256}, providers::{DynProvider, Provider}, rpc::types::TransactionReceipt, serde::WithOtherFields, - signers::{local::PrivateKeySigner, Signer, SignerSync}, + signers::{local::PrivateKeySigner, Signer}, }; use anyhow::{Context, Result}; use artemis_core::types::Executor; @@ -22,7 +21,6 @@ use crate::{ aws_utils::cloudwatch_utils::{ build_metric_future, receipt_status_to_metric, CwMetrics, DimensionValue, }, - executors::reactor_error_code::ReactorErrorCode, shared::send_metric_with_order_hash, strategies::{keystore::KeyStore, types::SubmitTxToMempoolWithExecutionMetadata}, }; From 81ee1b014b4c5a60ce52dd4dbed93f46ca54e131 Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Mon, 24 Feb 2025 10:52:16 -0500 Subject: [PATCH 14/15] README --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 68e4154..683d666 100644 --- a/README.md +++ b/README.md @@ -39,14 +39,15 @@ Simple strategy that batches UniswapX orders together by tokenin/tokenout pair a # Crates ### [uniswapx-rs](./crates/uniswapx-rs) + Library for encoding, decoding, and resolving UniswapX dutch orders ### [bindings-uniswapx](./crates/bindings-uniswapx) -Autogenerated forge bindings for UniswapX contracts +Autogenerated forge bindings for UniswapX contracts # Generating bindings ``` -forge bind --root ../UniswapX --overwrite --ethers # replace UniswapX with the path to the UniswapX repo -``` \ No newline at end of file +forge bind --root ../UniswapX --overwrite --alloy # replace UniswapX with the path to the UniswapX repo +``` From 7605f7beaba5813617271d59574c50d1f2863a30 Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Mon, 24 Feb 2025 12:06:49 -0500 Subject: [PATCH 15/15] protect executor --- src/main.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main.rs b/src/main.rs index aeda621..a71a15b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,6 +17,7 @@ use alloy::{ signers::local::PrivateKeySigner, transports::{impl_future, TransportResult}, }; +use executors::protect_executor::ProtectExecutor; use executors::queued_executor::QueuedExecutor; use std::collections::HashMap; use std::sync::Arc; @@ -270,7 +271,22 @@ async fn main() -> Result<()> { _ => None, }); + let protect_executor = Box::new(ProtectExecutor::new( + provider.clone(), + provider.clone(), + key_store.clone(), + cloudwatch_client.clone(), + )); + + let protect_executor = ExecutorMap::new(protect_executor, |action| match action { + Action::SubmitTx(tx) => Some(tx), + // No op for public transactions + _ => None, + }); + + engine.add_executor(Box::new(queued_executor)); + engine.add_executor(Box::new(protect_executor)); // Start engine. match engine.run().await {